#!/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 )