import asyncio from datetime import datetime, timedelta, timezone from oom_risk_detector import find_oom_risk def lambda_handler(event, context): cluster_id = event["kwargs"]["cluster_id"] start = datetime.fromtimestamp(event["kwargs"]["start_ts"]) end = datetime.fromtimestamp(event["kwargs"]["end_ts"]) tenant_id = event["kwargs"]["tenant_id"] project_id = event["kwargs"]["project_id"] provider = event["kwargs"]["provider"] clinic_org_id = event["kwargs"]["clinic_org_id"] region_name = event["kwargs"]["region_name"] # 4 KB limit for aws lambda, for all environment variables associated with the function, in aggregate # os.environ["GCP_PRIVATE_KEY"] = base64.b64decode(os.environ["GCP_PRIVATE_KEY"]) oom_events = asyncio.run( find_oom_risk( cluster_id, start, end, tenant_id, project_id, region_name, clinic_org_id, provider ) ) return { "time_range": f"{start.strftime('%Y-%m-%d, %H:%M:%S')} to {end.strftime('%Y-%m-%d, %H:%M:%S')}", "oom_risk_event_count": len(oom_events), } if __name__ == "__main__": import asyncio cluster_id = "1379661944629574082" tenant_id = "1372813089198981282" project_id = "1372813089196881283" event = { "kwargs": { "cluster_id": cluster_id, "start_ts": int(1666785600 + 3600), "end_ts": int(1666785600 + 7200), "tenant_id": tenant_id, "project_id": project_id, } } async def lambda_handler(event, context): cluster_id = event["kwargs"]["cluster_id"] start = datetime.fromtimestamp(event["kwargs"]["start_ts"]) end = datetime.fromtimestamp(event["kwargs"]["end_ts"]) tenant_id = event["kwargs"]["tenant_id"] project_id = event["kwargs"]["project_id"] provider = event["kwargs"]["provider"] region_name = event["kwargs"]["region_name"] oom_events = await find_oom_risk( cluster_id, start, end, tenant_id, project_id, region_name, provider ) return oom_events oom_events = asyncio.run(lambda_handler(event, None)) for oom_event in oom_events: print( datetime.fromtimestamp(oom_event.calibration_time) .replace(tzinfo=timezone.utc) .astimezone(timezone(timedelta(hours=8))), ": ", oom_event.payload.get("summary"), )