コード例 #1
0
ファイル: admin_test.py プロジェクト: ywong587/treadmill
    def test_schema(self):
        """Test schema parsing."""
        # Disable W0212: Test access protected members of admin module.
        # pylint: disable=W0212
        attrs = [
            '{0}( %s NAME x1 DESC \'x x\''
            ' ORDERING integerOrderingMatch'
            ' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27'
            ' )' % (admin._TREADMILL_ATTR_OID_PREFIX + '11'),
            '{1}( %s NAME x2 DESC \'x x\''
            ' SUBSTR caseIgnoreSubstringsMatch'
            ' EQUALITY caseIgnoreMatch'
            ' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15'
            ' )' % (admin._TREADMILL_ATTR_OID_PREFIX + '22'),
        ]

        obj_classes = [
            '{0}( %s NAME o1 DESC \'x x\''
            ' SUP top STRUCTURAL'
            ' MUST ( xxx ) MAY ( a $ b )'
            ' )' % (admin._TREADMILL_OBJCLS_OID_PREFIX + '33'),
        ]

        admin_obj = admin.Admin(None, None)
        admin_obj.ldap = ldap3.Connection(ldap3.Server('fake'),
                                          client_strategy=ldap3.MOCK_SYNC)

        admin_obj.ldap.strategy.add_entry(
            'cn={1}treadmill,cn=schema,cn=config', {
                'olcAttributeTypes': attrs,
                'olcObjectClasses': obj_classes
            })

        admin_obj.ldap.bind()

        self.assertEqual(
            {
                'dn': 'cn={1}treadmill,cn=schema,cn=config',
                'objectClasses': {
                    'o1': {
                        'idx': 33,
                        'desc': 'x x',
                        'must': ['xxx'],
                        'may': ['a', 'b'],
                    },
                },
                'attributeTypes': {
                    'x1': {
                        'idx': 11,
                        'desc': 'x x',
                        'type': 'int'
                    },
                    'x2': {
                        'idx': 22,
                        'desc': 'x x',
                        'type': 'str',
                        'ignore_case': True
                    },
                }
            }, admin_obj.schema())
コード例 #2
0
    def test_add(self):
        """Tests add logic."""
        admin_obj = admin.Admin(None, 'dc=test,dc=com')
        admin_obj.write_ldap = ldap3.Connection(
            ldap3.Server('fake'), client_strategy=ldap3.MOCK_SYNC
        )

        admin_obj.add(
            'ou=example,dc=test,dc=com',
            'testClass',
            {
                'foo': 1,
                'bar': ['z', 'a'],
                'lot': 2,
                'exp': [3, 4]
            }
        )

        call = admin_obj.write_ldap.add.call_args_list[0][0]
        self.assertEqual(call[0], 'ou=example,dc=test,dc=com')
        self.assertEqual(call[1], 'testClass')
        self.assertEqual(
            [attr for attr in six.iteritems(call[2])],
            [('bar', ['z', 'a']), ('exp', [3, 4]), ('foo', 1), ('lot', 2)]
        )
コード例 #3
0
    def test_update(self):
        """Tests update logic.
        """
        mock_admin = admin.Admin(None, 'dc=test,dc=com')
        mock_admin.paged_search.return_value = [
            (
                'cell=xxx,allocation=prod1,...',
                {
                    'disk': ['2G'],
                    'trait': ['a', 'b'],
                    'priority;tm-alloc-assignment-123': [80],
                    'pattern;tm-alloc-assignment-123': ['ppp.ttt'],
                    'priority;tm-alloc-assignment-345': [60],
                    'pattern;tm-alloc-assignment-345': ['ppp.ddd'],
                }
            )
        ]

        mock_admin.update(
            'cell=xxx,allocation=prod1,...',
            {
                'disk': ['1G'],
                'trait': ['a'],
                'priority;tm-alloc-assignment-0': [80],
                'pattern;tm-alloc-assignment-0': ['ppp.ttt'],
                'priority;tm-alloc-assignment-345': [30],
                'pattern;tm-alloc-assignment-345': ['ppp.ddd'],
            }
        )

        mock_admin.paged_search.assert_called_once_with(
            search_base=mock.ANY,
            search_scope=mock.ANY,
            search_filter=mock.ANY,
            attributes=[
                'disk',
                'pattern',
                'priority',
                'trait',
            ],
            dirty=False,
        )
        mock_admin.modify.assert_called_once_with(
            'cell=xxx,allocation=prod1,...',
            {
                'disk': [('MODIFY_REPLACE', ['1G'])],
                'trait': [('MODIFY_REPLACE', ['a'])],
                'priority;tm-alloc-assignment-123': [('MODIFY_DELETE', [])],
                'pattern;tm-alloc-assignment-123': [('MODIFY_DELETE', [])],
                'pattern;tm-alloc-assignment-0': [('MODIFY_ADD', ['ppp.ttt'])],
                'priority;tm-alloc-assignment-0': [('MODIFY_ADD', [80])],
                'priority;tm-alloc-assignment-345': [('MODIFY_REPLACE', [30])]
            }
        )
コード例 #4
0
ファイル: admin_test.py プロジェクト: ywong587/treadmill
    def test_init(self):
        """Tests init logic."""
        admin_obj = admin.Admin(None, 'dc=test,dc=com')
        admin_obj.write_ldap = ldap3.Connection(
            ldap3.Server('fake'), client_strategy=ldap3.MOCK_SYNC)

        admin_obj.init()

        dn_list = [
            arg[0][0] for arg in admin_obj.write_ldap.add.call_args_list
        ]

        self.assertTrue('dc=test,dc=com' in dn_list)
        self.assertTrue('ou=treadmill,dc=test,dc=com' in dn_list)
        self.assertTrue('ou=apps,ou=treadmill,dc=test,dc=com' in dn_list)
コード例 #5
0
ファイル: admin_test.py プロジェクト: ywong587/treadmill
 def setUp(self):
     self.part = admin.Partition(admin.Admin(None, 'dc=xx,dc=com'))
コード例 #6
0
ファイル: admin_test.py プロジェクト: ywong587/treadmill
 def setUp(self):
     self.cell_alloc = admin.CellAllocation(
         admin.Admin(None, 'dc=xx,dc=com'))
コード例 #7
0
ファイル: admin_test.py プロジェクト: ywong587/treadmill
 def setUp(self):
     self.alloc = admin.Allocation(admin.Admin(None, 'dc=xx,dc=com'))
コード例 #8
0
ファイル: admin_test.py プロジェクト: ywong587/treadmill
 def setUp(self):
     self.tnt = admin.Tenant(admin.Admin(None, 'dc=xx,dc=com'))
コード例 #9
0
ファイル: admin_test.py プロジェクト: ywong587/treadmill
 def setUp(self):
     self.server = admin.Server(admin.Admin(None, 'dc=xx,dc=com'))