From 34577d1ebc3f3c5ca204eab17afabffdf868c1c5 Mon Sep 17 00:00:00 2001 From: Matt Butcher Date: Tue, 6 Sep 2016 17:31:12 -0600 Subject: [PATCH] feat(charts): add 'dependencies:' to Chart.yaml This feature adds a dependencies section to a chart file. It is a prerequisite for adding automated chart management tooling as described in #874. --- _proto/hapi/chart/metadata.proto | 15 ++++ pkg/chartutil/chartfile_test.go | 21 +++++ pkg/chartutil/testdata/chartfiletest.yaml | 7 ++ pkg/chartutil/testdata/frobnitz-1.2.3.tgz | Bin 3777 -> 3831 bytes pkg/chartutil/testdata/frobnitz/Chart.yaml | 7 ++ .../frobnitz/charts/mariner-4.3.2.tgz | Bin 941 -> 941 bytes .../mariner/charts/albatross-0.1.0.tgz | Bin 347 -> 347 bytes pkg/proto/hapi/chart/chart.pb.go | 1 + pkg/proto/hapi/chart/metadata.pb.go | 80 +++++++++++++----- 9 files changed, 109 insertions(+), 22 deletions(-) diff --git a/_proto/hapi/chart/metadata.proto b/_proto/hapi/chart/metadata.proto index 40c8b40dc..979702df0 100644 --- a/_proto/hapi/chart/metadata.proto +++ b/_proto/hapi/chart/metadata.proto @@ -27,6 +27,19 @@ message Maintainer { string email = 2; } +// Dependency describes this chart's dependency on another chart. +message Dependency { + // Name is the name of the dependency, e.g. 'nginx' + string name = 1; + + // Repository is the repository URL. Appending '/index.yaml' to this should + // return the repo index. + string repository = 2; + + // Version is a SemVer 2 version. + string version = 3; +} + // Metadata for a Chart file. This models the structure of a Chart.yaml file. // // Spec: https://k8s.io/helm/blob/master/docs/design/chart_format.md#the-chart-file @@ -61,4 +74,6 @@ message Metadata { // The URL to an icon file. string icon = 9; + + repeated Dependency dependencies = 10; } diff --git a/pkg/chartutil/chartfile_test.go b/pkg/chartutil/chartfile_test.go index 618cc2c73..e24f11761 100644 --- a/pkg/chartutil/chartfile_test.go +++ b/pkg/chartutil/chartfile_test.go @@ -90,4 +90,25 @@ func verifyChartfile(t *testing.T, f *chart.Metadata) { } } + if len(f.Dependencies) != 2 { + t.Fatalf("Expected 2 dependencies, got %d", len(f.Dependencies)) + } + + deps := []*chart.Dependency{ + {Name: "alpine", Version: "0.1.0", Repository: "https://example.com/charts"}, + {Name: "mariner", Version: "4.3.2", Repository: "https://example.com/charts"}, + } + for i, tt := range deps { + c := f.Dependencies[i] + if c.Name != tt.Name { + t.Errorf("Expected name %q, got %q", tt.Name, c.Name) + } + if c.Version != tt.Version { + t.Errorf("Expected version %q, got %q", tt.Version, c.Version) + } + if c.Repository != tt.Repository { + t.Errorf("Expected repository %q, got %q", tt.Repository, c.Repository) + } + } + } diff --git a/pkg/chartutil/testdata/chartfiletest.yaml b/pkg/chartutil/testdata/chartfiletest.yaml index b665c61be..325fb27e2 100644 --- a/pkg/chartutil/testdata/chartfiletest.yaml +++ b/pkg/chartutil/testdata/chartfiletest.yaml @@ -14,3 +14,10 @@ sources: - https://example.com/foo/bar home: http://example.com icon: https://example.com/64x64.png +dependencies: + - name: alpine + version: "0.1.0" + repository: https://example.com/charts + - name: mariner + version: "4.3.2" + repository: https://example.com/charts diff --git a/pkg/chartutil/testdata/frobnitz-1.2.3.tgz b/pkg/chartutil/testdata/frobnitz-1.2.3.tgz index 4e68564fc1202e94581eb43ef9dfb354d12f59c7..8055a0094583776ac76723b5bd687cae2e22e36f 100644 GIT binary patch literal 3831 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 literal 3777 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 diff --git a/pkg/chartutil/testdata/frobnitz/Chart.yaml b/pkg/chartutil/testdata/frobnitz/Chart.yaml index b665c61be..325fb27e2 100644 --- a/pkg/chartutil/testdata/frobnitz/Chart.yaml +++ b/pkg/chartutil/testdata/frobnitz/Chart.yaml @@ -14,3 +14,10 @@ sources: - https://example.com/foo/bar home: http://example.com icon: https://example.com/64x64.png +dependencies: + - name: alpine + version: "0.1.0" + repository: https://example.com/charts + - name: mariner + version: "4.3.2" + repository: https://example.com/charts diff --git a/pkg/chartutil/testdata/frobnitz/charts/mariner-4.3.2.tgz b/pkg/chartutil/testdata/frobnitz/charts/mariner-4.3.2.tgz index d454bb9b1dc11fa526246b9534aceef8a4d80f91..03de29d688dc070e04f6f391c0f7525ff172a2bc 100644 GIT binary patch delta 457 zcmV;)0XF`v2dxJOABzY8h*8gx2j~vDp`oFXsWCABo0^y#jIsR<0e{N>X2xcw24;o^ z!2AzXZ#tU)=>g=sIT$(u&xbQGzrA)h>#%|Z+XLC>T1&())T;e+IOpciwwvqntz`*W zhRZhWo}cN>wD|YZmuBDW)aP|v-1BOA;ndE9+u#1Zo6_OoeX?(@)z&H9!PUnq)^Tfv z99)@jq*bTOT5b94OMfe}7jtH6^>%K2^=Q+!he`Xd5v}dmU`O5kAdR%K;MKtSGOHR#SXFJjRU*$jR%Qq(R?pBDtSthyd_l~c- zC)sXre=W7`O*vci?*sF8oobugyX`EW*_PveCeMpcW!>*Lo`0QczgOYMq>q2(gXb;b zsrmHpyybHh(XY?#r!w66zun-OeD3CQHQBeT^BeP@=oh#C$xl4o@Me}3W#d(rn2R@SFC^?sgOn0jo+%cQr?C&ljF+z^|qv&tGdI1l81W721j z)MC&Ws0bYeqb6V!jDk@x3P!;w7zLwX6pVsVFbYP&C>RB!00{s9M%sWT04M+ezqb9j delta 457 zcmV;)0XF`v2dxJOABzY8hGx5w2j~uwiJ5`9i7_z$o0^!Ljj{a=0e^1)o0*vz8yT1Z z^S^gAwr~9g&i}e^wOG`f z_3r*=e(8UJ)1JBZ=PT#e>v64Z7169$EjcxRo$W;Lf0h5NFW;ENyIUdpW|`!+-#fnU zo@Beh{k7D#H|1>6zYomYb*gP{@3ymiW?PQ?nLIB(m36=0cz<@P{a%G1lRo~D51zM# zr{>eY^Onz5M87__pUQCO|8|3C^0}MK)nwnU&Tq_rqF>zlCqMDb|Ad(I+nRC=@>lC8 z{kr_y*8SXrOm)cbjAVd}9NFO%LnpA@@yb3<&d&MIr<;5?B3jY*$9 zQj0-jpdxe>j3$CnFbYP&C>RB!U=)mkQ7{Td!6+C7qhJ(_0we$c>4Z%>04M+etYi4E diff --git a/pkg/chartutil/testdata/mariner/charts/albatross-0.1.0.tgz b/pkg/chartutil/testdata/mariner/charts/albatross-0.1.0.tgz index d92a38e676f1527815c247a0b06aeb59c0806a62..8b1b19dce8a88243fcbdfe46415d6bcf86d1b8a9 100644 GIT binary patch delta 16 Xcmcc3beoA?zMF%gBk=r2_7Fw@E_?+k delta 16 Xcmcc3beoA?zMF%gEp7Kk_7Fw@E{Fvv diff --git a/pkg/proto/hapi/chart/chart.pb.go b/pkg/proto/hapi/chart/chart.pb.go index 37a013a4a..261951a41 100644 --- a/pkg/proto/hapi/chart/chart.pb.go +++ b/pkg/proto/hapi/chart/chart.pb.go @@ -16,6 +16,7 @@ It has these top-level messages: Config Value Maintainer + Dependency Metadata Template */ diff --git a/pkg/proto/hapi/chart/metadata.pb.go b/pkg/proto/hapi/chart/metadata.pb.go index d6270bda9..346866a3b 100644 --- a/pkg/proto/hapi/chart/metadata.pb.go +++ b/pkg/proto/hapi/chart/metadata.pb.go @@ -32,7 +32,7 @@ var Metadata_Engine_value = map[string]int32{ func (x Metadata_Engine) String() string { return proto.EnumName(Metadata_Engine_name, int32(x)) } -func (Metadata_Engine) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{1, 0} } +func (Metadata_Engine) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{2, 0} } // Maintainer describes a Chart maintainer. type Maintainer struct { @@ -47,6 +47,29 @@ func (m *Maintainer) String() string { return proto.CompactTextString func (*Maintainer) ProtoMessage() {} func (*Maintainer) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } +// Dependency describes this chart's dependency on another chart. +type Dependency struct { + // Name is the name of the dependency, e.g. 'nginx' + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Repository is the repository URL. Appending '/index.yaml' to this should + // return the repo index. + Repository string `protobuf:"bytes,2,opt,name=repository" json:"repository,omitempty"` + // Version is a SemVer 2 version range. + // This can be an exact version or any of the version range operators + // described here: https://github.com/Masterminds/semver/blob/master/README.md + Version string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"` + // FetchedVersion is a computed field that indicates exactly which version + // was fetched by tooling. It is an exact version (not a range). + // + // This plays the roll of a "lock" for this dependency. + FetchedVersion string `protobuf:"bytes,4,opt,name=fetchedVersion" json:"fetchedVersion,omitempty"` +} + +func (m *Dependency) Reset() { *m = Dependency{} } +func (m *Dependency) String() string { return proto.CompactTextString(m) } +func (*Dependency) ProtoMessage() {} +func (*Dependency) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } + // Metadata for a Chart file. This models the structure of a Chart.yaml file. // // Spec: https://k8s.io/helm/blob/master/docs/design/chart_format.md#the-chart-file @@ -68,13 +91,14 @@ type Metadata struct { // The name of the template engine to use. Defaults to 'gotpl'. Engine string `protobuf:"bytes,8,opt,name=engine" json:"engine,omitempty"` // The URL to an icon file. - Icon string `protobuf:"bytes,9,opt,name=icon" json:"icon,omitempty"` + Icon string `protobuf:"bytes,9,opt,name=icon" json:"icon,omitempty"` + Dependencies []*Dependency `protobuf:"bytes,10,rep,name=dependencies" json:"dependencies,omitempty"` } func (m *Metadata) Reset() { *m = Metadata{} } func (m *Metadata) String() string { return proto.CompactTextString(m) } func (*Metadata) ProtoMessage() {} -func (*Metadata) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } +func (*Metadata) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } func (m *Metadata) GetMaintainers() []*Maintainer { if m != nil { @@ -83,30 +107,42 @@ func (m *Metadata) GetMaintainers() []*Maintainer { return nil } +func (m *Metadata) GetDependencies() []*Dependency { + if m != nil { + return m.Dependencies + } + return nil +} + func init() { proto.RegisterType((*Maintainer)(nil), "hapi.chart.Maintainer") + proto.RegisterType((*Dependency)(nil), "hapi.chart.Dependency") proto.RegisterType((*Metadata)(nil), "hapi.chart.Metadata") proto.RegisterEnum("hapi.chart.Metadata_Engine", Metadata_Engine_name, Metadata_Engine_value) } var fileDescriptor2 = []byte{ - // 275 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x6c, 0x91, 0x4b, 0x4b, 0xc4, 0x30, - 0x14, 0x85, 0x9d, 0x47, 0x5f, 0xb7, 0x9b, 0xe1, 0x22, 0x43, 0x74, 0x55, 0xba, 0x72, 0xd5, 0x01, - 0x05, 0x71, 0x2d, 0x88, 0x0b, 0x9d, 0x8e, 0x0c, 0x8a, 0xe0, 0x2e, 0xb6, 0xc1, 0x06, 0x6d, 0x53, - 0x92, 0xa8, 0xf8, 0x9f, 0xfc, 0x91, 0x26, 0xb7, 0xf3, 0x5a, 0xb8, 0x28, 0x9c, 0x73, 0xbe, 0xde, - 0xdc, 0x9e, 0x06, 0x4e, 0x1a, 0xde, 0xcb, 0x45, 0xd5, 0x70, 0x6d, 0x17, 0xad, 0xb0, 0xbc, 0xe6, - 0x96, 0x17, 0xbd, 0x56, 0x56, 0x21, 0x78, 0x54, 0x10, 0xca, 0x2f, 0x01, 0x96, 0x5c, 0x76, 0xd6, - 0x3d, 0x42, 0x23, 0xc2, 0xb4, 0xe3, 0xad, 0x60, 0xa3, 0x6c, 0x74, 0x96, 0xac, 0x49, 0xe3, 0x31, - 0x04, 0xa2, 0xe5, 0xf2, 0x83, 0x8d, 0x29, 0x1c, 0x4c, 0xfe, 0x3b, 0x86, 0x78, 0xb9, 0x39, 0xf6, - 0xdf, 0x31, 0x97, 0x35, 0xca, 0x65, 0xc3, 0x14, 0x69, 0x64, 0x10, 0x19, 0xf5, 0xa9, 0x2b, 0x61, - 0xd8, 0x24, 0x9b, 0xb8, 0x78, 0x6b, 0x3d, 0xf9, 0x12, 0xda, 0x48, 0xd5, 0xb1, 0x29, 0x0d, 0x6c, - 0x2d, 0x66, 0x90, 0xd6, 0xc2, 0x54, 0x5a, 0xf6, 0xd6, 0xd3, 0x80, 0xe8, 0x61, 0x84, 0xa7, 0x10, - 0xbf, 0x8b, 0x9f, 0x6f, 0xa5, 0x6b, 0xc3, 0x42, 0x3a, 0x76, 0xe7, 0xf1, 0x0a, 0xd2, 0x76, 0x57, - 0xcf, 0xb0, 0xc8, 0xe1, 0xf4, 0x7c, 0x5e, 0xec, 0x7f, 0x40, 0xb1, 0x6f, 0xbf, 0x3e, 0x7c, 0x15, - 0xe7, 0x10, 0x8a, 0xee, 0xcd, 0x69, 0x16, 0xd3, 0xca, 0x8d, 0xf3, 0xbd, 0x64, 0xe5, 0x3e, 0x24, - 0x19, 0x7a, 0x79, 0x9d, 0x67, 0x10, 0xde, 0x0c, 0x34, 0x85, 0xe8, 0xa9, 0xbc, 0x2b, 0x57, 0xcf, - 0xe5, 0xec, 0x08, 0x13, 0x08, 0x6e, 0x57, 0x8f, 0x0f, 0xf7, 0xb3, 0xd1, 0x75, 0xf4, 0x12, 0xd0, - 0xba, 0xd7, 0x90, 0xae, 0xe0, 0xe2, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x72, 0xdf, 0x74, 0xb5, 0x9f, - 0x01, 0x00, 0x00, + // 346 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x6c, 0x52, 0x4f, 0x4b, 0xfb, 0x40, + 0x10, 0xfd, 0xa5, 0x6d, 0x92, 0x76, 0xf2, 0x43, 0xca, 0x22, 0x65, 0xf5, 0x20, 0x25, 0x07, 0xf1, + 0x94, 0x82, 0x82, 0x88, 0x47, 0x51, 0x3c, 0x68, 0x5b, 0x29, 0xfe, 0x01, 0x6f, 0x6b, 0x32, 0x9a, + 0x45, 0x93, 0x0d, 0xbb, 0xab, 0xd2, 0xab, 0x9f, 0xd6, 0x8f, 0xe1, 0x66, 0x93, 0xb6, 0xa9, 0xf6, + 0x10, 0x98, 0xf7, 0xde, 0xcc, 0xbc, 0x99, 0xcc, 0xc2, 0x4e, 0xca, 0x0a, 0x3e, 0x8a, 0x53, 0x26, + 0xf5, 0x28, 0x43, 0xcd, 0x12, 0xa6, 0x59, 0x54, 0x48, 0xa1, 0x05, 0x81, 0x52, 0x8a, 0xac, 0x14, + 0x1e, 0x03, 0x8c, 0x19, 0xcf, 0xb5, 0xf9, 0x50, 0x12, 0x02, 0x9d, 0x9c, 0x65, 0x48, 0x9d, 0xa1, + 0x73, 0xd0, 0x9b, 0xd9, 0x98, 0x6c, 0x83, 0x8b, 0x19, 0xe3, 0x6f, 0xb4, 0x65, 0xc9, 0x0a, 0x84, + 0x5f, 0x0e, 0xc0, 0x39, 0x16, 0x98, 0x27, 0x98, 0xc7, 0xf3, 0x8d, 0x85, 0x7b, 0x00, 0x12, 0x0b, + 0xa1, 0xb8, 0x16, 0x72, 0x5e, 0x57, 0x37, 0x18, 0x42, 0xc1, 0xff, 0x40, 0xa9, 0xb8, 0xc8, 0x69, + 0xdb, 0x8a, 0x0b, 0x48, 0xf6, 0x61, 0xeb, 0x19, 0x75, 0x9c, 0x62, 0x72, 0x5f, 0x27, 0x74, 0x6c, + 0xc2, 0x2f, 0x36, 0xfc, 0x6e, 0x41, 0x77, 0x5c, 0xef, 0xb6, 0x71, 0x04, 0xc3, 0xa5, 0xc2, 0x70, + 0x95, 0xb9, 0x8d, 0x4b, 0x5b, 0x25, 0xde, 0x65, 0x8c, 0xca, 0xd8, 0xb6, 0x4b, 0xdb, 0x1a, 0x36, + 0x07, 0xea, 0xac, 0x0f, 0x34, 0x84, 0x20, 0x41, 0x15, 0x4b, 0x5e, 0xe8, 0x52, 0x75, 0xad, 0xda, + 0xa4, 0xc8, 0x2e, 0x74, 0x5f, 0x71, 0xfe, 0x29, 0x64, 0xa2, 0xa8, 0x67, 0xdb, 0x2e, 0x31, 0x39, + 0x81, 0x20, 0x5b, 0xfe, 0x63, 0x45, 0x7d, 0x23, 0x07, 0x87, 0x83, 0x68, 0x75, 0x85, 0x68, 0x75, + 0x82, 0x59, 0x33, 0x95, 0x0c, 0xc0, 0xc3, 0xfc, 0xc5, 0xc4, 0xb4, 0x6b, 0x2d, 0x6b, 0x54, 0xee, + 0xc5, 0x63, 0x33, 0x48, 0xaf, 0xda, 0xab, 0x8c, 0xc9, 0x29, 0xfc, 0x4f, 0x16, 0x07, 0xe1, 0x66, + 0x39, 0xf8, 0x6b, 0xb3, 0x3a, 0xd8, 0x6c, 0x2d, 0x37, 0x1c, 0x82, 0x77, 0x51, 0x75, 0x0e, 0xc0, + 0xbf, 0x9b, 0x5c, 0x4d, 0xa6, 0x0f, 0x93, 0xfe, 0x3f, 0xd2, 0x03, 0xf7, 0x72, 0x7a, 0x7b, 0x73, + 0xdd, 0x77, 0xce, 0xfc, 0x47, 0xd7, 0xf6, 0x78, 0xf2, 0xec, 0x1b, 0x3a, 0xfa, 0x09, 0x00, 0x00, + 0xff, 0xff, 0x6a, 0xfb, 0xe7, 0x86, 0x60, 0x02, 0x00, 0x00, }