🌳
pt0/deployF/k8sF/rewriteKcHostForLanAI.mts
4import * as _ from 'lodash-es'
6export const rewriteHostForLan = async ({str, cluster_name, klusterVipHostname, klustCertsH}: {
7 str: string, cluster_name?: string, klusterVipHostname?: string, klustCertsH?: Record<string, string | string[]>
8}) => {
9 const clusterCfg = cluster_name ? getCurKlusterCfg(cluster_name) : undefined
10 klusterVipHostname ||= clusterCfg?.klusterVipHostname
11 klustCertsH ||= clusterCfg?.klustCertsH
12 const nodePortsCfg = getNodePortsCfg(cluster_name)
13 const clusterVip = clusterCfg?.clusterVip ?? nodePortsCfg?.lanHostIpsH?.clusterVip
15 if (!klusterVipHostname || !klustCertsH || !cluster_name) return str
17 const vipSuffix = klusterVipHostname.replace('*', '')
18 const extSuffix = _.chain(klustCertsH).values().flatten()
19 .map(hn => hn.replace('*', ''))
20 .find(suffix => suffix !== vipSuffix)
21 .value()
23 if (!extSuffix) return str
24 if (!_.includes(str, vipSuffix) && !_.includes(str, extSuffix)) return str
26 const inLan = await isOnSameLan({cluster_name, nodeIpsExtHost: nodePortsCfg?.nodeIpsExtHost, clusterVip})
27 const fromSuffix = inLan ? extSuffix : vipSuffix
28 const toSuffix = inLan ? vipSuffix : extSuffix
30 if (!_.includes(str, fromSuffix)) return str
32 return str.replaceAll(fromSuffix, toSuffix)
35export const rewriteKcHostForLan = async ({klusterCfgStr, cluster_name, klusterVipHostname, klustCertsH}: {
36 klusterCfgStr: string
37 cluster_name?: string
38 klusterVipHostname?: string
39 klustCertsH?: Record<string, string | string[]>
40}) => {
41 const ctx = getKlusterCtx()
42 const appCfg = getAppCfg()
43 cluster_name ||= ctx.cluster_name ?? appCfg?.cluster_name
44 klusterVipHostname ||= ctx.klusterVipHostname
45 klustCertsH ||= ctx.klustCertsH
46 return rewriteHostForLan({str: klusterCfgStr, cluster_name, klusterVipHostname, klustCertsH})