def _do_update_plugin(self, plugin_id, values): session = get_session() with session.begin(): query = model_query(models.Plugin, session=session) query = add_identity_filter(query, plugin_id) try: ref = query.with_lockmode('update').one() except NoResultFound: raise exception.PluginNotFound(plugin=plugin_id) ref.update(values) return ref
def destroy_plugin(self, plugin_id): session = get_session() with session.begin(): query = model_query(models.Plugin, session=session) query = add_identity_filter(query, plugin_id) try: plugin_ref = query.one() except NoResultFound: raise exception.PluginNotFound(plugin=plugin_id) # Get plugin ID, if an UUID was supplied. The ID is # required for deleting all ports, attached to the plugin. if uuidutils.is_uuid_like(plugin_id): plugin_id = plugin_ref['id'] query.delete()
def get_rpc_plugin(plugin_ident): """Get the RPC plugin from the plugin uuid or logical name. :param plugin_ident: the UUID or logical name of a plugin. :returns: The RPC Plugin. :raises: InvalidUuidOrName if the name or uuid provided is not valid. :raises: PluginNotFound if the plugin is not found. """ # Check to see if the plugin_ident is a valid UUID. If it is, treat it # as a UUID. if uuidutils.is_uuid_like(plugin_ident): return objects.Plugin.get_by_uuid(pecan.request.context, plugin_ident) # We can refer to plugins by their name, if the client supports it # if allow_plugin_logical_names(): # if utils.is_hostname_safe(plugin_ident): else: return objects.Plugin.get_by_name(pecan.request.context, plugin_ident) raise exception.InvalidUuidOrName(name=plugin_ident) raise exception.PluginNotFound(plugin=plugin_ident)
def get_plugin_by_name(self, plugin_name): query = model_query(models.Plugin).filter_by(name=plugin_name) try: return query.one() except NoResultFound: raise exception.PluginNotFound(plugin=plugin_name)