예제 #1
0
class KubeWorkerIdentifier(Base):
    """Table containing Kubernetes Worker Identified"""
    __tablename__ = "kube_worker_uuid"
    one_row_id = Column(Boolean, server_default=sqltrue(), primary_key=True)
    worker_uuid = Column(String(255))

    @staticmethod
    @provide_session
    def get_or_create_current_kube_worker_uuid(session: Session = None) -> str:
        """Create & Store Worker UUID in DB if it doesn't exists in DB, retrieve otherwise"""
        (worker_uuid, ) = session.query(KubeWorkerIdentifier.worker_uuid).one()
        if worker_uuid == '':
            worker_uuid = str(uuid.uuid4())
            KubeWorkerIdentifier.checkpoint_kube_worker_uuid(
                worker_uuid, session)
        return worker_uuid

    @staticmethod
    @provide_session
    def checkpoint_kube_worker_uuid(worker_uuid: str,
                                    session: Session = None) -> None:
        """Update the Kubernetes Worker UUID in the DB"""
        if worker_uuid:
            session.query(KubeWorkerIdentifier).update(
                {KubeWorkerIdentifier.worker_uuid: worker_uuid})
            session.commit()
class KubeResourceVersion(Base):
    __tablename__ = "kube_resource_version"
    one_row_id = Column(Boolean, server_default=sqltrue(), primary_key=True)
    resource_version = Column(String(255))

    @staticmethod
    @provide_session
    def get_current_resource_version(session: Session = None) -> str:
        (resource_version, ) = session.query(
            KubeResourceVersion.resource_version).one()
        return resource_version

    @staticmethod
    @provide_session
    def checkpoint_resource_version(resource_version,
                                    session: Session = None) -> None:
        if resource_version:
            session.query(KubeResourceVersion).update(
                {KubeResourceVersion.resource_version: resource_version})
            session.commit()

    @staticmethod
    @provide_session
    def reset_resource_version(session: Session = None) -> str:
        session.query(KubeResourceVersion).update(
            {KubeResourceVersion.resource_version: '0'})
        session.commit()
        return '0'
예제 #3
0
class KubeResourceVersion(Base):
    """Table containing Kubernetes Resource versions"""
    __tablename__ = "kube_resource_version"
    one_row_id = Column(Boolean, server_default=sqltrue(), primary_key=True)
    resource_version = Column(String(255))

    @staticmethod
    @provide_session
    def get_current_resource_version(session: Session = None) -> str:
        """Get Current Kubernetes Resource Version from Airflow Metadata DB"""
        (resource_version, ) = session.query(
            KubeResourceVersion.resource_version).one()
        return resource_version

    @staticmethod
    @provide_session
    def checkpoint_resource_version(resource_version,
                                    session: Session = None) -> None:
        """Update Kubernetes Resource Version in Airflow Metadata DB"""
        if resource_version:
            session.query(KubeResourceVersion).update(
                {KubeResourceVersion.resource_version: resource_version})
            session.commit()

    @staticmethod
    @provide_session
    def reset_resource_version(session: Session = None) -> str:
        """Reset Kubernetes Resource Version to 0 in Airflow Metadata DB"""
        session.query(KubeResourceVersion).update(
            {KubeResourceVersion.resource_version: '0'})
        session.commit()
        return '0'
예제 #4
0
class KubeWorkerIdentifier(Base):
    __tablename__ = "kube_worker_uuid"
    one_row_id = Column(Boolean, server_default=sqltrue(), primary_key=True)
    worker_uuid = Column(String(255))

    @staticmethod
    @provide_session
    def get_or_create_current_kube_worker_uuid(session=None):
        (worker_uuid, ) = session.query(KubeWorkerIdentifier.worker_uuid).one()
        if worker_uuid == '':
            # 一个纯随机数,与机器无关, 相重的几率很小
            worker_uuid = str(uuid.uuid4())
            # 更新uuid
            KubeWorkerIdentifier.checkpoint_kube_worker_uuid(
                worker_uuid, session)
        return worker_uuid

    @staticmethod
    @provide_session
    def checkpoint_kube_worker_uuid(worker_uuid, session=None):
        """更新uuid ."""
        if worker_uuid:
            session.query(KubeWorkerIdentifier).update(
                {KubeWorkerIdentifier.worker_uuid: worker_uuid})
            session.commit()