def get(self, request, *args, **kwargs): """ 添加特性获取可用标签 :param request: :param args: :param kwargs: :return: """ # 节点添加的标签和数据中心查询回来的标签才可被组件使用 node_labels = node_label_repo.get_all_labels() labels_list = list() labels_name_list = list() if node_labels: node_labels_id_list = [label.label_id for label in node_labels] label_obj_list = label_repo.get_labels_by_label_ids( node_labels_id_list) for label_obj in label_obj_list: labels_name_list.append(label_obj.label_name) # 查询数据中心可使用的标签 try: code, msg, data_list = label_service.get_region_labels( self.tenant, self.service) if code == 200 and data_list: label_name_list = [] labels = label_repo.get_all_labels() if labels: for label in labels: label_name_list.append(label.label_name) for label_name in data_list: if label_name not in label_name_list: label_repo.create_label(label_name, label_name) labels_name_list.append(label_name) except Exception as e: logger.exception(e) # 去除该组件已绑定的标签 service_labels = service_label_repo.get_service_labels( self.service.service_id) if service_labels: service_labels_id_list = [ label.label_id for label in service_labels ] label_obj_list = label_repo.get_labels_by_label_ids( service_labels_id_list) service_labels_name_list = [ label.label_name for label in label_obj_list ] for service_labels_name in service_labels_name_list: if service_labels_name in labels_name_list: labels_name_list.remove(service_labels_name) for labels_name in labels_name_list: label_dict = dict() label_oj = label_repo.get_labels_by_label_name(labels_name) label_dict["label_id"] = label_oj.label_id label_dict["label_alias"] = label_oj.label_alias labels_list.append(label_dict) result = general_message(200, "success", "查询成功", list=labels_list) return Response(result, status=result["code"])
def set_service_os_label(self, tenant, service, os): os_label = label_repo.get_labels_by_label_name(os) if not os_label: os_label = label_repo.create_label(os, os) return self.add_service_labels(tenant, service, [os_label.label_id])