Ejemplo n.º 1
0
 def test_tag_type_reference_cannot_be_set(self):
     value = 'fake_value-%s' % self.id()
     tag_type = TagType(name='tag-type-%s' % self.id())
     tag = Tag(tag_type_name=tag_type.name, tag_value=value)
     tag.set_tag_type(tag_type)
     with ExpectedException(exceptions.BadRequest):
         self.api.tag_create(tag)
Ejemplo n.º 2
0
    def test_tag_type_reference_cannot_be_set(self):
        tag_value = 'fake_value-%s' % self.id()
        tag_type = TagType(name='tag-type-%s' % self.id())
        tag = Tag(tag_type_name=tag_type.name, tag_value=tag_value)
        tag.set_tag_type(tag_type)

        self.assertRaises(BadRequest, self.api.tag_create, tag)
Ejemplo n.º 3
0
    def test_unset_tag_from_a_resource(self):
        project = Project('project-%s' % self.id())
        self.api.project_create(project)
        vn = VirtualNetwork('vn-%s' % self.id(), parent_obj=project)
        vn_uuid = self.api.virtual_network_create(vn)

        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=tag_type,
                  tag_value=tag_value,
                  parent_obj=project)
        self.api.tag_create(tag)

        self.api.set_tag(vn, tag_type, tag_value)
        for system_tag_type in constants.TagTypeNameToId:
            self.api.tag_create(
                Tag(tag_type_name=system_tag_type, tag_value=tag_value))
            self.api.set_tag(vn, system_tag_type, tag_value, is_global=True)

        vn = self._vnc_lib.virtual_network_read(id=vn_uuid)
        self.assertEqual(len(vn.get_tag_refs()),
                         len(constants.TagTypeNameToId) + 1)
        self.assertTrue(tag.uuid in {ref['uuid'] for ref in vn.get_tag_refs()})

        self.api.unset_tag(vn, tag_type)

        vn = self._vnc_lib.virtual_network_read(id=vn_uuid)
        self.assertEqual(len(vn.get_tag_refs()),
                         len(constants.TagTypeNameToId))
        self.assertFalse(
            tag.uuid in {ref['uuid']
                         for ref in vn.get_tag_refs()})
Ejemplo n.º 4
0
    def test_only_one_value_for_a_type_can_be_associate_to_a_resource2(self):
        project = Project('project-%s' % self.id())
        self.api.project_create(project)
        tag_type = 'fake_type-%s' % self.id()
        global_tag = Tag(tag_type_name=tag_type,
                         tag_value='global_fake_value-%s' % self.id())
        self.api.tag_create(global_tag)
        scoped_tag = Tag(tag_type_name=tag_type,
                         tag_value='scoped_fake_value-%s' % self.id(),
                         parent_obj=project)
        self.api.tag_create(scoped_tag)

        vn = VirtualNetwork('vn-%s' % self.id(), parent_obj=project)
        vn.add_tag(global_tag)
        vn.add_tag(scoped_tag)
        self.assertRaises(BadRequest, self.api.virtual_network_create, vn)

        vn.set_tag(global_tag)
        self.api.virtual_network_create(vn)
        vn = self._vnc_lib.virtual_network_read(id=vn.uuid)
        self.assertEqual(len(vn.get_tag_refs()), 1)
        self.assertEqual(vn.get_tag_refs()[0]['uuid'], global_tag.uuid)

        vn.add_tag(scoped_tag)
        self.assertRaises(BadRequest, self.api.virtual_network_update, vn)
Ejemplo n.º 5
0
 def test_tag_type_reference_cannot_be_set(self):
     value = 'fake_value-%s' % self.id()
     tag_type = TagType(name='tag-type-%s' % self.id())
     tag = Tag(tag_type_name=tag_type.name, tag_value=value)
     tag.set_tag_type(tag_type)
     with ExpectedException(exceptions.BadRequest):
         self.api.tag_create(tag)
Ejemplo n.º 6
0
    def test_tag_type_reference_cannot_be_set(self):
        tag_value = 'fake_value-%s' % self.id()
        tag_type = TagType(name='tag-type-%s' % self.id())
        tag = Tag(tag_type_name=tag_type.name, tag_value=tag_value)
        tag.set_tag_type(tag_type)

        self.assertRaises(BadRequest, self.api.tag_create, tag)
