Ejemplo n.º 1
0
def startItUp():
    conn = meConnector.createEC2connection()
    try:
        strayInstances = False
        meReservations = conn.get_all_instances()
        for reservation in meReservations:
            for instance in reservation.instances:
                if (instance.state != 'terminated'):
                    strayInstances = True
                    badInstance = instance
    except Exception, e:
        meTools.mailIt(email,'Error with get_all_instances()!', 'Exception:\n\n%s' % e)
Ejemplo n.º 2
0
def createEC2connection():
    try:
        keyQuery = db.GqlQuery("Select * From EC2Credentials")
        result = keyQuery.fetch(1)
        
        meConn = EC2Connection(aws_access_key_id     = result[0].public,
                               aws_secret_access_key = result[0].private,
                               is_secure             = result[0].is_secure)
        meConn.SignatureVersion = result[0].SignatureVersion
        return meConn
    except Exception, e:
        meTools.mailIt(email,'Error Connecting to EC2!', 'Exception:\n\n%s' % e)
        raise
Ejemplo n.º 3
0
 def post(self):
     instanceID = str(self.request.get('instanceID'))
     conn = meConnector.createEC2connection()
     try:
         meInstances = conn.get_all_instances(instanceID)
         for reservation in meInstances:
             for instance in reservation.instances:
                 if instance.state == 'running':
                     meTools.mailIt(email,'Instance Running!','InstanceID: %s is %s' % (instance.id,instance.state))
                 elif instance.state == 'terminated':
                     meTools.mailIt(email,'Instance Terminated?!','InstanceID: %s is %s' % (instance.id,instance.state))
                 else:
                     addChkInstanceTask(instanceID)
                     meTools.mailIt(email,'Instance NOT Running!','Trying again in 50 seconds.\nInstanceID: %s is %s' %
                                                                                (instance.id,instance.state))
     except Exception, e:
         meTools.mailIt(email,'Error with get_all_instances()!', 'Exception:\n\n%s' % e)
Ejemplo n.º 4
0
        for reservation in meReservations:
            for instance in reservation.instances:
                if (instance.state != 'terminated'):
                    strayInstances = True
                    badInstance = instance
    except Exception, e:
        meTools.mailIt(email,'Error with get_all_instances()!', 'Exception:\n\n%s' % e)
        #raise                                                               #Raising exception may cause Cron to retry indefinitely.
    if not strayInstances:
        try:
            config = meSchema.getConfig()
            meImage = conn.get_image(config[0].AMI_id)                       # Also add wakeup-time?
            result = meImage.run( key_name        = config[0].keypair_name,
                                  placement       = config[0].placement,
                                  security_groups = config[0].security_groups )
            meTools.mailIt(email,'Started new instance up!!!', '%s\n%s' % (result, result.instances[0].id))
        except Exception, e:
            meTools.mailIt(email,'Could Not Start AMI!','Error:\n%s' % e)
            #raise                                                           #Raising exception may cause Cron to retry indefinitely.
        meTasks.addChkInstanceTask(str(result.instances[0].id))
    else:
        meTools.mailIt(email,'Instances Already Running!','InstanceID: %s is %s' % (badInstance.id,badInstance.state))

email = '*****@*****.**'
application = webapp.WSGIApplication([('/starter/startAMI', StartAMI)],
                                     debug=True)


def main():
    run_wsgi_app(application)
Ejemplo n.º 5
0
def addChkInstanceTask(instanceStr):
    try:
        taskqueue.add(url = '/tasks/checkIt', countdown = 50,
                      params = {'instanceID': instanceStr} )
    except Exception, e:
        meTools.mailIt(email,'Problem Adding Task!','Error: %s' % e)