def update_service_probea(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 not probe: return 404, u"应用未设置探针,无法进行修改操作", None is_used = data.get("is_used", None) if is_used is None: is_used = probe.is_used else: is_used = 1 if is_used else 0 prob_data = { "service_id": service.service_id, "scheme": data.get("scheme", probe.scheme), "path": data.get("path", probe.path), "port": data.get("port", probe.port), "cmd": data.get("cmd", probe.cmd), "http_header": data.get("http_header", probe.http_header), "initial_delay_second": data.get("initial_delay_second", probe.initial_delay_second), "period_second": data.get("period_second", probe.period_second), "timeout_second": data.get("timeout_second", probe.timeout_second), "failure_threshold": data.get("failure_threshold", probe.failure_threshold), "success_threshold": data.get("success_threshold", probe.success_threshold), "is_used": is_used, "probe_id": probe.probe_id, "mode": data["mode"] } console_probe = copy.deepcopy(prob_data) prob_data["enterprise_id"] = tenant.enterprise_id if service.create_status == "complete": res, body = region_api.update_service_probec( service.service_region, tenant.tenant_name, service.service_alias, prob_data) logger.debug("update probe action status {0}".format(res.status)) console_probe.pop("probe_id") console_probe.pop("service_id") probe_repo.update_service_probeb(service_id=service.service_id, probe_id=probe.probe_id, **console_probe) new_probe = probe_repo.get_probe_by_mode(service.service_id, probe.mode) return 200, "success", new_probe
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
def create_probe(self, tenant, service, data): code, msg = self.__check_probe_data(data) if code != 200: raise AbortRequest("invalid probe", msg_show=msg) probe = probe_repo.get_probe_by_mode(service.service_id, data["mode"]) if probe: raise AbortRequest("probe exists", msg_show="已设置过该类型探针", status_code=409, error_code=409) is_used = 1 if data.get("is_used", 1) else 0 probe = { "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", 4), "period_second": data.get("period_second", 3), "timeout_second": data.get("timeout_second", 5), "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"], } return ServiceProbe(**probe)
def get_service_probe_by_mode(self, service, mode): if not mode: m_list = [] for m in self.PROBE_MODE: probe = probe_repo.get_probe_by_mode(service.service_id, m) if not probe: m_list.append({m: False}) else: m_list.append({m: bool(probe.is_used)}) return 200, u"success", m_list if mode not in self.PROBE_MODE: return 400, u"参数错误,探针模式只能为readiness或liveness", None probe = probe_repo.get_probe_by_mode(service.service_id, mode) if not probe: return 404, u"探针不存在,您可能并未设置检测探针", None return 200, u"success", probe