Ejemplo n.º 7
0
    def test_tag_type_is_allocated(self):
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=tag_type, tag_value=tag_value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        self.assertEqual(len(tag.get_tag_type_refs()), 1)
Ejemplo n.º 8
0
    def test_tag_type_is_allocated(self):
        type = 'fake_type-%s' % self.id()
        value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=type, tag_value=value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        self.assertEqual(len(tag.get_tag_type_refs()), 1)
Ejemplo n.º 9
0
 def test_tag_id_cannot_be_updated(self):
     type = 'fake_type-%s' % self.id()
     value = 'fake_value-%s' % self.id()
     tag = Tag(tag_type_name=type, tag_value=value)
     tag_uuid = self.api.tag_create(tag)
     tag = self.api.tag_read(id=tag_uuid)
     with ExpectedException(exceptions.BadRequest):
         tag.tag_id = '0xdeadbeef'
         self.api.tag_update(tag)
Ejemplo n.º 10
0
    def test_set_unset_multi_value_of_authorized_type_on_one_resource(self):
        project = Project('project-%s' % self.id())
        self.api.project_create(project)
        vn = VirtualNetwork('vn-%s' % self.id(), parent_obj=project)
        vn_uuid = self.api.virtual_network_create(vn)

        # Label tag type is the only one type authorized to be set multiple
        # time on a same resource
        tag_type = 'label'
        tag_value1 = '%s-label1' % self.id()
        label_tag1 = Tag(tag_type_name=tag_type,
                         tag_value=tag_value1,
                         parent_obj=project)
        self.api.tag_create(label_tag1)
        tag_value2 = '%s-label2' % self.id()
        label_tag2 = Tag(tag_type_name=tag_type,
                         tag_value=tag_value2,
                         parent_obj=project)
        self.api.tag_create(label_tag2)
        tag_value3 = '%s-label3' % self.id()
        label_tag3 = Tag(tag_type_name=tag_type,
                         tag_value=tag_value3,
                         parent_obj=project)
        self.api.tag_create(label_tag3)

        tags_dict = {
            tag_type: {
                'value': tag_value1,
                'add_values': [tag_value2],
            },
        }
        self.api.set_tags(vn, tags_dict)

        vn = self._vnc_lib.virtual_network_read(id=vn_uuid)
        self.assertEqual(len(vn.get_tag_refs()), 2)
        self.assertEqual({ref['uuid']
                          for ref in vn.get_tag_refs()},
                         set([label_tag1.uuid, label_tag2.uuid]))

        tags_dict = {
            tag_type: {
                'add_values': [tag_value3],
                'delete_values': [tag_value1],
            },
        }
        self.api.set_tags(vn, tags_dict)

        vn = self._vnc_lib.virtual_network_read(id=vn_uuid)
        self.assertEqual(len(vn.get_tag_refs()), 2)
        self.assertEqual({ref['uuid']
                          for ref in vn.get_tag_refs()},
                         set([label_tag2.uuid, label_tag3.uuid]))

        self.api.unset_tag(vn, tag_type)

        vn = self._vnc_lib.virtual_network_read(id=vn_uuid)
        self.assertIsNone(vn.get_tag_refs())
Ejemplo n.º 11
0
    def test_tag_type_cannot_be_updated(self):
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=tag_type, tag_value=tag_value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        tag.tag_type_name = 'new_fake_type-%s' % self.id()
        self.assertRaises(BadRequest, self.api.tag_update, tag)
Ejemplo n.º 12
0
 def test_tag_id_cannot_be_updated(self):
     type = 'fake_type-%s' % self.id()
     value = 'fake_value-%s' % self.id()
     tag = Tag(tag_type_name=type, tag_value=value)
     tag_uuid = self.api.tag_create(tag)
     tag = self.api.tag_read(id=tag_uuid)
     with ExpectedException(exceptions.BadRequest):
         tag.tag_id = '0xdeadbeef'
         self.api.tag_update(tag)
Ejemplo n.º 13
0
    def test_tag_type_cannot_be_updated(self):
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=tag_type, tag_value=tag_value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        tag.tag_type_name = 'new_fake_type-%s' % self.id()
        self.assertRaises(BadRequest, self.api.tag_update, tag)
