You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.1KB

  1. #!/usr/bin/env python
  2. import sys
  3. import yaml
  4. DOCKER_COMPOSE_TEMPLATE = 'docker-compose.yml.template'
  5. DOCKER_COMPOSE = 'docker-compose.yml'
  6. def get_compose():
  7. with open(DOCKER_COMPOSE_TEMPLATE, 'r') as stream:
  8. try:
  9. return yaml.load(stream)
  10. except yaml.YAMLError as exc:
  11. print(exc)
  12. def get_dependencies(stream, submodules):
  13. result = submodules
  14. for service in stream['services']:
  15. if service not in submodules:
  16. continue
  17. if 'depends_on' in stream['services'][service]:
  18. result = result + stream['services'][service]['depends_on']
  19. return result
  20. def process_compose(stream, submodules):
  21. result = stream
  22. services = {}
  23. for service in stream['services']:
  24. if service in submodules:
  25. services[service] = stream['services'][service]
  26. result['services'] = services
  27. return result
  28. def main(args):
  29. s = get_compose()
  30. computed_submodules = get_dependencies(s, ['haproxy'])
  31. r2 = process_compose(s, computed_submodules)
  32. print r2
  33. if __name__ == '__main__':
  34. main(sys.argv[1:])