def add(cls, user, permissions, automation, api=None): """ Add a member to the automation. :param user: Member username :param permissions: Permissions dictionary. :param automation: Automation object or id :param api: sevenbridges Api instance :return: Automation member object. """ user = Transform.to_user(user) automation = Transform.to_automation(automation) api = api or cls._API data = {'username': user} if isinstance(permissions, dict): data.update({ 'permissions': permissions }) member_data = api.post( url=cls._URL['query'].format(automation_id=automation), data=data ).json() return AutomationMember(api=api, **member_data)
def query(cls, automation=None, package=None, status=None, name=None, created_by=None, created_from=None, created_to=None, project_id=None, order_by=None, order=None, offset=None, limit=None, api=None): """ Query (List) automation runs. :param name: Automation run name :param automation: Automation template :param package: Package :param status: Run status :param created_by: Username of user that created the run :param order_by: Property by which to order results :param order: Ascending or descending ("asc" or "desc") :param created_from: Date the run is created after :param created_to: Date the run is created before :param project_id: Id of project if Automation run is project based :param offset: Pagination offset. :param limit: Pagination limit. :param api: Api instance. :return: collection object """ if automation: automation = Transform.to_automation(automation) if package: package = Transform.to_automation_package(package) api = api or cls._API return super()._query( url=cls._URL['query'], name=name, automation_id=automation, package_id=package, status=status, created_by=created_by, created_from=created_from, created_to=created_to, project_id=project_id, order_by=order_by, order=order, offset=offset, limit=limit, api=api, )
def remove(cls, user, automation, api=None): """ Remove a member from the automation. :param user: Member username :param automation: Automation id :param api: sevenbridges Api instance :return: None """ user = Transform.to_user(user) automation = Transform.to_automation(automation) api = api or cls._API api.delete(cls._URL['get'].format(automation_id=automation, id=user))
def get(cls, id, automation, api=None): """ Fetches the resource from the server. :param id: Automation member username :param automation: Automation id or object :param api: sevenbridges Api instance. :return: AutomationMember object. """ username = Transform.to_resource(id) automation = Transform.to_automation(automation) api = api or cls._API member = api.get(url=cls._URL['get'].format(automation_id=automation, id=username)).json() return AutomationMember(api=api, **member)
def create(cls, automation, version, location, schema, memory_limit=None, api=None): """ Create a code package. :param automation: Automation id. :param version: File ID of the uploaded code package. :param location: The code package version. :param schema: IO schema for main step of execution. :param memory_limit: Memory limit in MB. :param api: Api instance. :return: """ automation_id = Transform.to_automation(automation) api = api if api else cls._API if version is None: raise SbgError('Code package version is required!') if location is None: raise SbgError('Code package location is required!') if schema is None: raise SbgError('Schema is required!') data = { 'version': version, 'location': location, 'schema': schema, 'memory_limit': memory_limit, } extra = {'resource': cls.__name__, 'query': data} package_data = api.post( cls._URL['query'].format(automation_id=automation_id), data=data).json() logger.info('Add code package to automation with id %s', automation_id, extra=extra) return AutomationPackage(api=api, **package_data)
def restore(self): """ Restore archived package :return: AutomationPackage object. """ automation_id = Transform.to_automation(self.automation) extra = { 'resource': type(self).__name__, 'query': { 'id': self.id, } } logger.info('Restore archived automation package', extra=extra) package_data = self._api.post(url=self._URL['restore'].format( automation_id=automation_id, id=self.id)).json() return AutomationPackage(api=self._api, **package_data)
def query(cls, automation, offset=None, limit=None, api=None): """ Query (List) automation packages. :param automation: Automation id. :param offset: Pagination offset. :param limit: Pagination limit. :param api: Api instance. :return: collection object """ automation_id = Transform.to_automation(automation) api = api or cls._API return super()._query( url=cls._URL['query'].format(automation_id=automation_id), offset=offset, limit=limit, api=api, )