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'
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'
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()