types.py 756 B

12345678910111213141516171819202122232425262728
  1. """
  2. Types for objects parsed from the configuration.
  3. """
  4. from __future__ import absolute_import
  5. from __future__ import unicode_literals
  6. from collections import namedtuple
  7. from compose.config.errors import ConfigurationError
  8. class VolumeFromSpec(namedtuple('_VolumeFromSpec', 'source mode')):
  9. @classmethod
  10. def parse(cls, volume_from_config):
  11. parts = volume_from_config.split(':')
  12. if len(parts) > 2:
  13. raise ConfigurationError(
  14. "volume_from {} has incorrect format, should be "
  15. "service[:mode]".format(volume_from_config))
  16. if len(parts) == 1:
  17. source = parts[0]
  18. mode = 'rw'
  19. else:
  20. source, mode = parts
  21. return cls(source, mode)