def __save_service_label(self, tenant, service, region, service_labels): service_label_list = [] for service_label in service_labels: service_label.pop("ID") new_service_label = ServiceLabels(**service_label) new_service_label.tenant_id = tenant.tenant_id new_service_label.service_id = service.service_id new_service_label.region = region service_label_list.append(new_service_label) if service_label_list: ServiceLabels.objects.bulk_create(service_label_list)
def add_service_labels(self, tenant, service, label_ids): labels = label_repo.get_labels_by_label_ids(label_ids) labels_list = list() body = dict() label_map = [l.label_name for l in labels] service_labels = list() for label_id in label_ids: service_label = ServiceLabels(tenant_id=tenant.tenant_id, service_id=service.service_id, label_id=label_id, region=service.service_region) service_labels.append(service_label) if service.create_status == "complete": for label_name in label_map: label_dict = dict() label_dict["label_key"] = "node-selector" label_dict["label_value"] = label_name labels_list.append(label_dict) body["labels"] = labels_list try: region_api.addServiceNodeLabel(service.service_region, tenant.tenant_name, service.service_alias, body) ServiceLabels.objects.bulk_create(service_labels) except region_api.CallApiError as e: logger.exception(e) return 507, u"组件异常", None return 200, u"操作成功", None
def _create_component(self, snap): # component component = TenantServiceInfo(**snap["service_base"]) # component source component_source = ServiceSourceInfo(**snap["service_source"]) # environment envs = [TenantServiceEnvVar(**env) for env in snap["service_env_vars"]] # ports ports = [TenantServicesPort(**port) for port in snap["service_ports"]] # service_extend_method extend_info = None if snap.get("service_extend_method"): extend_info = ServiceExtendMethod( **snap.get("service_extend_method")) # volumes volumes = [ TenantServiceVolume(**volume) for volume in snap["service_volumes"] ] # configuration files config_files = [ TenantServiceConfigurationFile(**config_file) for config_file in snap["service_config_file"] ] # probe probes = [ServiceProbe(**probe) for probe in snap["service_probes"]] # monitors monitors = [ ServiceMonitor(**monitor) for monitor in snap["service_monitors"] ] # graphs graphs = [ ComponentGraph(**graph) for graph in snap["component_graphs"] ] service_labels = [ ServiceLabels(**label) for label in snap["service_labels"] ] cpt = Component( component=component, component_source=component_source, envs=envs, ports=ports, volumes=volumes, config_files=config_files, probes=probes, extend_info=extend_info, monitors=monitors, graphs=graphs, plugin_deps=[], labels=service_labels, support_labels=self.support_labels, ) cpt.action_type = snap.get("action_type", ActionType.BUILD.value) return cpt
def _template_to_labels(self, component, labels): support_labels = {label.label_name: label for label in self.support_labels} if not labels: return [] new_labels = [] for label in labels: lab = support_labels.get(label) if not lab: continue new_labels.append( ServiceLabels( tenant_id=component.tenant_id, service_id=component.service_id, label_id=lab.label_id, region=self.region_name, create_time=datetime.now().strftime('%Y-%m-%d %H:%M:%S'))) return new_labels
def _update_labels(self, labels): if not labels: return labels = labels.get("add", []) for key in labels: label = self.support_labels.get(key) if not label: continue self.labels.append( ServiceLabels( tenant_id=self.component.tenant_id, service_id=self.component.component_id, label_id=label.label_id, region=self.component.service_region, create_time=datetime.now().strftime('%Y-%m-%d %H:%M:%S'), )) self.update_action_type(ActionType.UPDATE.value)