Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Return to single region for services #36

Merged
merged 1 commit into from
Jul 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions fed_reg/flavor/crud.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ def create(
else:
# It's indifferent which service, we want to reach the provider
db_service = db_obj.services.single()
db_region = db_service.regions.single()
db_region = db_service.region.single()
db_provider1 = db_region.provider.single()
db_region = service.regions.single()
db_region = service.region.single()
db_provider2 = db_region.provider.single()
if db_provider1 != db_provider2:
db_obj = super().create(obj_in=obj_in)
Expand Down
4 changes: 2 additions & 2 deletions fed_reg/flavor/schemas_extended.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ class ComputeServiceReadExtended(ComputeServiceRead):
region (RegionReadExtended): Region hosting this service.
"""

regions: list[RegionReadExtended] = Field(description=DOC_EXT_REG)
region: RegionReadExtended = Field(description=DOC_EXT_REG)


class ComputeServiceReadExtendedPublic(ComputeServiceReadPublic):
Expand All @@ -72,7 +72,7 @@ class ComputeServiceReadExtendedPublic(ComputeServiceReadPublic):
region (RegionReadExtendedPublic): Region hosting this service.
"""

regions: list[RegionReadExtendedPublic] = Field(description=DOC_EXT_REG)
region: RegionReadExtendedPublic = Field(description=DOC_EXT_REG)


class FlavorReadExtended(BaseNodeRead, BaseReadPrivateExtended, FlavorBase):
Expand Down
4 changes: 2 additions & 2 deletions fed_reg/image/crud.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ def create(
else:
# It's indifferent which service, we want to reach the provider
db_service = db_obj.services.single()
db_region = db_service.regions.single()
db_region = db_service.region.single()
db_provider1 = db_region.provider.single()
db_region = service.regions.single()
db_region = service.region.single()
db_provider2 = db_region.provider.single()
if db_provider1 != db_provider2:
db_obj = super().create(obj_in=obj_in)
Expand Down
4 changes: 2 additions & 2 deletions fed_reg/image/schemas_extended.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ class ComputeServiceReadExtended(ComputeServiceRead):
region (RegionReadExtended): Region hosting this service.
"""

regions: list[RegionReadExtended] = Field(description=DOC_EXT_REG)
region: RegionReadExtended = Field(description=DOC_EXT_REG)


class ComputeServiceReadExtendedPublic(ComputeServiceReadPublic):
Expand All @@ -67,7 +67,7 @@ class ComputeServiceReadExtendedPublic(ComputeServiceReadPublic):
region (RegionReadExtendedPublic): Region hosting this service.
"""

regions: list[RegionReadExtendedPublic] = Field(description=DOC_EXT_REG)
region: RegionReadExtendedPublic = Field(description=DOC_EXT_REG)


class ImageReadExtended(BaseNodeRead, BaseReadPrivateExtended, ImageBase):
Expand Down
4 changes: 2 additions & 2 deletions fed_reg/network/schemas_extended.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class NetworkServiceReadExtended(NetworkServiceRead):
region (RegionReadExtended): Region hosting this service.
"""

regions: list[RegionReadExtended] = Field(description=DOC_EXT_REG)
region: RegionReadExtended = Field(description=DOC_EXT_REG)


class NetworkServiceReadExtendedPublic(NetworkServiceReadPublic):
Expand All @@ -74,7 +74,7 @@ class NetworkServiceReadExtendedPublic(NetworkServiceReadPublic):
region (RegionReadExtendedPublic): Region hosting this service.
"""

regions: list[RegionReadExtendedPublic] = Field(description=DOC_EXT_REG)
region: RegionReadExtendedPublic = Field(description=DOC_EXT_REG)


class NetworkReadExtended(BaseNodeRead, BaseReadPrivateExtended, NetworkBase):
Expand Down
8 changes: 4 additions & 4 deletions fed_reg/project/api/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,18 @@ def filter_on_region_attr( # noqa: C901
for item in items:
for quota in item.quotas:
service = quota.service.single()
if not service.regions.get_or_none(**attrs):
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()
if not service.regions.get_or_none(**attrs):
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()
if not service.regions.get_or_none(**attrs):
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.regions.get_or_none(**attrs):
if not service.region.get_or_none(**attrs):
item.private_networks = item.private_networks.exclude(uid=network.uid)
return items
16 changes: 8 additions & 8 deletions fed_reg/project/schemas_extended.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ class BlockStorageServiceReadExtended(BlockStorageServiceRead):
region (RegionRead): Region hosting this service.
"""

regions: list[RegionRead] = Field(description=DOC_EXT_REG)
region: RegionRead = Field(description=DOC_EXT_REG)


class BlockStorageServiceReadExtendedPublic(BlockStorageServiceReadPublic):
Expand All @@ -88,7 +88,7 @@ class BlockStorageServiceReadExtendedPublic(BlockStorageServiceReadPublic):
region (RegionReadPublic): Region hosting this service.
"""

regions: list[RegionReadPublic] = Field(description=DOC_EXT_REG)
region: RegionReadPublic = Field(description=DOC_EXT_REG)


class ComputeServiceReadExtended(ComputeServiceRead):
Expand All @@ -104,7 +104,7 @@ class ComputeServiceReadExtended(ComputeServiceRead):
region (RegionRead): Region hosting this service.
"""

regions: list[RegionRead] = Field(description=DOC_EXT_REG)
region: RegionRead = Field(description=DOC_EXT_REG)


class ComputeServiceReadExtendedPublic(ComputeServiceReadPublic):
Expand All @@ -118,7 +118,7 @@ class ComputeServiceReadExtendedPublic(ComputeServiceReadPublic):
region (RegionReadPublic): Region hosting this service.
"""

regions: list[RegionReadPublic] = Field(description=DOC_EXT_REG)
region: RegionReadPublic = Field(description=DOC_EXT_REG)


class NetworkServiceReadExtended(NetworkServiceRead):
Expand All @@ -134,7 +134,7 @@ class NetworkServiceReadExtended(NetworkServiceRead):
region (RegionRead): Region hosting this service.
"""

regions: list[RegionRead] = Field(description=DOC_EXT_REG)
region: RegionRead = Field(description=DOC_EXT_REG)


class NetworkServiceReadExtendedPublic(NetworkServiceReadPublic):
Expand All @@ -148,7 +148,7 @@ class NetworkServiceReadExtendedPublic(NetworkServiceReadPublic):
region (RegionReadPublic): Region hosting this service.
"""

regions: list[RegionReadPublic] = Field(description=DOC_EXT_REG)
region: RegionReadPublic = Field(description=DOC_EXT_REG)


class ObjectStoreServiceReadExtended(ObjectStoreServiceRead):
Expand All @@ -164,7 +164,7 @@ class ObjectStoreServiceReadExtended(ObjectStoreServiceRead):
region (RegionRead): Region hosting this service.
"""

regions: list[RegionRead] = Field(description=DOC_EXT_REG)
region: RegionRead = Field(description=DOC_EXT_REG)


class ObjectStoreServiceReadExtendedPublic(ObjectStoreServiceReadPublic):
Expand All @@ -178,7 +178,7 @@ class ObjectStoreServiceReadExtendedPublic(ObjectStoreServiceReadPublic):
region (RegionReadPublic): Region hosting this service.
"""

regions: list[RegionReadPublic] = Field(description=DOC_EXT_REG)
region: RegionReadPublic = Field(description=DOC_EXT_REG)


class BlockStorageQuotaReadExtended(BlockStorageQuotaRead):
Expand Down
16 changes: 8 additions & 8 deletions fed_reg/quota/schemas_extended.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ class BlockStorageServiceReadExtended(BlockStorageServiceRead):
region (RegionReadExtended): Region hosting this service.
"""

regions: list[RegionReadExtended] = Field(description=DOC_EXT_REG)
region: RegionReadExtended = Field(description=DOC_EXT_REG)


class BlockStorageServiceReadExtendedPublic(BlockStorageServiceReadPublic):
Expand All @@ -94,7 +94,7 @@ class BlockStorageServiceReadExtendedPublic(BlockStorageServiceReadPublic):
region (RegionReadExtendedPublic): Region hosting this service.
"""

regions: list[RegionReadExtendedPublic] = Field(description=DOC_EXT_REG)
region: RegionReadExtendedPublic = Field(description=DOC_EXT_REG)


class ComputeServiceReadExtended(ComputeServiceRead):
Expand All @@ -110,7 +110,7 @@ class ComputeServiceReadExtended(ComputeServiceRead):
region (RegionReadExtended): Region hosting this service.
"""

regions: list[RegionReadExtended] = Field(description=DOC_EXT_REG)
region: RegionReadExtended = Field(description=DOC_EXT_REG)


class ComputeServiceReadExtendedPublic(ComputeServiceReadPublic):
Expand All @@ -124,7 +124,7 @@ class ComputeServiceReadExtendedPublic(ComputeServiceReadPublic):
region (RegionReadExtendedPublic): Region hosting this service.
"""

regions: list[RegionReadExtendedPublic] = Field(description=DOC_EXT_REG)
region: RegionReadExtendedPublic = Field(description=DOC_EXT_REG)


class NetworkServiceReadExtended(NetworkServiceRead):
Expand All @@ -140,7 +140,7 @@ class NetworkServiceReadExtended(NetworkServiceRead):
region (RegionReadExtended): Region hosting this service.
"""

regions: list[RegionReadExtended] = Field(description=DOC_EXT_REG)
region: RegionReadExtended = Field(description=DOC_EXT_REG)


class NetworkServiceReadExtendedPublic(NetworkServiceReadPublic):
Expand All @@ -154,7 +154,7 @@ class NetworkServiceReadExtendedPublic(NetworkServiceReadPublic):
region (RegionReadExtendedPublic): Region hosting this service.
"""

regions: list[RegionReadExtendedPublic] = Field(description=DOC_EXT_REG)
region: RegionReadExtendedPublic = Field(description=DOC_EXT_REG)


class ObjectStoreServiceReadExtended(ObjectStoreServiceRead):
Expand All @@ -170,7 +170,7 @@ class ObjectStoreServiceReadExtended(ObjectStoreServiceRead):
region (RegionReadExtended): Region hosting this service.
"""

regions: list[RegionReadExtended] = Field(description=DOC_EXT_REG)
region: RegionReadExtended = Field(description=DOC_EXT_REG)


class ObjectStoreServiceReadExtendedPublic(ObjectStoreServiceReadPublic):
Expand All @@ -184,7 +184,7 @@ class ObjectStoreServiceReadExtendedPublic(ObjectStoreServiceReadPublic):
region (RegionReadExtendedPublic): Region hosting this service.
"""

regions: list[RegionReadExtendedPublic] = Field(description=DOC_EXT_REG)
region: RegionReadExtendedPublic = Field(description=DOC_EXT_REG)


class BlockStorageQuotaReadExtended(
Expand Down
22 changes: 12 additions & 10 deletions fed_reg/service/crud.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,10 @@ def create(
"""
if projects is None:
projects = []
db_obj = super().create(obj_in=obj_in)
db_obj.regions.connect(region)
db_obj = region.services.filter(endpoint=obj_in.endpoint, type=obj_in.type)
if not db_obj:
db_obj = super().create(obj_in=obj_in)
db_obj.region.connect(region)
for item in obj_in.quotas:
db_projects = list(filter(lambda x: x.uuid == item.project, projects))
if len(db_projects) == 1:
Expand Down Expand Up @@ -245,10 +247,10 @@ def create(
"""
if projects is None:
projects = []
db_obj = self.get(endpoint=obj_in.endpoint)
db_obj = region.services.filter(endpoint=obj_in.endpoint, type=obj_in.type)
if not db_obj:
db_obj = super().create(obj_in=obj_in)
db_obj.regions.connect(region)
db_obj.region.connect(region)
for item in obj_in.flavors:
db_projects = list(filter(lambda x: x.uuid in item.projects, projects))
flavor_mng.create(obj_in=item, service=db_obj, projects=db_projects)
Expand Down Expand Up @@ -475,14 +477,14 @@ def create(

Connect the service to the given region.
"""
db_obj = self.get(endpoint=obj_in.endpoint)
db_obj = region.services.filter(endpoint=obj_in.endpoint, type=obj_in.type)
if not db_obj:
db_obj = super().create(obj_in=obj_in)
db_obj.region.connect(region)
else:
updated_data = self.update(db_obj=db_obj, obj_in=obj_in)
if updated_data:
db_obj = updated_data
db_obj.regions.connect(region)
return db_obj


Expand Down Expand Up @@ -513,10 +515,10 @@ def create(
"""
if projects is None:
projects = []
db_obj = self.get(endpoint=obj_in.endpoint)
db_obj = region.services.filter(endpoint=obj_in.endpoint, type=obj_in.type)
if not db_obj:
db_obj = super().create(obj_in=obj_in)
db_obj.regions.connect(region)
db_obj.region.connect(region)
for item in obj_in.networks:
db_projects = list(filter(lambda x: x.uuid == item.project, projects))
db_project = None
Expand Down Expand Up @@ -705,10 +707,10 @@ def create(
"""
if projects is None:
projects = []
db_obj = self.get(endpoint=obj_in.endpoint)
db_obj = region.services.filter(endpoint=obj_in.endpoint, type=obj_in.type)
if not db_obj:
db_obj = super().create(obj_in=obj_in)
db_obj.regions.connect(region)
db_obj.region.connect(region)
for item in obj_in.quotas:
db_projects = list(filter(lambda x: x.uuid == item.project, projects))
if len(db_projects) == 1:
Expand Down
8 changes: 4 additions & 4 deletions fed_reg/service/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Neomodel models of the Service supplied by a Provider on a specific Region."""
from neomodel import (
OneOrMore,
One,
RelationshipFrom,
RelationshipTo,
StringProperty,
Expand Down Expand Up @@ -29,12 +29,12 @@ class Service(StructuredNode):

uid = UniqueIdProperty()
description = StringProperty(default="")
endpoint = StringProperty(unique_index=True, required=True)
endpoint = StringProperty(required=True)
type = StringProperty(required=True)
name = StringProperty(required=True)

regions = RelationshipFrom(
"fed_reg.region.models.Region", "SUPPLY", cardinality=OneOrMore
region = RelationshipFrom(
"fed_reg.region.models.Region", "SUPPLY", cardinality=One
)


Expand Down
Loading
Loading