Exemple #1
0
 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']
Exemple #2
0
 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
Exemple #3
0
 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
Exemple #4
0
 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
Exemple #5
0
 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