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 | |