Skip to content

Commit

Permalink
Merge pull request #50 from infn-datacloud/add-id-srv-url-to-projects
Browse files Browse the repository at this point in the history
Add to projects endpoint parameter to filter based on identity service endpoint
  • Loading branch information
giosava94 authored Jan 17, 2025
2 parents d9fcc04 + 35d2da3 commit e7e9b61
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 6 deletions.
22 changes: 20 additions & 2 deletions fed_reg/project/api/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -19,15 +20,32 @@ 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:
service = network.service.single()
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
6 changes: 5 additions & 1 deletion fed_reg/project/api/v1/endpoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand All @@ -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"])

Expand All @@ -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,
Expand Down Expand Up @@ -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
)
Expand Down
2 changes: 1 addition & 1 deletion jenkins/docker.Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

pipeline {
agent {
node { label 'jenkinsworker00' }
node { label 'jenkinsworker01' }
}

environment {
Expand Down
2 changes: 1 addition & 1 deletion jenkins/linting.Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
@Library('jenkins-libraries') _

pipeline {
agent { label 'jenkinsworker00' }
agent { label 'jenkinsworker01' }
stages {
stage('Run tests') {
parallel {
Expand Down
2 changes: 1 addition & 1 deletion jenkins/tests.Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ void runTests(String pythonVersion) {
}

pipeline {
agent { label 'jenkinsworker00' }
agent { label 'jenkinsworker01' }

environment {
NEO4J_IMAGE = 'neo4j:5.18'
Expand Down

0 comments on commit e7e9b61

Please sign in to comment.