def load_service(service_name, service_data, namespace, region): image = service_data.get('image') if not image: raise AlaudaInputError('Compose file must specify image') image_name, image_tag = util.parse_image_name_tag(image) ports = load_ports(service_data) run_command = load_command(service_data) links = load_links(service_data) volumes = load_volumes(service_data) envvars = load_envvars(service_data) domain = load_domain(service_data) instance_num, instance_size = load_instance(service_data) scaling_mode, autoscaling_config = load_scaling_info(service_data) service = Service(name=service_name, image_name=image_name, image_tag=image_tag, run_command=run_command, instance_envvars=envvars, instance_ports=ports, volumes=volumes, links=links, target_num_instances=instance_num, instance_size=instance_size, namespace=namespace, scaling_mode=scaling_mode, autoscaling_config=autoscaling_config, custom_domain_name=domain, region_name=region) return service
def service_create(image, name, start, target_num_instances, instance_size, run_command, env, ports, exposes, volumes, links, namespace, scaling_info, custom_domain_name, region_name): image_name, image_tag = util.parse_image_name_tag(image) instance_ports, port_list = util.parse_instance_ports(ports) expose_list = util.merge_internal_external_ports(port_list, exposes) instance_ports.extend(expose_list) instance_envvars = util.parse_envvars(env) links = util.parse_links(links) volumes = util.parse_volumes(volumes) scaling_mode, scaling_cfg = util.parse_autoscale_info(scaling_info) if scaling_mode is None: scaling_mode = 'MANUAL' service = Service(name=name, image_name=image_name, image_tag=image_tag, target_num_instances=target_num_instances, instance_size=instance_size, run_command=run_command, instance_ports=instance_ports, instance_envvars=instance_envvars, volumes=volumes, links=links, namespace=namespace, scaling_mode=scaling_mode, autoscaling_config=scaling_cfg, custom_domain_name=custom_domain_name, region_name=region_name) if start: service.run() else: service.create()