Example #1
0
    def __fill_user_data__(self, user_data, selector):
        """
        Encapsulates user information inside RestObject instance
        Returns RestObject instance
        """
        # TODO create empty object using schema definition
        user_dict = RestObject.create_empty_json(selector)
        if OVSDB_SCHEMA_CONFIG in user_dict:
            user_dict[OVSDB_SCHEMA_CONFIG]["username"] = user_data.pw_name

        user_instance = RestObject.from_json(user_dict)
        return user_instance
Example #2
0
    def update(self, item_id, data, current_user):
        """
        Update user from ovsdb_users group
        Returns result dictionary
        """
        # Validate json
        validation_result = self.schema_validator.validate_json(data,
                                                                OP_UPDATE)
        if validation_result is not None:
            return {ERROR: validation_result}
        # Validate user
        data[OVSDB_SCHEMA_CONFIG]["username"] = item_id
        user = RestObject.from_json(data)
        validation_result = self.validator.validate_update(user, current_user)
        if validation_result is not None:
            return {ERROR: validation_result}

        # Update user
        username = user.configuration.username
        encoded_password = self.__get_encrypted_password__(user)
        result = {}
        try:
            cmd_result = self.__call_user_mod__(username, encoded_password)
            if cmd_result != 0:
                error_json = to_json_error("User %s not modified" % username,
                                           None, None)
                result = {ERROR: error_json}
        except KeyError:
            error_json = to_json_error("An error ocurred", None, None)
            result = {ERROR: error_json}
        return result
Example #3
0
    def create(self, data, current_user):
        """
        Create user at ovsdb_users group
        Returns result dictionary
        """
        # Validate json
        validation_result = self.schema_validator.validate_json(data,
                                                                OP_CREATE)
        if validation_result is not None:
            return {ERROR: validation_result}

        # Validate user
        user = RestObject.from_json(data)
        validation_result = self.validator.validate_create(user, current_user)
        if validation_result is not None:
            return {ERROR: validation_result}

        # Create user
        username = user.configuration.username
        result = {}
        try:
            """
            Add the user first because the user_id is going to be used as
            part of the salt
            """
            cmd_result_add = self.__call_user_add__(username)
            if cmd_result_add == 0:
                encoded_password = self.__get_encrypted_password__(user)
                cmd_result_mod = self.__call_user_mod__(username,
                                                        encoded_password)
                if cmd_result_mod == 0:
                    result = {"key": username}
                else:
                    # Try to delete the added user
                    cmd_result_del = self.__call_user_del__(username)
                    message_error = ""
                    if cmd_result_del == 0:
                        message_error = "User password not set, user deleted."
                    else:
                        message_error = "User password not set, failed deleting "\
                                        "user."
                    error_json = to_json_error(message_error, None, None)
                    result = {ERROR: error_json}
            else:
                error_json = to_json_error("User %s not added" % username,
                                           None, None)
                result = {ERROR: error_json}
        except KeyError:
            error_json = to_json_error("An error ocurred", None, None)
            result = {ERROR: error_json}

        return result
Example #4
0
    def get_all(self, current_user, selector=None, query_args=None):
        """
        Retrieve all users from ovsdb_users group
        Return users dictionary list
        """
        group_id = user_utils.get_group_id(DEFAULT_USER_GRP)
        all_users = []
        users = pwd.getpwall()
        for user_data in users:
            if user_data.pw_gid == group_id:
                user_instance = self.__fill_user_data__(user_data, selector)
                if user_instance:
                    all_users.append(user_instance)

        result = RestObject.to_json_list(all_users)
        return result