Fix environment service filters

This commit is contained in:
Gode, Sebastian 2025-04-22 07:51:35 +00:00
parent 2e3b5e18e7
commit 176ed5fc5e
2 changed files with 42 additions and 19 deletions

View File

@ -7,6 +7,7 @@ service_type: testservice
service_uri: testservice
cloud_environments:
- name: eu_de
visibility: internal
teams:
- name: docs-security-services-rw
permission: write

View File

@ -98,12 +98,20 @@ class Services(object):
res.append(copy.deepcopy(cat))
return res
def services_by_category(self, category, environment=None):
def services_by_category(self, category, environment=None, cloud_environment=None):
"""List services matching category"""
res = []
for srv in self.all_services:
if environment:
if "environment" in srv and srv["environment"] != environment:
if environment and cloud_environment:
cloud_environment_check = False
if srv["is_global"] is not True:
for srv_cloud_environment in srv["cloud_environments"]:
if srv_cloud_environment["name"] == cloud_environment:
if srv_cloud_environment["visibility"] == environment:
cloud_environment_check = True
else:
continue
if cloud_environment_check is False:
continue
if srv["service_category"] == category:
for repositories in self.all_repositories:
@ -112,7 +120,7 @@ class Services(object):
res.append(copy.deepcopy(srv))
return res
def services_with_docs_by_category(self, category, environment=None):
def services_with_docs_by_category(self, category, environment=None, cloud_environment=None):
"""Retrieve service category docs data
:param str category: Optional Category filter
@ -131,8 +139,15 @@ class Services(object):
continue
res.setdefault(cat, service)
res_doc = copy.deepcopy(doc)
if environment:
if "environment" in doc and doc["environment"] != environment:
if environment and cloud_environment:
cloud_environment_check = False
for doc_cloud_environment in doc["cloud_environments"]:
if doc_cloud_environment["name"] == cloud_environment:
if doc_cloud_environment["visibility"] == environment:
cloud_environment_check = True
else:
continue
if cloud_environment_check is False:
continue
for repositories in self.all_repositories:
if repositories["service_type"] == service["service_type"]:
@ -151,15 +166,19 @@ class Services(object):
docs = []
for service in self.all_services:
if "environment" in service:
if service["environment"] != environment:
continue
cloud_environment_service_check = False
cloud_visibility_check = False
if service["is_global"] is not True:
for cloud_environment_service in service["cloud_environments"]:
if cloud_environment_service["name"] == cloud_environment:
cloud_environment_service_check = True
if environment:
if cloud_environment_service["visibility"] == environment:
cloud_visibility_check = True
else:
cloud_visibility_check = True
break
if cloud_environment_service_check is False:
if cloud_environment_service_check is False or cloud_visibility_check is False:
continue
if not service["service_title"]:
continue
@ -168,15 +187,18 @@ class Services(object):
doc_list = []
for doc in self.all_docs:
if "environment" in doc:
if doc["environment"] != environment:
continue
cloud_environment_doc_check = False
cloud_doc_visibility_check = False
for cloud_environment_doc in doc["cloud_environments"]:
if cloud_environment_doc["name"] == cloud_environment:
cloud_environment_doc_check = True
if environment:
if cloud_environment_service["visibility"] == environment:
cloud_doc_visibility_check = True
else:
cloud_doc_visibility_check = True
break
if cloud_environment_doc_check is False:
if cloud_environment_doc_check is False or cloud_doc_visibility_check is False:
continue
if doc["service_type"] == service["service_type"]:
doc_list.append({