Don't initialize networks that aren't used by any services.

Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
Daniel Nephin 2016-01-29 16:00:50 -05:00 committed by Aanand Prasad
commit 3e8a4a5dc3
5 changed files with 31 additions and 18 deletions

View file

@ -693,7 +693,7 @@ def run_one_off_container(container_options, project, service, options):
start_deps=True,
strategy=ConvergenceStrategy.never)
project.initialize_networks()
project.initialize()
container = service.create_container(
quiet=True,

View file

@ -133,12 +133,17 @@ class ProjectNetworks(object):
@classmethod
def from_services(cls, services, networks, use_networking):
networks = {
network: networks[network]
service_networks = {
network: networks.get(network)
for service in services
for network in service.get('networks', ['default'])
}
return cls(networks, use_networking)
unused = set(networks) - set(service_networks) - {'default'}
if unused:
log.warn(
"Some networks were defined but are not used by any service: "
"{}".format(", ".join(unused)))
return cls(service_networks, use_networking)
def remove(self):
if not self.use_networking:

View file

@ -351,13 +351,12 @@ class Project(object):
timeout=DEFAULT_TIMEOUT,
detached=False):
services = self.get_services_without_duplicate(service_names, include_deps=start_deps)
self.initialize()
services = self.get_services_without_duplicate(
service_names,
include_deps=start_deps)
plans = self._get_convergence_plans(services, strategy)
self.networks.initialize()
self.initialize_volumes()
return [
container
for service in services
@ -369,6 +368,10 @@ class Project(object):
)
]
def initialize(self):
self.networks.initialize()
self.initialize_volumes()
def _get_convergence_plans(self, services, strategy):
plans = {}