diff --git a/examples/base_api.py b/examples/base_api.py index d56edf00..7413b31e 100644 --- a/examples/base_api.py +++ b/examples/base_api.py @@ -81,6 +81,7 @@ def exercise_api(client: BaseCloud, image_id=None): 'zone': 'a', }, pycloudlib.OCI: { + 'availability_domain': os.environ.get('AVAILABILITY_DOMAIN'), 'compartment_id': os.environ.get('COMPARTMENT_ID') }, pycloudlib.Openstack: { diff --git a/examples/oci.py b/examples/oci.py index 8c6dcd93..2db665a3 100644 --- a/examples/oci.py +++ b/examples/oci.py @@ -15,7 +15,7 @@ """ -def demo(compartment_id): +def demo(availability_domain, compartment_id): """Show example of using the OCI library. Connects to OCI and launches released image. Then runs @@ -23,6 +23,7 @@ def demo(compartment_id): """ client = pycloudlib.OCI( 'Oracle test', + availability_domain=availability_domain, compartment_id=compartment_id, ) @@ -46,8 +47,9 @@ def demo(compartment_id): if __name__ == '__main__': logging.basicConfig(level=logging.DEBUG) - if len(sys.argv) != 2: - print('Usage: oci.py ') + if len(sys.argv) != 3: + print('Usage: oci.py ') sys.exit(1) - passed_compartment_id = sys.argv[1] - demo(passed_compartment_id) + passed_availability_domain = sys.argv[1] + passed_compartment_id = sys.argv[2] + demo(passed_availability_domain, passed_compartment_id) diff --git a/pycloudlib/oci/cloud.py b/pycloudlib/oci/cloud.py index db5532ff..14f62a37 100644 --- a/pycloudlib/oci/cloud.py +++ b/pycloudlib/oci/cloud.py @@ -20,8 +20,8 @@ class OCI(BaseCloud): _type = 'oci' def __init__( - self, tag, timestamp_suffix=True, compartment_id=None, - config_path='~/.oci/config', + self, tag, timestamp_suffix=True, *, availability_domain, + compartment_id=None, config_path='~/.oci/config' ): """ Initialize the connection to OCI. @@ -35,9 +35,13 @@ def __init__( tag compartment_id: A compartment found at https://console.us-phoenix-1.oraclecloud.com/a/identity/compartments + availability_domain: One of the availability domains from: + 'oci iam availability-domain list' config_path: Path of OCI config file """ super().__init__(tag, timestamp_suffix) + self.availability_domain = availability_domain + if not compartment_id: command = ['oci', 'iam', 'compartment', 'get'] exception_text = ( @@ -182,7 +186,6 @@ def launch(self, image_id, instance_type='VM.Standard2.1', user_data=None, subnet = self.network_client.list_subnets( self.compartment_id, vcn_id=vcn_id).data[0] subnet_id = subnet.id - availability_domain = subnet.availability_domain metadata = { 'ssh_authorized_keys': self.key_pair.public_key_content, @@ -193,7 +196,7 @@ def launch(self, image_id, instance_type='VM.Standard2.1', user_data=None, instance_details = oci.core.models.LaunchInstanceDetails( display_name=self.tag, - availability_domain=availability_domain, + availability_domain=self.availability_domain, compartment_id=self.compartment_id, shape=instance_type, subnet_id=subnet_id,