Ejemplo n.º 14
0
    def test_tag_type_reference_is_unique(self):
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=tag_type, tag_value=tag_value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        tag_type = TagType(name='tag-type-%s' % self.id())
        tag_type_uuid = self.api.tag_type_create(tag_type)
        tag_type = self.api.tag_type_read(id=tag_type_uuid)
        tag.add_tag_type(tag_type)
        self.assertRaises(BadRequest, self.api.tag_update, tag)
Ejemplo n.º 15
0
    def test_tag_type_reference_is_unique(self):
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=tag_type, tag_value=tag_value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        tag_type = TagType(name='tag-type-%s' % self.id())
        tag_type_uuid = self.api.tag_type_create(tag_type)
        tag_type = self.api.tag_type_read(id=tag_type_uuid)
        tag.add_tag_type(tag_type)
        self.assertRaises(BadRequest, self.api.tag_update, tag)
Ejemplo n.º 16
0
    def test_associated_tag_type_is_hidden_to_user(self):
        type = 'fake_type-%s' % self.id()
        value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=type, tag_value=value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        tag_type_uuid = tag.get_tag_type_refs()[0]['uuid']
        with mock.patch.object(self._api_server, 'is_admin_request',
                               return_value=True):
            tag_type = self.api.tag_type_read(id=tag_type_uuid)
        self.assertFalse(tag_type.get_id_perms().get_user_visible())
Ejemplo n.º 17
0
    def test_associated_tag_type_is_hidden_to_user(self):
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=tag_type, tag_value=tag_value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        tag_type_uuid = tag.get_tag_type_refs()[0]['uuid']
        with mock.patch.object(self._api_server, 'is_admin_request',
                               return_value=True):
            tag_type = self.api.tag_type_read(id=tag_type_uuid)
        self.assertFalse(tag_type.get_id_perms().get_user_visible())
Ejemplo n.º 18
0
    def test_tag_type_reference_is_unique(self):
        type = 'fake_type-%s' % self.id()
        value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=type, tag_value=value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        tag_type = TagType(name='tag-type-%s' % self.id())
        tag_type_uuid = self.api.tag_type_create(tag_type)
        tag_type = self.api.tag_type_read(id=tag_type_uuid)
        tag.add_tag_type(tag_type)
        with ExpectedException(exceptions.BadRequest):
            self.api.tag_update(tag)
Ejemplo n.º 19
0
    def test_pre_defined_tag_type_is_not_deleted_even_if_not_use(self):
        value = 'fake_value1-%s' % self.id()
        for type in constants.TagTypeNameToId.keys():
            tag = Tag(tag_type_name=type, tag_value=value)
            tag_uuid = self.api.tag_create(tag)
            tag = self.api.tag_read(id=tag_uuid)

            tag_type_uuid = tag.get_tag_type_refs()[0]['uuid']
            self.api.tag_delete(id=tag_uuid)
            with mock.patch.object(self._api_server, 'is_admin_request',
                                   return_value=True):
                tag_type = self.api.tag_type_read(id=tag_type_uuid)
            self.assertEqual(tag_type_uuid, tag_type.uuid)
Ejemplo n.º 20
0
    def test_tag_type_reference_cannot_be_removed(self):
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=tag_type, tag_value=tag_value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        tag_type_uuid = tag.get_tag_type_refs()[0]['uuid']
        with mock.patch.object(self._api_server, 'is_admin_request',
                               return_value=True):
            tag_type = self.api.tag_type_read(id=tag_type_uuid)
        tag.del_tag_type(tag_type)
        self.assertRaises(BadRequest, self.api.tag_update, tag)
Ejemplo n.º 21
0
    def test_allocate_tag_id(self):
        mock_zk = self._api_server._db_conn._zk_db
        type = 'fake_type-%s' % self.id()
        value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=type, tag_value=value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        zk_id = int(tag.tag_id, 0) & 0x0000ffff
        self.assertEqual(
            tag.get_fq_name_str(),
            mock_zk.get_tag_value_from_id(tag.tag_type_name, zk_id),
        )
Ejemplo n.º 22
0
    def test_associated_tag_type_is_deleted_if_not_used(self):
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=tag_type, tag_value=tag_value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        tag_type_uuid = tag.get_tag_type_refs()[0]['uuid']
        self.api.tag_delete(id=tag_uuid)
        with mock.patch.object(self._api_server, 'is_admin_request',
                               return_value=True):
            self.assertRaises(NoIdError, self.api.tag_type_read,
                              id=tag_type_uuid)
