def create(*, db_session, service_plugin_in: ServicePluginCreate) -> ServicePlugin: """ Create a new service_plugin. """ service = plugin = None # service = Service() if service_plugin_in.service: if service_plugin_in.service.org_id or service_plugin_in.service.org_id == 0: service = service_service.get_by_code_and_org_code( db_session=db_session, code=service_plugin_in.service.code, org_id=service_plugin_in.service.org_id ) else: service = service_service.get_by_code( db_session=db_session, code=service_plugin_in.service.code ) plugin = Plugin() if service_plugin_in.plugin: plugin = plugin_service.get_by_slug( db_session=db_session, slug=service_plugin_in.plugin.slug) if service is None or plugin is None: raise HTTPException(status_code=404, detail="service is None or plugin is None.") service_plugin = ServicePlugin( **service_plugin_in.dict(exclude={"service", "plugin", "config"}), service_id=service.id, plugin_id=plugin.id, config=plugin.config ) db_session.add(service_plugin) db_session.commit() return service_plugin
def create(*, db_session, service_plugin_in: ServicePluginCreate) -> ServicePlugin: """ Create a new service_plugin. """ service = plugin = None # service = Service() if service_plugin_in.service: service = service_service.get_by_code( db_session=db_session, code=service_plugin_in.service.code) plugin = Plugin() if service_plugin_in.plugin: plugin = plugin_service.get_by_slug(db_session=db_session, slug=service_plugin_in.plugin.slug) if service is None or plugin is None: raise HTTPException(status_code=204, detail="service is None or plugin is None.") service_plugin = ServicePlugin( **service_plugin_in.dict(exclude={"service", "plugin"}), service=service, plugin=plugin, ) db_session.add(service_plugin) db_session.commit() return service_plugin
def register(self, cls): from dispatch.database import SessionLocal from dispatch.plugin import service as plugin_service from dispatch.plugin.models import Plugin db_session = SessionLocal() record = plugin_service.get_by_slug(db_session=db_session, slug=cls.slug) if not record: plugin = Plugin( title=cls.title, slug=cls.slug, type=cls.type, version=cls.version, author=cls.author, author_url=cls.author_url, required=cls.required, multiple=cls.multiple, description=cls.description, enabled=cls.enabled, ) db_session.add(plugin) else: # we only update values that should change record.tile = cls.title record.version = cls.version record.author = cls.author record.author_url = cls.author_url record.description = cls.description db_session.add(record) db_session.commit() self.add(f"{cls.__module__}.{cls.__name__}") return cls
def install_plugins(force): """Installs all plugins, or only one.""" from dispatch.database import SessionLocal from dispatch.plugin import service as plugin_service from dispatch.plugin.models import Plugin db_session = SessionLocal() for p in plugins.all(): record = plugin_service.get_by_slug(db_session=db_session, slug=p.slug) if not record: click.secho( f"Installing plugin... Slug: {p.slug} Version: {p.version}", fg="blue") record = Plugin( title=p.title, slug=p.slug, type=p.type, version=p.version, author=p.author, author_url=p.author_url, required=p.required, multiple=p.multiple, description=p.description, enabled=p.enabled, ) db_session.add(record) if force: click.secho( f"Updating plugin... Slug: {p.slug} Version: {p.version}", fg="blue") # we only update values that should change record.tile = p.title record.version = p.version record.author = p.author record.author_url = p.author_url record.description = p.description record.required = p.required record.type = p.type db_session.add(record) db_session.commit()
def register(self, cls): from dispatch.database import SessionLocal from dispatch.plugin import service as plugin_service from dispatch.plugin.models import Plugin db_session = SessionLocal() record = plugin_service.get_by_slug(db_session=db_session, slug=cls.slug) if cls.slug == "kandbox_env": logger.debug("Debugging loading kandbox_env") if not record: config = {} config_spec = {} try: config_spec = cls.config_form_spec config = cls.default_config except Exception as e: logger.warn( f"Unable to find config spec for plugin: {cls.slug}, type = {cls.type} " ) plugin = Plugin( title=cls.title, slug=cls.slug, type=cls.type, version=cls.version, author=cls.author, author_url=cls.author_url, required=cls.required, multiple=cls.multiple, description=cls.description, enabled=cls.enabled, config=config, config_form_spec=config_spec, ) db_session.add(plugin) else: # we only update values that should change record.tile = cls.title record.version = cls.version record.author = cls.author record.author_url = cls.author_url record.description = cls.description db_session.add(record) db_session.commit() db_session.close() self.add(f"{cls.__module__}.{cls.__name__}") return cls