예제 #1
0
 def _processConfig(self, amis, commands, user, burn_at_the_end, key_name, security_groups, instance_type):
     """execute a configuration, internal method of run"""
     amis_burned = []
     errors = []
     for ami in amis:
         config_name = ami[1]
         ami = ami[0]
         inst, dns_name = self._ec2.startInstance(ami, instance_type, key_name, security_groups)
         instance_name = inst.id
         self._ec2.waitForConnectionReady(inst, user, self.pk, dns_name)
         r, e = self.executeCommands(user, inst.dns_name, self.pk, commands, config_name)
         self.saveReport(r, config_name)
         errors += e
         if len(e) > 0:
             logging.warning("There were errors while executing the commands. Not burning the instance...")
         else:
             if burn_at_the_end:
                 try:
                     new_ami = self._ec2.createImage(inst.id, config_name + "-" 
                                                     + datetime.datetime.now().isoformat(), "generated by " 
                                                     + self.app_name)
                     logging.info("ami: %s is being generated for configuration: %s" 
                                  % (new_ami, config_name))
                     amis_burned.append([new_ami, config_name])
                     util.writeFile(self.out_file, new_ami + "," + instance_name + os.linesep)
                 except:
                     logging.exception("Problem burning image: %s with instance: %s" % (config_name, inst.id))
         return amis_burned, errors
예제 #2
0
 def burnInstance(self, instance, config_name):
     config_name = config_name + "-" + datetime.datetime.now().isoformat()
     new_ami = self._ec2.createImage(instance, config_name, "generated by " 
                                     + self._app_name)
     logging.info("ami: %s is being generated. Name: %s" 
                  % (new_ami, config_name))
     util.writeFile(self.out_file, new_ami + "," + config_name)
     return new_ami
예제 #3
0
 def startInstance(self, ami, instance_type, key_name, security_groups, new_size):
     #todo: use the whole set of attributes and default options
     inst, dns_name = self._ec2.startInstance(ami, instance_type, key_name, security_groups, new_size)
     util.writeFile(self.out_file, inst.id + "," + dns_name)