export async function validateTrafficSplitsState()

in src/strategyHelpers/blueGreen/smiBlueGreenHelper.ts [133:172]


export async function validateTrafficSplitsState(
   kubectl: Kubectl,
   serviceEntityList: any[]
): Promise<boolean> {
   let trafficSplitsInRightState: boolean = true

   for (const serviceObject of serviceEntityList) {
      const name = serviceObject.metadata.name
      let trafficSplitObject = await fetchResource(
         kubectl,
         TRAFFIC_SPLIT_OBJECT,
         getBlueGreenResourceName(name, TRAFFIC_SPLIT_OBJECT_NAME_SUFFIX),
         serviceObject?.metadata?.namespace
      )
      core.debug(
         `ts object extracted was ${JSON.stringify(trafficSplitObject)}`
      )
      if (!trafficSplitObject) {
         core.debug(`no traffic split exits for ${name}`)
         trafficSplitsInRightState = false
         continue
      }

      trafficSplitObject.spec.backends.forEach((element) => {
         // checking if trafficsplit in right state to deploy
         if (element.service === getBlueGreenResourceName(name, GREEN_SUFFIX)) {
            trafficSplitsInRightState =
               trafficSplitsInRightState && element.weight == MAX_VAL
         }

         if (
            element.service === getBlueGreenResourceName(name, STABLE_SUFFIX)
         ) {
            trafficSplitsInRightState =
               trafficSplitsInRightState && element.weight == MIN_VAL
         }
      })
   }
   return trafficSplitsInRightState
}