migration.py 1009 B

1234567891011121314151617181920212223242526272829303132333435
  1. import logging
  2. import re
  3. from .container import get_container_name, Container
  4. log = logging.getLogger(__name__)
  5. # TODO: remove this section when migrate_project_to_labels is removed
  6. NAME_RE = re.compile(r'^([^_]+)_([^_]+)_(run_)?(\d+)$')
  7. def is_valid_name(name):
  8. match = NAME_RE.match(name)
  9. return match is not None
  10. def add_labels(project, container, name):
  11. project_name, service_name, one_off, number = NAME_RE.match(name).groups()
  12. if project_name != project.name or service_name not in project.service_names:
  13. return
  14. service = project.get_service(service_name)
  15. service.recreate_container(container)
  16. def migrate_project_to_labels(project):
  17. log.info("Running migration to labels for project %s", project.name)
  18. client = project.client
  19. for container in client.containers(all=True):
  20. name = get_container_name(container)
  21. if not is_valid_name(name):
  22. continue
  23. add_labels(project, Container.from_ps(client, container), name)