''' @Descripttion: @Author: guohb65 @Email: guohb65@chinaunicom.cn @Date: 2019-12-09 18:19:17 @LastEditors : guohb65 @LastEditTime : 2020-05-09 14:47:58 ''' import json import os from enum import Enum MYSQL_POOL_DOMAIN = "MYSQL_POOL_DOMAIN" WEB_UTILITY_DOMAIN = "WEB_UTILITY_DOMAIN" class Env(object): def __init__(self): env_dist = os.environ if "COMMON_MOUNT_PATH" in env_dist: common_mount_path = env_dist.get("COMMON_MOUNT_PATH") common_conf_file = open(common_mount_path, 'r') common_data_json = json.loads(common_conf_file.read()) common_conf_file.close() self.mysql_pool_domain = common_data_json.get(MYSQL_POOL_DOMAIN) self.web_utility_domain = common_data_json.get(WEB_UTILITY_DOMAIN) else: self.mysql_pool_domain = "" self.web_utility_domain = "" def get_mysql_pool_domain(self): return self.mysql_pool_domain def get_web_utility_domain(self): return self.web_utility_domain class ConstGen(object): """ # 普通常量类 """ REGIONS_ID = "region_id" # 挂载路径环境变量 SELF_MOUNT_PATH = "SELF_MOUNT_PATH" COMMON_MOUNT_PATH = "COMMON_MOUNT_PATH" # 各域名KEY TG_DOMAIN = "TG_DOMAIN" CKE_DOMAIN = "CKE_DOMAIN" CONFIG_CENTER_DOMAIN = "CONFIG_CENTER_DOMAIN" IAM_DOMAIN = "IAM_DOMAIN" # 返回字符串 CSM_BS_CODE = 'csm-bs-code' CONTENT_TYPE = "Content-Type" CONTENT_TYPE_JSON = "application/json" CONTENT_TYPE_TEXT = "text/plain" ACCESS_MSG = "accessMsg" MESSAGE = "message" CODE = "code" CA_FLAG = "ca_flag" HEADERS = "headers" DATA_STR = "data" TZ = "Asia/Shanghai" RET_CODE = "RetCode" RET_VAL = "RetVal" SUCCESS_CODE = "1" SUCCESS_STR = "success" FAIL_CODE = "2" ZERO_STR = "0" # 接口常用字符串 DATA_ROWS_STR = "DataRows" ROWCOUNT_STR = "RowCount" PAGE_COUNT_STR = "PageCount" UNIQUE_STR = 'unique' OTHERS_STR = 'others' CONDITION_STR = "condition" EXACT_STR = "exact" FUZZY_STR = "fuzzy" PAGE_STR = "page" PAGE_NUM_STR = "page_num" PAGE_SIZE_STR = "page_size" COOKIES_LOGIN_USER_STR = "loginname" ACCOUNT_ID_STR = "accountID" USER_ID_STR = "userID" TABLE_NAME_STR = 'table_name' SQL_STR = 'sql' TRANS_SQL_STR = 'transsql' TRANS_JSON_ARRAY_STR = 'transjsonarray' # db 操作 OPT_INSERT = "insert" OPT_UPDATE = "update" OPT_DELETE = "delete" ASC = "asc" DESC = "desc" # request key PARAMS_STR = "params" # 时间格式化 pre_fmt = "%Y-%m-%dT%H:%M:%SZ" post_fmt = "%Y-%m-%d %H:%M:%S" # 根路径 ROOT_URL = Env().get_mysql_pool_domain() + '/mysqlpool/' HTTPS_STR = "https://" BACKSLASH = '/' # mysqlpool底层服务路径 STANDER_SQL = 'standardsql' STANDARD_PROC = 'standardproc' TRANS = 'trans' # serviceMesh库访问路径 SERVICE_MESH_W_URL = '/w/servicemesh/service' SERVICE_MESH_R_URL = '/r/servicemesh/service' # sql写url TRANS_SQL_URL = ROOT_URL + TRANS + SERVICE_MESH_W_URL # sql读url STANDER_SQL_URL = ROOT_URL + STANDER_SQL + SERVICE_MESH_R_URL # 存储过程读url STANDARD_PROC_R_URL = ROOT_URL + STANDARD_PROC + SERVICE_MESH_R_URL # 存储过程写url STANDARD_PROC_W_URL = ROOT_URL + STANDARD_PROC + SERVICE_MESH_W_URL # jsonpath转json的服务 WEB_UTILITY_ROOT_URL = Env().get_web_utility_domain() + '/webutility/' SVC_JSON_PATH_TO_JSON = 'getjsonpath/get' JSON_PATH_TO_JSON_URL = WEB_UTILITY_ROOT_URL + SVC_JSON_PATH_TO_JSON class K8SRestUrl(object): """ Kubernetes资源对象访问根路径 """ NAMESPACES_REST_URL = "/api/v1/" DEPLOYMENT_REST_API = "/apis/apps/v1/" SERVICE_REST_API = "/api/v1/" POD_REST_API = "/api/v1/" EVENT_REST_API = "/api/v1/" NODE_REST_API = "/api/v1/" ISTIO_REST_API = "/apis/networking.istio.io/v1alpha3/" class K8SObjStr(object): """ Kubernetes资源对象中的字符串 """ API_VERSION_STR = "apiVersion" # 命名空间变量KEY值 ITEM_KEY = "items" METADATA_KEY = "metadata" NAME_KEY = "name" NAMESPACE_KEY = "namespace" REPLICAS_KEY = "replicas" AVAILABLE_REPLICAS_KEY = "availableReplicas" SPEC_KEY = "spec" CONTAINERS_KEY = "containers" TEMPLATE_KEY = "template" LABELS_KEY = "labels" SELECTOR_KEY = "selector" STATUS_KEY = "status" STATE_KEY = "state" PHASE_KEY = "phase" POD_IP_KEY = "podIP" NODE_IP_KEY = "hostIP" NODE_NAME_KEY = "nodeName" START_TIME_KEY = "startTime" OWNERREFERENCES_KEY = "ownerReferences" ADDRESSES_KEY = "addresses" ADDRESS_KEY = "address" CONDITIONS_KEY = "conditions" CREATE_TIME_KEY = "creationTimestamp" ANNOTATIONS_KEY = "annotations" NS_DESC_KEY = "namespaceDesc" MATCH_LABELS_KEY = "matchLabels" CLUSTER_IP_KEY = "clusterIP" TYPE_KEY = "type" CONTAINER_STATUSES_KEY = "containerStatuses" INIT_CONTAINER_STATUSES_KEY = "initContainerStatuses" class K8SRestStr(object): """ Kubernetes中REST请求中的字符串 """ HEADERS = "headers" AUTHORIZATION_STR = "authorization" BEARER_STR = "Bearer " CONTENT_TYPE = "Content-Type" APPLICATION_JSON = "application/json" PATCH_CONTENT_TYPE_STR = "application/json-patch+json" MERGE_PATCH_JSON = "application/merge-patch+json" STRATEGIC_MERGE_PATCH_JSON = "application/strategic-merge-patch+json" NAMESPACES = "namespaces" SERVICES = "services" DEPLOYMENTS = "deployments" REPLICASETS = "replicasets" PODS = "pods" NODES = "nodes" SERVICEENTRIES = "serviceentries" EVENTS = "events" STATUS = "status" MESSAGE = "message" class K8SOptJsonStr(object): # json 数据KEY值 KUBE_INFO = "kube_info" CA_INFO = "ca_info" KUBE_CA_CRT = "kube_ca_crt" KUBE_CLIENT_CRT = "kube_client_crt" KUBE_CLIENT_KEY = "kube_client_key" KUBECACRTPATH = "/root/ssl/ca.crt" KUBECLIENTCRTPATH = "/root/ssl/istio.pem" KUBECLIENTKEYPATH = "/root/ssl/istio-key.pem" DEFAULTCONFIGPATH = "/root/.kube/config" CA_CRT_FILE_PATH = "/tmp/pki/ca.crt" CLIENT_CRT_FILE_PATH = "/tmp/pki/client.crt" CLIENT_KEY_FILE_PATH = "/tmp/pki/client.key" BEGIN_CERTIFICATE = "-----BEGIN CERTIFICATE-----" END_CERTIFICATE = "-----END CERTIFICATE-----" BEGIN_EC_PRIVATE_KEY = "-----BEGIN RSA PRIVATE KEY-----" END_EC_PRIVATE_KEY = "-----END RSA PRIVATE KEY-----" BEGIN_RSA_PRIVATE_KEY = "-----BEGIN RSA PRIVATE KEY-----" END_RSA_PRIVATE_KEY = "-----END RSA PRIVATE KEY-----" class K8SResourceJsonStr(object): """ # K8s资源对象中Json数据字符串KEY """ K8S_POD_IP = "pod_ip" K8S_POD_HOST_IP = "host_ip" K8S_POD_START_TIME = "start_time" K8S_POD_NODE_NAME = "node_name" K8S_POD_NAME_KEY = "podName" K8S_POD_STATUS_KEY = "status" # POD状态 K8S_POD_NOT_READY = "NotReady" K8S_POD_PENDING = "Pending" K8S_POD_RUNNING = "Running" K8S_POD_SUCCEEDED = "Succeeded" K8S_POD_FAILED = "Failed" K8S_POD_UNKNOWN = "Unknown" K8S_POD_COMPLETED = "Completed" K8S_POD_CRASHLOOPBACKOFF = "CrashLoopBackOff" class PodStatus(Enum): """ # K8s Pod状态 """ Completed = 1 Succeeded = 2 Running = 3 Pending = 4 CrashLoopBackOff = 5 Failed = 6 Unknown = 7 class RequestMethod(Enum): GET = "get" POST = "post" DELETE = "delete" PUT = "put" PATCH = "patch" class NamespaceStatus(Enum): Active = "可用" Terminating = "停止中" class ResponseCode(Enum): OK = "OK" Failure = "Failure" SysBusy = "SysBusy" SysError = "SysError" InvalidAction = "InvalidAction" AuthFailure = "AuthFailure" UnauthorizedOperation = "UnauthorizedOperation" MissingParameter = "MissingParameter" class K8SResourceKindStr(Enum): NAMESPACE = "Namespace" SERVICE = "Service" DEPLOYMENT = "Deployment" class ConstTableName(object): """ # 业务数据表名 """ TB_KUBE_CLUSTER = "kube_cluster" class ConstClusterColumn(object): CLUSTER_NAME = "cluster_name" REGION_ID = "region_id" CREATE_USER_ID = "create_userid" CLUSTER_ID = "cluster_id" CLUSTER_TYPE = "cluster_type" CLIENT_KEY = "client_key" CLIENT_CRT = "client_crt" CA_CRT = "ca_crt" CLUSTER_TOKEN = "cluster_token" CLUSTER_PORT = "cluster_port" CLUSTER_IP = "cluster_ip" class IAMAction(object): CREATE_INSTANCE = "CreateInstance" DESCRIBE_INSTANCE = "DescribeInstance" DELETE_INSTANCE = "DeleteInstance" LIST_INSTANCE = "ListInstance" UPDATE_INSTANCE = "UpdateInstance" LIST_K8S = "ListK8S" DESCRIBE_K8S = "DescribeCluster" DELETE_K8S = "DeleteK8S" UPDATE_K8S = "UpdateK8S"