Implement ability to specify external volumes

External volumes are created and managed by the user.
They are not namespaced.
They are expected to exist at the beginning of the up phase.

Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
Joffrey F 2016-01-12 16:53:49 -08:00
commit 9cb58b796e
6 changed files with 93 additions and 21 deletions

View file

@ -5,12 +5,19 @@ from docker.errors import NotFound
class Volume(object):
def __init__(self, client, project, name, driver=None, driver_opts=None):
def __init__(self, client, project, name, driver=None, driver_opts=None,
external=False):
self.client = client
self.project = project
self.name = name
self.driver = driver
self.driver_opts = driver_opts
self.external_name = None
if external:
if isinstance(external, dict):
self.external_name = external.get('name')
else:
self.external_name = self.name
def create(self):
return self.client.create_volume(
@ -23,15 +30,19 @@ class Volume(object):
def inspect(self):
return self.client.inspect_volume(self.full_name)
@property
def is_user_created(self):
def exists(self):
try:
self.client.inspect_volume(self.name)
self.inspect()
except NotFound:
return False
return True
@property
def external(self):
return bool(self.external_name)
@property
def full_name(self):
if self.external_name:
return self.external_name
return '{0}_{1}'.format(self.project, self.name)