Exemple #1
0
 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
Exemple #3
0
 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
Exemple #4
0
 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
Exemple #5
0
 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)