def POST(self): container_id, error = self.get_post_parameter('container_id') target_ship, _ = self.get_post_parameter('target_ship') force_restart, _ = self.get_post_parameter('force') if error: return self.status_error(error) try: new_container_id, service_endpoints = self._restart_service(container_id, target_ship, force_restart) short_container_id = shorten_container_id(new_container_id) return self.status_ok({'container_id': short_container_id, 'endpoints': service_endpoints}) except Exception as e: return self.status_exception("Unable to restart service", e)
def _start_container(self, long_container_id): docker_api = docker_client.api(timeout=30) docker_api.start(long_container_id) service_endpoints = {} agent_self_dict = consul_query('agent/self') service_ip = agent_self_dict['Config']['AdvertiseAddr'] docker_inspect = docker_api.inspect_container(long_container_id) ship = get_ship_name() container_id = shorten_container_id(long_container_id) save_service(ship, container_id, status='started') for container_port, host_address in docker_inspect['NetworkSettings']['Ports'].items(): service_endpoints['{0}:{1}'.format(service_ip, host_address[0]['HostPort'])] = container_port return service_endpoints
def _start_container(self, long_container_id): docker_api = docker_client.api(timeout=30) docker_api.start(long_container_id) service_endpoints = {} agent_self_dict = consul_query('agent/self') service_ip = agent_self_dict['Config']['AdvertiseAddr'] docker_inspect = docker_api.inspect_container(long_container_id) ship = get_ship_name() container_id = shorten_container_id(long_container_id) kv.save_container(ship, container_id, status='started') for container_port, host_address in docker_inspect['NetworkSettings']['Ports'].items(): service_endpoints['{0}:{1}'.format(service_ip, host_address[0]['HostPort'])] = container_port return service_endpoints
def _start_container(self, long_container_id): docker_api = docker_client.api(timeout=30) docker_api.start(long_container_id) service_endpoints = {} service_ip, ship_name = get_ship_ip_and_name() docker_inspect = docker_api.inspect_container(long_container_id) container_id = shorten_container_id(long_container_id) save_container(ship_name, container_id, status='started', ship_ip=service_ip) for container_port, host_address in docker_inspect['NetworkSettings'][ 'Ports'].items(): service_endpoints['{0}:{1}'.format( service_ip, host_address[0]['HostPort'])] = container_port return service_endpoints
def _generate_id(): prefix = 'gen_' return shorten_container_id(prefix + uuid4().hex)
def _get_running_container_ids(): docker_api = docker_client.api() return set(shorten_container_id(container['Id']) for container in docker_api.containers())
def get_running_container_ids(): docker_api = docker_client.api() return set( shorten_container_id(container['Id']) for container in docker_api.containers())
def _run_service(self, run_parameters): long_container_id = self._create_service(**run_parameters) service_endpoints = self._start_container(long_container_id) short_container_id = shorten_container_id(long_container_id) return short_container_id, service_endpoints