Ejemplo n.º 1
0
    def subtest_instance_operations(self):
        instance_name = util.random_name('cli_test_instance')
        fault_domain = 'FAULT-DOMAIN-1'
        image_id = util.oracle_linux_image()
        shape = 'VM.Standard1.1'

        result = self.invoke(
            ['compute', 'instance', 'launch',
             '--compartment-id', util.COMPARTMENT_ID,
             '--availability-domain', util.availability_domain(),
             '--display-name', instance_name,
             '--fault-domain', fault_domain,
             '--subnet-id', self.subnet_ocid,
             '--image-id', image_id,
             '--shape', shape,
             '--metadata', util.remove_outer_quotes(oci_cli_compute.compute_cli_extended.compute_instance_launch_metadata_example)])
        self.instance_ocid = util.find_id_in_response(result.output)
        util.validate_response(result, expect_etag=True)

        util.wait_until(['compute', 'instance', 'get', '--instance-id', self.instance_ocid], 'RUNNING',
                        max_wait_seconds=600)

        result = self.invoke(['compute', 'instance', 'list', '--compartment-id', util.COMPARTMENT_ID])
        util.validate_response(result)

        # list with compartment shortcut
        result = self.invoke(['compute', 'instance', 'list', '-c', util.COMPARTMENT_ID])
        util.validate_response(result)

        instance_name = instance_name + "_updated"
        result = self.invoke(['compute', 'instance', 'update', '--instance-id', self.instance_ocid, '--display-name', instance_name])
        util.validate_response(result, expect_etag=True)

        result = self.invoke(['compute', 'instance', 'get', '--instance-id', self.instance_ocid])
        util.validate_response(result, expect_etag=True)

        result = self.invoke(
            ['compute', 'instance', 'launch',
             '--compartment-id', util.COMPARTMENT_ID,
             '--availability-domain', util.availability_domain(),
             '--display-name', instance_name + "_2",
             '--fault-domain', fault_domain,
             '--subnet-id', self.subnet_ocid,
             '--image-id', image_id,
             '--shape', shape,
             '--metadata',
             util.remove_outer_quotes(oci_cli_compute.compute_cli_extended.compute_instance_launch_metadata_example),
             '--wait-for-state', 'RUNNING',
             '--max-wait-seconds', '20',
             '--wait-interval-seconds', '5'])
        self.instance_ocid_2 = util.find_id_in_response(result.output[result.output.index('{'):])
        assert result.exit_code != 0
Ejemplo n.º 2
0
    def subtest_launch_instance_merges_user_data_file_param_with_metadata(
            self):
        instance_name = util.random_name('cli_test_instance_options')
        image_id = util.oracle_linux_image()
        shape = 'VM.Standard1.2'
        hostname_label = util.random_name('bminstance',
                                          insert_underscore=False)

        launch_instance_result = util.invoke_command([
            'compute', 'instance', 'launch', '--compartment-id',
            util.COMPARTMENT_ID, '--availability-domain',
            util.availability_domain(), '--display-name', instance_name,
            '--subnet-id', self.subnet_ocid, '--image-id', image_id, '--shape',
            shape, '--hostname-label', hostname_label + "4",
            '--user-data-file', USER_DATA_FILE, '--metadata',
            util.remove_outer_quotes(oci_cli_compute.compute_cli_extended.
                                     compute_instance_launch_metadata_example)
        ])

        util.validate_response(launch_instance_result, expect_etag=True)
        temp_instance_ocid = util.find_id_in_response(
            launch_instance_result.output)
        self.instance_ocids.append(temp_instance_ocid)

        response = json.loads(launch_instance_result.output)
        instance_metadata = response['data']['metadata']
        assert instance_metadata['user_data']
        assert instance_metadata['ssh_authorized_keys']

        self.delete_instance(temp_instance_ocid)
