def getTask(self, robotName, serviceGuid, taskGuid, **kwargs): service = self._get_service(robotName, serviceGuid) try: task = service.task_list.get_task_by_guid(taskGuid) except TaskNotFoundError: raise exceptions.NotFound( "Couldn't find task with guid: {}".format(taskGuid)) ecoid = '' duration = "{0:.8f}".format( task.duration ) if task.duration else 'Duration info not available yet.' if task.eco: eco = j.portal.tools.models.system.Errorcondition.find( {'uniquekey': task.eco.uniquekey})[0] ecoid = str(eco.pk) data = { 'actionName': task.action_name, 'guid': task.guid, 'createdTime': j.data.time.epoch2HRDateTime(task.created), 'state': task.state, 'duration': duration, 'result': task.result or '', 'ecoid': ecoid } return data
def _get_service(self, robotName, guid): self._check_zrobot(robotName) zrobot_api = j.clients.zrobot.robots[robotName] if guid not in zrobot_api.services.guids: raise exceptions.NotFound( "Couldn't find service with guid: {}".format(guid)) service = zrobot_api.services.guids[guid] return service
def editGroup(self, name, description, users, **args): """ edit a group param:name name of group param:description of group result bool """ groups = j.portal.tools.models.system.Group.find({"name": name}) if not groups: raise exceptions.NotFound("Group with name %s does not exists" % name) else: group = groups[0] if users and isinstance(users, str): users = users.split(',') elif not users: users = [] users_old = [ u['name'] for u in j.portal.tools.models.system.User.find({'groups': name}) ] users_remove = [x for x in users_old if x not in users] for user_name in users_remove: user = self._getUser(user_name) user['groups'].remove(group.name) user.save() users_add = [x for x in users if x not in users_old] for user_name in users_add: user = self._getUser(user_name) if not user: raise exceptions.BadRequest( "user with name %s does not exists" % user) user['groups'].append(group.name) user.save() group['name'] = name group['description'] = description group.save() return True
def _check_zrobot(self, name): if name not in j.clients.zrobot.list(): raise exceptions.NotFound( "Couldn't find robot instance: {}".format(name))