Commit graph

47 commits

Author SHA1 Message Date
Daniel Strobusch
90df4fa4d1
fix docs of DeployedAll
Signed-off-by: Daniel Strobusch <1847260+dastrobu@users.noreply.github.com>
2024-05-23 08:15:04 +02:00
Timofey Kirillov
da8e7d2532
fix: "... has no deployed releases" error when release history contains only failed releases and history limit reached
Fixed old releases rotation procedure to not require a deployed release to exists.

An error will arise when there are no successfully deployed release yet, but releases history limit has been reached. In such situation helm will refuse to upgrade release anymore with "... has no deployed releases" error.

Furthermore, release rotation procedure already expecting lastDeployedRelease to be either nil, or not nil. So it is assumed that deployed release may exist or may not and these both outcomes were already expected as a valid situation rather than a failure.

Reworked storage_test.go TestStorageRemoveLeastRecentWithError test case: use mocked driver and test release creation procedure does not shadows errors from the underneath release rotation procedure.

Signed-off-by: Timofey Kirillov <timofey.kirillov@flant.com>
2022-03-31 10:22:42 +03:00
longkai
2deb641efd fix(typo): fix typo of storage doc
Signed-off-by: longkai <im.longkai@gmail.com>
2021-07-22 23:32:06 +08:00
Josh Soref
2bf8fdf45d
chore: Spelling (#9410)
* spelling: annotate

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: asserts

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: behavior

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: binary

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: contain

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: copied

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: dependency

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: depending

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: deprecated

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: doesn't

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: donot

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: github

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: inputting

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: iteration

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: jabberwocky

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: kubernetes

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: length

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: mismatch

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: multiple

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: nonexistent

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: outputs

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: panicking

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: plugins

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: parsing

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: porthos

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: regular

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: resource

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: repositories

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: something

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: strict

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: string

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: unknown

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2021-03-15 21:11:57 -04:00
Daniel Lipovetsky
00cf10d360
fix(pkg/storage): If storage.Create fails to clean up recent release versions, return an error
Previously, storage.Create was ignoring the error. This meant that a user that
relied on the recent release version cleanup would not be notified if that
cleanup failed, and release versions could grow without bound.

Closes #9145

Signed-off-by: Daniel Lipovetsky <dlipovetsky@d2iq.com>
2020-12-18 15:10:01 -08:00
zouyu
c6a00e63ef Fix some go-lint warnings
Signed-off-by: zouyu <zouy.fnst@cn.fujitsu.com>
2020-06-29 16:36:27 +08:00
Matthew Morrissette
1911870958
fix(helm): allow a previously failed release to be upgraded (#7653)
Signed-off-by: Matt Morrissette <yinzara@gmail.com>
2020-04-17 11:56:29 -06:00
Eric Bailey
b9445616b5
fix(storage): preserve last deployed revision (#7806)
Signed-off-by: Eric Bailey <eric@ericb.me>
2020-04-13 12:57:30 -06:00
Cristian Klein
1f0582cadc fix(helm): improve handling of corrupted storage
Helm does not yet properly handle concurrent executions (see #7322),
and invoking Helm concurrently on the same release lead to corrupted storage.
Specifically, several Releases may be marked as DEPLOYED. This patch improved handling of such situations, by taking the latest
DEPLOYED Release. Eventually, the storage will clean itself out, after
the corrupted Releases are deleted due to --history-max.

This is a port to Helm v3 of #7319.

Signed-off-by: Cristian Klein <cristian.klein@elastisys.com>
2020-01-16 08:55:25 +01:00
Simon Alling
e868cb23c0 ref(pkg/storage): Refactor Deployed and DeployedAll (#7374)
The error returned from DeployedAll will never contain "not found".

The error returned at the end of Deployed is already known to be nil,
and we never want to return ls[0] together with a non-nil error anyway.

Signed-off-by: Simon Alling <alling.simon@gmail.com>
2020-01-15 15:51:04 +00:00
Hu Shuai
de9118b879 Fix a typo "update" -> "updates" (#7346)
Signed-off-by: Hu Shuai <hus.fnst@cn.fujitsu.com>
2020-01-08 09:19:00 +00:00
Matt Farina
9bc7934f35
Updating the module for v3 as the major version
Signed-off-by: Matt Farina <matt@mattfarina.com>
2019-10-03 14:27:05 -04:00
Martin Hickey
caa26c4bb2
Change release storage name to use helm storage type as prefix (#6500)
* Change release storage name to prefix helm storage type

Signed-off-by: Martin Hickey <martin.hickey@ie.ibm.com>

* Add comments about the Kubernetes storage object type field content

Signed-off-by: Martin Hickey <martin.hickey@ie.ibm.com>
2019-09-26 17:46:19 +01:00
Adam Reese
b2d5e41fc7
ref(*): remove dead code
Signed-off-by: Adam Reese <adam@reese.io>
2019-08-19 10:22:27 -07:00
Adam Reese
895e9192d4
feat(*): use vanity import helm.sh/helm
Signed-off-by: Adam Reese <adam@reese.io>
2019-03-13 13:43:47 -07:00
Matthew Fisher
2571dbf82f
ref: remove pkg/helm, pkg/hapi, pkg/tiller
Signed-off-by: Matthew Fisher <matt.fisher@microsoft.com>
2019-03-12 09:47:12 -07:00
Adam Reese
4f26b658d8
change copyright to "Copyright The Helm Authors" 2018-08-24 12:03:55 -07:00
Matthew Fisher
195d21d5d7
ref(cmd): rename helm delete to helm uninstall
To match the convention of `helm install`, `helm uninstall` is the inverse.

Other tangential changes in this PR:

- StatusDeleting has been changed to StatusUninstalling
- StatusDeleted has been changed to StatusUninstalled
- `helm list --deleted` has been changed to `helm list --uninstalled`
- `helm list --deleting` has been changed to `helm list --uninstalling`
- `helm.DeleteOption` and all delete options have been renamed to `helm.UninstallOption`

I have not made any changes to the "helm.sh/hook-delete-policy", "pre-delete" and "post-delete" hook annotations because

1. it's a major breaking change to existing helm charts, which we've commited to NOT break in Helm 3
2. there is no "helm.sh/hook-install-policy" to pair with "helm.sh/hook-uninstall-policy", so delete still makes sense here

`helm delete` and `helm del` have been added as aliases to `helm uninstall`, so `helm delete` and `helm del` still works as is.
2018-06-14 15:46:00 -07:00
Adam Reese
b1128abf4f
ref(*): s/tiller/helm/ 2018-05-10 09:41:31 -07:00
Adam Reese
726e3c41be
feat(*): print stacktrace on error with debug enabled 2018-05-10 09:34:41 -07:00
Adam Reese
3b9596c6ab
ref(*): convert const types to strings 2018-04-26 16:52:31 -07:00
Adam Reese
c5a76deba3
ref(*): use go conventions for naming types 2018-04-19 11:12:46 -07:00
Adam Reese
6345f04190
ref(hapi): convert protobuf to go types 2018-04-18 14:53:38 -07:00
Matthew Fisher
13730b0dab
replace FAILED deployments with helm upgrade --install --force
When using `helm upgrade --install`, if the first release fails, Helm will respond with an error saying that it cannot upgrade from an unknown state.

With this feature, `helm upgrade --install --force` automates the same process as `helm delete && helm install --replace`. It will mark the previous release as DELETED, delete any existing resources inside Kubernetes, then replace it as if it was a fresh install. It will then mark the FAILED release as SUPERSEDED.
2018-03-08 15:33:10 -08:00
Johnny Bergström
5f1a21bc32 fix(tiller): Supersede multiple deployments (#3539)
* add test for rolling back from a FAILED deployment

* Update naming of release variables

Use same naming as the rest of the file.

* Update rollback test

- Add logging
- Verify other release names not changed

* fix(tiller): Supersede multiple deployments

There are cases when multiple revisions of a release has been
marked with DEPLOYED status. This makes sure any previous deployment
will be set to SUPERSEDED when doing rollbacks.

Closes #2941 #3513 #3275
2018-02-27 10:25:40 -08:00
Adam Reese
82ef751414
fix(tiller): upgrade last deployed release
Fixes #2437

Two bugs were causing this behavior

- Tiller was marking the previous release superseded when an upgrade
failed.
- Upgrade was diffing against failed releases
2017-11-03 14:57:33 -07:00
Matt Butcher
0853f4906a
feat(tiller): limit number of versions stored per release
This adds a new configuration option to Tiller to limit the number of
records stored per release.

Tiller stores historical release information (helm history, helm
rollback). This makes it possible to set a maximum number of versions
per release.

To enable this feature, use `helm init --history-max NNN`. Note that
because of the restrictions on Deployment objects, you will have to
re-install Tiller to add a limit.

Along the way, I found an unreported bug in the Memory storage driver.
This fixes that bug and adds substantially more tests to catch
regressions.

Closes #2332
2017-08-10 12:01:20 -06:00
Justin Scott
fa68a6e1db fix(tiller): remove locking system from storage and rely on backend controls
Tiller currently hangs indefinitely when deadlocks arise from certain
concurrent operations. This commit removes the nested mutex locking
system from pkg/Storage and relies on resource contention controls in k8s.

Closes #2560
2017-07-19 16:02:38 -07:00
Taylor Thomas
119fa6537c feat(tiller): Adds more logging
This builds on previous work and adds more logging to follow
the full process of installing, updating, deleting, and rolling back.
This also standardizes capitalization of logs and small formatting
fixes
2017-05-30 18:17:22 -07:00
Adam Reese
15254e4c5c feat(*): add generic logging interface (#2394)
Adds a generic logging interface to importable packages.
2017-05-19 11:43:04 -07:00
Maciej Kwiek
ec92b76054 Release are locked to avoid parallel changes
Environment is supplied with release lock map which allows to lock a
release by name to make sure that update, rollback or uninstall aren't
running on one release at the same time.
2017-04-24 13:05:35 +02:00
Matt Butcher
de7c5e5a38
feat(tiller): Add .Release.Revision and .IsUpgrade
New properties are available to template developers.

Closes #1554
2016-12-14 18:06:34 -07:00
Matt Butcher
a5d96c2704
fix(tiller): fix spurious "no release found" errors.
There are some places where releases are only located if they are in the
state DEPLOYED. That particular logic was incorrectly used for upgrades.
That caused #1566. While fixing that issue, I found that this was also
the root cause of #1587 (though because it was off by one). I added a
generic method to get the last release, regardless of its status.

This allows some behaviors that previously failed:

- 'helm upgrade' can now be performed on a DELETED release
- 'helm rollback' can now be performed on a DELETED release even if
  there is only one revision of that release history.

Closes #1566
Closes #1587
2016-12-02 17:14:07 -07:00
fibonacci1729
24fe8643de ref(*): add sorter/filter utilties to releaseutil 2016-10-12 11:46:17 -06:00
fibonacci1729
e9dd302a9c feat(helm/cmd): support for retrieving release history 2016-10-05 17:53:55 -06:00
fibonacci1729
f77435e686 fix(helm-list): only list configmaps owned by TILLER 2016-09-15 16:05:17 -06:00
fibonacci1729
e25732284b feat(rollback-storage): gofmt, added missing license headers, and canconical import paths 2016-09-08 08:39:26 -06:00
fibonacci1729
383a9c186a update pkg/storage to support rollback 2016-09-08 08:30:53 -06:00
fibonacci1729
559e9081fb style fixes and cleanup 2016-08-09 12:49:31 -06:00
fibonacci1729
3dca699410 fix: storage tests 2016-08-09 11:45:17 -06:00
fibonacci1729
0e26f20268 gofmt, style, and added comments 2016-08-08 09:33:35 -06:00
fibonacci1729
a83425d44b style & doc comments 2016-08-05 10:14:12 -06:00
fibonacci1729
241cc29883 gofmt 2016-08-03 15:47:00 -06:00
fibonacci1729
967e438bfd gofmt ... 2016-08-01 17:48:02 -06:00
fibonacci1729
bfd6712c94 add filtering mechanism to storage and embed Driver directly into Storage 2016-08-01 17:44:36 -06:00
fibonacci1729
aff817a1fc run gofmt 2016-07-31 23:34:50 -06:00
fibonacci1729
4210d60c5e add storage type to interface with multiple drivers 2016-07-31 23:23:10 -06:00