import grpc from ..utils.coresvc import core_pb2_grpc as core_grpc from ..utils.coresvc import core_pb2 as core_pb class Meta: """ Meta is a class to get cluster meta info from core service """ def __init__(self, coresvc_address:str): self.coresvc_address = coresvc_address def get_cluster_meta(self, cluster_id: int): channel = grpc.insecure_channel(self.coresvc_address) client = core_grpc.CoreServiceStub(channel) req = core_pb.ListClustersReq( filter=core_pb.ClusterFilter( cluster_ids=[cluster_id], )) resp = client.ListClusters(req, timeout=5) if resp.clusters is None or resp.clusters[cluster_id] is None: raise Exception("get cluster {} info failed".format(cluster_id)) return resp.clusters[cluster_id] def list_cluster_meta_by_filter(self, filters: core_pb.ClusterFilter): channel = grpc.insecure_channel(self.coresvc_address) client = core_grpc.CoreServiceStub(channel) req = core_pb.ListClustersReq(filter=filters) resp = client.ListClusters(req, timeout=5) if resp.clusters is None: raise Exception("get cluster info failed") return resp.clusters