Skip to content

Commit ecb4882

Browse files
authored
Fixes multiple namespaces bug (#276)
* fix ns bug * add tests * rename some variables * rename ns to namespace * fix delete + correctly type * add typing to input obj parser
1 parent 756cc0a commit ecb4882

14 files changed

+326
-81
lines changed

src/actions/deploy.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ export async function deploy(
5656
for (const ingressResource of ingressResources) {
5757
await kubectl.getResource(
5858
KubernetesConstants.DiscoveryAndLoadBalancerResource.INGRESS,
59-
ingressResource.name
59+
ingressResource.name,
60+
false,
61+
ingressResource.namespace
6062
)
6163
}
6264
core.endGroup()

src/strategyHelpers/blueGreen/blueGreenHelper.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ export async function deleteGreenObjects(
3838
const resourcesToDelete: K8sDeleteObject[] = toDelete.map((obj) => {
3939
return {
4040
name: getBlueGreenResourceName(obj.metadata.name, GREEN_SUFFIX),
41-
kind: obj.kind
41+
kind: obj.kind,
42+
namespace: obj.metadata.namespace
4243
}
4344
})
4445

@@ -234,9 +235,10 @@ export function isServiceSelectorSubsetOfMatchLabel(
234235
export async function fetchResource(
235236
kubectl: Kubectl,
236237
kind: string,
237-
name: string
238+
name: string,
239+
namespace?: string
238240
): Promise<K8sObject> {
239-
const result = await kubectl.getResource(kind, name)
241+
const result = await kubectl.getResource(kind, name, false, namespace)
240242
if (result == null || !!result.stderr) {
241243
return null
242244
}

src/strategyHelpers/blueGreen/ingressBlueGreenHelper.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ export async function validateIngresses(
9797
const existingIngress = await fetchResource(
9898
kubectl,
9999
inputObject.kind,
100-
inputObject.metadata.name
100+
inputObject.metadata.name,
101+
inputObject?.metadata?.namespace
101102
)
102103

103104
const isValid =

src/strategyHelpers/blueGreen/serviceBlueGreenHelper.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ export async function validateServicesState(
3131
const existingService = await fetchResource(
3232
kubectl,
3333
serviceObject.kind,
34-
serviceObject.metadata.name
34+
serviceObject.metadata.name,
35+
serviceObject?.metadata?.namespace
3536
)
3637

3738
let isServiceGreen =

src/strategyHelpers/blueGreen/smiBlueGreenHelper.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,8 @@ export async function validateTrafficSplitsState(
142142
let trafficSplitObject = await fetchResource(
143143
kubectl,
144144
TRAFFIC_SPLIT_OBJECT,
145-
getBlueGreenResourceName(name, TRAFFIC_SPLIT_OBJECT_NAME_SUFFIX)
145+
getBlueGreenResourceName(name, TRAFFIC_SPLIT_OBJECT_NAME_SUFFIX),
146+
serviceObject?.metadata?.namespace
146147
)
147148
core.debug(
148149
`ts object extracted was ${JSON.stringify(trafficSplitObject)}`
@@ -183,7 +184,8 @@ export async function cleanupSMI(
183184
serviceObject.metadata.name,
184185
GREEN_SUFFIX
185186
),
186-
kind: serviceObject.kind
187+
kind: serviceObject.kind,
188+
namespace: serviceObject?.metadata?.namespace
187189
})
188190
})
189191

src/strategyHelpers/canary/canaryHelper.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,9 +195,13 @@ async function cleanUpCanary(
195195
files: string[],
196196
includeServices: boolean
197197
): Promise<string[]> {
198-
const deleteObject = async function (kind, name) {
198+
const deleteObject = async function (
199+
kind: string,
200+
name: string,
201+
namespace: string | undefined
202+
) {
199203
try {
200-
const result = await kubectl.delete([kind, name])
204+
const result = await kubectl.delete([kind, name], namespace)
201205
checkForErrors([result])
202206
} catch (ex) {
203207
// Ignore failures of delete if it doesn't exist
@@ -213,6 +217,7 @@ async function cleanUpCanary(
213217
for (const inputObject of parsedYaml) {
214218
const name = inputObject.metadata.name
215219
const kind = inputObject.kind
220+
const namespace: string | undefined = inputObject?.metadata?.namespace
216221

217222
if (
218223
isDeploymentEntity(kind) ||
@@ -222,8 +227,8 @@ async function cleanUpCanary(
222227
const canaryObjectName = getCanaryResourceName(name)
223228
const baselineObjectName = getBaselineResourceName(name)
224229

225-
await deleteObject(kind, canaryObjectName)
226-
await deleteObject(kind, baselineObjectName)
230+
await deleteObject(kind, canaryObjectName, namespace)
231+
await deleteObject(kind, baselineObjectName, namespace)
227232
}
228233
}
229234
}

src/strategyHelpers/deploymentHelper.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,12 @@ async function annotateResources(
218218
)
219219
if (annotateNamespace) {
220220
annotateResults.push(
221-
await kubectl.annotate('namespace', namespace, annotationKeyValStr)
221+
await kubectl.annotate(
222+
'namespace',
223+
namespace,
224+
annotationKeyValStr,
225+
namespace
226+
)
222227
)
223228
}
224229
for (const file of files) {
@@ -243,6 +248,7 @@ async function annotateResources(
243248
kubectl,
244249
resource.type,
245250
resource.name,
251+
resource.namespace,
246252
annotationKeyValStr,
247253
allPods
248254
)

src/types/k8sObject.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ export interface K8sObject {
22
metadata: {
33
name: string
44
labels: Map<string, string>
5+
namespace?: string
56
}
67
kind: string
78
spec: any
@@ -16,6 +17,7 @@ export interface K8sServiceObject extends K8sObject {
1617
export interface K8sDeleteObject {
1718
name: string
1819
kind: string
20+
namespace?: string
1921
}
2022

2123
export interface K8sIngress extends K8sObject {

0 commit comments

Comments
 (0)