mirror of
https://github.com/docker/compose.git
synced 2025-07-21 12:44:54 +02:00
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.enable_ipv6 = enable_ipv6
|
||||||
self.labels = labels
|
self.labels = labels
|
||||||
self.custom_name = custom_name
|
self.custom_name = custom_name
|
||||||
self.legacy = False
|
self.legacy = None
|
||||||
|
|
||||||
def ensure(self):
|
def ensure(self):
|
||||||
if self.external:
|
if self.external:
|
||||||
@ -68,25 +68,17 @@ class Network(object):
|
|||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
self._set_legacy_flag()
|
||||||
try:
|
try:
|
||||||
data = self.inspect()
|
data = self.inspect(legacy=self.legacy)
|
||||||
check_remote_network_config(data, self)
|
check_remote_network_config(data, self)
|
||||||
except NotFound:
|
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'
|
driver_name = 'the default driver'
|
||||||
if self.driver:
|
if self.driver:
|
||||||
driver_name = 'driver "{}"'.format(self.driver)
|
driver_name = 'driver "{}"'.format(self.driver)
|
||||||
|
|
||||||
log.info(
|
log.info(
|
||||||
'Creating network "{}" with {}'
|
'Creating network "{}" with {}'.format(self.full_name, driver_name)
|
||||||
.format(self.full_name, driver_name)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
self.client.create_network(
|
self.client.create_network(
|
||||||
@ -133,6 +125,7 @@ class Network(object):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def true_name(self):
|
def true_name(self):
|
||||||
|
self._set_legacy_flag()
|
||||||
if self.legacy:
|
if self.legacy:
|
||||||
return self.legacy_full_name
|
return self.legacy_full_name
|
||||||
return self.full_name
|
return self.full_name
|
||||||
@ -149,6 +142,15 @@ class Network(object):
|
|||||||
})
|
})
|
||||||
return labels
|
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):
|
def create_ipam_config_from_dict(ipam_dict):
|
||||||
if not ipam_dict:
|
if not ipam_dict:
|
||||||
|
@ -29,7 +29,7 @@ class Volume(object):
|
|||||||
self.external = external
|
self.external = external
|
||||||
self.labels = labels
|
self.labels = labels
|
||||||
self.custom_name = custom_name
|
self.custom_name = custom_name
|
||||||
self.legacy = False
|
self.legacy = None
|
||||||
|
|
||||||
def create(self):
|
def create(self):
|
||||||
return self.client.create_volume(
|
return self.client.create_volume(
|
||||||
@ -46,21 +46,16 @@ class Volume(object):
|
|||||||
except NotFound:
|
except NotFound:
|
||||||
self.client.remove_volume(self.legacy_full_name)
|
self.client.remove_volume(self.legacy_full_name)
|
||||||
|
|
||||||
def inspect(self, legacy=False):
|
def inspect(self, legacy=None):
|
||||||
if legacy:
|
if legacy:
|
||||||
return self.client.inspect_volume(self.legacy_full_name)
|
return self.client.inspect_volume(self.legacy_full_name)
|
||||||
return self.client.inspect_volume(self.full_name)
|
return self.client.inspect_volume(self.full_name)
|
||||||
|
|
||||||
def exists(self):
|
def exists(self):
|
||||||
|
self._set_legacy_flag()
|
||||||
try:
|
try:
|
||||||
self.inspect()
|
self.inspect(legacy=self.legacy)
|
||||||
except NotFound:
|
except NotFound:
|
||||||
try:
|
|
||||||
self.inspect(legacy=True)
|
|
||||||
self.legacy = True
|
|
||||||
return True
|
|
||||||
except NotFound:
|
|
||||||
pass
|
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -80,6 +75,7 @@ class Volume(object):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def true_name(self):
|
def true_name(self):
|
||||||
|
self._set_legacy_flag()
|
||||||
if self.legacy:
|
if self.legacy:
|
||||||
return self.legacy_full_name
|
return self.legacy_full_name
|
||||||
return self.full_name
|
return self.full_name
|
||||||
@ -96,6 +92,15 @@ class Volume(object):
|
|||||||
})
|
})
|
||||||
return labels
|
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):
|
class ProjectVolumes(object):
|
||||||
|
|
||||||
@ -155,7 +160,7 @@ class ProjectVolumes(object):
|
|||||||
)
|
)
|
||||||
volume.create()
|
volume.create()
|
||||||
else:
|
else:
|
||||||
check_remote_volume_config(volume.inspect(), volume)
|
check_remote_volume_config(volume.inspect(legacy=volume.legacy), volume)
|
||||||
except NotFound:
|
except NotFound:
|
||||||
raise ConfigurationError(
|
raise ConfigurationError(
|
||||||
'Volume %s specifies nonexistent driver %s' % (volume.name, volume.driver)
|
'Volume %s specifies nonexistent driver %s' % (volume.name, volume.driver)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user