Beispiel #1
0
 def get(self):
     agent = find_agent(self.request)
     if agent is None:  # get 'em all
         wf_list = { "workflows" : [build_uri(self, key.id()) for key in Workflow.query().iter(keys_only=True)] }
     else: # just those for agent
         wf_list = { "workflows" : [build_uri(self, key_id) for key_id in agent.workflows] }
     self.response.headers['Content-Type'] = 'application/json'
     self.response.write(json.encode(wf_list))
Beispiel #2
0
 def post(self):
     workflow = Workflow(**json.decode(self.request.body))
     versions = Workflow.query(Workflow.name == workflow.name).order(-Workflow.version).fetch(1)
     if any(versions): # bump version to one greater that last known one
         workflow.version = versions[0].version + 1
     new_key = workflow.put()
     logging.info("Create/update: %s", new_key.id())
     if any(versions): # replace earlier with this version in relevant agent workflow sets
         old_id = versions[0].key.id()
         for agent in Agent.query(Agent.trackVersion == True, Agent.workflows == old_id):
             agent.workflows.remove(old_id)
             agent.workflows.append(new_key.id())
     self.redirect('/workflows')