Ejemplo n.º 23
0
    def test_allocate_tag_id(self):
        mock_zk = self._api_server._db_conn._zk_db
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=tag_type, tag_value=tag_value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        zk_id = int(tag.tag_id, 0) & 0x0000ffff
        self.assertEqual(
            tag.get_fq_name_str(),
            mock_zk.get_tag_value_from_id(tag.tag_type_name, zk_id),
        )
Ejemplo n.º 24
0
    def test_associated_tag_type_is_deleted_if_not_used(self):
        type = 'fake_type-%s' % self.id()
        value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=type, tag_value=value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        tag_type_uuid = tag.get_tag_type_refs()[0]['uuid']
        self.api.tag_delete(id=tag_uuid)
        with ExpectedException(exceptions.NoIdError):
            with mock.patch.object(self._api_server, 'is_admin_request',
                                   return_value=True):
                self.api.tag_type_read(id=tag_type_uuid)
Ejemplo n.º 25
0
    def test_tag_type_reference_is_unique(self):
        type = 'fake_type-%s' % self.id()
        value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=type, tag_value=value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        tag_type = TagType(name='tag-type-%s' % self.id())
        tag_type_uuid = self.api.tag_type_create(tag_type)
        tag_type = self.api.tag_type_read(id=tag_type_uuid)
        tag.add_tag_type(tag_type)
        with ExpectedException(exceptions.BadRequest):
            self.api.tag_update(tag)
Ejemplo n.º 26
0
    def test_create_project_scoped_tag(self):
        project = Project('project-%s' % self.id())
        self.api.project_create(project)

        type = 'fake_type-%s' % self.id()
        value = 'fake_value-%s' % self.id()
        tag = Tag(parent_obj=project, tag_type_name=type, tag_value=value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        self.assertEqual(
            tag.get_fq_name_str(),
            '%s:%s=%s' % (project.get_fq_name_str(), type.lower(), value),
        )
Ejemplo n.º 27
0
    def test_pre_defined_tag_type_is_not_deleted_even_if_not_use(self):
        tag_value = 'fake_value1-%s' % self.id()
        for tag_type_name in constants.TagTypeNameToId.keys():
            tag = Tag(tag_type_name=tag_type_name, tag_value=tag_value)
            tag_uuid = self.api.tag_create(tag)
            tag = self.api.tag_read(id=tag_uuid)

            tag_type_uuid = tag.get_tag_type_refs()[0]['uuid']
            self.api.tag_delete(id=tag_uuid)
            with mock.patch.object(self._api_server,
                                   'is_admin_request',
                                   return_value=True):
                tag_type = self.api.tag_type_read(id=tag_type_uuid)
            self.assertEqual(tag_type_uuid, tag_type.uuid)
Ejemplo n.º 28
0
    def test_create_project_scoped_tag(self):
        project = Project('project-%s' % self.id())
        self.api.project_create(project)

        type = 'fake_type-%s' % self.id()
        value = 'fake_value-%s' % self.id()
        tag = Tag(parent_obj=project, tag_type_name=type, tag_value=value)
        tag_uuid = self.api.tag_create(tag)
        tag = self.api.tag_read(id=tag_uuid)

        self.assertEqual(
            tag.get_fq_name_str(),
            '%s:%s=%s' % (project.get_fq_name_str(), type.lower(), value),
        )
Ejemplo n.º 29
0
    def test_add_remove_multi_value_of_authorized_type_on_same_resource(self):
        project = Project('project-%s' % self.id())
        self.api.project_create(project)
        vn = VirtualNetwork('vn-%s' % self.id(), parent_obj=project)
        # Label tag type is the only one type authorized to be set multiple
        # time on a same resource
        tag_type = 'label'
        tag_value1 = '%s-label1' % self.id()
        label_tag1 = Tag(tag_type_name=tag_type,
                         tag_value=tag_value1,
                         parent_obj=project)
        self.api.tag_create(label_tag1)
        tag_value2 = '%s-label2' % self.id()
        label_tag2 = Tag(tag_type_name=tag_type,
                         tag_value=tag_value2,
                         parent_obj=project)
        self.api.tag_create(label_tag2)
        tag_value3 = '%s-label3' % self.id()
        label_tag3 = Tag(tag_type_name=tag_type,
                         tag_value=tag_value3,
                         parent_obj=project)
        self.api.tag_create(label_tag3)

        vn.add_tag(label_tag1)
        vn.add_tag(label_tag2)
        self.api.virtual_network_create(vn)
        vn = self._vnc_lib.virtual_network_read(id=vn.uuid)
        self.assertEqual(len(vn.get_tag_refs()), 2)
        self.assertEqual({ref['uuid']
                          for ref in vn.get_tag_refs()},
                         set([label_tag1.uuid, label_tag2.uuid]))

        vn.add_tag(label_tag3)
        self.api.virtual_network_update(vn)
        vn = self._vnc_lib.virtual_network_read(id=vn.uuid)
        self.assertEqual(len(vn.get_tag_refs()), 3)
        self.assertEqual(
            {ref['uuid']
             for ref in vn.get_tag_refs()},
            set([label_tag1.uuid, label_tag2.uuid, label_tag3.uuid]))

        vn.del_tag(label_tag2)
        self.api.virtual_network_update(vn)
        vn = self._vnc_lib.virtual_network_read(id=vn.uuid)
        self.assertEqual(len(vn.get_tag_refs()), 2)
        self.assertEqual({ref['uuid']
                          for ref in vn.get_tag_refs()},
                         set([label_tag1.uuid, label_tag3.uuid]))
Ejemplo n.º 30
0
    def test_address_group_can_only_have_label_tag_type_ref(self):
        project = Project('project-%s' % self.id())
        self.api.project_create(project)
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=tag_type,
                  tag_value=tag_value,
                  parent_obj=project)
        self.api.tag_create(tag)

        # Cannot create AG with ref to a non label tag
        ag = AddressGroup('ag-%s' % self.id(), parent_obj=project)
        ag.add_tag(tag)
        self.assertRaises(BadRequest, self.api.address_group_create, ag)

        ag.set_tag_list([])
        self.api.address_group_create(ag)

        # Cannot set non lable tag to an AG with /set-tag API
        self.assertRaises(BadRequest, self.api.set_tag, ag, tag_type,
                          tag_value)

        # Cannot add ref to a non label tag to AG
        ag.add_tag(tag)
        self.assertRaises(BadRequest, self.api.address_group_update, ag)
