Gonalb's picture
manage json secret
bb4d10d
raw
history blame
2.65 kB
import os
import json
import sys
from dotenv import load_dotenv
# Load environment variables from .env file if it exists
load_dotenv()
# Check for required environment variables and provide guidance if missing
required_vars = ["OPENAI_API_KEY", "PROJECT_ID", "DATASET_ID", "BIGQUERY_KEY_PATH"]
missing_vars = [var for var in required_vars if not os.environ.get(var)]
if missing_vars:
print("ERROR: Missing required environment variables:")
for var in missing_vars:
print(f"- {var}")
print("\nPlease set these variables in your environment or in a .env file.")
print("Example .env file:")
print("""
OPENAI_API_KEY=your_openai_api_key
PROJECT_ID=your_gcp_project_id
DATASET_ID=your_bigquery_dataset_id
BIGQUERY_KEY_PATH=path/to/your/bigquery/credentials.json
""")
# Handle BigQuery credentials
print("DEBUG: Handling BigQuery credentials...")
if os.environ.get("BIGQUERY_KEY_PATH"):
bigquery_key = os.environ.get("BIGQUERY_KEY_PATH")
print(f"DEBUG: BIGQUERY_KEY_PATH is set, length: {len(bigquery_key)} characters")
# Create a temporary credentials file from the environment variable
credentials_path = "/tmp/bigquery_credentials.json"
try:
# Try to directly write the content to a file without JSON parsing
with open(credentials_path, "w") as f:
f.write(bigquery_key)
print(f"DEBUG: Wrote credentials to {credentials_path}")
os.environ["BIGQUERY_KEY_PATH"] = credentials_path
print(f"DEBUG: Set BIGQUERY_KEY_PATH to {credentials_path}")
# Verify the file exists
if os.path.exists(credentials_path):
print(f"DEBUG: Confirmed credentials file exists at {credentials_path}")
# Try to validate the JSON by reading it back
try:
with open(credentials_path, "r") as f:
json.load(f)
print("DEBUG: Credentials file contains valid JSON")
except json.JSONDecodeError as e:
print(f"WARNING: Credentials file contains invalid JSON: {str(e)}")
print("This might cause issues with BigQuery authentication")
else:
print(f"ERROR: Failed to create credentials file at {credentials_path}")
except Exception as e:
print(f"ERROR: Failed to process BigQuery credentials: {str(e)}")
else:
print("WARNING: BIGQUERY_KEY_PATH environment variable is not set")
# BigQuery configuration
BIGQUERY_KEY_PATH = os.environ.get("BIGQUERY_KEY_PATH")
PROJECT_ID = os.environ.get("PROJECT_ID")
DATASET_ID = os.environ.get("DATASET_ID")