Ejemplo n.º 3
0
    def subtest_dhcp_option_operations(self):
        dhcp_options_name = util.random_name('cli_test_dhcp_options')
        options = util.remove_outer_quotes(oci_cli_virtual_network.virtualnetwork_cli_extended.network_create_dhcp_options_options_example)

        result = self.invoke(
            ['dhcp-options', 'create',
             '--compartment-id', util.COMPARTMENT_ID,
             '--vcn-id', self.vcn_ocid,
             '--display-name', dhcp_options_name,
             '--options', options
             ])
        util.validate_response(result, expect_etag=True)
        self.dhcp_options_ocid = util.find_id_in_response(result.output)
        util.wait_until(['network', 'dhcp-options', 'get', '--dhcp-id', self.dhcp_options_ocid], 'AVAILABLE')

        result = self.invoke(['dhcp-options', 'list', '--compartment-id', util.COMPARTMENT_ID, '--vcn-id', self.vcn_ocid])
        util.validate_response(result)

        self.run_list_filter_verification('dhcp-options', dhcp_options_name)

        result = self.invoke(['dhcp-options', 'get', '--dhcp-id', self.dhcp_options_ocid])
        util.validate_response(result, expect_etag=True)

        dhcp_options_name = dhcp_options_name + "_updated"
        options_v2 = """[{"type": "DomainNameServer", "customDnsServers": ["202.44.61.10"], "serverType": "CustomDnsServer"},
            {"searchDomainNames": ["testvcn.oraclevcn.com"], "type":"SearchDomain"}]"""

        # update display name only - does not show a confirmation prompt
        result = self.invoke(['dhcp-options', 'update', '--dhcp-id', self.dhcp_options_ocid, '--display-name', dhcp_options_name])
        util.validate_response(result, expect_etag=True)

        # update options, confirm y
        result = self.invoke(
            ['dhcp-options', 'update', '--dhcp-id', self.dhcp_options_ocid, '--options', options_v2], input='y')
        util.validate_response(result, json_response_expected=False)

        # update options, confirm n
        result = self.invoke(
            ['dhcp-options', 'update', '--dhcp-id', self.dhcp_options_ocid, '--options', options], input='n')
        assert result.exit_code != 0

        util.vcr_mode_aware_sleep(20)

        # update options, force
        result = self.invoke(
            ['dhcp-options', 'update', '--dhcp-id', self.dhcp_options_ocid, '--options', options_v2, '--force'])

        util.validate_response(result, expect_etag=True)

        response = json.loads(result.output)

        # validate response contains SearchDomain option
        response_has_search_domain_option = False
        for option in response["data"]["options"]:
            if option["type"] == "SearchDomain":
                response_has_search_domain_option = True
                assert option["search-domain-names"][0] == "testvcn.oraclevcn.com"

        assert response_has_search_domain_option, "Options response should contain option of type 'SearchDomain'."
Ejemplo n.º 4
0
    def subtest_ip_sec_connection_operations(self):
        if hasattr(self, 'drg_capacity_issue'):
            print(
                'Unable to execute subtest_ip_sec_connection_operations as a DRG is not available'
            )
            return

        ipsc_name = util.random_name('cli_test_ipsc')
        routes = util.remove_outer_quotes(
            oci_cli_virtual_network.virtualnetwork_cli_extended.
            network_create_ip_sec_connection_static_routes_example)

        result = self.invoke([
            'ip-sec-connection', 'create', '--compartment-id',
            util.COMPARTMENT_ID, '--display-name', ipsc_name, '--cpe-id',
            self.cpe_ocid, '--drg-id', self.drg_ocid, '--static-routes', routes
        ])
        if 'Limit tenant-ipsec-vpn-connection' in result.output:
            self.drg_capacity_issue = True
            print(
                'Unable to execute subtest_ip_sec_connection_operations as an IPSec Connection is not available'
            )
            return

        self.ipsc_ocid = util.find_id_in_response(result.output)
        util.validate_response(result, expect_etag=True)
        util.wait_until([
            'network', 'ip-sec-connection', 'get', '--ipsc-id', self.ipsc_ocid
        ],
                        'AVAILABLE',
                        max_wait_seconds=600)

        result = self.invoke([
            'ip-sec-connection', 'list', '--compartment-id',
            util.COMPARTMENT_ID
        ])
        util.validate_response(result)

        ipsc_name = ipsc_name + "_updated"
        result = self.invoke([
            'ip-sec-connection', 'update', '--ipsc-id', self.ipsc_ocid,
            '--display-name', ipsc_name
        ])
        util.validate_response(result, expect_etag=True)

        result = self.invoke(
            ['ip-sec-connection', 'get', '--ipsc-id', self.ipsc_ocid])
        util.validate_response(result, expect_etag=True)

        result = self.invoke(
            ['ip-sec-connection', 'get-config', '--ipsc-id', self.ipsc_ocid])
        util.validate_response(result)

        result = self.invoke(
            ['ip-sec-connection', 'get-status', '--ipsc-id', self.ipsc_ocid])
        util.validate_response(result)