Ejemplo n.º 31
0
    def test_set_tag_api_sanity(self):
        project = Project('project-%s' % self.id())
        self.api.project_create(project)
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=tag_type, tag_value=tag_value,
                  parent_obj=project)
        self.api.tag_create(tag)
        vn = VirtualNetwork('vn-%s' % self.id(), parent_obj=project)
        self.api.virtual_network_create(vn)
        url = self.api._action_uri['set-tag']

        test_suite = [
            ({'obj_uuid': vn.uuid}, BadRequest),
            ({'obj_type': 'virtual_network'}, BadRequest),
            ({'obj_uuid': 'fake_uuid', 'obj_type': 'virtual_network'},
             NoIdError),
            ({'obj_uuid': vn.uuid, 'obj_type': 'wrong_type'}, BadRequest),
            ({
                'obj_uuid': vn.uuid, 'obj_type': 'virtual_network',
                tag_type: {'value': tag_value}
            }, None),
            ({
                'obj_uuid': vn.uuid, 'obj_type': 'virtual-network',
                tag_type: {'value': tag_value}
            }, None),
        ]

        for tags_dict, result in test_suite:
            if result and issubclass(result, Exception):
                self.assertRaises(result, self.api._request_server,
                                  OP_POST, url, json.dumps(tags_dict))
            else:
                self.api._request_server(OP_POST, url, json.dumps(tags_dict))
Ejemplo n.º 32
0
 def test_tag_id_cannot_be_set(self):
     tag_type = 'fake_type-%s' % self.id()
     tag_value = 'fake_value-%s' % self.id()
     tag = Tag(tag_type_name=tag_type,
               tag_value=tag_value,
               tag_id='0xDEADBEEF')
     self.assertRaises(BadRequest, self.api.tag_create, tag)
