Example #1
0
 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
Example #2
0
    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