feat: add duration to affected releases on sync (#773)
* feat: add duration to affected releases on sync Signed-off-by: Alexandru Axenti <alex.axenti@gmail.com>
This commit is contained in:
parent
7c72e2ba3e
commit
0012e7e5a1
|
|
@ -262,9 +262,170 @@ processing releases in group 1/2: default/default/external-secrets
|
|||
processing releases in group 2/2: default/default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("check-duration", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
fields: fields{
|
||||
skipNeeds: true,
|
||||
},
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
{{ $mark := "a" }}
|
||||
|
||||
releases:
|
||||
- name: kubernetes-external-secrets
|
||||
chart: incubator/raw
|
||||
namespace: kube-system
|
||||
|
||||
- name: external-secrets
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
needs:
|
||||
- kube-system/kubernetes-external-secrets
|
||||
|
||||
- name: my-release
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
needs:
|
||||
- default/external-secrets
|
||||
hooks:
|
||||
- name: my-release
|
||||
events:
|
||||
- postsync
|
||||
showlogs: true
|
||||
command: sleep
|
||||
args: [5s]
|
||||
`,
|
||||
},
|
||||
selectors: []string{"app=test"},
|
||||
upgraded: []exectest.Release{
|
||||
{Name: "external-secrets", Flags: []string{"--kube-context", "default", "--namespace", "default"}},
|
||||
{Name: "my-release", Flags: []string{"--kube-context", "default", "--namespace", "default"}},
|
||||
},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^external-secrets$", Flags: listFlags("default", "default")}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
external-secrets 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^my-release$", Flags: listFlags("default", "default")}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
log: `processing file "helmfile.yaml" in directory "."
|
||||
changing working directory to "/path/to"
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1:
|
||||
2:
|
||||
3: releases:
|
||||
4: - name: kubernetes-external-secrets
|
||||
5: chart: incubator/raw
|
||||
6: namespace: kube-system
|
||||
7:
|
||||
8: - name: external-secrets
|
||||
9: chart: incubator/raw
|
||||
10: namespace: default
|
||||
11: labels:
|
||||
12: app: test
|
||||
13: needs:
|
||||
14: - kube-system/kubernetes-external-secrets
|
||||
15:
|
||||
16: - name: my-release
|
||||
17: chart: incubator/raw
|
||||
18: namespace: default
|
||||
19: labels:
|
||||
20: app: test
|
||||
21: needs:
|
||||
22: - default/external-secrets
|
||||
23: hooks:
|
||||
24: - name: my-release
|
||||
25: events:
|
||||
26: - postsync
|
||||
27: showlogs: true
|
||||
28: command: sleep
|
||||
29: args: [5s]
|
||||
30:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1:
|
||||
2:
|
||||
3: releases:
|
||||
4: - name: kubernetes-external-secrets
|
||||
5: chart: incubator/raw
|
||||
6: namespace: kube-system
|
||||
7:
|
||||
8: - name: external-secrets
|
||||
9: chart: incubator/raw
|
||||
10: namespace: default
|
||||
11: labels:
|
||||
12: app: test
|
||||
13: needs:
|
||||
14: - kube-system/kubernetes-external-secrets
|
||||
15:
|
||||
16: - name: my-release
|
||||
17: chart: incubator/raw
|
||||
18: namespace: default
|
||||
19: labels:
|
||||
20: app: test
|
||||
21: needs:
|
||||
22: - default/external-secrets
|
||||
23: hooks:
|
||||
24: - name: my-release
|
||||
25: events:
|
||||
26: - postsync
|
||||
27: showlogs: true
|
||||
28: command: sleep
|
||||
29: args: [5s]
|
||||
30:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
2 release(s) matching app=test found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
external-secrets (incubator/raw) UPDATED
|
||||
my-release (incubator/raw) UPDATED
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/default/external-secrets
|
||||
2 default/default/my-release
|
||||
|
||||
processing releases in group 1/2: default/default/external-secrets
|
||||
processing releases in group 2/2: default/default/my-release
|
||||
hook[my-release]: stateFilePath=helmfile.yaml, basePath=.
|
||||
|
||||
hook[my-release]: triggered by event "postsync"
|
||||
|
||||
hook[my-release]:
|
||||
|
||||
|
||||
hook[postsync] logs |
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 5s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -399,10 +560,10 @@ processing releases in group 2/3: default/default/external-secrets
|
|||
processing releases in group 3/3: default/default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
kubernetes-external-secrets incubator/raw 3.1.0
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
kubernetes-external-secrets incubator/raw 3.1.0 0s
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -525,10 +686,10 @@ processing releases in group 2/3: default//serviceB
|
|||
processing releases in group 3/3: default//serviceA
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
serviceC my/chart 3.1.0
|
||||
serviceB my/chart 3.1.0
|
||||
serviceA my/chart 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
serviceC my/chart 3.1.0 0s
|
||||
serviceB my/chart 3.1.0 0s
|
||||
serviceA my/chart 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
@ -670,14 +831,15 @@ processing releases in group 1/2: default/default/external-secrets
|
|||
processing releases in group 2/2: default/default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
kubernetes-external-secrets
|
||||
NAME DURATION
|
||||
kubernetes-external-secrets 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
})
|
||||
|
|
@ -811,9 +973,9 @@ processing releases in group 1/2: default/default/external-secrets
|
|||
processing releases in group 2/2: default/default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
|
|
|
|||
|
|
@ -403,17 +403,18 @@ release "front-proxy" processed
|
|||
release "logging" processed
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
frontend-v3
|
||||
frontend-v2
|
||||
frontend-v1
|
||||
backend-v2
|
||||
backend-v1
|
||||
anotherbackend
|
||||
servicemesh
|
||||
database
|
||||
front-proxy
|
||||
logging
|
||||
NAME DURATION
|
||||
frontend-v3 0s
|
||||
frontend-v2 0s
|
||||
frontend-v1 0s
|
||||
backend-v2 0s
|
||||
backend-v1 0s
|
||||
anotherbackend 0s
|
||||
servicemesh 0s
|
||||
database 0s
|
||||
front-proxy 0s
|
||||
logging 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
})
|
||||
|
|
@ -594,8 +595,9 @@ processing releases in group 1/1: logging
|
|||
release "logging" processed
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
logging
|
||||
NAME DURATION
|
||||
logging 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
})
|
||||
|
|
@ -664,9 +666,10 @@ processing releases in group 2/2: backend-v1
|
|||
release "backend-v1" processed
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
frontend-v1
|
||||
backend-v1
|
||||
NAME DURATION
|
||||
frontend-v1 0s
|
||||
backend-v1 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
})
|
||||
|
|
@ -735,9 +738,10 @@ processing releases in group 2/2: backend-v1
|
|||
release "backend-v1" processed
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
frontend-v1
|
||||
backend-v1
|
||||
NAME DURATION
|
||||
frontend-v1 0s
|
||||
backend-v1 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
})
|
||||
|
|
|
|||
|
|
@ -459,17 +459,18 @@ release "front-proxy" processed
|
|||
release "logging" processed
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
frontend-v3
|
||||
frontend-v2
|
||||
frontend-v1
|
||||
backend-v2
|
||||
backend-v1
|
||||
anotherbackend
|
||||
servicemesh
|
||||
database
|
||||
front-proxy
|
||||
logging
|
||||
NAME DURATION
|
||||
frontend-v3 0s
|
||||
frontend-v2 0s
|
||||
frontend-v1 0s
|
||||
backend-v2 0s
|
||||
backend-v1 0s
|
||||
anotherbackend 0s
|
||||
servicemesh 0s
|
||||
database 0s
|
||||
front-proxy 0s
|
||||
logging 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
})
|
||||
|
|
@ -650,8 +651,9 @@ processing releases in group 1/1: default//logging
|
|||
release "logging" processed
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
logging
|
||||
NAME DURATION
|
||||
logging 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
})
|
||||
|
|
@ -720,9 +722,10 @@ processing releases in group 2/2: default//backend-v1
|
|||
release "backend-v1" processed
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
frontend-v1
|
||||
backend-v1
|
||||
NAME DURATION
|
||||
frontend-v1 0s
|
||||
backend-v1 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
})
|
||||
|
|
@ -791,9 +794,10 @@ processing releases in group 2/2: default//backend-v1
|
|||
release "backend-v1" processed
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
frontend-v1
|
||||
backend-v1
|
||||
NAME DURATION
|
||||
frontend-v1 0s
|
||||
backend-v1 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
`,
|
||||
})
|
||||
|
|
|
|||
|
|
@ -57,11 +57,12 @@ GROUP RELEASES
|
|||
processing releases in group 1/1: default//foo
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo stable/mychart1 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
foo stable/mychart1 3.1.0 0s
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
bar
|
||||
NAME DURATION
|
||||
bar 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -57,11 +57,12 @@ GROUP RELEASES
|
|||
processing releases in group 1/1: default//foo
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo stable/mychart1 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
foo stable/mychart1 3.1.0 0s
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
bar
|
||||
NAME DURATION
|
||||
bar 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -56,7 +56,8 @@ processing releases in group 1/2: default//bar
|
|||
processing releases in group 2/2: default//foo
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
bar
|
||||
foo
|
||||
NAME DURATION
|
||||
bar 0s
|
||||
foo 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -56,7 +56,8 @@ processing releases in group 1/2: default//foo
|
|||
processing releases in group 2/2: default//bar
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
foo
|
||||
bar
|
||||
NAME DURATION
|
||||
foo 0s
|
||||
bar 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -57,11 +57,12 @@ GROUP RELEASES
|
|||
processing releases in group 1/1: default//bar
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
bar stable/mychart2 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
bar stable/mychart2 3.1.0 0s
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
foo
|
||||
NAME DURATION
|
||||
foo 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -57,11 +57,12 @@ GROUP RELEASES
|
|||
processing releases in group 1/1: default//bar
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
bar stable/mychart2 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
bar stable/mychart2 3.1.0 0s
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
foo
|
||||
NAME DURATION
|
||||
foo 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -64,9 +64,9 @@ processing releases in group 2/2: default//foo
|
|||
getting deployed release version failed: Failed to get the version for: mychart1
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
baz stable/mychart3 3.1.0
|
||||
bar stable/mychart2 3.1.0
|
||||
foo stable/mychart1
|
||||
NAME CHART VERSION DURATION
|
||||
baz stable/mychart3 3.1.0 0s
|
||||
bar stable/mychart2 3.1.0 0s
|
||||
foo stable/mychart1 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -64,9 +64,9 @@ processing releases in group 2/2: default//foo
|
|||
getting deployed release version failed: Failed to get the version for: mychart1
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
baz stable/mychart3 3.1.0
|
||||
bar stable/mychart2 3.1.0
|
||||
foo stable/mychart1
|
||||
NAME CHART VERSION DURATION
|
||||
baz stable/mychart3 3.1.0 0s
|
||||
bar stable/mychart2 3.1.0 0s
|
||||
foo stable/mychart1 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -60,9 +60,9 @@ processing releases in group 2/2: default//foo
|
|||
getting deployed release version failed: unexpected list key: listkey(filter=^foo$,flags=--kube-contextdefault--uninstalling--deployed--failed--pending) not found in
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
baz stable/mychart3
|
||||
bar stable/mychart2
|
||||
foo stable/mychart1
|
||||
NAME CHART VERSION DURATION
|
||||
baz stable/mychart3 0s
|
||||
bar stable/mychart2 0s
|
||||
foo stable/mychart1 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -170,18 +170,19 @@ processing releases in group 4/5: default//backend-v2
|
|||
processing releases in group 5/5: default//frontend-v3
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
logging charts/fluent-bit 3.1.0
|
||||
front-proxy stable/envoy 3.1.0
|
||||
database charts/mysql 3.1.0
|
||||
servicemesh charts/istio 3.1.0
|
||||
anotherbackend charts/anotherbackend 3.1.0
|
||||
backend-v2 charts/backend 3.1.0
|
||||
frontend-v3 charts/frontend 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
logging charts/fluent-bit 3.1.0 0s
|
||||
front-proxy stable/envoy 3.1.0 0s
|
||||
database charts/mysql 3.1.0 0s
|
||||
servicemesh charts/istio 3.1.0 0s
|
||||
anotherbackend charts/anotherbackend 3.1.0 0s
|
||||
backend-v2 charts/backend 3.1.0 0s
|
||||
frontend-v3 charts/frontend 3.1.0 0s
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
frontend-v1
|
||||
backend-v1
|
||||
NAME DURATION
|
||||
frontend-v1 0s
|
||||
backend-v1 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -54,8 +54,8 @@ processing releases in group 2/2: default/testNamespace/bar
|
|||
getting deployed release version failed: Failed to get the version for: mychart2
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo stable/mychart1
|
||||
bar stable/mychart2
|
||||
NAME CHART VERSION DURATION
|
||||
foo stable/mychart1 0s
|
||||
bar stable/mychart2 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -54,8 +54,8 @@ processing releases in group 2/2: default//bar
|
|||
getting deployed release version failed: Failed to get the version for: mychart2
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo stable/mychart1
|
||||
bar stable/mychart2
|
||||
NAME CHART VERSION DURATION
|
||||
foo stable/mychart1 0s
|
||||
bar stable/mychart2 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -54,8 +54,8 @@ processing releases in group 2/2: default/testNamespace/foo
|
|||
getting deployed release version failed: Failed to get the version for: mychart1
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
bar stable/mychart2
|
||||
foo stable/mychart1
|
||||
NAME CHART VERSION DURATION
|
||||
bar stable/mychart2 0s
|
||||
foo stable/mychart1 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -54,8 +54,8 @@ processing releases in group 2/2: default//foo
|
|||
getting deployed release version failed: Failed to get the version for: mychart1
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
bar stable/mychart2
|
||||
foo stable/mychart1
|
||||
NAME CHART VERSION DURATION
|
||||
bar stable/mychart2 0s
|
||||
foo stable/mychart1 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -58,8 +58,8 @@ processing releases in group 2/2: default/ns1/foo
|
|||
getting deployed release version failed: Failed to get the version for: mychart1
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
bar stable/mychart2
|
||||
foo stable/mychart1
|
||||
NAME CHART VERSION DURATION
|
||||
bar stable/mychart2 0s
|
||||
foo stable/mychart1 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -58,8 +58,8 @@ processing releases in group 2/2: default/ns2/bar
|
|||
getting deployed release version failed: Failed to get the version for: mychart2
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo stable/mychart1
|
||||
bar stable/mychart2
|
||||
NAME CHART VERSION DURATION
|
||||
foo stable/mychart1 0s
|
||||
bar stable/mychart2 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -82,8 +82,8 @@ processing releases in group 1/2: default/default/external-secrets
|
|||
processing releases in group 2/2: default/default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -63,6 +63,6 @@ processing releases in group 1/1: default/default/foo
|
|||
getting deployed release version failed: unexpected list key: {^foo$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw
|
||||
NAME CHART VERSION DURATION
|
||||
foo incubator/raw 0s
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ GROUP RELEASES
|
|||
processing releases in group 1/1: default/default/foo
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
foo incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -79,9 +79,9 @@ processing releases in group 2/3: default//serviceB
|
|||
processing releases in group 3/3: default//serviceA
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
serviceC my/chart 3.1.0
|
||||
serviceB my/chart 3.1.0
|
||||
serviceA my/chart 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
serviceC my/chart 3.1.0 0s
|
||||
serviceB my/chart 3.1.0 0s
|
||||
serviceA my/chart 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ GROUP RELEASES
|
|||
processing releases in group 1/1: default/default/foo
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
foo incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -87,9 +87,9 @@ processing releases in group 2/3: default/default/external-secrets
|
|||
processing releases in group 3/3: default/default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
kubernetes-external-secrets incubator/raw 3.1.0
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
kubernetes-external-secrets incubator/raw 3.1.0 0s
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -84,8 +84,8 @@ processing releases in group 1/2: default/default/external-secrets
|
|||
processing releases in group 2/2: default/default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -92,12 +92,13 @@ processing releases in group 1/2: default/default/external-secrets
|
|||
processing releases in group 2/2: default/default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
kubernetes-external-secrets
|
||||
NAME DURATION
|
||||
kubernetes-external-secrets 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -86,8 +86,8 @@ processing releases in group 1/2: default/default/external-secrets
|
|||
processing releases in group 2/2: default/default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -82,8 +82,8 @@ processing releases in group 1/2: default/default/external-secrets
|
|||
processing releases in group 2/2: default/default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ GROUP RELEASES
|
|||
processing releases in group 1/1: default/default/external-secrets
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -87,9 +87,9 @@ processing releases in group 2/3: default/external-secrets
|
|||
processing releases in group 3/3: default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
kubernetes-external-secrets incubator/raw 3.1.0
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
kubernetes-external-secrets incubator/raw 3.1.0 0s
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -84,8 +84,8 @@ processing releases in group 1/2: default/external-secrets
|
|||
processing releases in group 2/2: default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -92,12 +92,13 @@ processing releases in group 1/2: default/external-secrets
|
|||
processing releases in group 2/2: default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
kubernetes-external-secrets
|
||||
NAME DURATION
|
||||
kubernetes-external-secrets 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -86,8 +86,8 @@ processing releases in group 1/2: default/external-secrets
|
|||
processing releases in group 2/2: default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -82,8 +82,8 @@ processing releases in group 1/2: default/external-secrets
|
|||
processing releases in group 2/2: default/my-release
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
my-release incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
my-release incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ GROUP RELEASES
|
|||
processing releases in group 1/1: default/external-secrets
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
external-secrets incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
external-secrets incubator/raw 3.1.0 0s
|
||||
|
||||
changing working directory back to "/path/to"
|
||||
|
|
|
|||
|
|
@ -9,6 +9,6 @@ hook[presync] logs | foo
|
|||
hook[presync] logs |
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw
|
||||
NAME CHART VERSION DURATION
|
||||
foo incubator/raw 0s
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,6 @@ hook[presync] logs | foo
|
|||
hook[presync] logs |
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw
|
||||
NAME CHART VERSION DURATION
|
||||
foo incubator/raw 0s
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,6 @@ hook[preapply] logs | foo
|
|||
hook[preapply] logs |
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw
|
||||
NAME CHART VERSION DURATION
|
||||
foo incubator/raw 0s
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,6 @@ hook[presync] logs | foo
|
|||
hook[presync] logs |
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
foo incubator/raw 3.1.0 0s
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,6 @@ hook[presync] logs | foo
|
|||
hook[presync] logs |
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw
|
||||
NAME CHART VERSION DURATION
|
||||
foo incubator/raw 0s
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ hook[presync] logs | bar
|
|||
hook[presync] logs |
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw
|
||||
bar incubator/raw
|
||||
NAME CHART VERSION DURATION
|
||||
foo incubator/raw 0s
|
||||
bar incubator/raw 0s
|
||||
|
||||
|
|
|
|||
|
|
@ -15,10 +15,11 @@ hook[presync] logs | foo
|
|||
hook[presync] logs |
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw 3.1.0
|
||||
NAME CHART VERSION DURATION
|
||||
foo incubator/raw 3.1.0 0s
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
bar
|
||||
NAME DURATION
|
||||
bar 0s
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import (
|
|||
"strings"
|
||||
"sync"
|
||||
"text/template"
|
||||
"time"
|
||||
|
||||
"github.com/helmfile/chartify"
|
||||
"github.com/helmfile/vals"
|
||||
|
|
@ -289,6 +290,7 @@ type ReleaseSpec struct {
|
|||
Values []interface{} `yaml:"values,omitempty"`
|
||||
Secrets []interface{} `yaml:"secrets,omitempty"`
|
||||
SetValues []SetValue `yaml:"set,omitempty"`
|
||||
duration time.Duration
|
||||
|
||||
ValuesTemplate []interface{} `yaml:"valuesTemplate,omitempty"`
|
||||
SetValuesTemplate []SetValue `yaml:"setTemplate,omitempty"`
|
||||
|
|
@ -797,6 +799,7 @@ func (st *HelmState) DeleteReleasesForSync(affectedReleases *AffectedReleases, h
|
|||
}
|
||||
deletionFlags := st.appendConnectionFlags(args, release)
|
||||
m.Lock()
|
||||
start := time.Now()
|
||||
if _, err := st.triggerReleaseEvent("preuninstall", nil, release, "sync"); err != nil {
|
||||
affectedReleases.Failed = append(affectedReleases.Failed, release)
|
||||
relErr = newReleaseFailedError(release, err)
|
||||
|
|
@ -809,6 +812,7 @@ func (st *HelmState) DeleteReleasesForSync(affectedReleases *AffectedReleases, h
|
|||
} else {
|
||||
affectedReleases.Deleted = append(affectedReleases.Deleted, release)
|
||||
}
|
||||
release.duration = time.Since(start)
|
||||
m.Unlock()
|
||||
}
|
||||
|
||||
|
|
@ -892,6 +896,7 @@ func (st *HelmState) SyncReleases(affectedReleases *AffectedReleases, helm helme
|
|||
var relErr *ReleaseError
|
||||
context := st.createHelmContext(release, workerIndex)
|
||||
|
||||
start := time.Now()
|
||||
if _, err := st.triggerPresyncEvent(release, "sync"); err != nil {
|
||||
relErr = newReleaseFailedError(release, err)
|
||||
} else if !release.Desired() {
|
||||
|
|
@ -948,6 +953,7 @@ func (st *HelmState) SyncReleases(affectedReleases *AffectedReleases, helm helme
|
|||
st.logger.Warnf("warn: %v\n", err)
|
||||
}
|
||||
}
|
||||
release.duration = time.Since(start)
|
||||
|
||||
if relErr == nil {
|
||||
results <- syncResult{}
|
||||
|
|
@ -2026,6 +2032,7 @@ func (st *HelmState) DeleteReleases(affectedReleases *AffectedReleases, helm hel
|
|||
}
|
||||
context := st.createHelmContext(&release, workerIndex)
|
||||
|
||||
start := time.Now()
|
||||
if _, err := st.triggerReleaseEvent("preuninstall", nil, &release, "delete"); err != nil {
|
||||
affectedReleases.Failed = append(affectedReleases.Failed, &release)
|
||||
|
||||
|
|
@ -2041,6 +2048,7 @@ func (st *HelmState) DeleteReleases(affectedReleases *AffectedReleases, helm hel
|
|||
affectedReleases.Failed = append(affectedReleases.Failed, &release)
|
||||
return err
|
||||
}
|
||||
release.duration = time.Since(start)
|
||||
|
||||
affectedReleases.Deleted = append(affectedReleases.Deleted, &release)
|
||||
return nil
|
||||
|
|
@ -3066,11 +3074,12 @@ func (ar *AffectedReleases) DisplayAffectedReleases(logger *zap.SugaredLogger) {
|
|||
logger.Info("\nUPDATED RELEASES:")
|
||||
tbl, _ := prettytable.NewTable(prettytable.Column{Header: "NAME"},
|
||||
prettytable.Column{Header: "CHART", MinWidth: 6},
|
||||
prettytable.Column{Header: "VERSION", AlignRight: true},
|
||||
prettytable.Column{Header: "VERSION", MinWidth: 6},
|
||||
prettytable.Column{Header: "DURATION", AlignRight: true},
|
||||
)
|
||||
tbl.Separator = " "
|
||||
for _, release := range ar.Upgraded {
|
||||
err := tbl.AddRow(release.Name, release.Chart, release.installedVersion)
|
||||
err := tbl.AddRow(release.Name, release.Chart, release.installedVersion, release.duration.Round(time.Second))
|
||||
if err != nil {
|
||||
logger.Warn("Could not add row, %v", err)
|
||||
}
|
||||
|
|
@ -3079,17 +3088,32 @@ func (ar *AffectedReleases) DisplayAffectedReleases(logger *zap.SugaredLogger) {
|
|||
}
|
||||
if ar.Deleted != nil && len(ar.Deleted) > 0 {
|
||||
logger.Info("\nDELETED RELEASES:")
|
||||
logger.Info("NAME")
|
||||
tbl, _ := prettytable.NewTable(prettytable.Column{Header: "NAME"},
|
||||
prettytable.Column{Header: "DURATION", AlignRight: true},
|
||||
)
|
||||
tbl.Separator = " "
|
||||
for _, release := range ar.Deleted {
|
||||
logger.Info(release.Name)
|
||||
err := tbl.AddRow(release.Name, release.duration.Round(time.Second))
|
||||
if err != nil {
|
||||
logger.Warn("Could not add row, %v", err)
|
||||
}
|
||||
}
|
||||
logger.Info(tbl.String())
|
||||
}
|
||||
if ar.Failed != nil && len(ar.Failed) > 0 {
|
||||
logger.Info("\nFAILED RELEASES:")
|
||||
logger.Info("NAME")
|
||||
tbl, _ := prettytable.NewTable(prettytable.Column{Header: "NAME"},
|
||||
prettytable.Column{Header: "CHART", MinWidth: 6},
|
||||
prettytable.Column{Header: "VERSION", AlignRight: true},
|
||||
)
|
||||
tbl.Separator = " "
|
||||
for _, release := range ar.Failed {
|
||||
logger.Info(release.Name)
|
||||
err := tbl.AddRow(release.Name, release.Chart, release.installedVersion)
|
||||
if err != nil {
|
||||
logger.Warn("Could not add row, %v", err)
|
||||
}
|
||||
}
|
||||
logger.Info(tbl.String())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,39 +38,39 @@ func TestGenerateID(t *testing.T) {
|
|||
run(testcase{
|
||||
subject: "baseline",
|
||||
release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"},
|
||||
want: "foo-values-7cd4757dfd",
|
||||
want: "foo-values-77cb4d7f9b",
|
||||
})
|
||||
|
||||
run(testcase{
|
||||
subject: "different bytes content",
|
||||
release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"},
|
||||
data: []byte(`{"k":"v"}`),
|
||||
want: "foo-values-7bb85f848f",
|
||||
want: "foo-values-6f6bc74b55",
|
||||
})
|
||||
|
||||
run(testcase{
|
||||
subject: "different map content",
|
||||
release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"},
|
||||
data: map[string]interface{}{"k": "v"},
|
||||
want: "foo-values-c57649655",
|
||||
want: "foo-values-57dfc6cb8f",
|
||||
})
|
||||
|
||||
run(testcase{
|
||||
subject: "different chart",
|
||||
release: ReleaseSpec{Name: "foo", Chart: "stable/envoy"},
|
||||
want: "foo-values-bf798c8f",
|
||||
want: "foo-values-74594bb67",
|
||||
})
|
||||
|
||||
run(testcase{
|
||||
subject: "different name",
|
||||
release: ReleaseSpec{Name: "bar", Chart: "incubator/raw"},
|
||||
want: "bar-values-5465f47b4f",
|
||||
want: "bar-values-bdbb54d7",
|
||||
})
|
||||
|
||||
run(testcase{
|
||||
subject: "specific ns",
|
||||
release: ReleaseSpec{Name: "foo", Chart: "incubator/raw", Namespace: "myns"},
|
||||
want: "myns-foo-values-55f77767f5",
|
||||
want: "myns-foo-values-677dcd477",
|
||||
})
|
||||
|
||||
for id, n := range ids {
|
||||
|
|
|
|||
Loading…
Reference in New Issue