示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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
示例#4
0
    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
示例#5
0
    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
示例#6
0
def _generate_id():
    prefix = 'gen_'
    return shorten_container_id(prefix + uuid4().hex)
示例#7
0
文件: cleaner.py 项目: labuzm/armada
def _get_running_container_ids():
    docker_api = docker_client.api()
    return set(shorten_container_id(container['Id']) for container in docker_api.containers())
示例#8
0
def get_running_container_ids():
    docker_api = docker_client.api()
    return set(
        shorten_container_id(container['Id'])
        for container in docker_api.containers())
def _generate_id():
    prefix = 'gen_'
    return shorten_container_id(prefix + uuid4().hex)
示例#10
0
 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
示例#11
0
文件: api_run.py 项目: labuzm/armada
 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