Ejemplo n.º 5
0
    def subtest_route_table_operations(self):
        rt_name = util.random_name('cli_test_route_table')
        rules = util.remove_outer_quotes(oci_cli_virtual_network.virtualnetwork_cli_extended.network_create_route_table_route_rules_example.format(ig_id=self.ig_ocid))

        result = self.invoke(
            ['route-table', 'create',
             '--compartment-id', util.COMPARTMENT_ID,
             '--display-name', rt_name,
             '--vcn-id', self.vcn_ocid,
             '--route-rules', rules
             ])
        self.rt_ocid = util.find_id_in_response(result.output)
        util.validate_response(result, expect_etag=True)

        util.wait_until(['network', 'route-table', 'get', '--rt-id', self.rt_ocid], 'AVAILABLE',
                        max_wait_seconds=300)

        result = self.invoke(['route-table', 'list', '--compartment-id', util.COMPARTMENT_ID, '--vcn-id', self.vcn_ocid])
        util.validate_response(result)

        self.run_list_filter_verification('route-table', rt_name)

        result = self.invoke(['route-table', 'get', '--rt-id', self.rt_ocid])
        util.validate_response(result, expect_etag=True)

        rt_name = rt_name + "_updated"
        rules_v2 = """[{{"cidrBlock":"0.0.0.0/1","networkEntityId":"{ig_id}"}}]""".format(ig_id=self.ig_ocid)

        # update display name only - does not show a prompt
        result = self.invoke(['route-table', 'update', '--rt-id', self.rt_ocid, '--display-name', rt_name])
        util.validate_response(result, expect_etag=True)

        util.vcr_mode_aware_sleep(20)

        # update route-rules, confirm y
        result = self.invoke(
            ['route-table', 'update', '--rt-id', self.rt_ocid, '--route-rules', rules_v2], input='y')
        util.validate_response(result, json_response_expected=False)

        # update route-rules, confirm n
        result = self.invoke(
            ['route-table', 'update', '--rt-id', self.rt_ocid, '--route-rules', rules_v2], input='n')
        assert result.exit_code != 0

        util.vcr_mode_aware_sleep(20)

        # update route-rules, force
        result = self.invoke(
            ['route-table', 'update', '--rt-id', self.rt_ocid, '--route-rules', rules, '--force'])
        util.validate_response(result, expect_etag=True)
Ejemplo n.º 6
0
    def subtest_subnet_operations(self):
        subnet_name = util.random_name('cli_test_subnet')
        cidr_block = "10.0.0.0/16"
        security_list_ids = util.remove_outer_quotes(
            oci_cli_virtual_network.virtualnetwork_cli_extended.
            network_create_subnet_security_list_ids_example.format(
                sl_id=self.sl_ocid))
        subnet_dns_label = util.random_name('subnet', insert_underscore=False)

        result = self.invoke([
            'subnet', 'create', '--compartment-id', util.COMPARTMENT_ID,
            '--availability-domain',
            util.availability_domain(), '--display-name', subnet_name,
            '--vcn-id', self.vcn_ocid, '--cidr-block', cidr_block,
            '--security-list-ids', security_list_ids, '--dns-label',
            subnet_dns_label
        ])

        self.subnet_ocid = util.find_id_in_response(result.output)
        util.validate_response(result, expect_etag=True)

        util.wait_until(
            ['network', 'subnet', 'get', '--subnet-id', self.subnet_ocid],
            'AVAILABLE',
            max_wait_seconds=300)

        result = self.invoke([
            'subnet', 'list', '--compartment-id', util.COMPARTMENT_ID,
            '--vcn-id', self.vcn_ocid
        ])
        util.validate_response(result)

        self.run_list_filter_verification('subnet', subnet_name)

        subnet_name = subnet_name + "_updated"
        result = self.invoke([
            'subnet', 'update', '--subnet-id', self.subnet_ocid,
            '--display-name', subnet_name
        ])
        util.validate_response(result, expect_etag=True)

        result = self.invoke(
            ['subnet', 'get', '--subnet-id', self.subnet_ocid])
        util.validate_response(result, expect_etag=True)

        subnet_response = json.loads(result.output)

        assert subnet_response['data']['dns-label'] == subnet_dns_label
Ejemplo n.º 7
0
    def subtest_launch_instance_ssh_authorized_keys_in_param_and_in_metadata_throws_error(self):
        instance_name = util.random_name('cli_test_instance_options')
        image_id = util.oracle_linux_image()
        shape = 'VM.Standard1.2'
        hostname_label = util.random_name('bminstance', insert_underscore=False)

        launch_instance_result = util.invoke_command(
            ['compute', 'instance', 'launch',
             '--compartment-id', util.COMPARTMENT_ID,
             '--availability-domain', util.availability_domain(),
             '--display-name', instance_name,
             '--subnet-id', self.subnet_ocid,
             '--image-id', image_id,
             '--shape', shape,
             '--hostname-label', hostname_label + "2",
             '--ssh-authorized-keys-file', util.SSH_AUTHORIZED_KEYS_FILE,
             '--metadata', util.remove_outer_quotes(oci_cli_compute.compute_cli_extended.compute_instance_launch_metadata_example)])

        assert launch_instance_result.exit_code != 0
