def get_launched(self): '''Scan the dynamodb table for all minions with status == LAUNCH, return list''' mm = MinionInstance() terminated_minions = [] try: minions = mm.scan() for m in minions: if m.status == 'LAUNCH': terminated_minions.append(str(m.instanceid)) except Exception, e: raise
def create_or_update_minion(self, instanceid, modified, highstate_runner, highstate_ran, status): '''Attempt to retrieve the item update and save it, failing that create it and save it''' # no default value for instanceid, has be supplied if not instanceid: raise try: r = ddb.MinionInstance.get(instanceid) #print "Minion entry exists for instanceid %s" % instanceid if modified: r.modified = modified if highstate_runner: r.highstate_runner = highstate_runner if highstate_ran: r.highstate_ran = highstate_ran if status: r.status = status r.save(raise_on_conflict=True) #except ConflictError: --- Must fix this for race condition of running highstates # # giving a second try to save the data # time.sleep(2) # self.create_or_update_minion.....(instanceid, modified, ipaddr, status) except boto.exception.BotoClientError: #print "Minion entry does not exist for instanceid %s, creating one." % instanceid mm = MinionInstance() mm.instanceid = instanceid if modified: mm.modified = modified if highstate_runner: mm.highstate_runner = highstate_runner if highstate_ran: mm.highstate_ran = highstate_ran if status: mm.status = status mm.save() except Exception, e: raise