def fetchApp(self, prefix, hdf): _app = app.App(str(self.taskid)) doc = _app.load_yaml() hdf.setValue(prefix + "." + "package", _app.package) for key, val in doc.items(): if val is not None: hdf.setValue(prefix + "." + key, val) else: hdf.setValue(prefix + "." + key, '')
def start_task(self, req): a = app.App(req.taskid) a.load() pgroup = None runner = self._taskGroups.get(a.provides, None) if runner: if runner.task.taskid == req.taskid: print "already running" return StartTaskResponse("already running") self._stopTask(runner) if a.depends: pgroup = self._taskGroups.get(a.depends, None) if not pgroup: print "no parent task group %s running." % str(a.depends) return StartTaskResponse("no parent task group %s running." % str(a.depends)) runner = AppRunner(req.taskid, self) runner.app = a self._apps[req.taskid] = runner if a.provides: self._taskGroups[a.provides] = runner if pgroup: pgroup.childGroups.append(runner) #print "startTask [%s, %s, %s]" % (req.taskid, a.name, req.username) runner.task.taskid = req.taskid runner.task.username = req.username runner.task.started = rospy.get_rostime() runner.task.status = "starting" # self.app_update.publish(runner.task) self._send_status() runner.launch() runner.task.status = "running" # self.app_update.publish(runner.task) self._send_status() return StartTaskResponse("done")
def Action_Favorites(self, hdf): taskid = hdf.getValue("Query.taskid", "") doc = app.App(taskid).load_yaml() prefix = "CGI.cur.app" hdf.setValue(prefix + "." + "taskid", taskid) # for favorite apps user_record = self.authdb.users.lookup(self.username) if hdf.getValue("Query.set_favorite", "") == "1": user_record.add_favorite_app(taskid) elif hdf.getValue("Query.set_favorite", "") == "0": user_record.remove_favorite_app(taskid) if user_record.is_favorite_app(taskid): hdf.setValue("CGI.cur.favorite", "1") hdf.setValue("Content", "appinfo_favorites.cs")
def display(self, hdf): webutil.set_tabs(hdf, ["apps", "appinfo"]) webutil.grabTopics(hdf, []) taskid = hdf.getValue("Query.taskid", "") doc = app.App(taskid).load_yaml() prefix = "CGI.cur.app" hdf.setValue(prefix + "." + "taskid", taskid) for key, val in doc.items(): if type(val) is list: for i in range(0, len(val)): hdf.setValue(prefix + "." + key + "." + str(i), val[i]) elif val is not None: hdf.setValue(prefix + "." + key, val) else: hdf.setValue(prefix + "." + key, '') # for favorite apps user_record = self.authdb.users.lookup(self.username) hdf.setValue("CGI.cur.user.favorite_apps", user_record.favorite_apps) if user_record.is_favorite_app(taskid): hdf.setValue("CGI.cur.app.favorite", "1")
def start_task(self, req): a = app.App(req.taskid) a.load() # Check for conflicts between this task's provides and those of # running tasks. pgroup = None uncovered, pgroup = self._find_providers(a.provides) for runner in pgroup: if runner.task.taskid == req.taskid: print "already running" self._send_status() return StartTaskResponse("This app is already running.") if self.kill_on_conflict: self._stopTask(runner) else: return StartTaskResponse( "The %s app conflicts with the %s app; please stop the %s app" % (a.name, runner.app.name, runner.app.name)) # Check for satisfaction of this task's dependencies. if a.depends: uncovered, pgroup = self._find_providers(a.depends) if uncovered: print "no parent task group %s running" % str(uncovered) self._send_status() return StartTaskResponse( "No app that provides %s is running." % str(uncovered)) runner = AppRunner(req.taskid, self) runner.app = a self._apps[req.taskid] = runner if a.provides: self._taskGroups[a.provides] = runner if pgroup: for p in pgroup: p.childGroups.append(runner) #print "startTask [%s, %s, %s]" % (req.taskid, a.name, req.username) runner.task.taskid = req.taskid runner.task.username = req.username runner.task.started = rospy.get_rostime() runner.task.status = "starting" # self.app_update.publish(runner.task) self._send_status() try: runner.launch() except Exception as e: import traceback traceback.print_exc() runner.task.status = "error" self._send_status() self.runner = None self._stopTask(runner) return StartTaskResponse( "Exception while trying to launch the %s app: \"%s\"" % (req.taskid, e)) runner.task.status = "running" # self.app_update.publish(runner.task) self._send_status() return StartTaskResponse("done")