Commit 0406cd27 authored by Carlos Manso's avatar Carlos Manso
Browse files

Topology model updated to SQLAlchemy

parent 979f3d41
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ def main():
    start_http_server(metrics_port)

    # Get database instance
    db_uri = 'cockroachdb://root@10.152.183.121:26257/defaultdb?sslmode=disable'
    db_uri = 'cockroachdb://root@10.152.183.66:26257/defaultdb?sslmode=disable'
    LOGGER.debug('Connecting to DB: {}'.format(db_uri))

    # engine = create_engine(db_uri, echo=False)
+3 −3
Original line number Diff line number Diff line
@@ -27,11 +27,11 @@ LOGGER = logging.getLogger(__name__)

class TopologyModel(Base):
    __tablename__ = 'Topology'
    context_fk = Column(UUID(as_uuid=False), ForeignKey("Context.context_uuid"), nullable=False)
    topology_uuid = Column(UUID(as_uuid=False), primary_key=True, nullable=False)
    context_uuid = Column(UUID(as_uuid=False), ForeignKey("Context.context_uuid"), primary_key=True)
    topology_uuid = Column(UUID(as_uuid=False), primary_key=True)

    # Relationships
    context = relationship("ContextModel", back_populates="topology", lazy="joined")
    context = relationship("ContextModel", back_populates="topology", lazy="subquery")

    def dump_id(self) -> Dict:
        context_id = self.context.dump_id()
+16 −20
Original line number Diff line number Diff line
@@ -170,7 +170,6 @@ class ContextServiceServicerImpl(ContextServiceServicer):

    @safe_and_metered_rpc_method(METRICS, LOGGER)
    def ListTopologyIds(self, request: ContextId, context : grpc.ServicerContext) -> TopologyIdList:
        with self.lock:
        context_uuid = request.context_uuid.uuid

        with self.session() as session:
@@ -213,20 +212,17 @@ class ContextServiceServicerImpl(ContextServiceServicer):
        context_uuid = request.topology_id.context_id.context_uuid.uuid
        topology_uuid = request.topology_id.topology_uuid.uuid
        with self.session() as session:
            db_context: ContextModel = session.query(ContextModel).filter_by(context_uuid=context_uuid).one()

            topology_add = TopologyModel(topology_uuid=topology_uuid, context_fk=context_uuid)
            topology_add.context = db_context
            topology_add = TopologyModel(topology_uuid=topology_uuid, context_uuid=context_uuid)
            updated = True
            result = session.query(TopologyModel).join(TopologyModel.context).filter(TopologyModel.topology_uuid==topology_uuid).options(contains_eager(TopologyModel.context)).one_or_none()

            result = session.query(TopologyModel).join(TopologyModel.context).filter(TopologyModel.topology_uuid==topology_uuid).one_or_none()
            if not result:
                updated = False
            session.merge(topology_add)
            session.commit()
            result = session.query(TopologyModel).join(TopologyModel.context).filter(TopologyModel.topology_uuid==topology_uuid).one_or_none()

            event_type = EventTypeEnum.EVENTTYPE_UPDATE if updated else EventTypeEnum.EVENTTYPE_CREATE
        dict_topology_id = topology_add.dump_id()
            dict_topology_id = result.dump_id()
            notify_event(self.messagebroker, TOPIC_TOPOLOGY, event_type, {'topology_id': dict_topology_id})
            return TopologyId(**dict_topology_id)

@@ -236,12 +232,12 @@ class ContextServiceServicerImpl(ContextServiceServicer):
        topology_uuid = request.topology_uuid.uuid

        with self.session() as session:
            result = session.query(TopologyModel).filter_by(topology_uuid=topology_uuid, context_fk=context_uuid).one_or_none()
            result = session.query(TopologyModel).filter_by(topology_uuid=topology_uuid, context_uuid=context_uuid).one_or_none()
            if not result:
                return Empty()
            dict_topology_id = result.dump_id()

            session.query(TopologyModel).filter_by(topology_uuid=topology_uuid, context_fk=context_uuid).delete()
            session.query(TopologyModel).filter_by(topology_uuid=topology_uuid, context_uuid=context_uuid).delete()
            session.commit()
            event_type = EventTypeEnum.EVENTTYPE_REMOVE
            notify_event(self.messagebroker, TOPIC_TOPOLOGY, event_type, {'topology_id': dict_topology_id})
+1 −1
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ def context_s_mb(request) -> Tuple[Session, MessageBroker]:
    msg = 'Running scenario {:s} db_session={:s}, mb_backend={:s}, mb_settings={:s}...'
    LOGGER.info(msg.format(str(name), str(db_session), str(mb_backend.value), str(mb_settings)))

    db_uri = 'cockroachdb://root@10.152.183.121:26257/defaultdb?sslmode=disable'
    db_uri = 'cockroachdb://root@10.152.183.66:26257/defaultdb?sslmode=disable'
    LOGGER.debug('Connecting to DB: {}'.format(db_uri))

    try: