mirror of https://github.com/docker/compose.git
Improve legacy network and volume detection
Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
parent
4dece7fcb2
commit
c1657dc46a
|
@ -42,7 +42,7 @@ class Network(object):
|
|||
self.enable_ipv6 = enable_ipv6
|
||||
self.labels = labels
|
||||
self.custom_name = custom_name
|
||||
self.legacy = False
|
||||
self.legacy = None
|
||||
|
||||
def ensure(self):
|
||||
if self.external:
|
||||
|
@ -68,25 +68,17 @@ class Network(object):
|
|||
)
|
||||
return
|
||||
|
||||
self._set_legacy_flag()
|
||||
try:
|
||||
data = self.inspect()
|
||||
data = self.inspect(legacy=self.legacy)
|
||||
check_remote_network_config(data, self)
|
||||
except NotFound:
|
||||
try:
|
||||
data = self.inspect(legacy=True)
|
||||
self.legacy = True
|
||||
check_remote_network_config(data, self)
|
||||
return
|
||||
except NotFound:
|
||||
pass
|
||||
|
||||
driver_name = 'the default driver'
|
||||
if self.driver:
|
||||
driver_name = 'driver "{}"'.format(self.driver)
|
||||
|
||||
log.info(
|
||||
'Creating network "{}" with {}'
|
||||
.format(self.full_name, driver_name)
|
||||
'Creating network "{}" with {}'.format(self.full_name, driver_name)
|
||||
)
|
||||
|
||||
self.client.create_network(
|
||||
|
@ -133,6 +125,7 @@ class Network(object):
|
|||
|
||||
@property
|
||||
def true_name(self):
|
||||
self._set_legacy_flag()
|
||||
if self.legacy:
|
||||
return self.legacy_full_name
|
||||
return self.full_name
|
||||
|
@ -149,6 +142,15 @@ class Network(object):
|
|||
})
|
||||
return labels
|
||||
|
||||
def _set_legacy_flag(self):
|
||||
if self.legacy is not None:
|
||||
return
|
||||
try:
|
||||
data = self.inspect(legacy=True)
|
||||
self.legacy = data is not None
|
||||
except NotFound:
|
||||
self.legacy = False
|
||||
|
||||
|
||||
def create_ipam_config_from_dict(ipam_dict):
|
||||
if not ipam_dict:
|
||||
|
|
|
@ -29,7 +29,7 @@ class Volume(object):
|
|||
self.external = external
|
||||
self.labels = labels
|
||||
self.custom_name = custom_name
|
||||
self.legacy = False
|
||||
self.legacy = None
|
||||
|
||||
def create(self):
|
||||
return self.client.create_volume(
|
||||
|
@ -46,21 +46,16 @@ class Volume(object):
|
|||
except NotFound:
|
||||
self.client.remove_volume(self.legacy_full_name)
|
||||
|
||||
def inspect(self, legacy=False):
|
||||
def inspect(self, legacy=None):
|
||||
if legacy:
|
||||
return self.client.inspect_volume(self.legacy_full_name)
|
||||
return self.client.inspect_volume(self.full_name)
|
||||
|
||||
def exists(self):
|
||||
self._set_legacy_flag()
|
||||
try:
|
||||
self.inspect()
|
||||
self.inspect(legacy=self.legacy)
|
||||
except NotFound:
|
||||
try:
|
||||
self.inspect(legacy=True)
|
||||
self.legacy = True
|
||||
return True
|
||||
except NotFound:
|
||||
pass
|
||||
return False
|
||||
return True
|
||||
|
||||
|
@ -80,6 +75,7 @@ class Volume(object):
|
|||
|
||||
@property
|
||||
def true_name(self):
|
||||
self._set_legacy_flag()
|
||||
if self.legacy:
|
||||
return self.legacy_full_name
|
||||
return self.full_name
|
||||
|
@ -96,6 +92,15 @@ class Volume(object):
|
|||
})
|
||||
return labels
|
||||
|
||||
def _set_legacy_flag(self):
|
||||
if self.legacy is not None:
|
||||
return
|
||||
try:
|
||||
data = self.inspect(legacy=True)
|
||||
self.legacy = data is not None
|
||||
except NotFound:
|
||||
self.legacy = False
|
||||
|
||||
|
||||
class ProjectVolumes(object):
|
||||
|
||||
|
@ -155,7 +160,7 @@ class ProjectVolumes(object):
|
|||
)
|
||||
volume.create()
|
||||
else:
|
||||
check_remote_volume_config(volume.inspect(), volume)
|
||||
check_remote_volume_config(volume.inspect(legacy=volume.legacy), volume)
|
||||
except NotFound:
|
||||
raise ConfigurationError(
|
||||
'Volume %s specifies nonexistent driver %s' % (volume.name, volume.driver)
|
||||
|
|
Loading…
Reference in New Issue