Питон скрипт на старт сервисов на основании зависимостей

4 000 руб. за проект
08 декабря 2021, 12:07 • 2 отклика • 35 просмотров
Постановка задачи
Существует yaml-файл (прилагается) с описанием сервисов, хостов, на которых они работают, а также
их зависимости; вы можете проигнорировать раздел «хосты» для этого теста. Цель этого теста
проект состоит в том, чтобы написать программу на Python, которая будет создавать
и распечатайте порядок зависимостей на основе служебных зависимостей.
Требования
Программа должна поддерживать аргументы «старт» и «стоп».
Сервис может быть запущен только в том случае, если все его зависимости удовлетворены.
Служба может быть остановлена, только если остановлены все ее зависимости.
Обратите внимание, что решение должно печатать только заказ услуг.
Несколько служб можно запускать или останавливать одновременно или параллельно, если
возможно
Пожалуйста, четко продемонстрируйте реализацию параллелизма
Обратите внимание на детали реализации.
Убедитесь, что решение может обрабатывать некоторые распространенные ошибки, которые могут возникать в
программаъ такого типа.
Обратите внимание, что ваш сценарий будет протестирован с другим, более крупным файлом yaml, который
могут иметь разные зависимости, но общая логика будет такой же, поэтому, пожалуйста
убедитесь, что вы тестируете свою программу в различных сценариях


Пример
---
mysql:
deps: []
zookeper:
deps: []
kibana:
deps:
- MySQL
fullhose:
deps:
- kibana
- zookeper

1. и mysql, и zookeeper должны запускаться одновременно или параллельно
2. kibana зависит от mysql и должна запускаться сразу после него
3. fullhouse зависит от kibana и zookepeer и должен ждать, пока они начнутся.
Останавливаться:
1. Никакие услуги не зависят от fullhouse, его можно сразу остановить
2. Поскольку Fullhouse остановлен и никакие другие услуги не зависят от kibana и zookeeper, они
могут быть остановлен параллельно
3. и, наконец, мы можем остановить mysql
yaml файл -

---
mysql:
hosts:
- "hostname-rm"
hadoop-namenode:
deps:
- "zookeeper"
hosts:
- "hostname-rm"
hbase-master:
deps:
- "hadoop-namenode"
hosts:
- "hostname-rm"
fullhouse:
deps:
- "mysql"
- "elasticsearch"
- "hbase-master"
hosts:
- "hostname-01"
- "hostname-02"
- "hostname-03"
kibana:
deps:
- "mysql"
hosts:
- "hostname-rm"
dashboard:
deps:
- "fullhouse"
hosts:
- "hostname-rm"
elasticsearch:
hosts:
- "hostname-01"
- "hostname-02"
- "hostname-03"
zookeeper:
hosts:
- "hostname-01"
- "hostname-02"
- "hostname-03"