Files
cloud-monitor/oci-arm-monitor.py
Gan, Jimmy c37ddae932 Refactor ARM monitor to use oci_common module
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 02:55:55 +08:00

41 lines
1.1 KiB
Python

#!/usr/bin/env python3
import oci
import os
from oci_common import run_monitor
# Load configuration from environment
COMPARTMENT_ID = os.environ["COMPARTMENT_ID"]
AVAILABILITY_DOMAIN = os.environ["AVAILABILITY_DOMAIN"]
SUBNET_ID = os.environ["SUBNET_ID"]
IMAGE_ID = os.environ["IMAGE_ID"]
SSH_KEY = os.environ["SSH_KEY"]
DISPLAY_NAME = os.environ.get("DISPLAY_NAME", "free-arm-instance")
SHAPE = "VM.Standard.A1.Flex"
OCPUS = 4
MEMORY_GB = 24
INTERVAL = 60 # Check every minute
def get_launch_details():
return oci.core.models.LaunchInstanceDetails(
compartment_id=COMPARTMENT_ID,
availability_domain=AVAILABILITY_DOMAIN,
shape=SHAPE,
shape_config=oci.core.models.LaunchInstanceShapeConfigDetails(
ocpus=OCPUS,
memory_in_gbs=MEMORY_GB
),
image_id=IMAGE_ID,
subnet_id=SUBNET_ID,
display_name=DISPLAY_NAME,
metadata={"ssh_authorized_keys": SSH_KEY},
)
if __name__ == "__main__":
run_monitor(
name="ARM",
shape=f"{SHAPE} ({OCPUS} OCPUs, {MEMORY_GB}GB RAM)",
launch_details_func=get_launch_details,
interval=INTERVAL
)