コード例 #1
0
    def testAddressRange(self):
        result = AddressRange.create('api-iprange', '2.3.4.5-2.3.4.6')
        self.assertTrue(result.href.startswith('http'))

        addr = AddressRange('api-iprange')
        self.assertEqual(addr.ip_range, '2.3.4.5-2.3.4.6')

        self.assertEqual(addr.data.get('ip_range'), '2.3.4.5-2.3.4.6')
        addr.modify_attribute(ip_range='1.1.1.1-1.1.1.2')
        self.assertEqual(addr.data.get('ip_range'), '1.1.1.1-1.1.1.2')
        addr.rename('api-iprange2')
        addr = AddressRange('api-iprange2')

        Category.create(name='elements')
        addr.add_category(['elements'])
        for tag in addr.categories:
            self.assertEqual(tag.name, 'elements')

        # Add another tag but category doesnt exist so it wil be created automatically
        addr.add_category(['customtag', 'someothertag'])
        for tag in addr.categories:
            self.assertIn(tag.name, ['elements', 'customtag', 'someothertag'])

        self.assertIsNone(addr.comment)
        addr.data['comment'] = 'testcomment'
        self.assertEqual(addr.data.get('comment'), 'testcomment')

        addr.delete()
コード例 #2
0
    def add_category(self, category):
        """
        Category Tags are used to characterize an element by a type
        identifier. They can then be searched and returned as a group
        of elements. If the category tag specified does not exist, it
        will be created. This change will take effect immediately.

        :param list tags: list of category tag names to add to this
            element
        :type tags: list(str)
        :raises ElementNotFound: Category tag element name not found
        :return: None

        .. seealso:: :class:`smc.elements.other.Category`
        """
        assert isinstance(category, list), "Category input was expecting list."
        from smc.elements.other import Category

        for tag in category:
            category = Category(tag)
            try:
                category.add_element(self.href)
            except ElementNotFound:
                Category.create(name=tag)
                category.add_element(self.href)
コード例 #3
0
 def remove_tags(self, element, tags):
     """
     Remove tag/s from an element
     
     :param Element element: the element to add a tag.
     :param list tags: list of tags by name
     :return: boolean success or fail
     """
     changed = False
     current_tags = [tag.name for tag in element.categories]
     for tag in tags:
         if tag in current_tags:
             category = Category(tag)
             category.remove_element(element)
             changed = True
     return changed
コード例 #4
0
    def test_category_tag(self):
        category = Category.create('foo', comment='mycomment')
        self.assertTrue(category.href.startswith('http'))

        category = Category('foo')

        host = Host.create(name='categoryelement', address='1.1.1.1')
        # Add category tag by HREF
        result = category.add_element(host)
        self.assertIsNone(result)

        # Search result
        result = category.search_elements()
        self.assertTrue(result)  # Not []
        self.assertTrue(result[0].name == 'categoryelement')

        # Find the category tag from the element
        result = Host('categoryelement').categories
        self.assertTrue(result)
        self.assertTrue(result[0].name == 'foo')

        # Remove category
        result = category.remove_element(host)
        self.assertIsNone(result)

        # Add by smc.base.model.Element
        result = category.add_element(Host('categoryelement'))
        self.assertIsNone(result)

        # Search result
        result = category.search_elements()
        self.assertTrue(result)  # Not []
        self.assertTrue(result[0].name == 'categoryelement')

        # Delete result by smc.base.model.Element
        result = category.remove_element(Host('categoryelement'))
        self.assertIsNone(result)

        category_tag = CategoryTag.create(name='footag')
        category.add_category_tag([category_tag.href])

        for tag in category.categories:
            self.assertEqual(tag.name, 'footag')

        with self.assertRaises(DeleteElementFailed):
            Category('foo').delete()  #Dependencies

        category_tag = Element.from_href(category_tag.href)
        for category in category_tag.child_categories:
            self.assertTrue(category.name, 'foo')

        self.assertFalse(category_tag.parent_categories)

        # Throwing when __setattr__ set
        category_tag.remove_category([Category('foo')])

        Host('categoryelement').delete()
        Category('foo').delete()