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
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']