Spaces:
Runtime error
Runtime error
| import os | |
| from google.cloud import storage | |
| from tqdm import tqdm | |
| from googleapiclient import discovery | |
| import requests | |
| service = discovery.build('compute', 'v1') | |
| storage_client = storage.Client() | |
| def download_csv_from_gcloud(bucket_name, object_name, destination_file_path): | |
| """Download a file from Google Cloud Storage.""" | |
| bucket = storage_client.bucket(bucket_name) | |
| blob = bucket.blob(object_name) | |
| # Download the file to a local path | |
| blob.download_to_filename(destination_file_path) | |
| print(f"File {object_name} downloaded to {destination_file_path}") | |
| def upload_folder_to_gcloud(bucket_name, source_folder_path, destination_folder_name): | |
| """Uploads all files in a folder to the Google Cloud Storage bucket.""" | |
| # Instantiates a client | |
| # storage_client = storage.Client() | |
| # Gets the bucket | |
| print(f"bucket_name={bucket_name}, source_folder_path={source_folder_path}, destination_folder_name={destination_folder_name}", flush=True) | |
| bucket = storage_client.bucket(bucket_name) | |
| # Walk through the folder and upload each file | |
| for root, _, files in os.walk(source_folder_path): | |
| for file_name in files: | |
| # Construct the local file path | |
| local_file_path = os.path.join(root, file_name) | |
| # Construct the destination blob name | |
| destination_blob_name = os.path.join(destination_folder_name, os.path.relpath(local_file_path, source_folder_path)) | |
| print(f"destination_blob_name={destination_blob_name}") | |
| # Upload the file | |
| blob = bucket.blob(destination_blob_name) | |
| blob.upload_from_filename(local_file_path) | |
| print(f"File {local_file_path} uploaded to {destination_blob_name}.") | |
| def download_folder(bucket_name, folder_name, destination_directory): | |
| """ | |
| Download the contents of a folder from a Google Cloud Storage bucket to a local directory. | |
| Args: | |
| bucket_name (str): Name of the Google Cloud Storage bucket. | |
| folder_name (str): Name of the folder in the bucket to download. | |
| destination_directory (str): Local directory to save the downloaded files. | |
| """ | |
| # Get the bucket | |
| bucket = storage_client.get_bucket(bucket_name) | |
| # List objects in the folder | |
| blobs = bucket.list_blobs(prefix=folder_name) | |
| # Ensure destination directory exists | |
| os.makedirs(destination_directory, exist_ok=True) | |
| # Iterate over each object in the folder | |
| for blob in tqdm(blobs, desc=f'Downloading {folder_name}'): | |
| # Determine local file path | |
| local_file_path = os.path.join(destination_directory, os.path.relpath(blob.name, folder_name)) | |
| # Ensure local directory exists | |
| os.makedirs(os.path.dirname(local_file_path), exist_ok=True) | |
| # Download the object to a local file | |
| blob.download_to_filename(local_file_path) | |
| def start_vm(project, zone, instance): | |
| request = service.instances().start(project=project, zone=zone, instance=instance) | |
| response = request.execute() | |
| return response | |
| def stop_vm(project, zone, instance): | |
| request = service.instances().stop(project=project, zone=zone, instance=instance) | |
| response = request.execute() | |
| return response | |
| def get_current_instance_name(): | |
| # URL for the metadata server | |
| METADATA_URL = "http://metadata.google.internal/computeMetadata/v1/instance/name" | |
| HEADERS = {"Metadata-Flavor": "Google"} | |
| try: | |
| response = requests.get(METADATA_URL, headers=HEADERS) | |
| response.raise_for_status() # Raise an error for bad status codes | |
| instance_name = response.text | |
| return instance_name | |
| except requests.exceptions.RequestException as e: | |
| print(f"Error fetching instance name: {e}") | |
| return None | |