예제 #1
0
    def add_service_probe(self, tenant, service, data):
        code, msg = self.__check_probe_data(data)
        if code != 200:
            return code, msg, None

        probe = probe_repo.get_probe_by_mode(service.service_id, data["mode"])
        if probe:
            return 409, u"已设置过该类型探针", None
        is_used = 1 if data.get("is_used", 1) else 0
        prob_data = {
            "service_id": service.service_id,
            "scheme": data.get("scheme", "tcp"),
            "path": data.get("path", ""),
            "port": data.get("port"),
            "cmd": data.get("cmd", ""),
            "http_header": data.get("http_header", ""),
            "initial_delay_second": data.get("initial_delay_second", 1),
            "period_second": data.get("period_second", 3),
            "timeout_second": data.get("timeout_second", 30),
            "failure_threshold": data.get("failure_threshold", 3),
            "success_threshold": data.get("success_threshold", 1),
            "is_used": is_used,
            "probe_id": make_uuid(),
            "mode": data["mode"],
        }
        # 真·深拷贝
        console_prob = copy.deepcopy(prob_data)
        prob_data["enterprise_id"] = tenant.enterprise_id
        logger.debug("create status: {}".format(service.create_status))
        if service.create_status == "complete":
            res, body = region_api.add_service_probe(service.service_region, tenant.tenant_name, service.service_alias,
                                                     prob_data)
            logger.debug("add probe action status {0}".format(res.status))
        new_probe = probe_repo.add_service_probe(**console_prob)
        return 200, "success", new_probe
예제 #2
0
 def add_service_probe(self, tenant, service, data):
     probe = self.create_probe(tenant, service, data)
     probe = probe.to_dict()
     # deep copy
     logger.debug("create status: {}".format(service.create_status))
     if service.create_status == "complete":
         new_probe = copy.deepcopy(probe)
         new_probe["enterprise_id"] = tenant.enterprise_id
         res, body = region_api.add_service_probe(service.service_region, tenant.tenant_name, service.service_alias,
                                                  new_probe)
         logger.debug("add probe action status {0}".format(res.status))
     new_probe = probe_repo.add_service_probe(**probe)
     return 200, "success", new_probe
예제 #3
0
 def probe(self, probe):
     probe_repo.delete_service_probe(self.service.service_id)
     if not probe:
         return
     probe.pop("ID")
     probe_repo.add_service_probe(**probe)