1
0

volume.py 1.3 KB

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