Ejemplo n.º 33
0
    def test_associated_tag_type_is_not_deleted_if_in_use(self):
        tag_type = 'fake_type-%s' % self.id()
        tag_value1 = 'fake_value1-%s' % self.id()
        tag1 = Tag(tag_type_name=tag_type, tag_value=tag_value1)
        tag1_id = self.api.tag_create(tag1)
        tag1 = self.api.tag_read(id=tag1_id)

        tag_value2 = 'fake_value2-%s' % self.id()
        tag2 = Tag(tag_type_name=tag_type, tag_value=tag_value2)
        self.api.tag_create(tag2)

        tag_type_uuid = tag1.get_tag_type_refs()[0]['uuid']
        self.api.tag_delete(id=tag1_id)
        with mock.patch.object(self._api_server, 'is_admin_request',
                               return_value=True):
            tag_type = self.api.tag_type_read(id=tag_type_uuid)
        self.assertEqual(tag_type_uuid, tag_type.uuid)
Ejemplo n.º 34
0
    def test_tag_is_unique(self):
        project = Project('project-%s' % self.id())
        self.api.project_create(project)
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag1 = Tag(tag_type_name=tag_type, tag_value=tag_value)
        self.api.tag_create(tag1)
        scoped_tag1 = Tag(tag_type_name=tag_type, tag_value=tag_value,
                          parent_obj=project)
        self.api.tag_create(scoped_tag1)
        gevent.sleep(float(self.STALE_LOCK_SECS))

        tag2 = Tag(tag_type_name=tag_type, tag_value=tag_value)
        self.assertRaises(RefsExistError, self.api.tag_create, tag2)
        scoped_tag2 = Tag(tag_type_name=tag_type, tag_value=tag_value,
                          parent_obj=project)
        self.assertRaises(RefsExistError, self.api.tag_create, scoped_tag2)
Ejemplo n.º 35
0
 def test_ud_tag_type_ud_tag_value_exceeds(self):
     tag_type = 'fake_type-%s' % self.id()
     tag_value = 'fake_value-%s' % self.id()
     # Create auto tag and ud tag-type
     tag = Tag(tag_type_name=tag_type,
               tag_value=tag_value,
               tag_id='0xDEAD00011')
     self.assertRaises(BadRequest, self.api.tag_create, tag)
Ejemplo n.º 36
0
    def test_associated_tag_type_is_not_deleted_if_in_use(self):
        type = 'fake_type-%s' % self.id()
        value1 = 'fake_value1-%s' % self.id()
        tag1 = Tag(tag_type_name=type, tag_value=value1)
        tag1_id = self.api.tag_create(tag1)
        tag1 = self.api.tag_read(id=tag1_id)

        value2 = 'fake_value2-%s' % self.id()
        tag2 = Tag(tag_type_name=type, tag_value=value2)
        self.api.tag_create(tag2)

        tag_type_uuid = tag1.get_tag_type_refs()[0]['uuid']
        self.api.tag_delete(id=tag1_id)
        with mock.patch.object(self._api_server, 'is_admin_request',
                               return_value=True):
            tag_type = self.api.tag_type_read(id=tag_type_uuid)
        self.assertEqual(tag_type_uuid, tag_type.uuid)
Ejemplo n.º 37
0
    def test_associate_scoped_tag_to_project(self):
        project = Project('project-%s' % self.id())
        self.api.project_create(project)
        type = 'fake_type-%s' % self.id()
        value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=type, tag_value=value, parent_obj=project)
        self.api.tag_create(tag)

        self.api.set_tag(project, type, value)
Ejemplo n.º 38
0
    def test_tag_duplicable_between_global_and_project(self):
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()

        global_tag = Tag(tag_type_name=tag_type, tag_value=tag_value)
        global_tag_uuid = self.api.tag_create(global_tag)
        global_tag = self.api.tag_read(id=global_tag_uuid)

        project = Project('project-%s' % self.id())
        self.api.project_create(project)
        scoped_tag = Tag(parent_obj=project, tag_type_name=tag_type,
                         tag_value=tag_value)
        scoped_tag_uuid = self.api.tag_create(scoped_tag)
        scoped_tag = self.api.tag_read(id=scoped_tag_uuid)

        self.assertNotEquals(global_tag.uuid, scoped_tag.uuid)
        self.assertNotEquals(global_tag.fq_name, scoped_tag.fq_name)
        self.assertNotEquals(global_tag.tag_id, scoped_tag.tag_id)
