Ejemplo n.º 1
0
def create_instance(service_uuid, instance_type, user_name, image_id):
    service = Service.get(uuid=service_uuid)
    subnet_id = config.PRIVATE_SUBNET_ID
    if 'deploy' in service.name.lower():
        subnet_id = config.PUBLIC_SUBNET_ID

    conn = connect_ec2()
    reservation = conn.run_instances(image_id,
                                     key_name=service.key_name,
                                     instance_type=instance_type,
                                     security_group_ids=config.INSTANCE_SG,
                                     subnet_id=subnet_id)
    instances = reservation.instances
    instance = instances[0]
    host = Host.create_or_update(instance.id,
                                 private_ip=instance.private_ip_address,
                                 public_ip=instance.ip_address,
                                 public_dns=instance.public_dns_name,
                                 image_type=instance_type,
                                 image_id=image_id,
                                 username=user_name)
    host.add_service(service.uuid)
    instance.add_tag("Name", "{}-{}".format(service.name.lower(), host.uuid))
    queue().enqueue_call(func=check_instance_for_configuration, args=[host.uuid, service_uuid], timeout=120)
    return host
 def __init__(self, service_uuid, deploy_uuid):
     self.service = Service.get(uuid=service_uuid)
     if not deploy_uuid:
         self.deploying = None
     else:
         self.deploying = Deploy.get(uuid=deploy_uuid)
     self.deploy_succeeded = True
     self.current_deploy = self.service.get_current_deploy()
def update_service_elb_visibility(service, internal):
    if internal == service.internal:
        return service
    # TO DO: Figure out how to update an elb's scheme
    # conn = connect_ec2_elb()
    # scheme = 'internal' if service.internal else 'internet-facing'
    modified = False
    if modified:
        service = Service.update(service.uuid, internal=internal)
    return service
Ejemplo n.º 4
0
def update_instances_from_ids(service_uuid, instance_ids, configure=True):
    service = Service.get(uuid=service_uuid)

    conn = connect_ec2()
    reservation = conn.get_all_instances(instance_ids=instance_ids)
    for r in reservation:
        for instance in r.instances:
            host = Host.create_or_update(instance.id,
                                         private_ip=instance.private_ip_address,
                                         public_ip=instance.ip_address,
                                         public_dns=instance.public_dns_name)
            host.add_service(service.uuid)
            instance.add_tag("Name", "{}-{}".format(service.name.lower(), host.uuid))
            queue().enqueue_call(func=check_instance_for_configuration, args=[host.uuid, service.uuid], timeout=120)
    def __init__(self, host_uuid, service_uuid):
        self.succeeded = True

        self.host = Host.get(uuid=host_uuid)
        self.service = Service.get(uuid=service_uuid)
        self.host_deploy = self.host.get_current_deploy(self.service.uuid)
        self.service_files = self.service.get_files()
        self.f = open('{}/deploys/{}.log'.format(config.LOG_PATH, self.host.instance_id), 'w')

        env.user = self.host.username or 'ec2-user'
        env.forward_agent = True
        env.warn_only = True
        if self.host.public_dns:
            env.host_string = self.host.public_dns
        else:
            env.host_string = self.host.private_ip
        env.key_filename = ['./keys/awsSSH.pem']