def subtest_instance_console_connections_tagging(self): tag_names_to_values = {} for t in tag_data_container.tags: tag_names_to_values[t.name] = 'somevalue {}'.format(t.name) tag_data_container.write_defined_tags_to_file( os.path.join('tests', 'temp', 'defined_tags_compute.json'), tag_data_container.tag_namespace, tag_names_to_values ) result = self.invoke([ 'compute', 'instance-console-connection', 'create', '--instance-id', self.instance_ocid, '--ssh-public-key-file', util.SSH_AUTHORIZED_KEYS_FILE, '--freeform-tags', 'file://tests/resources/tagging/freeform_tags_1.json', '--defined-tags', 'file://tests/temp/defined_tags_compute.json' ]) util.validate_response(result) instance_console_connection_details = json.loads(result.output) expected_freeform = {'tagOne': 'value1', 'tag_Two': 'value two'} expected_defined = {tag_data_container.tag_namespace.name: tag_names_to_values} self.assertEquals(expected_freeform, instance_console_connection_details['data']['freeform-tags']) self.assertEquals(expected_defined, instance_console_connection_details['data']['defined-tags']) self.invoke(['compute', 'instance-console-connection', 'delete', '--instance-console-connection-id', instance_console_connection_details['data']['id'], '--force']) result = self.invoke(['compute', 'instance-console-connection', 'get', '--instance-console-connection-id', instance_console_connection_details['data']['id']]) parsed_result = json.loads(result.output) if 'DELET' not in parsed_result['data']['lifecycle-state']: print("parsed_result=" + str(parsed_result) + ", lifecycle-state=" + str(parsed_result['data']['lifecycle-state'])) util.vcr_mode_aware_sleep(60) result = self.invoke(['compute', 'instance-console-connection', 'get', '--instance-console-connection-id', instance_console_connection_details['data']['id']]) parsed_result = json.loads(result.output) self.assertTrue(parsed_result['data']['lifecycle-state'] == 'DELETED' or parsed_result['data']['lifecycle-state'] == 'DELETING')
def apply_tags_to_tag_namespace(tag_namespace_id): tag_data_container.ensure_namespace_and_tags_active(invoke) tag_names_to_values = { tag_data_container.tags[0].name: 'tag_ns_mgmt {}'.format(util.random_number_string()) } tag_data_container.write_defined_tags_to_file( os.path.join('tests', 'temp', 'defined_tags_mgmt.json'), tag_data_container.tag_namespace, tag_names_to_values ) # Apply tags expected_freeform = {'tagOne': 'value three'} expected_defined = {tag_data_container.tag_namespace.name: tag_names_to_values} result = invoke([ 'iam', 'tag-namespace', 'update', '--tag-namespace-id', tag_namespace_id, '--freeform-tags', 'file://tests/resources/tagging/freeform_tags_2.json', '--defined-tags', 'file://tests/temp/defined_tags_mgmt.json', '--force' ]) util.validate_response(result) parsed_result = json.loads(result.output) assert expected_freeform == parsed_result['data']['freeform-tags'] assert expected_defined == parsed_result['data']['defined-tags'] result = invoke(['iam', 'tag-namespace', 'get', '--tag-namespace-id', tag_namespace_id]) util.validate_response(result) parsed_result = json.loads(result.output) assert expected_freeform == parsed_result['data']['freeform-tags'] assert expected_defined == parsed_result['data']['defined-tags'] result = invoke(['iam', 'tag-namespace', 'list', '-c', util.COMPARTMENT_ID, '--all']) parsed_result = json.loads(result.output) found_namespace = False for pr in parsed_result['data']: if pr['id'] == tag_namespace_id: assert expected_freeform == pr['freeform-tags'] assert expected_defined == pr['defined-tags'] found_namespace = True break assert found_namespace # Overwrite with different tags tag_names_to_values = { tag_data_container.tags[1].name: 'tag_ns_mgmt update {}'.format(util.random_number_string()) } tag_data_container.write_defined_tags_to_file( os.path.join('tests', 'temp', 'defined_tags_mgmt.json'), tag_data_container.tag_namespace, tag_names_to_values ) expected_freeform = {'tagOne': 'value1', 'tag_Two': 'value two'} expected_defined = {tag_data_container.tag_namespace.name: tag_names_to_values} result = invoke([ 'iam', 'tag-namespace', 'update', '--tag-namespace-id', tag_namespace_id, '--freeform-tags', 'file://tests/resources/tagging/freeform_tags_1.json', '--defined-tags', 'file://tests/temp/defined_tags_mgmt.json', '--force' ]) util.validate_response(result) parsed_result = json.loads(result.output) assert expected_freeform == parsed_result['data']['freeform-tags'] assert expected_defined == parsed_result['data']['defined-tags'] result = invoke(['iam', 'tag-namespace', 'get', '--tag-namespace-id', tag_namespace_id]) util.validate_response(result) parsed_result = json.loads(result.output) assert expected_freeform == parsed_result['data']['freeform-tags'] assert expected_defined == parsed_result['data']['defined-tags'] # Clear tags result = invoke([ 'iam', 'tag-namespace', 'update', '--tag-namespace-id', tag_namespace_id, '--freeform-tags', '{}', '--defined-tags', '{}', '--force' ]) util.validate_response(result) parsed_result = json.loads(result.output) assert {} == parsed_result['data']['freeform-tags'] assert {} == parsed_result['data']['defined-tags'] result = invoke(['iam', 'tag-namespace', 'get', '--tag-namespace-id', tag_namespace_id]) util.validate_response(result) parsed_result = json.loads(result.output) assert {} == parsed_result['data']['freeform-tags'] assert {} == parsed_result['data']['defined-tags'] result = invoke(['iam', 'tag-namespace', 'list', '-c', util.COMPARTMENT_ID, '--all']) parsed_result = json.loads(result.output) found_namespace = False for pr in parsed_result['data']: if pr['id'] == tag_namespace_id: assert {} == pr['freeform-tags'] assert {} == pr['defined-tags'] found_namespace = True break assert found_namespace
def test_load_balancer_tagging(runner, config_file, config_profile, vcn_and_subnets, key_pair_files): with test_config_container.create_vcr( cassette_library_dir=CASSETTE_LIBRARY_DIR).use_cassette( 'test_load_balancer_tagging.yml'): subnet_ocid_1 = vcn_and_subnets[1] subnet_ocid_2 = vcn_and_subnets[2] # Setup the tag inputs tag_names_to_values = {} for t in tag_data_container.tags: tag_names_to_values[t.name] = 'somevalue {}'.format(t.name) tag_data_container.write_defined_tags_to_file( os.path.join('tests', 'temp', 'defined_tags_lb.json'), tag_data_container.tag_namespace, tag_names_to_values) # Create the LB with tags lb_name = util.random_name('cli_lb') params = [ 'load-balancer', 'create', '-c', util.COMPARTMENT_ID, '--display-name', lb_name, '--shape-name', '100Mbps', '--subnet-ids', '["{}","{}"]'.format(subnet_ocid_1, subnet_ocid_2), '--freeform-tags', 'file://tests/resources/tagging/freeform_tags_2.json', '--defined-tags', 'file://tests/temp/defined_tags_lb.json', '--wait-for-state', 'SUCCEEDED', '--wait-interval-seconds', util.WAIT_INTERVAL_SECONDS ] result = invoke(runner, config_file, config_profile, params) util.validate_response(result, json_response_expected=False) load_balancer = util.get_json_from_mixed_string(result.output) id = load_balancer['data']['id'] try: # Make sure the tags are in the results assert "tagOne" in load_balancer['data']['freeform-tags'] assert "value three" == load_balancer['data']['freeform-tags'][ "tagOne"] assert "cli_tag_ns_320683" in load_balancer['data']['defined-tags'] assert "cli_tag_320683" in load_balancer['data']['defined-tags'][ 'cli_tag_ns_320683'] assert "cli_tag_320683" in load_balancer['data']['defined-tags'][ 'cli_tag_ns_320683'] assert "somevalue cli_tag_320683" == load_balancer['data'][ 'defined-tags']['cli_tag_ns_320683']['cli_tag_320683'] # Get the LB and make sure the tags are in the results params = ['load-balancer', 'get', '--load-balancer-id', id] result = invoke(runner, config_file, config_profile, params) util.validate_response(result, json_response_expected=False) load_balancer = util.get_json_from_mixed_string(result.output) id = load_balancer['data']['id'] assert "tagOne" in load_balancer['data']['freeform-tags'] assert "value three" == load_balancer['data']['freeform-tags'][ "tagOne"] assert "cli_tag_ns_320683" in load_balancer['data']['defined-tags'] assert "cli_tag_320683" in load_balancer['data']['defined-tags'][ 'cli_tag_ns_320683'] assert "cli_tag_320683" in load_balancer['data']['defined-tags'][ 'cli_tag_ns_320683'] assert "somevalue cli_tag_320683" == load_balancer['data'][ 'defined-tags']['cli_tag_ns_320683']['cli_tag_320683'] # List the LB and check that the tags are in the result params = ['load-balancer', 'list', '-c', util.COMPARTMENT_ID] result = invoke(runner, config_file, config_profile, params) util.validate_response(result, json_response_expected=False) list_result = util.get_json_from_mixed_string(result.output) if len(list_result['data']) == 1: load_balancer = list_result['data'][0] assert "tagOne" in load_balancer['freeform-tags'] assert "value three" == load_balancer['freeform-tags'][ "tagOne"] assert "cli_tag_ns_320683" in load_balancer['defined-tags'] assert "cli_tag_320683" in load_balancer['defined-tags'][ 'cli_tag_ns_320683'] assert "cli_tag_320683" in load_balancer['defined-tags'][ 'cli_tag_ns_320683'] assert "somevalue cli_tag_320683" == load_balancer[ 'defined-tags']['cli_tag_ns_320683']['cli_tag_320683'] # Update the display name for the lb. params = [ 'load-balancer', 'update', '--load-balancer-id', id, '--display-name', 'new' + lb_name, '--wait-for-state', 'SUCCEEDED' ] result = invoke(runner, config_file, config_profile, params) util.validate_response(result, json_response_expected=False) params = ['load-balancer', 'get', '--load-balancer-id', id] result = invoke(runner, config_file, config_profile, params) util.validate_response(result, json_response_expected=False) load_balancer = util.get_json_from_mixed_string(result.output) assert "new" + lb_name == load_balancer['data']['display-name'] # Setup the tag inputs tag_names_to_values = {} for t in tag_data_container.tags: tag_names_to_values[t.name] = 'newvalue {}'.format(t.name) tag_data_container.write_defined_tags_to_file( os.path.join('tests', 'temp', 'defined_tags_lb.json'), tag_data_container.tag_namespace, tag_names_to_values) # Update the tags for the lb. params = [ 'load-balancer', 'update', '--load-balancer-id', id, '--freeform-tags', 'file://tests/resources/tagging/freeform_tags_1.json', '--defined-tags', 'file://tests/temp/defined_tags_lb.json', '--wait-for-state', 'SUCCEEDED', '--force' ] result = invoke(runner, config_file, config_profile, params) util.validate_response(result, json_response_expected=False) params = ['load-balancer', 'get', '--load-balancer-id', id] result = invoke(runner, config_file, config_profile, params) util.validate_response(result, json_response_expected=False) load_balancer = util.get_json_from_mixed_string(result.output) assert "tagOne" in load_balancer['data']['freeform-tags'] assert "tag_Two" in load_balancer['data']['freeform-tags'] assert "value1" == load_balancer['data']['freeform-tags']["tagOne"] assert "value two" == load_balancer['data']['freeform-tags'][ "tag_Two"] assert "cli_tag_ns_320683" in load_balancer['data']['defined-tags'] assert "cli_tag_320683" in load_balancer['data']['defined-tags'][ 'cli_tag_ns_320683'] assert "newvalue cli_tag_320683" == load_balancer['data'][ 'defined-tags']['cli_tag_ns_320683']['cli_tag_320683'] finally: # Delete the LB params = [ 'load-balancer', 'delete', '--load-balancer-id', id, '--force', '--wait-for-state', 'SUCCEEDED', '--wait-interval-seconds', util.WAIT_INTERVAL_SECONDS ] result = invoke(runner, config_file, config_profile, params) _validate_work_request_result(result, id)
def subtest_tagging_secondary_ip(self): vnics_on_instance_result = self.invoke([ 'compute', 'instance', 'list-vnics', '--instance-id', self.second_instance_id ]) vnics = json.loads(vnics_on_instance_result.output) vnic_id = vnics['data'][0]['id'] tag_names_to_values = {} for t in tag_data_container.tags: tag_names_to_values[t.name] = 'somevalue {}'.format(t.name) tag_data_container.write_defined_tags_to_file( os.path.join('tests', 'temp', 'defined_tags_ip.json'), tag_data_container.tag_namespace, tag_names_to_values) # We can set tags on assignment result = self.invoke([ 'network', 'vnic', 'assign-private-ip', '--vnic-id', vnic_id, '--freeform-tags', 'file://tests/resources/tagging/freeform_tags_1.json', '--defined-tags', 'file://tests/temp/defined_tags_ip.json' ]) private_ip_data = json.loads(result.output)['data'] expected_freeform = {'tagOne': 'value1', 'tag_Two': 'value two'} expected_defined = { tag_data_container.tag_namespace.name: tag_names_to_values } self.assertEqual(expected_freeform, private_ip_data['freeform-tags']) self.assertEqual(expected_defined, private_ip_data['defined-tags']) result = self.invoke([ 'network', 'private-ip', 'get', '--private-ip-id', private_ip_data['id'] ]) private_ip_info_from_get = json.loads(result.output)['data'] self.assertEqual(expected_freeform, private_ip_info_from_get['freeform-tags']) self.assertEqual(expected_defined, private_ip_info_from_get['defined-tags']) tag_names_to_values = {} for t in tag_data_container.tags: tag_names_to_values[t.name] = 'somevalue2 {}'.format(t.name) tag_data_container.write_defined_tags_to_file( os.path.join('tests', 'temp', 'defined_tags_2.json'), tag_data_container.tag_namespace, tag_names_to_values) # We can overwrite tags on update result = self.invoke([ 'network', 'private-ip', 'update', '--private-ip-id', private_ip_data['id'], '--freeform-tags', 'file://tests/resources/tagging/freeform_tags_2.json', '--defined-tags', 'file://tests/temp/defined_tags_2.json', '--force' ]) private_ip_data = json.loads(result.output)['data'] expected_freeform = {'tagOne': 'value three'} expected_defined = { tag_data_container.tag_namespace.name: tag_names_to_values } self.assertEqual(expected_freeform, private_ip_data['freeform-tags']) self.assertEqual(expected_defined, private_ip_data['defined-tags']) result = self.invoke([ 'network', 'private-ip', 'get', '--private-ip-id', private_ip_data['id'] ]) private_ip_info_from_get = json.loads(result.output)['data'] self.assertEqual(expected_freeform, private_ip_info_from_get['freeform-tags']) self.assertEqual(expected_defined, private_ip_info_from_get['defined-tags']) # We can nuke tags by providing an empty JSON object result = self.invoke([ 'network', 'private-ip', 'update', '--private-ip-id', private_ip_data['id'], '--freeform-tags', '{}', '--defined-tags', '{}', '--force' ]) private_ip_data = json.loads(result.output)['data'] self.assertEqual({}, private_ip_data['freeform-tags']) self.assertEqual({}, private_ip_data['defined-tags']) result = self.invoke([ 'network', 'private-ip', 'get', '--private-ip-id', private_ip_data['id'] ]) private_ip_info_from_get = json.loads(result.output)['data'] self.assertEqual({}, private_ip_info_from_get['freeform-tags']) self.assertEqual({}, private_ip_info_from_get['defined-tags']) result = self.invoke([ 'network', 'private-ip', 'delete', '--private-ip-id', private_ip_data['id'], '--force' ]) self.assertEqual(0, result.exit_code)
def update_policy_with_tags(self, policy_ocid): tag_names_to_values = {} for t in tag_data_container.tags: tag_names_to_values[t.name] = 'update_policy {} 1'.format(t.name) tag_data_container.write_defined_tags_to_file( os.path.join('tests', 'temp', 'defined_tags_identity.json'), tag_data_container.tag_namespace, tag_names_to_values) result = self.invoke([ 'policy', 'update', '--policy-id', policy_ocid, '--freeform-tags', 'file://tests/resources/tagging/freeform_tags_1.json', '--defined-tags', 'file://tests/temp/defined_tags_identity.json', '--force' ]) self.validate_response(result) parsed_result = json.loads(result.output) expected_freeform = {'tagOne': 'value1', 'tag_Two': 'value two'} expected_defined = { tag_data_container.tag_namespace.name: tag_names_to_values } assert expected_freeform == parsed_result['data']['freeform-tags'] assert expected_defined == parsed_result['data']['defined-tags'] result = self.invoke(['policy', 'get', '--policy-id', policy_ocid]) parsed_result = json.loads(result.output) assert expected_freeform == parsed_result['data']['freeform-tags'] assert expected_defined == parsed_result['data']['defined-tags'] result = self.invoke(['policy', 'list', '-c', util.TENANT_ID, '--all']) parsed_result = json.loads(result.output) found_policy = False for pr in parsed_result['data']: if pr['id'] == policy_ocid: assert expected_freeform == pr['freeform-tags'] assert expected_defined == pr['defined-tags'] found_policy = True break assert found_policy tag_names_to_values.pop(tag_data_container.tags[1].name) tag_data_container.write_defined_tags_to_file( os.path.join('tests', 'temp', 'defined_tags_identity.json'), tag_data_container.tag_namespace, tag_names_to_values) result = self.invoke([ 'policy', 'update', '--policy-id', policy_ocid, '--freeform-tags', 'file://tests/resources/tagging/freeform_tags_2.json', '--defined-tags', 'file://tests/temp/defined_tags_identity.json', '--force' ]) self.validate_response(result) parsed_result = json.loads(result.output) expected_freeform = {'tagOne': 'value three'} expected_defined = { tag_data_container.tag_namespace.name: tag_names_to_values } assert expected_freeform == parsed_result['data']['freeform-tags'] assert expected_defined == parsed_result['data']['defined-tags'] result = self.invoke(['policy', 'get', '--policy-id', policy_ocid]) parsed_result = json.loads(result.output) assert expected_freeform == parsed_result['data']['freeform-tags'] assert expected_defined == parsed_result['data']['defined-tags'] result = self.invoke([ 'policy', 'update', '--policy-id', policy_ocid, '--freeform-tags', '{}', '--defined-tags', '{}', '--force' ]) self.validate_response(result) parsed_result = json.loads(result.output) assert {} == parsed_result['data']['freeform-tags'] assert {} == parsed_result['data']['defined-tags'] result = self.invoke(['policy', 'get', '--policy-id', policy_ocid]) parsed_result = json.loads(result.output) assert {} == parsed_result['data']['freeform-tags'] assert {} == parsed_result['data']['defined-tags'] result = self.invoke(['policy', 'list', '-c', util.TENANT_ID, '--all']) parsed_result = json.loads(result.output) found_policy = False for pr in parsed_result['data']: if pr['id'] == policy_ocid: assert {} == pr['freeform-tags'] assert {} == pr['defined-tags'] found_policy = True break assert found_policy