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_rollback.go b/pkg/tiller/release_rollback.go index 02c76f9b0..0637ff44d 100644 --- a/pkg/tiller/release_rollback.go +++ b/pkg/tiller/release_rollback.go @@ -103,9 +103,10 @@ func (s *ReleaseServer) prepareRollback(req *services.RollbackReleaseRequest) (* // message here, and only override it later if we experience failure. Description: fmt.Sprintf("Rollback to %d", rbv), }, - Version: crls.Version + 1, - Manifest: prls.Manifest, - Hooks: prls.Hooks, + Version: crls.Version + 1, + Manifest: prls.Manifest, + Hooks: prls.Hooks, + Annotations: prls.Annotations, } return crls, target, nil 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 {