From 4c1a47480e70cabb5d9e227bc55bd75ea9406de0 Mon Sep 17 00:00:00 2001
From: Kira <me@imkira.com>
Date: Thu, 17 Aug 2017 06:27:13 +0800
Subject: [PATCH] feat(2450): add annotations to chart metadata (#2671)

* feat(2450): add options to chart metadata
---
 _proto/hapi/chart/metadata.proto              |   4 ++
 pkg/chartutil/chartfile_test.go               |  12 ++++
 pkg/chartutil/testdata/chartfiletest.yaml     |   3 +
 pkg/chartutil/testdata/frobnitz-1.2.3.tgz     | Bin 4105 -> 2070 bytes
 pkg/chartutil/testdata/frobnitz/Chart.yaml    |   3 +
 .../testdata/frobnitz_backslash-1.2.3.tgz     | Bin 3517 -> 2079 bytes
 .../testdata/frobnitz_backslash/Chart.yaml    |   3 +
 pkg/proto/hapi/chart/metadata.pb.go           |  61 +++++++++++-------
 8 files changed, 62 insertions(+), 24 deletions(-)
 mode change 100755 => 100644 pkg/chartutil/testdata/frobnitz_backslash-1.2.3.tgz

diff --git a/_proto/hapi/chart/metadata.proto b/_proto/hapi/chart/metadata.proto
index 7416c7706..44ab82635 100644
--- a/_proto/hapi/chart/metadata.proto
+++ b/_proto/hapi/chart/metadata.proto
@@ -80,4 +80,8 @@ message Metadata {
 	// TillerVersion is a SemVer constraints on what version of Tiller is required.
 	// See SemVer ranges here: https://github.com/Masterminds/semver#basic-comparisons
 	string tillerVersion = 15;
+
+	// Annotations are additional mappings uninterpreted by Tiller,
+	// made available for inspection by other applications.
+	map<string,string> annotations = 16;
 }
diff --git a/pkg/chartutil/chartfile_test.go b/pkg/chartutil/chartfile_test.go
index 30bb0c69b..5b36dc955 100755
--- a/pkg/chartutil/chartfile_test.go
+++ b/pkg/chartutil/chartfile_test.go
@@ -88,6 +88,18 @@ func verifyChartfile(t *testing.T, f *chart.Metadata, name string) {
 		t.Error("Unexpected keywords")
 	}
 
+	if len(f.Annotations) != 2 {
+		t.Fatalf("Unexpected annotations")
+	}
+
+	if want, got := "extravalue", f.Annotations["extrakey"]; want != got {
+		t.Errorf("Want %q, but got %q", want, got)
+	}
+
+	if want, got := "anothervalue", f.Annotations["anotherkey"]; want != got {
+		t.Errorf("Want %q, but got %q", want, got)
+	}
+
 	kk := []string{"frobnitz", "sprocket", "dodad"}
 	for i, k := range f.Keywords {
 		if kk[i] != k {
diff --git a/pkg/chartutil/testdata/chartfiletest.yaml b/pkg/chartutil/testdata/chartfiletest.yaml
index 7c071c27b..134cd1109 100644
--- a/pkg/chartutil/testdata/chartfiletest.yaml
+++ b/pkg/chartutil/testdata/chartfiletest.yaml
@@ -15,3 +15,6 @@ sources:
   - https://example.com/foo/bar
 home: http://example.com
 icon: https://example.com/64x64.png
+annotations:
+  extrakey: extravalue
+  anotherkey: anothervalue
diff --git a/pkg/chartutil/testdata/frobnitz-1.2.3.tgz b/pkg/chartutil/testdata/frobnitz-1.2.3.tgz
index aaf443dbaadcca47c145e7194ac8243e3975c89f..fb21cd08fb08fd2f4e45e940634ce1cdb0421457 100644
GIT binary patch
literal 2070
zcmV+x2<i79iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc
zVQyr3R8em|NM&qo0PLOLZ`(K$$NQ|mVxYXPWl8>ZHInWHO%_{RHdt(P2P_VU3oVT;
zB9y2lX*<4b{`UhZS$33ol{Svjr2IZKvPhA##1Cgk4&ABXlZ>kWbw4IVC~rkl_HN(u
zecvAq2IjBt`}M#6&>vOD=6n#2g26l3`;9!Lxl}~F^ZlomQ~z?WL?p|&B8u`%jvWA!
zah0IB!qs?vydZ3j4gg*&K}>=<Do&G}{tJbqJR8FzaAK5^pt&-iFA^$&N+7UqWS*1o
z6vvP#m5;k!ye4VR(2IEL&`4jR6Xe~L?y!G7?0b1ObFOf;<RX@1r&AT_bU@~UM^~tv
z4#Yerv6B*-DMB+8CM%|dvN0sc(!Xz436K$eHx~)Q&&X1^K$33qXMDor)q_`j<|*<F
z;gm^qic{77NIn-4nu;I#HdD^K6C#|&`l$t8==Gczd;b;x=6%X%=>VGe5Bfok|6b7V
zTmIY70USf|>S0P5Lc|R^QXfp|Y%WaS;5lV8cXiW;bCRO#I1(d6dc}pS6M$wwpiFaL
zu4P+2Miu`G)0`27vO4lqzMrn3iGRNz*7zUvf}Z8S4gHLaak#nh47z_pj8iga3fv_Z
zEOu{iEx>PD75|?0kLWDp0{2}<BmaSa&;I*E%YPdx-gwti{++7g|I_*Bi{rC1PhG2h
z*U`xTsBZtmVb9wCR#XkrGoYDNgfWPDG*2;8o*5ZOjAEuBB`b)j%o$mMN~rW~kMSl{
z@qhN|<LUY5)90w8k^gW|<3AV;N0$FKRK9k|8Hq6AEJk6`{*F}f|J&*D$uFl~8t=c3
zCjP@-ef}>D`@ZGB4IRKw>zQk3%NHo8tRXV1LXLBA0RNO^h7V=(;FE%cNXR(Mb*3W!
z2`-TFTze9Z^Ai^k7bj2v&8GYZkcglX1jX|X(`g_u=aMQeR<;jnNfrMwkK{9T0*&^6
zaDV=PWchDJn?<@U4*;eb*K!z8E&#mrjaog6D*kE2GfysN&rnAb|AXPMZvXpzyZ+yb
z4u8B(8I-HhM{eNx?vEdwL%Ep2b;>e1mW$buTQ1lymrHNi^SGFGL*Mtiaxrs@Y=4=>
z0f4f!YeuuHhcXB6-@osg)FS(xJAx&RRdVEpgP{uv(pjR)4>Ue<6-woPZ~zWtl+lON
z(sj`d`mk$G=`?|nGTEn8Nae!yksG?OGXIvv_x(-jL*IodW$eh!$YSMo@0KAk;#q78
z2?nN=enTk&V_nFhejp#dq0Y48U*I2eDp2?M(qlZj+Fu<_{P+C2{qOe%cKyE<#h7Cj
zV-`^~0YIH{DW9;MX1I;w7+l}eG@6qeSN-9r9W!u{TLq>>&<sVb#J<<_!Y?W@rZbdk
z3^ZF1M&oY?rB|tk`QL98P~-T2c%T1~o&Rq|ua5theqe7*75~NK?H2ESztO-={0IGB
zJ^rU}<Nw;xorv8N%o$$+feDc`f@9Mb;EZPTYsh)L6}_wBy!xB;DDNi7Qs+*mQQ>X+
z3rp;`tR4LCH5#~yfB#<m?_fBx>wm52z%26TJT_)}9p#&@Iz>aU@w;zaJNVy30~aSc
zIgh`(H)!I2*sHDohkn0j`ENzF4Lnygi^uRQkDU}1iHRbc=>D4<?>A&fB${C1+uP2~
zjaN8|#b*bAkqI(0kN`+fP(@~Uul$T+L8Brw6w8a}>(XmwmC4oZRXNHt@F)B+=c>qD
z+s6dpYQMyjNjDNm6vplt+^ze#psBu@h-b09y>%U#W27$>sM~}3l`|Txbe&Z|^f@k2
zxZssJ{+pXDrt)&rgxPPj8SyL$Rpo$(rsg@g1x(|f*DJ<65l>U1pZLGs?u2Gt$q;k*
z2lu`2`|f|*=zDkYzt@GpCjJNa=l@0{>;JbRv;MbU?OzfJGt5wEU|=q3HZv>qWiy3K
z%@h<smCpX9=Q!GfxZGHbONgn!NRQ+<+lh!C^shitQ<3&J1QuK6U`bU1#EJM^C-Eud
zM358}3b`)4bVn6W*=22?lD@w+qw9@KT<FuzWzBY7LbbKUaen7>h_<30)%JrZzIyR>
zx56UjdO~8&$>pnG7u~^s`6(q*1y7y~XdM6h{TlzH(IB+^x1l@Z|KnmGta<r{qJPXM
zC^A$io%Jl9RDm7fza2e>|EEp{H1Qt>y}JJ&27%?j4IRMAedB3fyXPEiZQ=j@_?NTJ
zl#7%o?HgzttTUWo#E3xS@fPg_azcd!#bKh4rNkI$rZ}wlTvP^F>WlS7a0ITo&dxNv
zh?@BiU&j91^}km174|>0_W$kZG5kNb{r7wQ`}W`R-->qH|M1lhZLJ=mI{#&u#$E#e
zn(co*{&z6!+4%of^u_kSh~lX{029Dtdx}@9UHtDe0HAUFKdAFR^zHnAJKACYO(STY
z0jOeuW>h8fiHXxwJY^k5vY9#B#~i`fP7yqtcJaSi&e`4>{&l|y*6jZWb^m|l+xfp%
zv`x7E4S?@YyZGPdc7R6ze^CGZpOO9jzm~K+{(nN0;8H#+Hh<k}s;K`5b`8ArH??|5
zyZEoB1IuRclnH@G{_DU07Y2c~|Ly1t$N!sd!L9+k2|b$sCrk)5`u~Gbo&Vmz^52T8
z7d!@62|dPkW{gh=GyfaFTqRtL;Ui}#XgouUxs{cb)mzd30{{U3|8dvmPylEE0QSE$
ATmS$7

literal 4105
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
H0H6Q>2t+KB

diff --git a/pkg/chartutil/testdata/frobnitz/Chart.yaml b/pkg/chartutil/testdata/frobnitz/Chart.yaml
index 7c071c27b..134cd1109 100644
--- a/pkg/chartutil/testdata/frobnitz/Chart.yaml
+++ b/pkg/chartutil/testdata/frobnitz/Chart.yaml
@@ -15,3 +15,6 @@ sources:
   - https://example.com/foo/bar
 home: http://example.com
 icon: https://example.com/64x64.png
+annotations:
+  extrakey: extravalue
+  anotherkey: anothervalue
diff --git a/pkg/chartutil/testdata/frobnitz_backslash-1.2.3.tgz b/pkg/chartutil/testdata/frobnitz_backslash-1.2.3.tgz
old mode 100755
new mode 100644
index dbd48feb0ba2f4309a75d29a1313f4f26ad136d7..692dd6aba5da8382262cd94fae736785709b339f
GIT binary patch
delta 2052
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

delta 3502
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

diff --git a/pkg/chartutil/testdata/frobnitz_backslash/Chart.yaml b/pkg/chartutil/testdata/frobnitz_backslash/Chart.yaml
index 8b3e295c7..49df2a046 100755
--- a/pkg/chartutil/testdata/frobnitz_backslash/Chart.yaml
+++ b/pkg/chartutil/testdata/frobnitz_backslash/Chart.yaml
@@ -15,3 +15,6 @@ sources:
   - https://example.com/foo/bar
 home: http://example.com
 icon: https://example.com/64x64.png
+annotations:
+  extrakey: extravalue
+  anotherkey: anothervalue
diff --git a/pkg/proto/hapi/chart/metadata.pb.go b/pkg/proto/hapi/chart/metadata.pb.go
index 320ebf73c..af9f58153 100644
--- a/pkg/proto/hapi/chart/metadata.pb.go
+++ b/pkg/proto/hapi/chart/metadata.pb.go
@@ -95,6 +95,9 @@ type Metadata struct {
 	// TillerVersion is a SemVer constraints on what version of Tiller is required.
 	// See SemVer ranges here: https://github.com/Masterminds/semver#basic-comparisons
 	TillerVersion string `protobuf:"bytes,15,opt,name=tillerVersion" json:"tillerVersion,omitempty"`
+	// Annotations are additional mappings uninterpreted by Tiller,
+	// made available for inspection by other applications.
+	Annotations map[string]string `protobuf:"bytes,16,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 }
 
 func (m *Metadata) Reset()                    { *m = Metadata{} }
@@ -207,6 +210,13 @@ func (m *Metadata) GetTillerVersion() string {
 	return ""
 }
 
+func (m *Metadata) GetAnnotations() map[string]string {
+	if m != nil {
+		return m.Annotations
+	}
+	return nil
+}
+
 func init() {
 	proto.RegisterType((*Maintainer)(nil), "hapi.chart.Maintainer")
 	proto.RegisterType((*Metadata)(nil), "hapi.chart.Metadata")
@@ -216,28 +226,31 @@ func init() {
 func init() { proto.RegisterFile("hapi/chart/metadata.proto", fileDescriptor2) }
 
 var fileDescriptor2 = []byte{
-	// 354 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x92, 0x5f, 0x4b, 0xe3, 0x40,
-	0x14, 0xc5, 0x37, 0x9b, 0xe6, 0xdf, 0xcd, 0x76, 0xb7, 0x0c, 0x4b, 0x99, 0x5d, 0x44, 0x42, 0xf1,
-	0x21, 0x4f, 0x29, 0x28, 0x88, 0xcf, 0x82, 0xf8, 0xa0, 0x6d, 0x25, 0xf8, 0x07, 0x7c, 0x1b, 0x93,
-	0x4b, 0x3b, 0xd8, 0xcc, 0x84, 0xc9, 0xa8, 0xf8, 0x7d, 0xfd, 0x20, 0x32, 0x93, 0xa4, 0x8d, 0xe0,
-	0xdb, 0x3d, 0xe7, 0xe4, 0xfe, 0xc2, 0xb9, 0x0c, 0xfc, 0xdb, 0xb0, 0x9a, 0xcf, 0x8b, 0x0d, 0x53,
-	0x7a, 0x5e, 0xa1, 0x66, 0x25, 0xd3, 0x2c, 0xab, 0x95, 0xd4, 0x92, 0x80, 0x89, 0x32, 0x1b, 0xcd,
-	0x4e, 0x01, 0x16, 0x8c, 0x0b, 0xcd, 0xb8, 0x40, 0x45, 0x08, 0x8c, 0x04, 0xab, 0x90, 0x3a, 0x89,
-	0x93, 0x46, 0xb9, 0x9d, 0xc9, 0x5f, 0xf0, 0xb0, 0x62, 0x7c, 0x4b, 0x7f, 0x5a, 0xb3, 0x15, 0xb3,
-	0x0f, 0x17, 0xc2, 0x45, 0x87, 0xfd, 0x76, 0x8d, 0xc0, 0x68, 0x23, 0x2b, 0xec, 0xb6, 0xec, 0x4c,
-	0x28, 0x04, 0x8d, 0x7c, 0x51, 0x05, 0x36, 0xd4, 0x4d, 0xdc, 0x34, 0xca, 0x7b, 0x69, 0x92, 0x57,
-	0x54, 0x0d, 0x97, 0x82, 0x8e, 0xec, 0x42, 0x2f, 0x49, 0x02, 0x71, 0x89, 0x4d, 0xa1, 0x78, 0xad,
-	0x4d, 0xea, 0xd9, 0x74, 0x68, 0x91, 0xff, 0x10, 0x3e, 0xe3, 0xfb, 0x9b, 0x54, 0x65, 0x43, 0x7d,
-	0x8b, 0xdd, 0x69, 0x72, 0x06, 0x71, 0xb5, 0xab, 0xd7, 0xd0, 0x20, 0x71, 0xd3, 0xf8, 0x78, 0x9a,
-	0xed, 0x0f, 0x90, 0xed, 0xdb, 0xe7, 0xc3, 0x4f, 0xc9, 0x14, 0x7c, 0x14, 0x6b, 0x2e, 0x90, 0x86,
-	0xf6, 0x97, 0x9d, 0x32, 0xbd, 0x78, 0x21, 0x05, 0x8d, 0xda, 0x5e, 0x66, 0x26, 0x87, 0x00, 0xac,
-	0xe6, 0xf7, 0x5d, 0x01, 0xb0, 0xc9, 0xc0, 0x21, 0x07, 0x10, 0x15, 0x52, 0x94, 0xdc, 0x36, 0x88,
-	0x6d, 0xbc, 0x37, 0x0c, 0x51, 0xb3, 0x75, 0x43, 0x7f, 0xb5, 0x44, 0x33, 0xb7, 0xc4, 0xba, 0x27,
-	0x8e, 0x7b, 0x62, 0xef, 0x98, 0xbc, 0xc4, 0x5a, 0x61, 0xc1, 0x34, 0x96, 0xf4, 0x77, 0xe2, 0xa4,
-	0x61, 0x3e, 0x70, 0xc8, 0x11, 0x8c, 0x35, 0xdf, 0x6e, 0x51, 0xf5, 0x88, 0x3f, 0x16, 0xf1, 0xd5,
-	0x9c, 0x25, 0xe0, 0x5f, 0xb4, 0xad, 0x62, 0x08, 0xee, 0x96, 0x57, 0xcb, 0xd5, 0xc3, 0x72, 0xf2,
-	0x83, 0x44, 0xe0, 0x5d, 0xae, 0x6e, 0x6f, 0xae, 0x27, 0xce, 0x79, 0xf0, 0xe8, 0xd9, 0x33, 0x3d,
-	0xf9, 0xf6, 0xe9, 0x9c, 0x7c, 0x06, 0x00, 0x00, 0xff, 0xff, 0xea, 0xb5, 0x4c, 0xbe, 0x57, 0x02,
-	0x00, 0x00,
+	// 412 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x52, 0x5d, 0x6b, 0xd5, 0x40,
+	0x10, 0x35, 0xbd, 0x9f, 0x99, 0x58, 0x0d, 0x83, 0x94, 0xb5, 0x88, 0x84, 0x8b, 0x42, 0x9e, 0x52,
+	0x50, 0x90, 0xe2, 0x83, 0xa0, 0x50, 0xfa, 0xa0, 0xbd, 0x95, 0xe0, 0x07, 0xf8, 0xb6, 0x26, 0x43,
+	0xef, 0xd2, 0x64, 0x37, 0xec, 0x6e, 0x2b, 0xf7, 0x47, 0xfb, 0x1f, 0x64, 0x37, 0xd9, 0x26, 0x95,
+	0xbe, 0xcd, 0x39, 0x67, 0xe6, 0xec, 0x9e, 0x61, 0xe0, 0xf9, 0x8e, 0x77, 0xe2, 0xa4, 0xda, 0x71,
+	0x6d, 0x4f, 0x5a, 0xb2, 0xbc, 0xe6, 0x96, 0x17, 0x9d, 0x56, 0x56, 0x21, 0x38, 0xa9, 0xf0, 0xd2,
+	0xe6, 0x1d, 0xc0, 0x05, 0x17, 0xd2, 0x72, 0x21, 0x49, 0x23, 0xc2, 0x5c, 0xf2, 0x96, 0x58, 0x94,
+	0x45, 0x79, 0x5c, 0xfa, 0x1a, 0x9f, 0xc1, 0x82, 0x5a, 0x2e, 0x1a, 0x76, 0xe0, 0xc9, 0x1e, 0x6c,
+	0xfe, 0xce, 0x61, 0x7d, 0x31, 0xd8, 0x3e, 0x38, 0x86, 0x30, 0xdf, 0xa9, 0x96, 0x86, 0x29, 0x5f,
+	0x23, 0x83, 0x95, 0x51, 0x37, 0xba, 0x22, 0xc3, 0x66, 0xd9, 0x2c, 0x8f, 0xcb, 0x00, 0x9d, 0x72,
+	0x4b, 0xda, 0x08, 0x25, 0xd9, 0xdc, 0x0f, 0x04, 0x88, 0x19, 0x24, 0x35, 0x99, 0x4a, 0x8b, 0xce,
+	0x3a, 0x75, 0xe1, 0xd5, 0x29, 0x85, 0xc7, 0xb0, 0xbe, 0xa6, 0xfd, 0x1f, 0xa5, 0x6b, 0xc3, 0x96,
+	0xde, 0xf6, 0x0e, 0xe3, 0x29, 0x24, 0xed, 0x5d, 0x3c, 0xc3, 0x56, 0xd9, 0x2c, 0x4f, 0xde, 0x1c,
+	0x15, 0xe3, 0x02, 0x8a, 0x31, 0x7d, 0x39, 0x6d, 0xc5, 0x23, 0x58, 0x92, 0xbc, 0x12, 0x92, 0xd8,
+	0xda, 0x3f, 0x39, 0x20, 0x97, 0x4b, 0x54, 0x4a, 0xb2, 0xb8, 0xcf, 0xe5, 0x6a, 0x7c, 0x09, 0xc0,
+	0x3b, 0xf1, 0x63, 0x08, 0x00, 0x5e, 0x99, 0x30, 0xf8, 0x02, 0xe2, 0x4a, 0xc9, 0x5a, 0xf8, 0x04,
+	0x89, 0x97, 0x47, 0xc2, 0x39, 0x5a, 0x7e, 0x65, 0xd8, 0xe3, 0xde, 0xd1, 0xd5, 0xbd, 0x63, 0x17,
+	0x1c, 0x0f, 0x83, 0x63, 0x60, 0x9c, 0x5e, 0x53, 0xa7, 0xa9, 0xe2, 0x96, 0x6a, 0xf6, 0x24, 0x8b,
+	0xf2, 0x75, 0x39, 0x61, 0xf0, 0x15, 0x1c, 0x5a, 0xd1, 0x34, 0xa4, 0x83, 0xc5, 0x53, 0x6f, 0x71,
+	0x9f, 0xc4, 0x73, 0x48, 0xb8, 0x94, 0xca, 0x72, 0xf7, 0x0f, 0xc3, 0x52, 0xbf, 0x9d, 0xd7, 0xf7,
+	0xb6, 0x13, 0x2e, 0xe7, 0xe3, 0xd8, 0x77, 0x26, 0xad, 0xde, 0x97, 0xd3, 0xc9, 0xe3, 0x0f, 0x90,
+	0xfe, 0xdf, 0x80, 0x29, 0xcc, 0xae, 0x69, 0x3f, 0xdc, 0x84, 0x2b, 0xdd, 0x25, 0xdd, 0xf2, 0xe6,
+	0x26, 0xdc, 0x44, 0x0f, 0xde, 0x1f, 0x9c, 0x46, 0x9b, 0x0c, 0x96, 0x67, 0xfd, 0x7a, 0x13, 0x58,
+	0x7d, 0xdf, 0x7e, 0xde, 0x5e, 0xfe, 0xdc, 0xa6, 0x8f, 0x30, 0x86, 0xc5, 0xf9, 0xe5, 0xb7, 0xaf,
+	0x5f, 0xd2, 0xe8, 0xd3, 0xea, 0xd7, 0xc2, 0xff, 0xe8, 0xf7, 0xd2, 0xdf, 0xf0, 0xdb, 0x7f, 0x01,
+	0x00, 0x00, 0xff, 0xff, 0xd7, 0x2b, 0xf5, 0x83, 0xe0, 0x02, 0x00, 0x00,
 }