Ejemplo n.º 8
0
    def subtest_security_list_operations(self):
        sl_name = util.random_name('cli_test_security_list')
        egress_rules = util.remove_outer_quotes(
            oci_cli_virtual_network.virtualnetwork_cli_extended.
            network_create_security_list_egress_security_rules_example)
        ingress_rules = util.remove_outer_quotes(
            oci_cli_virtual_network.virtualnetwork_cli_extended.
            network_create_security_list_ingress_security_rules_example)

        result = self.invoke([
            'security-list', 'create', '--compartment-id', util.COMPARTMENT_ID,
            '--display-name', sl_name, '--vcn-id', self.vcn_ocid,
            '--egress-security-rules', egress_rules,
            '--ingress-security-rules', ingress_rules
        ])
        self.sl_ocid = util.find_id_in_response(result.output)
        util.validate_response(result, expect_etag=True)

        util.wait_until([
            'network', 'security-list', 'get', '--security-list-id',
            self.sl_ocid
        ],
                        'AVAILABLE',
                        max_wait_seconds=300)

        result = self.invoke([
            'security-list', 'list', '--compartment-id', util.COMPARTMENT_ID,
            '--vcn-id', self.vcn_ocid
        ])
        util.validate_response(result)

        self.run_list_filter_verification('security-list', sl_name)

        result = self.invoke(
            ['security-list', 'get', '--security-list-id', self.sl_ocid])
        util.validate_response(result, expect_etag=True)

        sl_name = sl_name + "_updated"
        egress_rules_v2 = """[{"destination": "10.0.2.0/24", "protocol": "6", "tcpOptions": {"destinationPortRange": {"max": 1522, "min": 1522}}}]"""
        ingress_rules_v2 = """[{"protocol": "6", "source": "10.0.1.0/25", "tcpOptions": {"destinationPortRange": {"max": 1521, "min": 1521}}}]"""

        # TODO: A short sleep before every security list update to allow for replication.
        util.vcr_mode_aware_sleep(20)

        # Force update on all fields
        result = self.invoke([
            'security-list', 'update', '--security-list-id', self.sl_ocid,
            '--display-name', sl_name, '--egress-security-rules', egress_rules,
            '--ingress-security-rules', ingress_rules, '--force'
        ])
        util.validate_response(result, expect_etag=True)

        util.vcr_mode_aware_sleep(20)

        # update display name only - does not show a prompt
        result = self.invoke([
            'security-list', 'update', '--security-list-id', self.sl_ocid,
            '--display-name', sl_name
        ])
        util.validate_response(result, expect_etag=True)

        util.vcr_mode_aware_sleep(20)

        # update egress-rules, confirm y
        result = self.invoke([
            'security-list', 'update', '--security-list-id', self.sl_ocid,
            '--egress-security-rules', egress_rules_v2
        ],
                             input='y')
        util.validate_response(result, json_response_expected=False)

        util.vcr_mode_aware_sleep(20)

        # update ingress-rules, confirm y
        result = self.invoke([
            'security-list', 'update', '--security-list-id', self.sl_ocid,
            '--ingress-security-rules', ingress_rules_v2
        ],
                             input='y')
        util.validate_response(result, json_response_expected=False)

        util.vcr_mode_aware_sleep(20)

        # update both, confirm y
        result = self.invoke([
            'security-list', 'update', '--security-list-id', self.sl_ocid,
            '--ingress-security-rules', ingress_rules,
            '--egress-security-rules', egress_rules
        ],
                             input='y')
        util.validate_response(result, json_response_expected=False)

        util.vcr_mode_aware_sleep(20)

        # update egress-rules, confirm n
        result = self.invoke([
            'security-list', 'update', '--security-list-id', self.sl_ocid,
            '--egress-security-rules', egress_rules_v2
        ],
                             input='n')
        assert result.exit_code != 0

        # update egress-rules, force
        result = self.invoke([
            'security-list', 'update', '--security-list-id', self.sl_ocid,
            '--egress-security-rules', egress_rules_v2, '--force'
        ])
        util.validate_response(result, expect_etag=True)