Commit fe2b6c2f authored by Carlos Manso's avatar Carlos Manso
Browse files

Update scalability

parent 1b2eef22
Loading
Loading
Loading
Loading
+23 −8
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ from common.orm.backend.Tools import key_to_str
from common.orm.fields.ForeignKeyField import ForeignKeyField
from common.orm.fields.IntegerField import IntegerField
from common.orm.fields.PrimaryKeyField import PrimaryKeyField
from common.orm.fields.StringField import StringField
from common.orm.model.Model import Model
from common.orm.HighLevel import get_object, get_or_create_object, get_related_objects, update_or_create_object
from common.proto.context_pb2 import EndPointId
@@ -27,10 +26,24 @@ from .EndPointModel import EndPointModel
from .ServiceModel import ServiceModel
from .Tools import remove_dict_key


from sqlalchemy import Column, Enum, ForeignKey, Integer, CheckConstraint
from typing import Dict, List
from common.orm.HighLevel import get_related_objects
from common.proto.context_pb2 import ServiceStatusEnum, ServiceTypeEnum
from .ConfigModel import ConfigModel
from .ConstraintModel import ConstraintsModel
from .ContextModel import ContextModel
from .Tools import grpc_to_enum
from sqlalchemy.dialects.postgresql import UUID
from context.service.database.Base import Base
import enum
LOGGER = logging.getLogger(__name__)

LOGGER = logging.getLogger(__name__)

class PathModel(Model): # pylint: disable=abstract-method
    pk = PrimaryKeyField()
    path_uuid = Column(UUID(as_uuid=False), primary_key=True, unique=True)

    def delete(self) -> None:
        for db_path_hop_pk,_ in self.references(PathHopModel):
@@ -44,10 +57,10 @@ class PathModel(Model): # pylint: disable=abstract-method
        return [remove_dict_key(path_hop, 'position') for path_hop in path_hops]

class PathHopModel(Model): # pylint: disable=abstract-method
    pk = PrimaryKeyField()
    path_fk = ForeignKeyField(PathModel)
    position = IntegerField(min_value=0, required=True)
    endpoint_fk = ForeignKeyField(EndPointModel)
    path_hop_uuid = Column(UUID(as_uuid=False), primary_key=True, unique=True)
    path_uuid = Column(UUID(as_uuid=False), ForeignKey("Path.path_uuid"))
    position = Column(Integer, CheckConstraint('position >= 0'), nullable=False)
    endpoint_uuid = Column(UUID(as_uuid=False), ForeignKey("EndPoint.endpoint_uuid"))

    def dump(self, include_position=True) -> Dict: # pylint: disable=arguments-differ
        db_endpoint : EndPointModel = EndPointModel(self.database, self.endpoint_fk)
@@ -57,8 +70,10 @@ class PathHopModel(Model): # pylint: disable=abstract-method

class ConnectionModel(Model):
    pk = PrimaryKeyField()
    connection_uuid = StringField(required=True, allow_empty=False)
    service_fk = ForeignKeyField(ServiceModel, required=False)
    # connection_uuid = StringField(required=True, allow_empty=False)
    connection_uuid = Column(UUID(as_uuid=False), primary_key=True, unique=True)
    # service_fk = ForeignKeyField(ServiceModel, required=False)
    service_uuid = Column(UUID(as_uuid=False), ForeignKey("Service.service_uuid"))
    path_fk = ForeignKeyField(PathModel, required=True)

    def delete(self) -> None:
+1 −0
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@ class ConstraintModel(Base): # pylint: disable=abstract-method
    __tablename__ = 'Constraint'
    # pk = PrimaryKeyField()
    # constraints_fk = ForeignKeyField(ConstraintsModel)
    constraint_uuid = Column(UUID(as_uuid=False), primary_key=True, unique=True)
    constraints_uuid = Column(UUID(as_uuid=False), ForeignKey("Constraints.constraints_uuid"), primary_key=True)
    # kind = EnumeratedField(ConstraintKindEnum)
    kind = Column(Enum(ConstraintKindEnum, create_constraint=False, native_enum=False))
+2 −1
Original line number Diff line number Diff line
@@ -683,6 +683,7 @@ class ContextServiceServicerImpl(ContextServiceServicer):

            # create specific constraint
            constraint_class, str_constraint_id, constraint_data, constraint_kind = parser(grpc_constraint)
            str_constraint_id = str(uuid.uuid4())
            LOGGER.info('str_constraint_id: {}'.format(str_constraint_id))
            # str_constraint_key_hash = fast_hasher(':'.join([constraint_kind.value, str_constraint_id]))
            # str_constraint_key = key_to_str([db_constraints.pk, str_constraint_key_hash], separator=':')
@@ -697,7 +698,7 @@ class ContextServiceServicerImpl(ContextServiceServicer):
            # create generic constraint
            # constraint_fk_field_name = 'constraint_uuid'.format(constraint_kind.value)
            constraint_data = {
                'constraint_uuid': db_constraints.constraint_uuid, 'position': position, 'kind': constraint_kind
                'constraints_uuid': db_constraints.constraints_uuid, 'position': position, 'kind': constraint_kind
            }

            db_new_constraint = ConstraintModel(**constraint_data)
+3 −2
Original line number Diff line number Diff line
@@ -747,6 +747,7 @@ def test_grpc_link(
        LOGGER.info(db_entry)
    LOGGER.info('-----------------------------------------------------------')
    assert len(db_entries) == 0
"""

def test_grpc_service(
    context_client_grpc : ContextClient,                # pylint: disable=redefined-outer-name
@@ -936,9 +937,10 @@ def test_grpc_service(
        LOGGER.info('  [{:>4s}] {:40s} :: {:s}'.format(*db_entry)) # pragma: no cover
    LOGGER.info('-----------------------------------------------------------')
    assert len(db_entries) == 0
"""


"""

def test_grpc_connection(
    context_client_grpc : ContextClient,                # pylint: disable=redefined-outer-name
    context_db_mb : Tuple[Database, MessageBroker]):    # pylint: disable=redefined-outer-name
@@ -1192,7 +1194,6 @@ def test_grpc_connection(
    LOGGER.info('-----------------------------------------------------------')
    assert len(db_entries) == 0

"""

# ----- Test REST API methods ------------------------------------------------------------------------------------------