Exemple #1
0
    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')
Exemple #2
0
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)
Exemple #5
0
    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