is sorting good?
This commit is contained in:
35
main.py
35
main.py
@@ -110,17 +110,38 @@ def yaml_to_services_list(filepath: str) -> dict|None:
|
||||
print(f"appending {servicename}")
|
||||
mustbefore = []
|
||||
if "depends_on" in ycontent["services"][servicename]:
|
||||
for dependance in ycontent["services"][servicename]["depends_on"]:
|
||||
mustbefore.append(dependance)
|
||||
for dependencie in ycontent["services"][servicename]["depends_on"]:
|
||||
mustbefore.append(dependencie)
|
||||
|
||||
serviceslist[servicename] = {"must_before": mustbefore, "must_after": [], "backupdone": False}
|
||||
|
||||
# on reparcourt une seconde fois pour définir de quels services ilssont les dépendances
|
||||
for service in serviceslist:
|
||||
if len(serviceslist[service]["must_before"]):
|
||||
for dependance in serviceslist[service]["must_before"]:
|
||||
if service not in serviceslist[dependance]["must_after"]:
|
||||
serviceslist[dependance]["must_after"].append(service)
|
||||
for dependencie in serviceslist[service]["must_before"]:
|
||||
if service not in serviceslist[dependencie]["must_after"]:
|
||||
serviceslist[dependencie]["must_after"].append(service)
|
||||
|
||||
return serviceslist
|
||||
|
||||
|
||||
def order_services_by_dependencies(servicesdict: dict) -> list:
|
||||
'''
|
||||
Génère une liste avec les noms de services pour ordonner leurs coupures par dépendances.
|
||||
Les containers étant requis seront placés avant ceux les requérant.
|
||||
:param servicesdict: dict
|
||||
:return: list
|
||||
'''
|
||||
serviceslist = []
|
||||
for service in servicesdict:
|
||||
if len(servicesdict[service]["must_after"]) and len(serviceslist):
|
||||
depindex = len(serviceslist) -1
|
||||
for dependencieof in servicesdict[service]["must_after"]:
|
||||
if dependencieof in serviceslist and serviceslist.index(dependencieof) < depindex:
|
||||
depindex = serviceslist.index(dependencieof)
|
||||
serviceslist.insert(service, depindex)
|
||||
else:
|
||||
serviceslist.append(service)
|
||||
|
||||
return serviceslist
|
||||
|
||||
@@ -181,4 +202,6 @@ if __name__ == '__main__':
|
||||
|
||||
#read_config_file()
|
||||
|
||||
print(json.dumps(yaml_to_services_list(composefile), indent=4))
|
||||
servicesDict = yaml_to_services_list(composefile)
|
||||
servicesList = order_services_by_dependencies(servicesDict)
|
||||
print(servicesList)
|
||||
|
||||
Reference in New Issue
Block a user