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:
AlexAxenti 2023-04-14 20:09:47 -04:00 committed by GitHub
parent 7c72e2ba3e
commit 0012e7e5a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
45 changed files with 406 additions and 202 deletions

View File

@ -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"
`,

View File

@ -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"
`,
})

View File

@ -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"
`,
})

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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())
}
}

View File

@ -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 {