export async function createTrafficSplitObject()

in src/strategyHelpers/blueGreen/smiBlueGreenHelper.ts [73:116]


export async function createTrafficSplitObject(
   kubectl: Kubectl,
   name: string,
   nextLabel: string
): Promise<TrafficSplitObject> {
   // cache traffic split api version
   if (!trafficSplitAPIVersion)
      trafficSplitAPIVersion =
         await kubectlUtils.getTrafficSplitAPIVersion(kubectl)

   // retrieve annotations for TS object
   const annotations = inputAnnotations

   // decide weights based on nextlabel
   const stableWeight: number =
      nextLabel === GREEN_LABEL_VALUE ? MIN_VAL : MAX_VAL
   const greenWeight: number =
      nextLabel === GREEN_LABEL_VALUE ? MAX_VAL : MIN_VAL

   const trafficSplitObject: TrafficSplitObject = {
      apiVersion: trafficSplitAPIVersion,
      kind: TRAFFIC_SPLIT_OBJECT,
      metadata: {
         name: getBlueGreenResourceName(name, TRAFFIC_SPLIT_OBJECT_NAME_SUFFIX),
         annotations: annotations,
         labels: new Map<string, string>()
      },
      spec: {
         service: name,
         backends: [
            {
               service: getBlueGreenResourceName(name, STABLE_SUFFIX),
               weight: stableWeight
            },
            {
               service: getBlueGreenResourceName(name, GREEN_SUFFIX),
               weight: greenWeight
            }
         ]
      }
   }

   return trafficSplitObject
}