# 20220510 用于检查 dbaas 仓库中 swagger 文件中所有 url 的路由情况,上线临时使用 import json import dns.resolver import requests swaggerPaths = [ "/Users/wenjiazhi/coding/dbaas/admin/docs/mergedSwagger.json", "/Users/wenjiazhi/coding/dbaas/central/docs/mergedSwagger.json", ] # 未被 swagger 管理的 url patten swaggerLessUrlPattens = [ "/invitation-verification", "/registration-verification", "/public_api/v1/clusters/:cluster_id/monitoring/measurements", "/public_api/v1/projects/:project_id/metrics", "/api/useralerts/v1/alert", ] DNS_HOST = "k8s-kongingressalb-ea55959e45-1906132441.us-west-2.elb.amazonaws.com" REQUEST_HOST = "us-west-2.prod.aws.tidbcloud.com" def check_url_patten(ip, patten): path = ( patten.replace("{", "").replace("}", "").replace(":", "").replace("_id", "123") ) url = "http://{}{}".format(ip, path) resp = requests.get( url, headers={ "Host": REQUEST_HOST, "kong-debug": "1", }, allow_redirects=False, ) if resp.headers.get("Kong-Service-Name") is None: print("`{}` can't match any route".format(url_path)) resolver = dns.resolver.Resolver(configure=False) resolver.nameservers = ["119.29.29.29"] answer = resolver.resolve(DNS_HOST, "A") ip = answer.response.answer[0].to_text().split("\n")[0].split(" ")[-1] for file_path in swaggerPaths: with open(file_path) as f: config = json.load(f) url_paths = config["paths"].keys() for url_path in url_paths: check_url_patten(ip, url_path) for patten in swaggerLessUrlPattens: check_url_patten(ip, patten)