Ejemplo n.º 39
0
    def test_ud_tag_and_ud_tag_type(self):
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()
        tag = Tag(tag_type_name=tag_type,
                  tag_value=tag_value,
                  tag_id='0xDEADBEEF')
        tag_uuid = self.api.tag_create(tag)
        tag_obj = self.api.tag_read(id=tag_uuid)
        tag_type_uuid = tag_obj.get_tag_type_refs()[0]['uuid']
        with mock.patch.object(self._api_server,
                               'is_admin_request',
                               return_value=True):
            tag_type_read = self.api.tag_type_read(id=tag_type_uuid)
        # validate if user defined tag type is created
        self.assertEqual(tag_type_uuid, tag_type_read.uuid)
        # validate if tag type id is 0xDEAD
        self.assertEqual("0xdead", tag_type_read.tag_type_id.lower())
        # validate complete tag_id
        self.assertEqual("0xdeadbeef", tag_obj.tag_id.lower())

        # Negative test check if recreating of tag with different
        # fq-name but same ID fails
        tag_value = 'fake_value-ud%s' % self.id()
        tag = Tag(tag_type_name=tag_type,
                  tag_value=tag_value,
                  tag_id='0xDEADBEEF')
        self.assertRaises(BadRequest, self.api.tag_create, tag)

        # Validate user defined tag delete.
        tag_obj = self.api.tag_read(id=tag_uuid)
        self.assertIsNotNone(tag_uuid)
        self.api.tag_delete(id=tag_uuid)
        self.assertRaises(NoIdError, self.api.tag_read, id=tag_uuid)

        # validate release tag ID can be re-allocated to be sure
        # IDs are reserved and freed properly
        tag_value = 'fake_value%s' % self.id()
        tag = Tag(tag_type_name=tag_type,
                  tag_value=tag_value,
                  tag_id='0xDEADBEEF')
        tag_uuid = self.api.tag_create(tag)
        tag_obj = self.api.tag_read(id=tag_uuid)
        self.assertIsNotNone(tag_uuid)
        self.assertEqual("0xdeadbeef", tag_obj.tag_id.lower())
Ejemplo n.º 40
0
    def test_only_one_value_for_a_type_can_be_associate_to_a_resource(self):
        project = Project('project-%s' % self.id())
        self.api.project_create(project)
        vn = VirtualNetwork('vn-%s' % self.id(), parent_obj=project)
        vn_uuid = self.api.virtual_network_create(vn)

        tag_type = 'fake_type-%s' % self.id()
        global_tag_value = 'global_fake_value-%s' % self.id()
        global_tag = Tag(tag_type_name=tag_type, tag_value=global_tag_value)
        self.api.tag_create(global_tag)

        tags_dict = {
            tag_type: {
                'is_global': True,
                'value': global_tag_value,
            },
        }
        self.api.set_tags(vn, tags_dict)

        vn = self._vnc_lib.virtual_network_read(id=vn_uuid)
        self.assertEqual(len(vn.get_tag_refs()), 1)
        self.assertEqual(vn.get_tag_refs()[0]['uuid'], global_tag.uuid)

        scoped_tag_value = 'scoped_fake_value-%s' % self.id()
        scoped_tag = Tag(tag_type_name=tag_type,
                         tag_value=scoped_tag_value,
                         parent_obj=project)
        self.api.tag_create(scoped_tag)

        tags_dict = {
            tag_type: {
                'value': scoped_tag_value,
            },
        }
        self.api.set_tags(vn, tags_dict)

        # Scoped tag which is the same type as the global tag but with a
        # different value, replaced the global tag ref of the VN. One at a time
        vn = self._vnc_lib.virtual_network_read(id=vn_uuid)
        self.assertEqual(len(vn.get_tag_refs()), 1)
        self.assertEqual(vn.get_tag_refs()[0]['uuid'], scoped_tag.uuid)
