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
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
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