def _launch_container_interface(self, image, env_override, volumes): """Launch method for use when the container interface is enabled """ run_args = self.container_run_args(image, env_override, volumes) container = self.attr.container_interface.run_in_container( None, **run_args) container_port = container.map_port(self.attr.docker_connect_port) if not container_port: log.warning( "Container %s (%s) created but no port information available, readiness check will determine " "ports", container.name, container.id) container_port = ContainerPort(self.attr.docker_connect_port, None, None, None) # a negated docker_connect_port will be stored in the proxy to indicate that the readiness check should # attempt to determine the port log.debug("Container %s (%s) port %s accessible at: %s:%s", container.name, container.id, container_port.port, container_port.hostaddr, container_port.hostport) self.attr.proxy_request = self.trans.app.proxy_manager.setup_proxy( self.trans, host=container_port.hostaddr, port=container_port.hostport or -container_port.port, proxy_prefix=self.attr.proxy_prefix, route_name=self.attr.viz_id, container_ids=[container.id], container_interface=self.attr.container_interface.key) self.attr.proxy_url = self.attr.proxy_request['proxy_url']
def ports(self): # { # "Endpoint": { # "Ports": [ # { # "Protocol": "tcp", # "TargetPort": 8888, # "PublishedPort": 30000, # "PublishMode": "ingress" # } # ] rval = [] try: port_mappings = self.inspect['Endpoint']['Ports'] except (IndexError, KeyError): log.warning( "Failed to get ports for container %s from `docker service inspect` output at " "['Endpoint']['Ports']: %s: %s", self.id, exc_info=True) return None for binding in port_mappings: rval.append( ContainerPort( binding['TargetPort'], binding['Protocol'], self.address, # use the routing mesh binding['PublishedPort'])) return rval
def ports(self): # { # "NetworkSettings" : { # "Ports" : { # "3306/tcp" : [ # { # "HostIp" : "127.0.0.1", # "HostPort" : "3306" # } # ] rval = [] try: port_mappings = self.inspect['NetworkSettings']['Ports'] except KeyError: log.warning( "Failed to get ports for container %s from `docker inspect` output at " "['NetworkSettings']['Ports']: %s: %s", self.id, exc_info=True) return None for port_name in port_mappings: for binding in port_mappings[port_name]: rval.append( ContainerPort( int(port_name.split('/')[0]), port_name.split('/')[1], self.address, int(binding['HostPort']), )) return rval
def ports(self): # [{ # "Endpoint": { # "Ports": [ # { # "Protocol": "tcp", # "TargetPort": 8888, # "PublishedPort": 30000, # "PublishMode": "ingress" # } # ] rval = [] port_mappings = self.inspect[0]['Endpoint']['Ports'] for binding in port_mappings: rval.append( ContainerPort( binding['TargetPort'], binding['Protocol'], self.address, # use the routing mesh binding['PublishedPort'])) return rval
def ports(self): # [{ # "NetworkSettings" : { # "Ports" : { # "3306/tcp" : [ # { # "HostIp" : "127.0.0.1", # "HostPort" : "3306" # } # ] rval = [] port_mappings = self.inspect[0]['NetworkSettings']['Ports'] for port_name in port_mappings: for binding in port_mappings[port_name]: rval.append( ContainerPort( int(port_name.split('/')[0]), port_name.split('/')[1], self.address, int(binding['HostPort']), )) return rval