1
0

volume.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from __future__ import absolute_import
  2. from __future__ import unicode_literals
  3. from docker.errors import NotFound
  4. class Volume(object):
  5. def __init__(self, client, project, name, driver=None, driver_opts=None,
  6. external=False):
  7. self.client = client
  8. self.project = project
  9. self.name = name
  10. self.driver = driver
  11. self.driver_opts = driver_opts
  12. self.external_name = None
  13. if external:
  14. if isinstance(external, dict):
  15. self.external_name = external.get('name')
  16. else:
  17. self.external_name = self.name
  18. def create(self):
  19. return self.client.create_volume(
  20. self.full_name, self.driver, self.driver_opts
  21. )
  22. def remove(self):
  23. return self.client.remove_volume(self.full_name)
  24. def inspect(self):
  25. return self.client.inspect_volume(self.full_name)
  26. def exists(self):
  27. try:
  28. self.inspect()
  29. except NotFound:
  30. return False
  31. return True
  32. @property
  33. def external(self):
  34. return bool(self.external_name)
  35. @property
  36. def full_name(self):
  37. if self.external_name:
  38. return self.external_name
  39. return '{0}_{1}'.format(self.project, self.name)