first cut of version on client and server

reviewable/pr1126/r2
vaikas-google 8 years ago
parent 34f8707d6d
commit 6d26024a27

@ -20,19 +20,26 @@ services_ias = $(subst $(space),$(comma),$(addsuffix =$(import_path)/$(services_
services_pbs = $(sort $(wildcard hapi/services/*.proto)) services_pbs = $(sort $(wildcard hapi/services/*.proto))
services_pkg = services services_pkg = services
version_ias = $(subst $(space),$(comma),$(addsuffix =$(import_path)/$(version_pkg),$(addprefix M,$(version_pbs))))
version_pbs = $(sort $(wildcard hapi/version/*.proto))
version_pkg = version
google_deps = Mgoogle/protobuf/timestamp.proto=github.com/golang/protobuf/ptypes/timestamp,Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any google_deps = Mgoogle/protobuf/timestamp.proto=github.com/golang/protobuf/ptypes/timestamp,Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any
.PHONY: all .PHONY: all
all: chart release services all: chart release services version
chart: chart:
PATH=../bin:$(PATH) protoc --$(target)_out=plugins=$(plugins),$(google_deps),$(chart_ias):$(dst) $(chart_pbs) PATH=../bin:$(PATH) protoc --$(target)_out=plugins=$(plugins),$(google_deps),$(chart_ias):$(dst) $(chart_pbs)
release: release:
PATH=../bin:$(PATH) protoc --$(target)_out=plugins=$(plugins),$(google_deps),$(chart_ias):$(dst) $(release_pbs) PATH=../bin:$(PATH) protoc --$(target)_out=plugins=$(plugins),$(google_deps),$(chart_ias),$(version_ias):$(dst) $(release_pbs)
services: services:
PATH=../bin:$(PATH) protoc --$(target)_out=plugins=$(plugins),$(google_deps),$(chart_ias),$(release_ias):$(dst) $(services_pbs) PATH=../bin:$(PATH) protoc --$(target)_out=plugins=$(plugins),$(google_deps),$(chart_ias),$(version_ias),$(release_ias):$(dst) $(services_pbs)
version:
PATH=../bin:$(PATH) protoc --$(target)_out=plugins=$(plugins),$(google_deps):$(dst) $(version_pbs)
.PHONY: clean .PHONY: clean
clean: clean:

@ -21,6 +21,7 @@ import "hapi/chart/config.proto";
import "hapi/release/release.proto"; import "hapi/release/release.proto";
import "hapi/release/info.proto"; import "hapi/release/info.proto";
import "hapi/release/status.proto"; import "hapi/release/status.proto";
import "hapi/version/version.proto";
option go_package = "services"; option go_package = "services";
@ -65,6 +66,10 @@ service ReleaseService {
// UninstallRelease requests deletion of a named release. // UninstallRelease requests deletion of a named release.
rpc UninstallRelease(UninstallReleaseRequest) returns (UninstallReleaseResponse) { rpc UninstallRelease(UninstallReleaseRequest) returns (UninstallReleaseResponse) {
} }
// GetVersion returns the current version of the server.
rpc GetVersion(GetVersionRequest) returns (GetVersionResponse) {
}
} }
// ListReleasesRequest requests a list of releases. // ListReleasesRequest requests a list of releases.
@ -229,3 +234,11 @@ message UninstallReleaseResponse {
// Release is the release that was marked deleted. // Release is the release that was marked deleted.
hapi.release.Release release = 1; hapi.release.Release release = 1;
} }
// GetVersionRequest requests for version information.
message GetVersionRequest {
}
message GetVersionResponse {
hapi.version.Version Version = 1;
}

@ -0,0 +1,30 @@
// Copyright 2016 The Kubernetes Authors All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package hapi.version;
option go_package = "version";
message Version {
uint32 major = 1;
uint32 minor = 2;
uint32 patch = 3;
string pre_release = 4;
string build_metadata = 5;
string git_version = 6;
string git_commit = 7;
string git_tree_state = 8;
}

@ -98,6 +98,7 @@ func newRootCmd(out io.Writer) *cobra.Command {
newFetchCmd(out), newFetchCmd(out),
newVerifyCmd(out), newVerifyCmd(out),
newUpdateCmd(out), newUpdateCmd(out),
newVersionCmd(nil, out),
) )
return cmd return cmd
} }

@ -31,6 +31,7 @@ import (
"k8s.io/helm/pkg/proto/hapi/chart" "k8s.io/helm/pkg/proto/hapi/chart"
"k8s.io/helm/pkg/proto/hapi/release" "k8s.io/helm/pkg/proto/hapi/release"
rls "k8s.io/helm/pkg/proto/hapi/services" rls "k8s.io/helm/pkg/proto/hapi/services"
"k8s.io/helm/pkg/proto/hapi/version"
) )
var mockHookTemplate = `apiVersion: v1 var mockHookTemplate = `apiVersion: v1
@ -145,6 +146,18 @@ func (c *fakeReleaseClient) ReleaseStatus(rlsName string, opts ...helm.StatusOpt
return nil, fmt.Errorf("No such release: %s", rlsName) return nil, fmt.Errorf("No such release: %s", rlsName)
} }
func (c *fakeReleaseClient) GetVersion(opts ...helm.VersionOption) (*rls.GetVersionResponse, error) {
return &rls.GetVersionResponse{
Version: &version.Version{
Major: 1,
Minor: 2,
Patch: 3,
PreRelease: "fakeclient",
BuildMetadata: "testonly",
},
}, nil
}
func (c *fakeReleaseClient) UpdateRelease(rlsName string, chStr string, opts ...helm.UpdateOption) (*rls.UpdateReleaseResponse, error) { func (c *fakeReleaseClient) UpdateRelease(rlsName string, chStr string, opts ...helm.UpdateOption) (*rls.UpdateReleaseResponse, error) {
return nil, nil return nil, nil
} }

@ -62,7 +62,7 @@ func Install(namespace, image string, verbose bool) error {
if image == "" { if image == "" {
// strip git sha off version // strip git sha off version
tag := strings.Split(version.Version, "+")[0] tag := strings.Split(version.GetVersion(), "+")[0]
image = fmt.Sprintf("%s:%s", defaultImage, tag) image = fmt.Sprintf("%s:%s", defaultImage, tag)
} }

@ -18,20 +18,45 @@ package main
import ( import (
"fmt" "fmt"
"io"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/version" "k8s.io/helm/pkg/version"
) )
func init() { type versionCmd struct {
RootCommand.AddCommand(versionCmd) out io.Writer
client helm.Interface
} }
var versionCmd = &cobra.Command{ func newVersionCmd(c helm.Interface, out io.Writer) *cobra.Command {
Use: "version", version := &versionCmd{
Short: "print the client version information", client: c,
Run: func(cmd *cobra.Command, args []string) { out: out,
fmt.Println(version.Version) }
}, cmd := &cobra.Command{
Use: "version",
Short: "print the client/server version information",
PersistentPreRunE: setupConnection,
RunE: func(cmd *cobra.Command, args []string) error {
version.client = ensureHelmClient(version.client)
return version.run()
},
}
return cmd
}
func (v *versionCmd) run() error {
// Regardless of whether we can talk to server or not, just print the client
// version.
fmt.Printf("%+v\n", version.GetVersionProto())
resp, err := v.client.GetVersion()
if err != nil {
return err
}
fmt.Printf("%+v\n", resp.Version)
return nil
} }

@ -36,6 +36,7 @@ import (
"k8s.io/helm/pkg/proto/hapi/services" "k8s.io/helm/pkg/proto/hapi/services"
"k8s.io/helm/pkg/storage/driver" "k8s.io/helm/pkg/storage/driver"
"k8s.io/helm/pkg/timeconv" "k8s.io/helm/pkg/timeconv"
"k8s.io/helm/pkg/version"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
) )
@ -175,6 +176,11 @@ func filterReleases(filter string, rels []*release.Release) ([]*release.Release,
return matches, nil return matches, nil
} }
func (s *releaseServer) GetVersion(c ctx.Context, req *services.GetVersionRequest) (*services.GetVersionResponse, error) {
v := version.GetVersionProto()
return &services.GetVersionResponse{Version: &v}, nil
}
func (s *releaseServer) GetReleaseStatus(c ctx.Context, req *services.GetReleaseStatusRequest) (*services.GetReleaseStatusResponse, error) { func (s *releaseServer) GetReleaseStatus(c ctx.Context, req *services.GetReleaseStatusRequest) (*services.GetReleaseStatusResponse, error) {
if req.Name == "" { if req.Name == "" {
return nil, errMissingRelease return nil, errMissingRelease

@ -61,7 +61,7 @@ water:
for _, tt := range tests { for _, tt := range tests {
data, err = ReadValues([]byte(tt)) data, err = ReadValues([]byte(tt))
if err != nil { if err != nil {
t.Fatalf("Error parsing bytes: %s", err) t.Fatalf("Error parsing bytes (%s): %s", tt, err)
} }
if data == nil { if data == nil {
t.Errorf(`YAML string "%s" gave a nil map`, tt) t.Errorf(`YAML string "%s" gave a nil map`, tt)

@ -23,6 +23,7 @@ import (
"k8s.io/helm/pkg/chartutil" "k8s.io/helm/pkg/chartutil"
rls "k8s.io/helm/pkg/proto/hapi/services" rls "k8s.io/helm/pkg/proto/hapi/services"
// version "k8s.io/helm/pkg/proto/hapi/version"
) )
const ( const (
@ -120,6 +121,20 @@ func (h *Client) UpdateRelease(rlsName string, chStr string, opts ...UpdateOptio
return h.opts.rpcUpdateRelease(rlsName, chart, rls.NewReleaseServiceClient(c), opts...) return h.opts.rpcUpdateRelease(rlsName, chart, rls.NewReleaseServiceClient(c), opts...)
} }
// Version returns the server version
//
// Note: there aren't currently any supported StatusOptions,
// but they are kept in the API signature as a placeholder for future additions.
func (h *Client) GetVersion(opts ...VersionOption) (*rls.GetVersionResponse, error) {
c, err := grpc.Dial(h.opts.host, grpc.WithInsecure())
if err != nil {
return nil, err
}
defer c.Close()
return h.opts.rpcGetVersion(rls.NewReleaseServiceClient(c), opts...)
}
// ReleaseStatus returns the given release's status. // ReleaseStatus returns the given release's status.
// //
// Note: there aren't currently any supported StatusOptions, // Note: there aren't currently any supported StatusOptions,

@ -28,4 +28,5 @@ type Interface interface {
ReleaseStatus(rlsName string, opts ...StatusOption) (*rls.GetReleaseStatusResponse, error) ReleaseStatus(rlsName string, opts ...StatusOption) (*rls.GetReleaseStatusResponse, error)
UpdateRelease(rlsName, chStr string, opts ...UpdateOption) (*rls.UpdateReleaseResponse, error) UpdateRelease(rlsName, chStr string, opts ...UpdateOption) (*rls.UpdateReleaseResponse, error)
ReleaseContent(rlsName string, opts ...ContentOption) (*rls.GetReleaseContentResponse, error) ReleaseContent(rlsName string, opts ...ContentOption) (*rls.GetReleaseContentResponse, error)
GetVersion(opts ...VersionOption) (*rls.GetVersionResponse, error)
} }

@ -219,7 +219,7 @@ func ContentReleaseVersion(version int32) ContentOption {
type StatusOption func(*options) type StatusOption func(*options)
// StatusReleaseVersion will instruct Tiller to retrieve the status // StatusReleaseVersion will instruct Tiller to retrieve the status
// of a paritcular version of a release. // of a particular version of a release.
func StatusReleaseVersion(version int32) StatusOption { func StatusReleaseVersion(version int32) StatusOption {
return func(opts *options) { return func(opts *options) {
opts.statusReq.Version = version opts.statusReq.Version = version
@ -230,6 +230,9 @@ func StatusReleaseVersion(version int32) StatusOption {
// performing a UninstallRelease tiller rpc. // performing a UninstallRelease tiller rpc.
type DeleteOption func(*options) type DeleteOption func(*options)
// VersionOption -- TODO
type VersionOption func(*options)
// UpdateOption allows specifying various settings // UpdateOption allows specifying various settings
// configurable by the helm client user for overriding // configurable by the helm client user for overriding
// the defaults used when running the `helm upgrade` command. // the defaults used when running the `helm upgrade` command.
@ -319,3 +322,9 @@ func (o *options) rpcGetReleaseContent(rlsName string, rlc rls.ReleaseServiceCli
o.contentReq.Name = rlsName o.contentReq.Name = rlsName
return rlc.GetReleaseContent(context.TODO(), &o.contentReq) return rlc.GetReleaseContent(context.TODO(), &o.contentReq)
} }
// Executes tiller.GetVersion RPC.
func (o *options) rpcGetVersion(rlc rls.ReleaseServiceClient, opts ...VersionOption) (*rls.GetVersionResponse, error) {
req := &rls.GetVersionRequest{}
return rlc.GetVersion(context.TODO(), req)
}

@ -22,6 +22,8 @@ It has these top-level messages:
InstallReleaseResponse InstallReleaseResponse
UninstallReleaseRequest UninstallReleaseRequest
UninstallReleaseResponse UninstallReleaseResponse
GetVersionRequest
GetVersionResponse
*/ */
package services package services
@ -33,6 +35,7 @@ import hapi_chart "k8s.io/helm/pkg/proto/hapi/chart"
import hapi_release3 "k8s.io/helm/pkg/proto/hapi/release" import hapi_release3 "k8s.io/helm/pkg/proto/hapi/release"
import hapi_release2 "k8s.io/helm/pkg/proto/hapi/release" import hapi_release2 "k8s.io/helm/pkg/proto/hapi/release"
import hapi_release1 "k8s.io/helm/pkg/proto/hapi/release" import hapi_release1 "k8s.io/helm/pkg/proto/hapi/release"
import hapi_version "k8s.io/helm/pkg/proto/hapi/version"
import ( import (
context "golang.org/x/net/context" context "golang.org/x/net/context"
@ -366,6 +369,31 @@ func (m *UninstallReleaseResponse) GetRelease() *hapi_release3.Release {
return nil return nil
} }
// GetVersionRequest requests for version information.
type GetVersionRequest struct {
}
func (m *GetVersionRequest) Reset() { *m = GetVersionRequest{} }
func (m *GetVersionRequest) String() string { return proto.CompactTextString(m) }
func (*GetVersionRequest) ProtoMessage() {}
func (*GetVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
type GetVersionResponse struct {
Version *hapi_version.Version `protobuf:"bytes,1,opt,name=Version,json=version" json:"Version,omitempty"`
}
func (m *GetVersionResponse) Reset() { *m = GetVersionResponse{} }
func (m *GetVersionResponse) String() string { return proto.CompactTextString(m) }
func (*GetVersionResponse) ProtoMessage() {}
func (*GetVersionResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
func (m *GetVersionResponse) GetVersion() *hapi_version.Version {
if m != nil {
return m.Version
}
return nil
}
func init() { func init() {
proto.RegisterType((*ListReleasesRequest)(nil), "hapi.services.tiller.ListReleasesRequest") proto.RegisterType((*ListReleasesRequest)(nil), "hapi.services.tiller.ListReleasesRequest")
proto.RegisterType((*ListSort)(nil), "hapi.services.tiller.ListSort") proto.RegisterType((*ListSort)(nil), "hapi.services.tiller.ListSort")
@ -380,6 +408,8 @@ func init() {
proto.RegisterType((*InstallReleaseResponse)(nil), "hapi.services.tiller.InstallReleaseResponse") proto.RegisterType((*InstallReleaseResponse)(nil), "hapi.services.tiller.InstallReleaseResponse")
proto.RegisterType((*UninstallReleaseRequest)(nil), "hapi.services.tiller.UninstallReleaseRequest") proto.RegisterType((*UninstallReleaseRequest)(nil), "hapi.services.tiller.UninstallReleaseRequest")
proto.RegisterType((*UninstallReleaseResponse)(nil), "hapi.services.tiller.UninstallReleaseResponse") proto.RegisterType((*UninstallReleaseResponse)(nil), "hapi.services.tiller.UninstallReleaseResponse")
proto.RegisterType((*GetVersionRequest)(nil), "hapi.services.tiller.GetVersionRequest")
proto.RegisterType((*GetVersionResponse)(nil), "hapi.services.tiller.GetVersionResponse")
proto.RegisterEnum("hapi.services.tiller.ListSort_SortBy", ListSort_SortBy_name, ListSort_SortBy_value) proto.RegisterEnum("hapi.services.tiller.ListSort_SortBy", ListSort_SortBy_name, ListSort_SortBy_value)
proto.RegisterEnum("hapi.services.tiller.ListSort_SortOrder", ListSort_SortOrder_name, ListSort_SortOrder_value) proto.RegisterEnum("hapi.services.tiller.ListSort_SortOrder", ListSort_SortOrder_name, ListSort_SortOrder_value)
} }
@ -410,6 +440,8 @@ type ReleaseServiceClient interface {
InstallRelease(ctx context.Context, in *InstallReleaseRequest, opts ...grpc.CallOption) (*InstallReleaseResponse, error) InstallRelease(ctx context.Context, in *InstallReleaseRequest, opts ...grpc.CallOption) (*InstallReleaseResponse, error)
// UninstallRelease requests deletion of a named release. // UninstallRelease requests deletion of a named release.
UninstallRelease(ctx context.Context, in *UninstallReleaseRequest, opts ...grpc.CallOption) (*UninstallReleaseResponse, error) UninstallRelease(ctx context.Context, in *UninstallReleaseRequest, opts ...grpc.CallOption) (*UninstallReleaseResponse, error)
// GetVersion returns the current version of the server.
GetVersion(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*GetVersionResponse, error)
} }
type releaseServiceClient struct { type releaseServiceClient struct {
@ -497,6 +529,15 @@ func (c *releaseServiceClient) UninstallRelease(ctx context.Context, in *Uninsta
return out, nil return out, nil
} }
func (c *releaseServiceClient) GetVersion(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*GetVersionResponse, error) {
out := new(GetVersionResponse)
err := grpc.Invoke(ctx, "/hapi.services.tiller.ReleaseService/GetVersion", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for ReleaseService service // Server API for ReleaseService service
type ReleaseServiceServer interface { type ReleaseServiceServer interface {
@ -515,6 +556,8 @@ type ReleaseServiceServer interface {
InstallRelease(context.Context, *InstallReleaseRequest) (*InstallReleaseResponse, error) InstallRelease(context.Context, *InstallReleaseRequest) (*InstallReleaseResponse, error)
// UninstallRelease requests deletion of a named release. // UninstallRelease requests deletion of a named release.
UninstallRelease(context.Context, *UninstallReleaseRequest) (*UninstallReleaseResponse, error) UninstallRelease(context.Context, *UninstallReleaseRequest) (*UninstallReleaseResponse, error)
// GetVersion returns the current version of the server.
GetVersion(context.Context, *GetVersionRequest) (*GetVersionResponse, error)
} }
func RegisterReleaseServiceServer(s *grpc.Server, srv ReleaseServiceServer) { func RegisterReleaseServiceServer(s *grpc.Server, srv ReleaseServiceServer) {
@ -602,6 +645,18 @@ func _ReleaseService_UninstallRelease_Handler(srv interface{}, ctx context.Conte
return out, nil return out, nil
} }
func _ReleaseService_GetVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) {
in := new(GetVersionRequest)
if err := dec(in); err != nil {
return nil, err
}
out, err := srv.(ReleaseServiceServer).GetVersion(ctx, in)
if err != nil {
return nil, err
}
return out, nil
}
var _ReleaseService_serviceDesc = grpc.ServiceDesc{ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
ServiceName: "hapi.services.tiller.ReleaseService", ServiceName: "hapi.services.tiller.ReleaseService",
HandlerType: (*ReleaseServiceServer)(nil), HandlerType: (*ReleaseServiceServer)(nil),
@ -626,6 +681,10 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
MethodName: "UninstallRelease", MethodName: "UninstallRelease",
Handler: _ReleaseService_UninstallRelease_Handler, Handler: _ReleaseService_UninstallRelease_Handler,
}, },
{
MethodName: "GetVersion",
Handler: _ReleaseService_GetVersion_Handler,
},
}, },
Streams: []grpc.StreamDesc{ Streams: []grpc.StreamDesc{
{ {
@ -637,58 +696,61 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
} }
var fileDescriptor0 = []byte{ var fileDescriptor0 = []byte{
// 841 bytes of a gzipped FileDescriptorProto // 893 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x56, 0xdd, 0x6e, 0xeb, 0x44, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x56, 0x5f, 0x6f, 0xe3, 0x44,
0x10, 0xae, 0xf3, 0xe3, 0x24, 0x93, 0xb6, 0x4a, 0x97, 0xb6, 0x71, 0x2d, 0x40, 0x95, 0x11, 0x50, 0x10, 0x3f, 0x27, 0xa9, 0x93, 0x4c, 0xda, 0x2a, 0xdd, 0x6b, 0x1b, 0xd7, 0x02, 0x74, 0x32, 0x82,
0x0a, 0x24, 0x10, 0x6e, 0x11, 0x52, 0x9a, 0x46, 0x6d, 0xd5, 0x90, 0x4a, 0x1b, 0x2a, 0x24, 0x2e, 0x0b, 0x07, 0x24, 0x10, 0x5e, 0x11, 0x52, 0x2e, 0x17, 0xf5, 0xaa, 0x0b, 0x39, 0x69, 0x43, 0x41,
0x88, 0xdc, 0x64, 0xd3, 0x18, 0x5c, 0x3b, 0x78, 0x37, 0x11, 0x7d, 0x04, 0x5e, 0x83, 0xa7, 0xe0, 0xe2, 0x81, 0xc8, 0x4d, 0x36, 0x17, 0x83, 0x6b, 0x07, 0xef, 0x26, 0xa2, 0x1f, 0x81, 0xcf, 0xc0,
0x86, 0x27, 0xe3, 0x86, 0xf5, 0xae, 0xd7, 0x27, 0x4e, 0xec, 0x73, 0x7c, 0x72, 0xe3, 0xec, 0xee, 0x1b, 0xdf, 0x83, 0x4f, 0xc6, 0x0b, 0xeb, 0xfd, 0xe3, 0xc6, 0xa9, 0x4d, 0x7d, 0x79, 0x89, 0xbd,
0x7c, 0xfb, 0xcd, 0xcc, 0x37, 0xb3, 0xd3, 0x82, 0x39, 0xb7, 0x17, 0x4e, 0x9b, 0x92, 0x60, 0xe5, 0x3b, 0xbf, 0xfd, 0xcd, 0xcc, 0x6f, 0x76, 0xc6, 0x01, 0x7b, 0xe9, 0xae, 0xbc, 0x2e, 0x25, 0xd1,
0x4c, 0x08, 0x6d, 0x33, 0xc7, 0x75, 0x49, 0xd0, 0x5a, 0x04, 0x3e, 0xf3, 0xd1, 0x71, 0x68, 0x6b, 0xc6, 0x9b, 0x11, 0xda, 0x65, 0x9e, 0xef, 0x93, 0xa8, 0xb3, 0x8a, 0x42, 0x16, 0xa2, 0xd3, 0xd8,
0x29, 0x5b, 0x4b, 0xda, 0xcc, 0x53, 0x71, 0x63, 0x32, 0xb7, 0x03, 0x26, 0xbf, 0x12, 0x6d, 0x36, 0xd6, 0xd1, 0xb6, 0x8e, 0xb4, 0xd9, 0xe7, 0xe2, 0xc4, 0x6c, 0xe9, 0x46, 0x4c, 0xfe, 0x4a, 0xb4,
0xd7, 0xcf, 0x7d, 0x6f, 0xe6, 0x3c, 0x47, 0x06, 0xe9, 0x22, 0x20, 0x2e, 0xb1, 0x29, 0x51, 0xbf, 0xdd, 0xda, 0xde, 0x0f, 0x83, 0x85, 0xf7, 0x4e, 0x19, 0xa4, 0x8b, 0x88, 0xf8, 0xc4, 0xa5, 0x44,
0x89, 0x4b, 0xca, 0xe6, 0x78, 0x33, 0x3f, 0x32, 0x9c, 0x25, 0x0c, 0x94, 0xd9, 0x6c, 0x49, 0xa5, 0x3f, 0x53, 0x87, 0xb4, 0xcd, 0x0b, 0x16, 0xa1, 0x32, 0x5c, 0xa4, 0x0c, 0x94, 0xb9, 0x6c, 0x4d,
0xc9, 0xfa, 0xbb, 0x00, 0x1f, 0x0c, 0x1c, 0xca, 0xb0, 0x34, 0x52, 0x4c, 0xfe, 0x58, 0x12, 0xca, 0x53, 0x7c, 0x1b, 0x12, 0x51, 0x2f, 0x0c, 0xf4, 0x53, 0xda, 0x9c, 0xbf, 0x4b, 0xf0, 0x74, 0xe4,
0xd0, 0x31, 0x94, 0x5d, 0xe7, 0xc5, 0x61, 0x86, 0x76, 0xae, 0x5d, 0x14, 0xb1, 0xdc, 0xa0, 0x53, 0x51, 0x86, 0xe5, 0x41, 0x8a, 0xc9, 0xef, 0x6b, 0x42, 0x19, 0x3a, 0x85, 0x03, 0xdf, 0xbb, 0xf5,
0xd0, 0xfd, 0xd9, 0x8c, 0x12, 0x66, 0x14, 0xf8, 0x71, 0x0d, 0x47, 0x3b, 0xf4, 0x03, 0x54, 0xa8, 0x98, 0x65, 0x3c, 0x33, 0xda, 0x65, 0x2c, 0x17, 0xe8, 0x1c, 0xcc, 0x70, 0xb1, 0xa0, 0x84, 0x59,
0x1f, 0xb0, 0xf1, 0xd3, 0xab, 0x51, 0xe4, 0x86, 0xc3, 0xce, 0xa7, 0xad, 0xb4, 0x74, 0x5b, 0xa1, 0x25, 0xbe, 0x5d, 0xc7, 0x6a, 0x85, 0xbe, 0x83, 0x2a, 0x0d, 0x23, 0x36, 0xbd, 0xb9, 0xb3, 0xca,
0xa7, 0x11, 0x07, 0xb6, 0xc2, 0xcf, 0xd5, 0x2b, 0xd6, 0xa9, 0xf8, 0x0d, 0x79, 0x67, 0x8e, 0xcb, 0xdc, 0x70, 0xdc, 0xfb, 0xa4, 0x93, 0x25, 0x45, 0x27, 0xf6, 0x34, 0xe1, 0xc0, 0x4e, 0xfc, 0xf3,
0x48, 0x60, 0x94, 0x24, 0xaf, 0xdc, 0xa1, 0x1b, 0x00, 0xc1, 0xeb, 0x07, 0x53, 0x6e, 0x2b, 0x0b, 0xf2, 0x0e, 0x9b, 0x54, 0x3c, 0x63, 0xde, 0x85, 0xe7, 0x33, 0x12, 0x59, 0x15, 0xc9, 0x2b, 0x57,
0xea, 0x8b, 0x1c, 0xd4, 0x0f, 0x21, 0x1e, 0xd7, 0xa8, 0x5a, 0xa2, 0xef, 0x61, 0x5f, 0xa6, 0x3d, 0xe8, 0x12, 0x40, 0xf0, 0x86, 0xd1, 0x9c, 0xdb, 0x0e, 0x04, 0x75, 0xbb, 0x00, 0xf5, 0xdb, 0x18,
0x9e, 0xf8, 0x53, 0x42, 0x0d, 0xfd, 0xbc, 0xc8, 0xa9, 0xce, 0x24, 0x95, 0x52, 0x71, 0x24, 0x85, 0x8f, 0xeb, 0x54, 0xbf, 0xa2, 0x6f, 0xe1, 0x50, 0x4a, 0x32, 0x9d, 0x85, 0x73, 0x42, 0x2d, 0xf3,
0xe9, 0x71, 0x04, 0xae, 0x4b, 0x78, 0xb8, 0xa6, 0xd6, 0xaf, 0x50, 0x55, 0xf4, 0x56, 0x07, 0x74, 0x59, 0x99, 0x53, 0x5d, 0x48, 0x2a, 0xad, 0xf0, 0x44, 0x8a, 0x36, 0xe0, 0x08, 0xdc, 0x90, 0xf0,
0x19, 0x3c, 0xaa, 0x43, 0xe5, 0x71, 0x78, 0x3f, 0x7c, 0xf8, 0x79, 0xd8, 0xd8, 0x43, 0x55, 0x28, 0xf8, 0x9d, 0x3a, 0xbf, 0x40, 0x4d, 0xd3, 0x3b, 0x3d, 0x30, 0x65, 0xf0, 0xa8, 0x01, 0xd5, 0xeb,
0x0d, 0xbb, 0x3f, 0xf6, 0x1b, 0x1a, 0x3a, 0x82, 0x83, 0x41, 0x77, 0xf4, 0xd3, 0x18, 0xf7, 0x07, 0xf1, 0x9b, 0xf1, 0xdb, 0x9f, 0xc6, 0xcd, 0x27, 0xa8, 0x06, 0x95, 0x71, 0xff, 0xfb, 0x61, 0xd3,
0xfd, 0xee, 0xa8, 0x7f, 0xdd, 0x28, 0x58, 0x1f, 0x43, 0x2d, 0x8e, 0x0a, 0x55, 0xa0, 0xd8, 0x1d, 0x40, 0x27, 0x70, 0x34, 0xea, 0x4f, 0x7e, 0x98, 0xe2, 0xe1, 0x68, 0xd8, 0x9f, 0x0c, 0x5f, 0x35,
0xf5, 0xe4, 0x95, 0xeb, 0x3e, 0x5f, 0x69, 0xd6, 0x5f, 0x1a, 0x1c, 0x27, 0x8b, 0x40, 0x17, 0xbe, 0x4b, 0xce, 0x47, 0x50, 0x4f, 0xa2, 0x42, 0x55, 0x28, 0xf7, 0x27, 0x03, 0x79, 0xe4, 0xd5, 0x90,
0x47, 0x49, 0x58, 0x85, 0x89, 0xbf, 0xf4, 0xe2, 0x2a, 0x88, 0x0d, 0x42, 0x50, 0xf2, 0xc8, 0x9f, 0xbf, 0x19, 0xce, 0x9f, 0x06, 0x9c, 0xa6, 0x8b, 0x40, 0x57, 0x61, 0x40, 0x49, 0x5c, 0x85, 0x59,
0xaa, 0x06, 0x62, 0x1d, 0x22, 0x99, 0xcf, 0x6c, 0x57, 0xe8, 0xcf, 0x91, 0x62, 0x83, 0xbe, 0x85, 0xb8, 0x0e, 0x92, 0x2a, 0x88, 0x05, 0x42, 0x50, 0x09, 0xc8, 0x1f, 0xba, 0x06, 0xe2, 0x3d, 0x46,
0x6a, 0x94, 0x1c, 0xe5, 0xca, 0x16, 0x2f, 0xea, 0x9d, 0x93, 0x64, 0xca, 0x91, 0x47, 0x1c, 0xc3, 0xb2, 0x90, 0xb9, 0xbe, 0xd0, 0x9f, 0x23, 0xc5, 0x02, 0x7d, 0x0d, 0x35, 0x95, 0x1c, 0xe5, 0xca,
0xac, 0x1b, 0x68, 0xde, 0x10, 0x15, 0x89, 0x54, 0x44, 0xf5, 0x44, 0xe8, 0xd7, 0x7e, 0x21, 0x22, 0x96, 0xdb, 0x8d, 0xde, 0x59, 0x3a, 0x65, 0xe5, 0x11, 0x27, 0x30, 0xe7, 0x12, 0x5a, 0x97, 0x44,
0x98, 0xd0, 0x2f, 0x5f, 0x23, 0x03, 0x2a, 0x2b, 0x12, 0x50, 0xc7, 0xf7, 0x44, 0x38, 0x65, 0xac, 0x47, 0x22, 0x15, 0xd1, 0x77, 0x22, 0xf6, 0xeb, 0xde, 0x12, 0x11, 0x4c, 0xec, 0x97, 0xbf, 0x23,
0xb6, 0x16, 0x03, 0x63, 0x9b, 0x28, 0xca, 0x2b, 0x8d, 0xe9, 0x33, 0x28, 0x85, 0x2d, 0x2b, 0x68, 0x0b, 0xaa, 0xea, 0x42, 0x89, 0x70, 0x0e, 0xb0, 0x5e, 0x3a, 0x0c, 0xac, 0x87, 0x44, 0x2a, 0xaf,
0xea, 0x1d, 0x94, 0x8c, 0xf3, 0x8e, 0x5b, 0xb0, 0xb0, 0xa3, 0x0f, 0xa1, 0x16, 0xe2, 0xe9, 0xc2, 0x2c, 0xa6, 0x4f, 0xa1, 0x12, 0x5f, 0x67, 0x41, 0xd3, 0xe8, 0xa1, 0x74, 0x9c, 0x57, 0xdc, 0x82,
0x9e, 0x10, 0x91, 0x6d, 0x0d, 0xbf, 0x39, 0xb0, 0x6e, 0xd7, 0xbd, 0xf6, 0x7c, 0x8f, 0x11, 0x8f, 0x85, 0x1d, 0x7d, 0x00, 0xf5, 0x18, 0x4f, 0x57, 0xee, 0x8c, 0x88, 0x6c, 0xeb, 0xf8, 0x7e, 0xc3,
0xed, 0x16, 0xff, 0x00, 0xce, 0x52, 0x98, 0xa2, 0x04, 0xda, 0x50, 0x89, 0x42, 0x13, 0x6c, 0x99, 0x79, 0xbd, 0xed, 0x75, 0x10, 0x06, 0x8c, 0x04, 0x6c, 0xbf, 0xf8, 0x47, 0x70, 0x91, 0xc1, 0xa4,
0xba, 0x2a, 0x94, 0xf5, 0x2f, 0x2f, 0xf1, 0xe3, 0x62, 0x6a, 0x33, 0xa2, 0x4c, 0x6f, 0x09, 0xea, 0x12, 0xe8, 0x42, 0x55, 0x85, 0x26, 0xd8, 0x72, 0x75, 0xd5, 0x28, 0xe7, 0x1f, 0x5e, 0xe2, 0xeb,
0x73, 0x5e, 0xf6, 0xf0, 0xe9, 0x47, 0x5a, 0x1c, 0x49, 0x6e, 0x39, 0x1f, 0x7a, 0xe1, 0x17, 0x4b, 0xd5, 0xdc, 0x65, 0x44, 0x9b, 0xfe, 0x27, 0xa8, 0xe7, 0xbc, 0xec, 0xf1, 0x58, 0x50, 0x5a, 0x9c,
0x3b, 0xba, 0x04, 0x7d, 0x65, 0xbb, 0x9c, 0x47, 0x08, 0x11, 0xab, 0x16, 0x21, 0xc5, 0xdc, 0xc0, 0x48, 0x6e, 0x39, 0x3b, 0x06, 0xf1, 0x2f, 0x96, 0x76, 0xf4, 0x02, 0xcc, 0x8d, 0xeb, 0x73, 0x1e,
0x11, 0x02, 0x35, 0xa1, 0x32, 0x0d, 0x5e, 0xc7, 0xc1, 0xd2, 0x13, 0x8f, 0xac, 0x8a, 0x75, 0xbe, 0x21, 0x44, 0xa2, 0x9a, 0x42, 0x8a, 0x99, 0x82, 0x15, 0x02, 0xb5, 0xa0, 0x3a, 0x8f, 0xee, 0xa6,
0xc5, 0x4b, 0x0f, 0x7d, 0x02, 0x07, 0x53, 0x87, 0xda, 0x4f, 0x2e, 0x19, 0xcf, 0x7d, 0xff, 0x77, 0xd1, 0x3a, 0x10, 0x4d, 0x56, 0xc3, 0x26, 0x5f, 0xe2, 0x75, 0x80, 0x3e, 0x86, 0xa3, 0xb9, 0x47,
0x2a, 0xde, 0x59, 0x15, 0xef, 0x47, 0x87, 0xb7, 0xe1, 0x19, 0xd7, 0xf5, 0x64, 0x23, 0xfc, 0x5d, 0xdd, 0x1b, 0x9f, 0x4c, 0x97, 0x61, 0xf8, 0x1b, 0x15, 0x7d, 0x56, 0xc3, 0x87, 0x6a, 0xf3, 0x75,
0x95, 0xf8, 0x4f, 0x83, 0x93, 0x3b, 0x8f, 0x3f, 0x2f, 0xd7, 0xdd, 0x90, 0x22, 0x4e, 0x5b, 0xcb, 0xbc, 0xc7, 0x75, 0x3d, 0xdb, 0x09, 0x7f, 0x5f, 0x25, 0xfe, 0x35, 0xe0, 0xec, 0x2a, 0xe0, 0xed,
0x9d, 0x76, 0xe1, 0x7d, 0xd2, 0x2e, 0x26, 0xd2, 0x56, 0xc2, 0x97, 0xd6, 0x84, 0xcf, 0x23, 0x45, 0xe5, 0xfb, 0x3b, 0x52, 0x24, 0x69, 0x1b, 0x85, 0xd3, 0x2e, 0xbd, 0x4f, 0xda, 0xe5, 0x54, 0xda,
0xb2, 0x01, 0xf5, 0x8d, 0x06, 0x44, 0x1f, 0x01, 0x04, 0x64, 0x49, 0xc9, 0x58, 0x90, 0x57, 0xc4, 0x5a, 0xf8, 0xca, 0x96, 0xf0, 0x45, 0xa4, 0x48, 0x5f, 0x40, 0x73, 0xe7, 0x02, 0xa2, 0x0f, 0x01,
0xfd, 0x9a, 0x38, 0x19, 0xf2, 0x03, 0xeb, 0x0e, 0x4e, 0x37, 0x93, 0xdf, 0x55, 0xc8, 0x39, 0x34, 0x22, 0xb2, 0xa6, 0x64, 0x2a, 0xc8, 0xab, 0xe2, 0x7c, 0x5d, 0xec, 0x8c, 0xf9, 0x86, 0x73, 0x05,
0x1f, 0x3d, 0x27, 0x55, 0xc9, 0xb4, 0xa6, 0xda, 0xca, 0xad, 0x90, 0x92, 0x1b, 0x1f, 0x23, 0x8b, 0xe7, 0xbb, 0xc9, 0xef, 0x2b, 0xe4, 0x12, 0x5a, 0xd7, 0x81, 0x97, 0xa9, 0x64, 0xd6, 0xa5, 0x7a,
0x65, 0xf0, 0x4c, 0x22, 0xad, 0xe4, 0xc6, 0xba, 0x07, 0x63, 0xdb, 0xd3, 0x8e, 0x61, 0x77, 0xfe, 0x90, 0x5b, 0x29, 0x23, 0x37, 0x3e, 0x46, 0x56, 0xeb, 0xe8, 0x1d, 0x51, 0x5a, 0xc9, 0x85, 0xf3,
0x29, 0xc3, 0xa1, 0x9a, 0x0a, 0x72, 0x86, 0x23, 0x07, 0xf6, 0xd7, 0xc7, 0x1f, 0xfa, 0x22, 0x7b, 0x06, 0xac, 0x87, 0x9e, 0xf6, 0x0d, 0xfb, 0x29, 0x9c, 0xf0, 0xbe, 0xfa, 0x51, 0x76, 0x99, 0x0a,
0xc4, 0x6f, 0xfc, 0x9d, 0x32, 0x2f, 0xf3, 0x40, 0x65, 0xa8, 0xd6, 0xde, 0x37, 0x1a, 0xa2, 0xd0, 0xd8, 0x19, 0x02, 0xda, 0xde, 0xbc, 0xe7, 0x56, 0x5b, 0x69, 0x6e, 0xfd, 0x09, 0xd3, 0x78, 0xdd,
0xd8, 0x9c, 0x4a, 0xe8, 0xeb, 0x74, 0x8e, 0x8c, 0x31, 0x68, 0xb6, 0xf2, 0xc2, 0x95, 0x5b, 0xb4, 0xb3, 0xbd, 0xbf, 0x4c, 0x38, 0xd6, 0x13, 0x47, 0x7e, 0x1f, 0x90, 0x07, 0x87, 0xdb, 0xa3, 0x15,
0x82, 0xa3, 0xad, 0x51, 0x82, 0xde, 0x49, 0x93, 0x9c, 0x5e, 0x66, 0x3b, 0x37, 0x3e, 0xf6, 0xfb, 0x7d, 0x96, 0xff, 0xf9, 0xd8, 0xf9, 0x06, 0xda, 0x2f, 0x8a, 0x40, 0x65, 0xa8, 0xce, 0x93, 0xaf,
0x1b, 0x1c, 0x24, 0x1e, 0x2d, 0xca, 0x50, 0x2b, 0x6d, 0x30, 0x99, 0x5f, 0xe6, 0xc2, 0xc6, 0xbe, 0x0c, 0x44, 0xa1, 0xb9, 0x3b, 0xf1, 0xd0, 0x97, 0xd9, 0x1c, 0x39, 0x23, 0xd6, 0xee, 0x14, 0x85,
0x5e, 0xe0, 0x30, 0xd9, 0xd8, 0x28, 0x83, 0x20, 0xf5, 0xed, 0x9b, 0x5f, 0xe5, 0x03, 0xc7, 0xee, 0x6b, 0xb7, 0x68, 0x23, 0xe4, 0x4c, 0x8f, 0x29, 0xf4, 0x28, 0x4d, 0x7a, 0x32, 0xda, 0xdd, 0xc2,
0x78, 0x1d, 0x37, 0x5b, 0x32, 0xab, 0x8e, 0x19, 0x8f, 0x24, 0xab, 0x8e, 0x59, 0x9d, 0x6e, 0xed, 0xf8, 0xc4, 0xef, 0xaf, 0x70, 0x94, 0x1a, 0x08, 0x28, 0x47, 0xad, 0xac, 0xa1, 0x67, 0x7f, 0x5e,
0x5d, 0xc1, 0x2f, 0x55, 0x85, 0x7e, 0xd2, 0xc5, 0xff, 0x4f, 0xdf, 0xfd, 0x1f, 0x00, 0x00, 0xff, 0x08, 0x9b, 0xf8, 0xba, 0x85, 0xe3, 0x74, 0xd3, 0xa0, 0x1c, 0x82, 0xcc, 0xb9, 0x62, 0x7f, 0x51,
0xff, 0xd9, 0x8f, 0xae, 0xcb, 0xf4, 0x09, 0x00, 0x00, 0x0c, 0x9c, 0xb8, 0xe3, 0x75, 0xdc, 0xbd, 0xee, 0x79, 0x75, 0xcc, 0x69, 0xc0, 0xbc, 0x3a, 0xe6,
0x75, 0x11, 0x77, 0xea, 0x02, 0xdc, 0x77, 0x00, 0x7a, 0x9e, 0x5b, 0x90, 0x74, 0xe3, 0xd8, 0xed,
0xc7, 0x81, 0xda, 0xc5, 0x4b, 0xf8, 0xb9, 0xa6, 0x71, 0x37, 0xa6, 0xf8, 0xfb, 0xf7, 0xcd, 0x7f,
0x01, 0x00, 0x00, 0xff, 0xff, 0x14, 0xb2, 0x9f, 0x07, 0xcf, 0x0a, 0x00, 0x00,
} }

@ -0,0 +1,66 @@
// Code generated by protoc-gen-go.
// source: hapi/version/version.proto
// DO NOT EDIT!
/*
Package version is a generated protocol buffer package.
It is generated from these files:
hapi/version/version.proto
It has these top-level messages:
Version
*/
package version
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
const _ = proto.ProtoPackageIsVersion1
type Version struct {
Major uint32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"`
Minor uint32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"`
Patch uint32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"`
PreRelease string `protobuf:"bytes,4,opt,name=pre_release,json=preRelease" json:"pre_release,omitempty"`
BuildMetadata string `protobuf:"bytes,5,opt,name=build_metadata,json=buildMetadata" json:"build_metadata,omitempty"`
GitVersion string `protobuf:"bytes,6,opt,name=git_version,json=gitVersion" json:"git_version,omitempty"`
GitCommit string `protobuf:"bytes,7,opt,name=git_commit,json=gitCommit" json:"git_commit,omitempty"`
GitTreeState string `protobuf:"bytes,8,opt,name=git_tree_state,json=gitTreeState" json:"git_tree_state,omitempty"`
}
func (m *Version) Reset() { *m = Version{} }
func (m *Version) String() string { return proto.CompactTextString(m) }
func (*Version) ProtoMessage() {}
func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
func init() {
proto.RegisterType((*Version)(nil), "hapi.version.Version")
}
var fileDescriptor0 = []byte{
// 225 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x34, 0xd0, 0xb1, 0x4e, 0xc3, 0x30,
0x10, 0x06, 0x60, 0x05, 0x68, 0x43, 0x8e, 0xb6, 0x83, 0xc5, 0x60, 0x21, 0x21, 0x10, 0x02, 0x89,
0xa9, 0x0c, 0xbc, 0x01, 0xcc, 0x2c, 0x01, 0x31, 0xb0, 0x58, 0xd7, 0xf6, 0x44, 0x8d, 0xea, 0xd8,
0x72, 0x0e, 0xde, 0x9d, 0xad, 0xf6, 0xd9, 0x99, 0x92, 0xff, 0xfb, 0x4f, 0x97, 0x53, 0xe0, 0x6a,
0x8f, 0xc1, 0x3e, 0xfd, 0x51, 0x1c, 0xad, 0x1f, 0xa6, 0xe7, 0x3a, 0x44, 0xcf, 0x5e, 0x2d, 0x72,
0xb7, 0xae, 0x76, 0xf7, 0xdf, 0x40, 0xfb, 0x59, 0xde, 0xd5, 0x25, 0xcc, 0x1c, 0xfe, 0xf8, 0xa8,
0x9b, 0xdb, 0xe6, 0x71, 0xd9, 0x97, 0x20, 0x6a, 0x87, 0xa4, 0x27, 0x55, 0x73, 0xc8, 0x1a, 0x90,
0xb7, 0x7b, 0x7d, 0x5a, 0x54, 0x82, 0xba, 0x81, 0x8b, 0x10, 0xc9, 0x44, 0x3a, 0x10, 0x8e, 0xa4,
0xcf, 0x52, 0xd7, 0xf5, 0x90, 0xa8, 0x2f, 0xa2, 0x1e, 0x60, 0xb5, 0xf9, 0xb5, 0x87, 0x9d, 0x71,
0xc4, 0xb8, 0x43, 0x46, 0x3d, 0x93, 0x99, 0xa5, 0xe8, 0x5b, 0xc5, 0xbc, 0xe7, 0xdb, 0xb2, 0xa9,
0x47, 0xea, 0x79, 0xd9, 0x93, 0x68, 0x3a, 0xf5, 0x1a, 0x72, 0x32, 0x5b, 0xef, 0x9c, 0x65, 0xdd,
0x4a, 0xdf, 0x25, 0x79, 0x15, 0x50, 0xf7, 0xb0, 0xca, 0x35, 0x47, 0x22, 0x33, 0x32, 0x32, 0xe9,
0x73, 0x19, 0x59, 0x24, 0xfd, 0x48, 0xf8, 0x9e, 0xed, 0xa5, 0xfb, 0x6a, 0xeb, 0x17, 0x36, 0x73,
0xf9, 0x37, 0xcf, 0xc7, 0x00, 0x00, 0x00, 0xff, 0xff, 0x87, 0xdf, 0xc1, 0x73, 0x39, 0x01, 0x00,
0x00,
}

@ -17,10 +17,51 @@ limitations under the License.
// Package version represents the current version of the project. // Package version represents the current version of the project.
package version // import "k8s.io/helm/pkg/version" package version // import "k8s.io/helm/pkg/version"
import (
"fmt"
"k8s.io/helm/pkg/proto/hapi/version"
)
// Version is the current version of the Helm. // Version is the current version of the Helm.
// Update this whenever making a new release. // Update this whenever making a new release.
// The version is of the format Major.Minor.Patch // The version is of the format Major.Minor.Patch[-Prerelease][+BuildMetadata]
//
// Increment major number for new feature additions and behavioral changes. // Increment major number for new feature additions and behavioral changes.
// Increment minor number for bug fixes and performance enhancements. // Increment minor number for bug fixes and performance enhancements.
// Increment patch number for critical fixes to existing releases. // Increment patch number for critical fixes to existing releases.
var Version = "v2.0.0-alpha.4" //
// BuildMetadata gets filled in during build, do not touch
// GitCommit gets filled in during build, do not touch
var (
Major uint32 = 2
Minor uint32 = 0
Patch uint32 = 0
PreRelease = "alpha.4"
BuildMetadata = ""
GitCommit = ""
)
// GetVersion returns the semver string of the version
func GetVersion() string {
version := fmt.Sprintf("v%d.%d.%d", Major, Minor, Patch)
if PreRelease != "" {
version = version + "-" + PreRelease
}
if BuildMetadata != "" {
version = version + "+" + BuildMetadata
}
return version
}
// GetVersionProto returns protobuf representing the version
func GetVersionProto() version.Version {
return version.Version{
Major: Major,
Minor: Minor,
Patch: Patch,
PreRelease: PreRelease,
BuildMetadata: BuildMetadata,
GitCommit: GitCommit,
}
}

@ -1,5 +1,6 @@
MUTABLE_VERSION ?= canary MUTABLE_VERSION ?= canary
GIT_COMMIT := $(shell git rev-parse HEAD)
GIT_SHA := $(shell git rev-parse --short HEAD) GIT_SHA := $(shell git rev-parse --short HEAD)
GIT_TAG := $(shell git describe --tags --abbrev=0 2>/dev/null) GIT_TAG := $(shell git describe --tags --abbrev=0 2>/dev/null)
@ -9,12 +10,13 @@ ifdef VERSION
endif endif
DOCKER_VERSION ?= git-${GIT_SHA} DOCKER_VERSION ?= git-${GIT_SHA}
BINARY_VERSION ?= ${GIT_TAG}+${GIT_SHA} BINARY_VERSION ?= ${GIT_TAG}-${GIT_SHA}
IMAGE := ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${SHORT_NAME}:${DOCKER_VERSION} IMAGE := ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${SHORT_NAME}:${DOCKER_VERSION}
MUTABLE_IMAGE := ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${SHORT_NAME}:${MUTABLE_VERSION} MUTABLE_IMAGE := ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${SHORT_NAME}:${MUTABLE_VERSION}
LDFLAGS += -X k8s.io/helm/pkg/version.Version=${BINARY_VERSION} LDFLAGS += -X k8s.io/helm/pkg/version.BuildMetadata=${BINARY_VERSION}
LDFLAGS += -X k8s.io/helm/pkg/version.GitCommit=${GIT_COMMIT}
DOCKER_PUSH = docker push DOCKER_PUSH = docker push
ifeq ($(DOCKER_REGISTRY),gcr.io) ifeq ($(DOCKER_REGISTRY),gcr.io)

Loading…
Cancel
Save