From 04a2583a480a207420a29ed59d94c06ecbf7cb92 Mon Sep 17 00:00:00 2001 From: Igor Bazhitov Date: Thu, 29 Jun 2017 15:01:46 +0300 Subject: [PATCH] tiller: store annotations during release install/upgrade Upgrade logic is simple: - if no annotations are provided, then use the old annotations in the new release version; - if annotations are provided, then replace the old annotations with them. --- pkg/helm/option.go | 14 ++++++++++++++ pkg/tiller/release_install.go | 7 ++++--- pkg/tiller/release_server.go | 6 ++++++ pkg/tiller/release_update.go | 7 ++++--- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/pkg/helm/option.go b/pkg/helm/option.go index 2b30cd3c5..13e6c6fda 100644 --- a/pkg/helm/option.go +++ b/pkg/helm/option.go @@ -393,6 +393,20 @@ func StatusReleaseVersion(version int32) StatusOption { } } +// InstallAnnotations attaches annotations to the release +func InstallAnnotations(annotations map[string]string) InstallOption { + return func(opts *options) { + opts.instReq.Annotations = annotations + } +} + +// UpgradeAnnotations attaches annotations to the release +func UpgradeAnnotations(annotations map[string]string) UpdateOption { + return func(opts *options) { + opts.updateReq.Annotations = annotations + } +} + // DeleteOption allows setting optional attributes when // performing a UninstallRelease tiller rpc. type DeleteOption func(*options) diff --git a/pkg/tiller/release_install.go b/pkg/tiller/release_install.go index 979218840..8d434cc5d 100644 --- a/pkg/tiller/release_install.go +++ b/pkg/tiller/release_install.go @@ -119,9 +119,10 @@ func (s *ReleaseServer) prepareRelease(req *services.InstallReleaseRequest) (*re Status: &release.Status{Code: release.Status_UNKNOWN}, Description: "Initial install underway", // Will be overwritten. }, - Manifest: manifestDoc.String(), - Hooks: hooks, - Version: int32(revision), + Manifest: manifestDoc.String(), + Hooks: hooks, + Version: int32(revision), + Annotations: req.Annotations, } if len(notesTxt) > 0 { rel.Info.Status.Notes = notesTxt diff --git a/pkg/tiller/release_server.go b/pkg/tiller/release_server.go index db7c0b568..3407d7e01 100644 --- a/pkg/tiller/release_server.go +++ b/pkg/tiller/release_server.go @@ -147,6 +147,12 @@ func (s *ReleaseServer) reuseValues(req *services.UpdateReleaseRequest, current s.Log("copying values from %s (v%d) to new release.", current.Name, current.Version) req.Values = current.Config } + + if len(req.Annotations) == 0 { + s.Log("copying annotations from %s (v%d) to new release.", current.Name, current.Version) + req.Annotations = current.Annotations + } + return nil } diff --git a/pkg/tiller/release_update.go b/pkg/tiller/release_update.go index 2e68905f6..902cf7876 100644 --- a/pkg/tiller/release_update.go +++ b/pkg/tiller/release_update.go @@ -119,9 +119,10 @@ func (s *ReleaseServer) prepareUpdate(req *services.UpdateReleaseRequest) (*rele Status: &release.Status{Code: release.Status_UNKNOWN}, Description: "Preparing upgrade", // This should be overwritten later. }, - Version: revision, - Manifest: manifestDoc.String(), - Hooks: hooks, + Version: revision, + Manifest: manifestDoc.String(), + Hooks: hooks, + Annotations: req.Annotations, } if len(notesTxt) > 0 {