Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
1105 Внедрение механизмов обеспечения безопасности цепочки поставки программных проектов
Legacy
scanned-projects
helm
Commits
db29c25a
Commit
db29c25a
authored
8 years ago
by
Matt Butcher
Committed by
GitHub
8 years ago
Browse files
Options
Download
Plain Diff
Merge pull request #1232 from technosophos/feat/1042-upgrade-install
feat(helm): add 'helm upgrade --install' support
parents
fde23e81
36e6094c
main
Release
add-codeql
dependabot/go_modules/github.com/docker/distribution-2.8.2incompatible
dependabot/go_modules/github.com/lib/pq-1.10.9
dependabot/go_modules/github.com/rubenv/sql-migrate-1.4.0
dependabot/go_modules/golang.org/x/crypto-0.9.0
dependabot/go_modules/golang.org/x/term-0.8.0
dependabot/go_modules/k8s.io/klog/v2-2.100.1
dev-v2
feat-v3/event-emitter-lua
kube-update-test
release-2.0
release-2.1
release-2.10
release-2.11
release-2.12
release-2.13
release-2.14
release-2.15
release-2.16
release-2.17
release-2.2
release-2.3
release-2.4
release-2.5
release-2.6
release-2.7
release-2.8
release-2.9
release-3.0
release-3.1
release-3.10
release-3.11
release-3.12
release-3.2
release-3.3
release-3.4
release-3.5
release-3.6
release-3.6.1
release-3.6.2
release-3.7
release-3.8
release-3.9
release-v3.0.0-beta.4
v3.12.0
v3.12.0-rc.1
v3.12.0-dev.1
v3.11.3
v3.11.2
v3.11.1
v3.11.0
v3.11.0-rc.2
v3.11.0-rc.1
v3.10.3
v3.10.2
v3.10.1
v3.10.0
v3.10.0-rc.1
v3.9.4
v3.9.3
v3.9.2
v3.9.1
v3.9.0
v3.9.0-rc.1
v3.8.2
v3.8.1
v3.8.0
v3.8.0-rc.2
v3.8.0-rc.1
v3.7.2
v3.7.1
v3.7.0
v3.7.0-rc.3
v3.7.0-rc.2
v3.7.0-rc.1
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.6.0-rc.1
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.5.0-rc.2
v3.5.0-rc.1
v3.4.2
v3.4.1
v3.4.0
v3.4.0-rc.1
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.3.0-rc.2
v3.3.0-rc.1
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.2.0-rc.1
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.1.0-rc.3
v3.1.0-rc.2
v3.1.0-rc.1
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v3.0.0-rc.4
v3.0.0-rc.3
v3.0.0-rc.2
v3.0.0-rc.1
v3.0.0-beta.5
v3.0.0-beta.4
v3.0.0-beta.3
v3.0.0-beta.2
v3.0.0-beta.1
v3.0.0-alpha.2
v3.0.0-alpha.1
v2.17.0
v2.17.0-rc.1
v2.16.12
v2.16.11
v2.16.10
v2.16.9
v2.16.8
v2.16.7
v2.16.6
v2.16.5
v2.16.4
v2.16.3
v2.16.2
v2.16.1
v2.16.0
v2.16.0-rc.2
v2.16.0-rc.1
v2.15.2
v2.15.1
v2.15.0
v2.15.0-rc.2
v2.15.0-rc.1
v2.14.3
v2.14.2
v2.14.1
v2.14.0
v2.14.0-rc.2
v2.14.0-rc.1
v2.13.1
v2.13.1-rc.1
v2.13.0
v2.13.0-rc.2
v2.13.0-rc.1
v2.12.3
v2.12.2
v2.12.1
v2.12.0
v2.12.0-rc.2
v2.12.0-rc.1
v2.11.0
v2.11.0-rc.4
v2.11.0-rc.3
v2.11.0-rc.2
v2.11.0-rc.1
v2.10.0
v2.10.0-rc.3
v2.10.0-rc.2
v2.10.0-rc.1
v2.9.1
v2.9.0
v2.9.0-rc5
v2.9.0-rc4
v2.9.0-rc3
v2.9.0-rc2
v2.9.0-rc1
v2.8.2
v2.8.2-rc1
v2.8.1
v2.8.0
v2.8.0-rc.1
v2.7.2
v2.7.1
v2.7.0
v2.7.0-rc1
v2.6.2
v2.6.1
v2.6.0
v2.5.1
v2.5.0
v2.4.2
v2.4.1
v2.4.0
v2.3.1
v2.3.0
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.2
v2.0.1
v2.0.0
v2.0.0-rc.2
v2.0.0-rc.1
v2.0.0-beta.2
v2.0.0-beta.1
v2.0.0-alpha.5
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
cmd/helm/upgrade.go
+57
-25
cmd/helm/upgrade.go
cmd/helm/upgrade_test.go
+7
-0
cmd/helm/upgrade_test.go
with
64 additions
and
25 deletions
+64
-25
cmd/helm/upgrade.go
+
57
−
25
View file @
db29c25a
...
@@ -21,10 +21,12 @@ import (
...
@@ -21,10 +21,12 @@ import (
"fmt"
"fmt"
"io"
"io"
"io/ioutil"
"io/ioutil"
"strings"
"github.com/spf13/cobra"
"github.com/spf13/cobra"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/storage/driver"
)
)
const
upgradeDesc
=
`
const
upgradeDesc
=
`
...
@@ -48,6 +50,8 @@ type upgradeCmd struct {
...
@@ -48,6 +50,8 @@ type upgradeCmd struct {
values
*
values
values
*
values
verify
bool
verify
bool
keyring
string
keyring
string
install
bool
namespace
string
}
}
func
newUpgradeCmd
(
client
helm
.
Interface
,
out
io
.
Writer
)
*
cobra
.
Command
{
func
newUpgradeCmd
(
client
helm
.
Interface
,
out
io
.
Writer
)
*
cobra
.
Command
{
...
@@ -83,41 +87,45 @@ func newUpgradeCmd(client helm.Interface, out io.Writer) *cobra.Command {
...
@@ -83,41 +87,45 @@ func newUpgradeCmd(client helm.Interface, out io.Writer) *cobra.Command {
f
.
BoolVar
(
&
upgrade
.
disableHooks
,
"disable-hooks"
,
false
,
"disable pre/post upgrade hooks"
)
f
.
BoolVar
(
&
upgrade
.
disableHooks
,
"disable-hooks"
,
false
,
"disable pre/post upgrade hooks"
)
f
.
BoolVar
(
&
upgrade
.
verify
,
"verify"
,
false
,
"verify the provenance of the chart before upgrading"
)
f
.
BoolVar
(
&
upgrade
.
verify
,
"verify"
,
false
,
"verify the provenance of the chart before upgrading"
)
f
.
StringVar
(
&
upgrade
.
keyring
,
"keyring"
,
defaultKeyring
(),
"the path to the keyring that contains public singing keys"
)
f
.
StringVar
(
&
upgrade
.
keyring
,
"keyring"
,
defaultKeyring
(),
"the path to the keyring that contains public singing keys"
)
f
.
BoolVarP
(
&
upgrade
.
install
,
"install"
,
"i"
,
false
,
"if a release by this name doesn't already exist, run an install"
)
f
.
StringVar
(
&
upgrade
.
namespace
,
"namespace"
,
"default"
,
"the namespace to install the release into (only used if --install is set)"
)
return
cmd
return
cmd
}
}
func
(
u
*
upgradeCmd
)
vals
()
([]
byte
,
error
)
{
var
buffer
bytes
.
Buffer
// User specified a values file via -f/--values
if
u
.
valuesFile
!=
""
{
bytes
,
err
:=
ioutil
.
ReadFile
(
u
.
valuesFile
)
if
err
!=
nil
{
return
[]
byte
{},
err
}
buffer
.
Write
(
bytes
)
}
// User specified value pairs via --set
// These override any values in the specified file
if
len
(
u
.
values
.
pairs
)
>
0
{
bytes
,
err
:=
u
.
values
.
yaml
()
if
err
!=
nil
{
return
[]
byte
{},
err
}
buffer
.
Write
(
bytes
)
}
return
buffer
.
Bytes
(),
nil
}
func
(
u
*
upgradeCmd
)
run
()
error
{
func
(
u
*
upgradeCmd
)
run
()
error
{
chartPath
,
err
:=
locateChartPath
(
u
.
chart
,
u
.
verify
,
u
.
keyring
)
chartPath
,
err
:=
locateChartPath
(
u
.
chart
,
u
.
verify
,
u
.
keyring
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
if
u
.
install
{
// If a release does not exist, install it. If another error occurs during
// the check, ignore the error and continue with the upgrade.
//
// The returned error is a grpc.rpcError that wraps the message from the original error.
// So we're stuck doing string matching against the wrapped error, which is nested somewhere
// inside of the grpc.rpcError message.
_
,
err
:=
u
.
client
.
ReleaseContent
(
u
.
release
,
helm
.
ContentReleaseVersion
(
1
))
if
err
!=
nil
&&
strings
.
Contains
(
err
.
Error
(),
driver
.
ErrReleaseNotFound
.
Error
())
{
fmt
.
Fprintf
(
u
.
out
,
"Release %q does not exist. Installing it now.
\n
"
,
u
.
release
)
ic
:=
&
installCmd
{
chartPath
:
chartPath
,
client
:
u
.
client
,
out
:
u
.
out
,
name
:
u
.
release
,
valuesFile
:
u
.
valuesFile
,
dryRun
:
u
.
dryRun
,
verify
:
u
.
verify
,
disableHooks
:
u
.
disableHooks
,
keyring
:
u
.
keyring
,
values
:
u
.
values
,
namespace
:
u
.
namespace
,
}
return
ic
.
run
()
}
}
rawVals
,
err
:=
u
.
vals
()
rawVals
,
err
:=
u
.
vals
()
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
@@ -139,5 +147,29 @@ func (u *upgradeCmd) run() error {
...
@@ -139,5 +147,29 @@ func (u *upgradeCmd) run() error {
PrintStatus
(
u
.
out
,
status
)
PrintStatus
(
u
.
out
,
status
)
return
nil
return
nil
}
func
(
u
*
upgradeCmd
)
vals
()
([]
byte
,
error
)
{
var
buffer
bytes
.
Buffer
// User specified a values file via -f/--values
if
u
.
valuesFile
!=
""
{
bytes
,
err
:=
ioutil
.
ReadFile
(
u
.
valuesFile
)
if
err
!=
nil
{
return
[]
byte
{},
err
}
buffer
.
Write
(
bytes
)
}
// User specified value pairs via --set
// These override any values in the specified file
if
len
(
u
.
values
.
pairs
)
>
0
{
bytes
,
err
:=
u
.
values
.
yaml
()
if
err
!=
nil
{
return
[]
byte
{},
err
}
buffer
.
Write
(
bytes
)
}
return
buffer
.
Bytes
(),
nil
}
}
This diff is collapsed.
Click to expand it.
cmd/helm/upgrade_test.go
+
7
−
0
View file @
db29c25a
...
@@ -69,6 +69,13 @@ func TestUpgradeCmd(t *testing.T) {
...
@@ -69,6 +69,13 @@ func TestUpgradeCmd(t *testing.T) {
resp
:
releaseMock
(
&
releaseOptions
{
name
:
"funny-bunny"
,
version
:
2
,
chart
:
ch
}),
resp
:
releaseMock
(
&
releaseOptions
{
name
:
"funny-bunny"
,
version
:
2
,
chart
:
ch
}),
expected
:
"funny-bunny has been upgraded. Happy Helming!
\n
"
,
expected
:
"funny-bunny has been upgraded. Happy Helming!
\n
"
,
},
},
{
name
:
"install a release with 'upgrade --install'"
,
args
:
[]
string
{
"zany-bunny"
,
chartPath
},
flags
:
[]
string
{
"-i"
},
resp
:
releaseMock
(
&
releaseOptions
{
name
:
"zany-bunny"
,
version
:
1
,
chart
:
ch
}),
expected
:
"zany-bunny has been upgraded. Happy Helming!
\n
"
,
},
}
}
cmd
:=
func
(
c
*
fakeReleaseClient
,
out
io
.
Writer
)
*
cobra
.
Command
{
cmd
:=
func
(
c
*
fakeReleaseClient
,
out
io
.
Writer
)
*
cobra
.
Command
{
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets