Fix “Service” route-method of the Blue-Green strategy with some manifest files (#283)

This commit is contained in:
Olivier Tétard
2023-04-17 19:52:50 +02:00
committed by GitHub
parent dd4bbd13a5
commit e52890db9e
3 changed files with 31 additions and 219 deletions
@@ -67,31 +67,25 @@ export async function deleteObjects(
// other common functions
export function getManifestObjects(filePaths: string[]): BlueGreenManifests {
const deploymentEntityList: K8sObject[] = []
const serviceEntityList: K8sObject[] = []
const routedServiceEntityList: K8sObject[] = []
const unroutedServiceEntityList: K8sObject[] = []
const ingressEntityList: K8sObject[] = []
const otherEntitiesList: K8sObject[] = []
const serviceNameMap = new Map<string, string>()
// Manifest objects per type. All resources should be parsed and
// organized before we can check if services are “routed” or not.
filePaths.forEach((filePath: string) => {
const fileContents = fs.readFileSync(filePath).toString()
yaml.safeLoadAll(fileContents, (inputObject) => {
if (!!inputObject) {
const kind = inputObject.kind
const name = inputObject.metadata.name
if (isDeploymentEntity(kind)) {
deploymentEntityList.push(inputObject)
} else if (isServiceEntity(kind)) {
if (isServiceRouted(inputObject, deploymentEntityList)) {
routedServiceEntityList.push(inputObject)
serviceNameMap.set(
name,
getBlueGreenResourceName(name, GREEN_SUFFIX)
)
} else {
unroutedServiceEntityList.push(inputObject)
}
serviceEntityList.push(inputObject)
} else if (isIngressEntity(kind)) {
ingressEntityList.push(inputObject)
} else {
@@ -101,6 +95,16 @@ export function getManifestObjects(filePaths: string[]): BlueGreenManifests {
})
})
serviceEntityList.forEach((inputObject: any) => {
if (isServiceRouted(inputObject, deploymentEntityList)) {
const name = inputObject.metadata.name
routedServiceEntityList.push(inputObject)
serviceNameMap.set(name, getBlueGreenResourceName(name, GREEN_SUFFIX))
} else {
unroutedServiceEntityList.push(inputObject)
}
})
return {
serviceEntityList: routedServiceEntityList,
serviceNameMap: serviceNameMap,