def post(self, Board): """Create a new Board. :param Board: a Board within the request body. """ context = pecan.request.context cdict = context.to_policy_values() policy.authorize('iot:board:create', cdict, cdict) if not Board.name: raise exception.MissingParameterValue(("Name is not specified.")) if not Board.code: raise exception.MissingParameterValue(("Code is not specified.")) if not Board.location: raise exception.MissingParameterValue( ("Location is not specified.")) if Board.name: if not api_utils.is_valid_board_name(Board.name): msg = ("Cannot create board with invalid name %(name)s") raise wsme.exc.ClientSideError(msg % {'name': Board.name}, status_code=400) new_Board = objects.Board(pecan.request.context, **Board.as_dict()) new_Board.owner = pecan.request.context.user_id new_Board.project = pecan.request.context.project_id new_Location = objects.Location(pecan.request.context, **Board.location[0].as_dict()) new_Board = pecan.request.rpcapi.create_board(pecan.request.context, new_Board, new_Location) return Board.convert_with_links(new_Board)
def post(self, Node): """Create a new Node. :param Node: a Node within the request body. """ if not Node.name: raise exception.MissingParameterValue(_("Name is not specified.")) if not Node.code: raise exception.MissingParameterValue(_("Code is not specified.")) if not Node.location: raise exception.MissingParameterValue( _("Location is not specified.")) if Node.name: if not api_utils.is_valid_node_name(Node.name): msg = _("Cannot create node with invalid name %(name)s") raise wsme.exc.ClientSideError(msg % {'name': Node.name}, status_code=400) new_Node = objects.Node(pecan.request.context, **Node.as_dict()) new_Node.create() new_Location = objects.Location(pecan.request.context, **Node.location[0].as_dict()) new_Location.node_id = new_Node.id new_Location.create() return Node.convert_with_locates(new_Node)
def post(self, Plugin): """Create a new Plugin. :param Plugin: a Plugin within the request body. """ context = pecan.request.context cdict = context.to_policy_values() policy.authorize('iot:plugin:create', cdict, cdict) if not Plugin.name: raise exception.MissingParameterValue(("Name is not specified.")) if Plugin.name: if not api_utils.is_valid_name(Plugin.name): msg = ("Cannot create plugin with invalid name %(name)s") raise wsme.exc.ClientSideError(msg % {'name': Plugin.name}, status_code=400) new_Plugin = objects.Plugin(pecan.request.context, **Plugin.as_dict()) new_Plugin.owner = cdict['user'] new_Plugin = pecan.request.rpcapi.create_plugin( pecan.request.context, new_Plugin) return Plugin.convert_with_links(new_Plugin)
def post(self, Service): """Create a new Service. :param Service: a Service within the request body. """ context = pecan.request.context cdict = context.to_policy_values() policy.authorize('iot:service:create', cdict, cdict) if not Service.name: raise exception.MissingParameterValue(("Name is not specified.")) if Service.name: if not api_utils.is_valid_name(Service.name): msg = ("Cannot create service with invalid name %(name)s") raise wsme.exc.ClientSideError(msg % {'name': Service.name}, status_code=400) new_Service = objects.Service(pecan.request.context, **Service.as_dict()) new_Service.project = cdict['project_id'] new_Service = pecan.request.rpcapi.create_service( pecan.request.context, new_Service) return Service.convert_with_links(new_Service)
def post(self, Fleet): """Create a new Fleet. :param Fleet: a Fleet within the request body. """ context = pecan.request.context cdict = context.to_policy_values() policy.authorize('iot:fleet:create', cdict, cdict) if not Fleet.name: raise exception.MissingParameterValue(("Name is not specified.")) if Fleet.name: if not api_utils.is_valid_name(Fleet.name): msg = ("Cannot create fleet with invalid name %(name)s") raise wsme.exc.ClientSideError(msg % {'name': Fleet.name}, status_code=400) new_Fleet = objects.Fleet(pecan.request.context, **Fleet.as_dict()) new_Fleet.project = cdict['project_id'] new_Fleet = pecan.request.rpcapi.create_fleet(pecan.request.context, new_Fleet) return Fleet.convert_with_links(new_Fleet)
def put(self, Injection): """inject a plugin into a board. :param plugin_ident: UUID or logical name of a plugin. :param board_ident: UUID or logical name of a board. """ if not Injection.plugin: raise exception.MissingParameterValue(("Plugin is not specified.")) if not Injection.onboot: Injection.onboot = False rpc_board = api_utils.get_rpc_board(self.board_ident) rpc_plugin = api_utils.get_rpc_plugin(Injection.plugin) try: cdict = pecan.request.context.to_policy_values() cdict['owner'] = rpc_board.owner policy.authorize('iot:plugin_inject:put', cdict, cdict) if not rpc_plugin.public: cdict = pecan.request.context.to_policy_values() cdict['owner'] = rpc_plugin.owner policy.authorize('iot:plugin_inject:put', cdict, cdict) except exception: return exception rpc_board.check_if_online() result = pecan.request.rpcapi.inject_plugin(pecan.request.context, rpc_plugin.uuid, rpc_board.uuid, Injection.onboot) return result
def delete(self, port): if not port: raise exception.MissingParameterValue(("Port is not specified.")) rpc_board = api_utils.get_rpc_board(self.board_ident) rpc_port = api_utils.get_rpc_port(port) rpc_board.check_if_online() result = pecan.request.rpcapi.remove_port_from_board( pecan.request.context, rpc_board.uuid, rpc_port.uuid) return result
def _validate_temp_url_config(self): """Validate the required settings for a temporary URL.""" if not CONF.glance.swift_temp_url_key: raise exc.MissingParameterValue( _('Swift temporary URLs require a shared secret to be created. ' 'You must provide "swift_temp_url_key" as a config option.')) if not CONF.glance.swift_endpoint_url: raise exc.MissingParameterValue( _('Swift temporary URLs require a Swift endpoint URL. ' 'You must provide "swift_endpoint_url" as a config option.')) if not CONF.glance.swift_account: raise exc.MissingParameterValue( _('Swift temporary URLs require a Swift account string. ' 'You must provide "swift_account" as a config option.')) if CONF.glance.swift_temp_url_duration < 0: raise exc.InvalidParameterValue( _('"swift_temp_url_duration" must be a positive integer.')) seed_num_chars = CONF.glance.swift_store_multiple_containers_seed if (seed_num_chars is None or seed_num_chars < 0 or seed_num_chars > 32): raise exc.InvalidParameterValue( _("An integer value between 0 and 32 is required for" " swift_store_multiple_containers_seed."))
def put(self, Network): if not Network.network: raise exception.MissingParameterValue( ("Network is not specified.")) rpc_board = api_utils.get_rpc_board(self.board_ident) rpc_board.check_if_online() result = pecan.request.rpcapi.\ create_port_on_board(pecan.request.context, rpc_board.uuid, Network.network, Network.subnet, Network.security_groups) return result
def action(self, service_ident, ServiceAction): if not ServiceAction.action: raise exception.MissingParameterValue(("Action is not specified.")) rpc_board = api_utils.get_rpc_board(self.board_ident) rpc_service = api_utils.get_rpc_service(service_ident) try: cdict = pecan.request.context.to_policy_values() cdict['owner'] = rpc_board.owner policy.authorize('iot:service_action:post', cdict, cdict) except exception: return exception rpc_board.check_if_online() result = pecan.request.rpcapi.action_service(pecan.request.context, rpc_service.uuid, rpc_board.uuid, ServiceAction.action) return result
def post(self, plugin_ident, PluginAction): if not PluginAction.action: raise exception.MissingParameterValue(("Action is not specified.")) if not PluginAction.parameters: PluginAction.parameters = {} rpc_board = api_utils.get_rpc_board(self.board_ident) rpc_plugin = api_utils.get_rpc_plugin(plugin_ident) try: cdict = pecan.request.context.to_policy_values() cdict['owner'] = rpc_board.owner policy.authorize('iot:plugin_action:post', cdict, cdict) if not rpc_plugin.public: cdict = pecan.request.context.to_policy_values() cdict['owner'] = rpc_plugin.owner policy.authorize('iot:plugin_action:post', cdict, cdict) except exception: return exception rpc_board.check_if_online() if objects.plugin.want_customs_params(PluginAction.action): valid_keys = list(rpc_plugin.parameters.keys()) if not all(k in PluginAction.parameters for k in valid_keys): raise exception.InvalidParameterValue( "Parameters are different from the valid ones") result = pecan.request.rpcapi.action_plugin(pecan.request.context, rpc_plugin.uuid, rpc_board.uuid, PluginAction.action, PluginAction.parameters) return result