def put(self, receiver_token_auth, plugin_gus, *uriargs): """ Request: receiverProfileDesc Response: receiverProfileDesc Errors: InvalidInputFormat, ProfileGusNotFound """ # we have to make various check in this handler: # tip validation (thru ReceiverTip) # profile validation (thru , fields validation request = json.loads(self.request.body) receivertip_iface = externaltip.ReceiverTip() plugin_manager = GLPluginManager() profile_iface = options.PluginProfiles() profile_d = plugin_code = receiver_d = None try: receiver_d = yield receivertip_iface.get_receiver_by_tip(tip_gus) plugin_code = plugin_manager.get_plugins(request['plugin_type']).get(['plugin_name']) profile_d = profile_iface.admin_get_single(profile_gus) except externaltip.TipGusNotFound, e: self.set_status(e.http_status) self.write({'error_message': e.error_message, 'error_code' : e.error_code})
def put(self, plugin_name, profile_gus, *uriargs): """ Request: adminProfileDesc Response: adminProfileDesc Errors: ProfileGusNotFound, InvalidInputFormat, ProfileNameConflict """ request = json.loads(self.request.body) if not request: self.write({'error_message': 'Missing request', 'error_code' : 123}) self.set_status(400) else: plugin_manager = GLPluginManager() if not plugin_manager.plugin_exists(request['plugin_type'], request['plugin_name']): self.set_status(406) self.write({'error_message': 'Invalid plugin (type/name) requested', 'error_code' : 123 }) else: # reach the GLPlugin class implementation plugin_code = plugin_manager.get_plugin(request['plugin_type'], request['plugin_name']) new_settings = request['admin_fields'] if request['admin_fields'] else None new_name = request['profile_name'] if request['profile_name'] else None new_desc = request['description'] if request['description'] else None if not plugin_code.validate_admin_opt(new_settings): self.set_status(406) self.write({'error_message': 'Invalid request format in Profile creation (fields content)', 'error_code' : 123 }) else: plugin_iface = options.PluginProfiles() try: yield plugin_iface.update_profile(profile_gus, settings=new_settings, desc=new_desc, profname=new_name) self.set_status(200) except ProfileNameConflict, e: self.set_status(e.http_status) self.write({'error_message': e.error_message, 'error_code' : e.error_code}) except ProfileGusNotFound, e: self.set_status(e.http_status) self.write({'error_message': e.error_message, 'error_code' : e.error_code})
def post(self, plugin_name, *uriargs): """ Request: adminProfileDesc Response: adminProfileDesc Errors: ProfileGusNotFound, InvalidInputFormat, ProfileNameConflict, PluginNameNotFound """ request = json.loads(self.request.body) # this is not the right approach, the validation would be implemented # correctly in short time, when can be reviewed the generation of doc and # validation of input/output if not request: self.write({'error_message': 'Missing request!', 'error_code' : 123}) self.set_status(400) self.finish() # this behaviour cause an error from Cyclone plugin_manager = GLPluginManager() if not plugin_manager.plugin_exists(request['plugin_type'], request['plugin_name']): self.set_status(406) self.write({'error_message': 'Invalid plugin (type/name) requested', 'error_code' : 123 }) else: # reach the GLPlugin class implementation plugin_code = plugin_manager.get_plugin(request['plugin_type'], request['plugin_name']) if plugin_code.validate_admin_opt(request['admin_fields']) and request['profile_name']: plugin_iface = options.PluginProfiles() try: new_profile = yield plugin_iface.newprofile(request['plugin_type'], request['plugin_name'], request['profile_name'], { 'admin' : plugin_code.admin_fields, 'receiver' : plugin_code.admin_fields}, request['description'], request['profile_settings'] ) self.set_status(200) self.write({'profile_gus': new_profile}) except ProfileNameConflict, e: self.set_status(e.http_status) self.write({'error_message': e.error_message, 'error_code' : e.error_code}) else: