def _stop_service(self, container_id): docker_api = docker_client.api() last_exception = None try: exec_id = docker_api.exec_create( container_id, 'supervisorctl stop register_in_service_discovery') docker_api.exec_start(exec_id['Id']) except: traceback.print_exc() try: deregister_services(container_id) except: traceback.print_exc() for i in range(3): try: docker_api.stop(container_id) except Exception as e: last_exception = e traceback.print_exc() if not is_container_running(container_id): break if is_container_running(container_id): get_logger().error( 'Could not stop container: {}'.format(container_id)) raise last_exception
def _stop_service(self, container_id): ship = get_ship_name() service_dict = None service_list = kv_list('ships/{}/service/'.format(ship)) if service_list: key = fnmatch.filter(service_list, '*/{}'.format(container_id)) service_dict = kv_get(key[0]) if key else None if service_dict and service_dict['Status'] in ['crashed', 'not-recovered']: kv_remove(key[0]) else: run_command_in_container('supervisorctl stop armada_agent', container_id) # TODO: Compatibility with old microservice images. Should be removed in future armada version. run_command_in_container('supervisorctl stop register_in_service_discovery', container_id) docker_api = docker_client.api() last_exception = None try: deregister_services(container_id) except: traceback.print_exc() for i in range(3): try: docker_api.stop(container_id) kv_remove(key[0]) except Exception as e: last_exception = e traceback.print_exc() if not is_container_running(container_id): break if is_container_running(container_id): get_logger().error('Could not stop container: {}'.format(container_id)) raise last_exception
def _stop_service(self, container_id): docker_api = docker_client.api() docker_api.stop(container_id) try: deregister_services(container_id) except Exception as e: traceback.print_exc()
def POST(self): container_id, error = self.get_post_parameter('container_id') if error: return self.status_error(error) docker_api = docker_client.api() docker_inspect = docker_api.inspect_container(container_id) restart_parameters = {} for env_var in docker_inspect['Config']['Env']: env_key, env_value = (env_var.strip('"').split('=', 1) + [''])[:2] if env_key == 'RESTART_CONTAINER_PARAMETERS': restart_parameters = json.loads(base64.b64decode(env_value)) image_path = restart_parameters.get('image_path') dockyard_user = restart_parameters.get('dockyard_user') dockyard_password = restart_parameters.get('dockyard_password') dict_ports = restart_parameters.get('ports') dict_environment = restart_parameters.get('environment') dict_volumes = restart_parameters.get('volumes') run_command = restart_parameters.get('run_command') microservice_name = dict_environment.get('MICROSERVICE_NAME') dockyard_address, _, _ = self._split_image_path(image_path) docker_api = self._get_docker_api(dockyard_address, dockyard_user, dockyard_password) try: self._pull_latest_image(docker_api, image_path, microservice_name) except Exception as e: return self.status_error("Failed to pull image's newest version. {exception_class} - {exception}".format( exception_class=type(e).__name__, exception=str(e))) try: docker_api.stop(container_id) except Exception as e: return self.status_error("Cannot stop requested container. {exception_class} - {exception}".format( exception_class=type(e).__name__, exception=str(e))) try: deregister_services(container_id) except: traceback.print_exc() return self.run_container(image_path, dockyard_user, dockyard_password, dict_ports, dict_environment, dict_volumes, run_command)
def POST(self): container_id, error = self.get_post_parameter('container_id') if error: return self.status_error(error) try: docker_api = docker_client.api() docker_api.stop(container_id) except Exception as e: return self.status_error("Cannot stop requested container. {exception_class} - {exception}".format( exception_class=type(e).__name__, exception=str(e))) try: deregister_services(container_id) except Exception as e: traceback.print_exc() return self.status_ok()
def _stop_service(self, container_id): ship = get_ship_name() service_dict = None service_list = kv_list('ships/{}/service/'.format(ship)) if service_list: key = fnmatch.filter(service_list, '*/{}'.format(container_id)) service_dict = kv_get(key[0]) if key else None if service_dict and service_dict['Status'] in [ 'crashed', 'not-recovered' ]: kv_remove(key[0]) else: run_command_in_container('supervisorctl stop armada_agent', container_id) # TODO: Compatibility with old microservice images. Should be removed in future armada version. run_command_in_container( 'supervisorctl stop register_in_service_discovery', container_id) docker_api = docker_client.api() last_exception = None try: deregister_services(container_id) except: traceback.print_exc() for i in range(3): try: docker_api.stop(container_id) kv_remove(key[0]) except Exception as e: last_exception = e traceback.print_exc() if not is_container_running(container_id): break if is_container_running(container_id): get_logger().error( 'Could not stop container: {}'.format(container_id)) raise last_exception
def _stop_service(self, container_id): docker_api = docker_client.api() last_exception = None try: exec_id = docker_api.exec_create(container_id, 'supervisorctl stop register_in_service_discovery') docker_api.exec_start(exec_id['Id']) except: traceback.print_exc() try: deregister_services(container_id) except: traceback.print_exc() for i in range(3): try: docker_api.stop(container_id) except Exception as e: last_exception = e traceback.print_exc() if not is_container_running(container_id): break if is_container_running(container_id): get_logger().error('Could not stop container: {}'.format(container_id)) raise last_exception