Commit 0b3afc61 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Context component:

- Sort Service and Slice endpoints according to set request
parent c2ac8ace
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -91,6 +91,7 @@ def service_set(db_engine : Engine, request : Service) -> Tuple[Dict, bool]:
        service_endpoints_data.append({
            'service_uuid' : service_uuid,
            'endpoint_uuid': endpoint_uuid,
            'position'     : i,
        })

    constraints = compose_constraints_data(request.service_constraints, now, service_uuid=service_uuid)
+1 −0
Original line number Diff line number Diff line
@@ -91,6 +91,7 @@ def slice_set(db_engine : Engine, request : Slice) -> Tuple[Dict, bool]:
        slice_endpoints_data.append({
            'slice_uuid'   : slice_uuid,
            'endpoint_uuid': endpoint_uuid,
            'position'     : i,
        })

    slice_services_data : List[Dict] = list()
+7 −2
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@
# limitations under the License.

import operator
from sqlalchemy import Column, DateTime, Enum, ForeignKey, String
from sqlalchemy import CheckConstraint, Column, DateTime, Enum, ForeignKey, Integer, String
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from typing import Dict
@@ -51,7 +51,7 @@ class ServiceModel(_Base):
            'service_status'      : {'service_status': self.service_status.value},
            'service_endpoint_ids': [
                service_endpoint.endpoint.dump_id()
                for service_endpoint in self.service_endpoints
                for service_endpoint in sorted(self.service_endpoints, key=operator.attrgetter('position'))
            ],
            'service_constraints' : [
                constraint.dump()
@@ -68,6 +68,11 @@ class ServiceEndPointModel(_Base):

    service_uuid  = Column(ForeignKey('service.service_uuid',   ondelete='CASCADE' ), primary_key=True)
    endpoint_uuid = Column(ForeignKey('endpoint.endpoint_uuid', ondelete='RESTRICT'), primary_key=True, index=True)
    position      = Column(Integer, nullable=False)

    service  = relationship('ServiceModel',  back_populates='service_endpoints', lazy='joined')
    endpoint = relationship('EndPointModel', lazy='joined') # back_populates='service_endpoints'

    __table_args__ = (
        CheckConstraint(position >= 0, name='check_position_value'),
    )
+7 −2
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@
# limitations under the License.

import operator
from sqlalchemy import Column, DateTime, Enum, ForeignKey, String
from sqlalchemy import CheckConstraint, Column, DateTime, Enum, ForeignKey, Integer, String
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from typing import Dict
@@ -53,7 +53,7 @@ class SliceModel(_Base):
            'slice_status'      : {'slice_status': self.slice_status.value},
            'slice_endpoint_ids': [
                slice_endpoint.endpoint.dump_id()
                for slice_endpoint in self.slice_endpoints
                for slice_endpoint in sorted(self.slice_endpoints, key=operator.attrgetter('position'))
            ],
            'slice_constraints' : [
                constraint.dump()
@@ -82,10 +82,15 @@ class SliceEndPointModel(_Base):

    slice_uuid    = Column(ForeignKey('slice.slice_uuid',       ondelete='CASCADE' ), primary_key=True)
    endpoint_uuid = Column(ForeignKey('endpoint.endpoint_uuid', ondelete='RESTRICT'), primary_key=True, index=True)
    position      = Column(Integer, nullable=False)

    slice    = relationship('SliceModel', back_populates='slice_endpoints', lazy='joined')
    endpoint = relationship('EndPointModel', lazy='joined') # back_populates='slice_endpoints'

    __table_args__ = (
        CheckConstraint(position >= 0, name='check_position_value'),
    )

class SliceServiceModel(_Base):
    __tablename__ = 'slice_service'