Exemplo n.º 1
0
 def test_init_options(self):
     user1 = models.DatastoreUser(self.username)
     self._test_user_basic(user1)
     user2 = models.DatastoreUser(self.username, self.password, self.host,
                                  self.dbname)
     self._test_user_full(user2)
     user3 = models.DatastoreUser(name=self.username,
                                  password=self.password,
                                  host=self.host,
                                  databases=self.dbname)
     self._test_user_full(user3)
Exemplo n.º 2
0
    def _get_user(self, username, hostname):
        LOG.debug("Get details of a given database user %s." % username)
        user = models.DatastoreUser(name=username)
        databases, marker = self.list_databases()
        out = None
        for database in databases:
            db2_db = models.DatastoreSchema.deserialize(database)
            try:
                out, err = run_command(
                    system.LIST_DB_USERS % {'dbname': db2_db.name})
            except exception.ProcessExecutionError:
                LOG.debug(
                    "Error while trying to get the users for database: %s." %
                    db2_db.name)
                continue

            for item in out.split('\n'):
                user_access = item.split() if item != "" else None
                if (user_access is not None and
                        user_access[0].lower() == username.lower() and
                        user_access[1] == 'Y'):
                    user.databases = db2_db.name
                    break
        return user
Exemplo n.º 3
0
 def test_checks_fail(self, mock_ignored_users):
     mock_ignored_users.return_value = [self.username]
     user = models.DatastoreUser(self.username)
     self.assertRaises(ValueError, user.check_reserved)
     self.assertRaises(ValueError, user.check_create)
     self.assertRaises(ValueError, user.check_delete)
Exemplo n.º 4
0
 def test_checks_pass(self):
     user = models.DatastoreUser(self.username)
     user.check_reserved()
     user.check_create()
     user.check_delete()
Exemplo n.º 5
0
 def test_is_root(self):
     user = models.DatastoreUser(self.username)
     self.assertFalse(user._is_root)
     user.make_root()
     self.assertTrue(user._is_root)
Exemplo n.º 6
0
 def test_validate_dict_defaults(self):
     user = models.DatastoreUser(self.username)
     user.verify_dict()
     self.assertIsNone(user.password)
     self.assertEqual(self.host_wildcard, user.host)
     self.assertEqual([], user.databases)
Exemplo n.º 7
0
 def test_verify_dict(self):
     user = models.DatastoreUser(self.username, self.password, self.host,
                                 self.dbname)
     self._test_verify_dict_with_mocks(user)
Exemplo n.º 8
0
 def test_serialize(self):
     user1 = models.DatastoreUser(self.username)
     self.assertEqual(self.serial_user_basic, user1.serialize())
     user2 = models.DatastoreUser(self.username, self.password, self.host,
                                  self.dbname)
     self.assertEqual(self.serial_user_full, user2.serialize())
Exemplo n.º 9
0
 def test_init_name(self):
     user1 = models.DatastoreUser(self.username)
     self._test_user_basic(user1)
     user2 = models.DatastoreUser(name=self.username)
     self._test_user_basic(user2)
Exemplo n.º 10
0
 def _empty_user(self):
     return models.DatastoreUser(deserializing=True)
Exemplo n.º 11
0
    def list_users(self, limit=None, marker=None, include_marker=False):
        LOG.debug(
            "List all users for all the databases in a DB2 server instance.")
        users = []
        user_map = {}
        next_marker = None
        count = 0

        databases, marker = self.list_databases()
        for database in databases:
            db2_db = models.DatastoreSchema.deserialize(database)
            out = None
            try:
                out, err = run_command(
                    system.LIST_DB_USERS % {'dbname': db2_db.name})
            except exception.ProcessExecutionError:
                LOG.debug(
                    "There was an error while listing users for database: %s."
                    % db2_db.name)
                continue

            userlist = []
            for item in out.split('\n'):
                LOG.debug("item = %r" % item)
                user = item.split() if item != "" else None
                LOG.debug("user = %r" % (user))
                if (user is not None
                    and (user[0] not in cfg.get_ignored_users()
                         and user[1] == 'Y')):
                    userlist.append(user[0])
            result = iter(userlist)

            if marker is not None:
                try:
                    item = next(result)
                    while item != marker:
                        item = next(result)

                    if item == marker:
                        marker = None
                except StopIteration:
                    pass

            try:
                item = next(result)

                while item:
                    '''
                    Check if the user has already been discovered. If so,
                    add this database to the database list for this user.
                    '''
                    if item in user_map:
                        db2user = user_map.get(item)
                        db2user.databases = db2_db.name
                        item = next(result)
                        continue
                    '''
                     If this user was not previously discovered, then add
                     this to the user's list.
                    '''
                    count = count + 1
                    if (limit and count <= limit) or limit is None:
                        db2_user = models.DatastoreUser(name=item,
                                                        databases=db2_db.name)
                        users.append(db2_user.serialize())
                        user_map.update({item: db2_user})
                        item = next(result)
                    else:
                        next_marker = None
                        break
            except StopIteration:
                next_marker = None

            if count == limit:
                break
        return users, next_marker