Ejemplo n.º 41
0
    def test_tag_is_unique(self):
        project = Project('project-%s' % self.id())
        self.api.project_create(project)
        type = 'fake_type-%s' % self.id()
        value = 'fake_value-%s' % self.id()
        tag1 = Tag(tag_type_name=type, tag_value=value)
        self.api.tag_create(tag1)
        scoped_tag1 = Tag(tag_type_name=type,
                          tag_value=value,
                          parent_obj=project)
        self.api.tag_create(scoped_tag1)
        gevent.sleep(float(self.STALE_LOCK_SECS))

        tag2 = Tag(tag_type_name=type, tag_value=value)
        with ExpectedException(exceptions.RefsExistError):
            self.api.tag_create(tag2)
        scoped_tag2 = Tag(tag_type_name=type,
                          tag_value=value,
                          parent_obj=project)
        with ExpectedException(exceptions.RefsExistError):
            self.api.tag_create(scoped_tag2)
Ejemplo n.º 42
0
    def test_tag_duplicable_between_project(self):
        tag_type = 'fake_type-%s' % self.id()
        tag_value = 'fake_value-%s' % self.id()

        project1 = Project('project1-%s' % self.id())
        self.api.project_create(project1)
        project1_tag = Tag(parent_obj=project1, tag_type_name=tag_type,
                           tag_value=tag_value)
        project1_tag_uuid = self.api.tag_create(project1_tag)
        project1_tag = self.api.tag_read(id=project1_tag_uuid)

        project2 = Project('project2-%s' % self.id())
        self.api.project_create(project2)
        project2_tag = Tag(parent_obj=project2, tag_type_name=tag_type,
                           tag_value=tag_value)
        project2_tag_uuid = self.api.tag_create(project2_tag)
        project2_tag = self.api.tag_read(id=project2_tag_uuid)

        self.assertNotEquals(project1_tag.uuid, project2_tag.uuid)
        self.assertNotEquals(project1_tag.fq_name, project2_tag.fq_name)
        self.assertNotEquals(project1_tag.tag_id, project2_tag.tag_id)
Ejemplo n.º 43
0
    def test_not_deallocate_tag_id_if_value_does_not_correspond(self):
        mock_zk = self._api_server._db_conn._zk_db
        tag_type = 'fake_type-%s' % self.id()
        tag_value1 = 'fake_value1-%s' % self.id()
        tag_value2 = 'fake_value2-%s' % self.id()
        tag1 = Tag(tag_type_name=tag_type, tag_value=tag_value1)
        tag_uuid = self.api.tag_create(tag1)
        tag1 = Tag(tag_type_name=tag_type, tag_value=tag_value2)
        tag_uuid = self.api.tag_create(tag1)
        tag1 = self.api.tag_read(id=tag_uuid)

        zk_id = int(tag1.tag_id, 0) & 0x0000ffff
        fake_fq_name = "fake fq_name"
        mock_zk._tag_value_id_allocator[tag1.tag_type_name].delete(zk_id)
        mock_zk._tag_value_id_allocator[tag1.tag_type_name].reserve(
            zk_id, fake_fq_name)
        self.api.tag_delete(id=tag_uuid)
        self.assertIsNotNone(
            mock_zk.get_tag_value_from_id(tag1.tag_type_name, zk_id))
        self.assertEqual(
            fake_fq_name,
            mock_zk.get_tag_value_from_id(tag1.tag_type_name, zk_id),
        )
Ejemplo n.º 44
0
    def test_pre_defined_tag_type_is_not_deleted_even_if_not_use(self):
        mock_zk = self._api_server._db_conn._zk_db
        tag_value = 'fake_value1-%s' % self.id()
        for tag_type_name in constants.TagTypeNameToId.keys():
            tag = Tag(tag_type_name=tag_type_name, tag_value=tag_value)
            tag_uuid = self.api.tag_create(tag)
            tag = self.api.tag_read(id=tag_uuid)

            tag_type_uuid = tag.get_tag_type_refs()[0]['uuid']
            zk_id = int(tag.tag_id, 0) & 0x0000ffff
            self.assertEqual(
                mock_zk.get_tag_value_from_id(tag.tag_type_name, zk_id),
                tag.get_fq_name_str(),
            )
            self.api.tag_delete(id=tag_uuid)
            with mock.patch.object(self._api_server, 'is_admin_request',
                                   return_value=True):
                tag_type = self.api.tag_type_read(id=tag_type_uuid)
            self.assertEqual(tag_type_uuid, tag_type.uuid)
            self.assertNotEqual(
                mock_zk.get_tag_value_from_id(tag.tag_type_name, zk_id),
                tag.get_fq_name_str(),
            )