From ddf464da1e06f26b624b108ee3ba13459099de53 Mon Sep 17 00:00:00 2001 From: Giovanni Savarese Date: Mon, 13 Jan 2025 13:13:22 +0000 Subject: [PATCH 1/3] chore: add to projects params to filter based on identity service endpoint --- fed_reg/project/api/utils.py | 18 ++++++++++++++++++ fed_reg/project/api/v1/endpoints.py | 6 +++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/fed_reg/project/api/utils.py b/fed_reg/project/api/utils.py index 9452aa29..889d9cb2 100644 --- a/fed_reg/project/api/utils.py +++ b/fed_reg/project/api/utils.py @@ -3,6 +3,7 @@ from fed_reg.project.models import Project from fed_reg.region.schemas import RegionQuery +from fed_reg.service.schemas import IdentityServiceQuery def filter_on_region_attr( # noqa: C901 @@ -31,3 +32,20 @@ def filter_on_region_attr( # noqa: C901 if not service.region.get_or_none(**attrs): item.private_networks = item.private_networks.exclude(uid=network.uid) return items + + +def filter_on_service_attr( + items: list[Project], service_query: IdentityServiceQuery +) -> list[Project]: + """Filter projects based on region access.""" + attrs = service_query.dict(exclude_none=True) + if not attrs: + return items + + new_items = [] + for item in items: + for region in item.provider.single().regions: + if region.services.get_or_none(**attrs): + new_items.append(item) + break + return new_items diff --git a/fed_reg/project/api/v1/endpoints.py b/fed_reg/project/api/v1/endpoints.py index 9e5442e9..1b79258d 100644 --- a/fed_reg/project/api/v1/endpoints.py +++ b/fed_reg/project/api/v1/endpoints.py @@ -30,7 +30,7 @@ valid_project_id, validate_new_project_values, ) -from fed_reg.project.api.utils import filter_on_region_attr +from fed_reg.project.api.utils import filter_on_region_attr, filter_on_service_attr from fed_reg.project.crud import project_mng from fed_reg.project.models import Project from fed_reg.project.schemas import ( @@ -44,6 +44,7 @@ ) from fed_reg.query import DbQueryCommonParams, Pagination, SchemaSize from fed_reg.region.schemas import RegionQuery +from fed_reg.service.schemas import IdentityServiceQuery router = APIRouter(prefix="/projects", tags=["projects"]) @@ -63,6 +64,7 @@ def get_projects( page: Pagination = Depends(), size: SchemaSize = Depends(), item: ProjectQuery = Depends(), + identity_service_endpoint: Optional[str] = None, provider_uid: Optional[str] = None, region_name: Optional[str] = None, user_group_uid: Optional[str] = None, @@ -93,6 +95,8 @@ def get_projects( items = project_mng.paginate(items=items, page=page.page, size=page.size) region_query = RegionQuery(name=region_name) items = filter_on_region_attr(items=items, region_query=region_query) + service_query = IdentityServiceQuery(endpoint=identity_service_endpoint) + items = filter_on_service_attr(items=items, service_query=service_query) items = project_mng.choose_out_schema( items=items, auth=user_infos, short=size.short, with_conn=size.with_conn ) From 0af91f91229efbb62a7c8fe12a0f1cbd8de654da Mon Sep 17 00:00:00 2001 From: Giovanni Savarese Date: Thu, 16 Jan 2025 13:59:55 +0000 Subject: [PATCH 2/3] fix: flavor and image have services --- fed_reg/project/api/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fed_reg/project/api/utils.py b/fed_reg/project/api/utils.py index 889d9cb2..e0de6dea 100644 --- a/fed_reg/project/api/utils.py +++ b/fed_reg/project/api/utils.py @@ -20,11 +20,11 @@ def filter_on_region_attr( # noqa: C901 if not service.region.get_or_none(**attrs): item.quotas = item.quotas.exclude(uid=quota.uid) for flavor in item.private_flavors: - service = flavor.service.single() + service = flavor.services.single() if not service.region.get_or_none(**attrs): item.private_flavors = item.private_flavors.exclude(uid=flavor.uid) for image in item.private_images: - service = image.service.single() + service = image.services.single() if not service.region.get_or_none(**attrs): item.private_images = item.private_images.exclude(uid=image.uid) for network in item.private_networks: From 35d2da3ef3b3ddbbe3993f3285c7c85ca374ecbb Mon Sep 17 00:00:00 2001 From: Giovanni Savarese Date: Thu, 16 Jan 2025 14:05:11 +0000 Subject: [PATCH 3/3] fix: Change jenkins worker --- jenkins/docker.Jenkinsfile | 2 +- jenkins/linting.Jenkinsfile | 2 +- jenkins/tests.Jenkinsfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jenkins/docker.Jenkinsfile b/jenkins/docker.Jenkinsfile index 101a8644..bde13ccc 100644 --- a/jenkins/docker.Jenkinsfile +++ b/jenkins/docker.Jenkinsfile @@ -3,7 +3,7 @@ pipeline { agent { - node { label 'jenkinsworker00' } + node { label 'jenkinsworker01' } } environment { diff --git a/jenkins/linting.Jenkinsfile b/jenkins/linting.Jenkinsfile index 69849fc5..70f11762 100644 --- a/jenkins/linting.Jenkinsfile +++ b/jenkins/linting.Jenkinsfile @@ -2,7 +2,7 @@ @Library('jenkins-libraries') _ pipeline { - agent { label 'jenkinsworker00' } + agent { label 'jenkinsworker01' } stages { stage('Run tests') { parallel { diff --git a/jenkins/tests.Jenkinsfile b/jenkins/tests.Jenkinsfile index 91ba27aa..65ac3f9d 100644 --- a/jenkins/tests.Jenkinsfile +++ b/jenkins/tests.Jenkinsfile @@ -26,7 +26,7 @@ void runTests(String pythonVersion) { } pipeline { - agent { label 'jenkinsworker00' } + agent { label 'jenkinsworker01' } environment { NEO4J_IMAGE = 'neo4j:5.18'