feat(*): allow custom labels to be applied to the release configmap

pull/2907/head
Matt Tucker 8 years ago
parent 5ed2d6bddb
commit a605a96146

@ -34,4 +34,7 @@ message Info {
// Description is human-friendly "log entry" about this release.
string Description = 5;
// Labels are a list of strings associated with this release.
map<string, string> Labels = 6;
}

@ -209,6 +209,8 @@ message UpdateReleaseRequest {
bool reuse_values = 10;
// Force resource update through delete/recreate if needed.
bool force = 11;
// labels is a set of labels to apply to the release.
map<string, string> labels = 12;
}
// UpdateReleaseResponse is the response to an update request.
@ -251,26 +253,23 @@ message InstallReleaseRequest {
// a release object nor deploy to Kubernetes. The release object returned
// in the response will be fake.
bool dry_run = 3;
// Name is the candidate release name. This must be unique to the
// namespace, otherwise the server will return an error. If it is not
// supplied, the server will autogenerate one.
string name = 4;
// DisableHooks causes the server to skip running any hooks for the install.
bool disable_hooks = 5;
// Namepace is the kubernetes namespace of the release.
string namespace = 6;
// ReuseName requests that Tiller re-uses a name, instead of erroring out.
bool reuse_name = 7;
// timeout specifies the max amount of time any kubernetes client command can run.
int64 timeout = 8;
// wait, if true, will wait until all Pods, PVCs, and Services are in a ready state
// before marking the release as successful. It will wait for as long as timeout
bool wait = 9;
// labels is a set of labels to apply to the release.
map<string, string> labels = 10;
}
// InstallReleaseResponse is the response from a release installation.

@ -117,6 +117,7 @@ type installCmd struct {
timeout int64
wait bool
repoURL string
labels []string
devel bool
certFile string
@ -189,6 +190,7 @@ func newInstallCmd(c helm.Interface, out io.Writer) *cobra.Command {
f.Int64Var(&inst.timeout, "timeout", 300, "time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks)")
f.BoolVar(&inst.wait, "wait", false, "if set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout")
f.StringVar(&inst.repoURL, "repo", "", "chart repository url where to locate the requested chart")
f.StringArrayVar(&inst.labels, "labels", []string{}, "apply a custom set of labels to the release (can specify multiple or separate values with commas: key1=val1,key2=val2)")
f.StringVar(&inst.certFile, "cert-file", "", "identify HTTPS client using this SSL certificate file")
f.StringVar(&inst.keyFile, "key-file", "", "identify HTTPS client using this SSL key file")
f.StringVar(&inst.caFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle")
@ -209,6 +211,11 @@ func (i *installCmd) run() error {
return err
}
labels, err := parseLabels(i.labels)
if err != nil {
return err
}
// If template is specified, try to run the template.
if i.nameTemplate != "" {
i.name, err = generateName(i.nameTemplate)
@ -245,7 +252,8 @@ func (i *installCmd) run() error {
helm.InstallReuseName(i.replace),
helm.InstallDisableHooks(i.disableHooks),
helm.InstallTimeout(i.timeout),
helm.InstallWait(i.wait))
helm.InstallWait(i.wait),
helm.InstallLabels(labels))
if err != nil {
return prettyError(err)
}
@ -469,3 +477,17 @@ func checkDependencies(ch *chart.Chart, reqs *chartutil.Requirements) error {
}
return nil
}
func parseLabels(input []string) (map[string]string, error) {
labelMap := make(map[string]string)
for _, labels := range input {
for _, labelString := range strings.Split(labels, ",") {
singleLabel := strings.Split(labelString, "=")
if len(singleLabel) < 2 || len(singleLabel[0]) == 0 {
return nil, fmt.Errorf("invalid label format: '%s', should be <key>=[value]", singleLabel)
}
labelMap[singleLabel[0]] = singleLabel[1]
}
}
return labelMap, nil
}

@ -73,6 +73,7 @@ type upgradeCmd struct {
reuseValues bool
wait bool
repoURL string
labels []string
devel bool
certFile string
@ -128,6 +129,7 @@ func newUpgradeCmd(client helm.Interface, out io.Writer) *cobra.Command {
f.BoolVar(&upgrade.reuseValues, "reuse-values", false, "when upgrading, reuse the last release's values, and merge in any new values. If '--reset-values' is specified, this is ignored.")
f.BoolVar(&upgrade.wait, "wait", false, "if set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. It will wait for as long as --timeout")
f.StringVar(&upgrade.repoURL, "repo", "", "chart repository url where to locate the requested chart")
f.StringArrayVar(&upgrade.labels, "labels", []string{}, "apply a custom set of labels to the release (can specify multiple or separate values with commas: key1=val1,key2=val2)")
f.StringVar(&upgrade.certFile, "cert-file", "", "identify HTTPS client using this SSL certificate file")
f.StringVar(&upgrade.keyFile, "key-file", "", "identify HTTPS client using this SSL key file")
f.StringVar(&upgrade.caFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle")
@ -178,6 +180,11 @@ func (u *upgradeCmd) run() error {
return err
}
labels, err := parseLabels(u.labels)
if err != nil {
return err
}
// Check chart requirements to make sure all dependencies are present in /charts
if ch, err := chartutil.Load(chartPath); err == nil {
if req, err := chartutil.LoadRequirements(ch); err == nil {
@ -202,7 +209,8 @@ func (u *upgradeCmd) run() error {
helm.UpgradeTimeout(u.timeout),
helm.ResetValues(u.resetValues),
helm.ReuseValues(u.reuseValues),
helm.UpgradeWait(u.wait))
helm.UpgradeWait(u.wait),
helm.UpgradeLabels(labels))
if err != nil {
return fmt.Errorf("UPGRADE FAILED: %v", prettyError(err))
}

@ -74,6 +74,7 @@ helm install [CHART]
--dry-run simulate an install
--key-file string identify HTTPS client using this SSL key file
--keyring string location of public keys used for verification (default "~/.gnupg/pubring.gpg")
--labels stringArray apply a custom set of labels to the release (can specify multiple or separate values with commas: key1=val1,key2=val2)
-n, --name string release name. If unspecified, it will autogenerate one for you
--name-template string specify template used to name the release
--namespace string namespace to install the release into. Defaults to the current kube config namespace.
@ -106,4 +107,4 @@ helm install [CHART]
### SEE ALSO
* [helm](helm.md) - The Helm package manager for Kubernetes.
###### Auto generated by spf13/cobra on 15-Aug-2017
###### Auto generated by spf13/cobra on 6-Sep-2017

@ -44,6 +44,7 @@ helm upgrade [RELEASE] [CHART]
-i, --install if a release by this name doesn't already exist, run an install
--key-file string identify HTTPS client using this SSL key file
--keyring string path to the keyring that contains public signing keys (default "~/.gnupg/pubring.gpg")
--labels stringArray apply a custom set of labels to the release (can specify multiple or separate values with commas: key1=val1,key2=val2)
--namespace string namespace to install the release into (only used if --install is set). Defaults to the current kube config namespace
--no-hooks disable pre/post upgrade hooks
--recreate-pods performs pods restart for the resource if applicable
@ -76,4 +77,4 @@ helm upgrade [RELEASE] [CHART]
### SEE ALSO
* [helm](helm.md) - The Helm package manager for Kubernetes.
###### Auto generated by spf13/cobra on 15-Aug-2017
###### Auto generated by spf13/cobra on 6-Sep-2017

@ -87,6 +87,7 @@ func (h *Client) InstallReleaseFromChart(chart *chart.Chart, ns string, opts ...
req.DryRun = h.opts.dryRun
req.DisableHooks = h.opts.disableHooks
req.ReuseName = h.opts.reuseName
req.Labels = h.opts.labels
ctx := NewContext()
if h.opts.before != nil {
@ -162,6 +163,7 @@ func (h *Client) UpdateReleaseFromChart(rlsName string, chart *chart.Chart, opts
req.Force = h.opts.force
req.ResetValues = h.opts.resetValues
req.ReuseValues = h.opts.reuseValues
req.Labels = h.opts.labels
ctx := NewContext()
if h.opts.before != nil {

@ -103,6 +103,7 @@ func TestInstallRelease_VerifyOptions(t *testing.T) {
var chartName = "alpine"
var chartPath = filepath.Join(chartsDir, chartName)
var overrides = []byte("key1=value1,key2=value2")
var labels = map[string]string{"label1": "value1", "label2": "value2"}
// Expected InstallReleaseRequest message
exp := &tpb.InstallReleaseRequest{
@ -113,6 +114,7 @@ func TestInstallRelease_VerifyOptions(t *testing.T) {
DisableHooks: disableHooks,
Namespace: namespace,
ReuseName: reuseName,
Labels: labels,
}
// Options used in InstallRelease
@ -122,6 +124,7 @@ func TestInstallRelease_VerifyOptions(t *testing.T) {
ReleaseName(releaseName),
InstallReuseName(reuseName),
InstallDisableHooks(disableHooks),
InstallLabels(labels),
}
// BeforeCall option to intercept Helm client InstallReleaseRequest
@ -187,6 +190,7 @@ func TestUpdateRelease_VerifyOptions(t *testing.T) {
var disableHooks = true
var overrides = []byte("key1=value1,key2=value2")
var dryRun = false
var labels = map[string]string{"label1": "value1", "label2": "value2"}
// Expected UpdateReleaseRequest message
exp := &tpb.UpdateReleaseRequest{
@ -195,6 +199,7 @@ func TestUpdateRelease_VerifyOptions(t *testing.T) {
Values: &cpb.Config{Raw: string(overrides)},
DryRun: dryRun,
DisableHooks: disableHooks,
Labels: labels,
}
// Options used in UpdateRelease
@ -202,6 +207,7 @@ func TestUpdateRelease_VerifyOptions(t *testing.T) {
UpgradeDryRun(dryRun),
UpdateValueOverrides(overrides),
UpgradeDisableHooks(disableHooks),
UpgradeLabels(labels),
}
// BeforeCall option to intercept Helm client UpdateReleaseRequest

@ -78,6 +78,8 @@ type options struct {
reuseValues bool
// release test options are applied directly to the test release history request
testReq rls.TestReleaseRequest
// labels are a list of labels to apply to the release configmap
labels map[string]string
}
// Host specifies the host address of the Tiller release server, (default = ":44134").
@ -187,6 +189,18 @@ func InstallTimeout(timeout int64) InstallOption {
}
}
// InstallLabels specifies a map of labels (key->value) to add to the release labels
func InstallLabels(labels map[string]string) InstallOption {
return func(opts *options) {
if len(opts.labels) == 0 {
opts.labels = make(map[string]string)
}
for key, value := range labels {
opts.labels[key] = value
}
}
}
// UpgradeTimeout specifies the number of seconds before kubernetes calls timeout
func UpgradeTimeout(timeout int64) UpdateOption {
return func(opts *options) {
@ -369,6 +383,18 @@ func UpgradeForce(force bool) UpdateOption {
}
}
// UpgradeLabels specifies a map of labels (key->value) to add to the release labels
func UpgradeLabels(labels map[string]string) UpdateOption {
return func(opts *options) {
if len(opts.labels) == 0 {
opts.labels = make(map[string]string)
}
for key, value := range labels {
opts.labels[key] = value
}
}
}
// ContentOption allows setting optional attributes when
// performing a GetReleaseContent tiller rpc.
type ContentOption func(*options)

@ -22,6 +22,8 @@ type Info struct {
Deleted *google_protobuf.Timestamp `protobuf:"bytes,4,opt,name=deleted" json:"deleted,omitempty"`
// Description is human-friendly "log entry" about this release.
Description string `protobuf:"bytes,5,opt,name=Description" json:"Description,omitempty"`
// Labels are a list of strings associated with this release.
Labels map[string]string `protobuf:"bytes,6,rep,name=Labels" json:"Labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (m *Info) Reset() { *m = Info{} }
@ -64,6 +66,13 @@ func (m *Info) GetDescription() string {
return ""
}
func (m *Info) GetLabels() map[string]string {
if m != nil {
return m.Labels
}
return nil
}
func init() {
proto.RegisterType((*Info)(nil), "hapi.release.Info")
}
@ -71,20 +80,24 @@ func init() {
func init() { proto.RegisterFile("hapi/release/info.proto", fileDescriptor1) }
var fileDescriptor1 = []byte{
// 235 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x8f, 0x31, 0x4f, 0xc3, 0x30,
0x10, 0x85, 0x95, 0x52, 0x5a, 0xd5, 0x6d, 0x19, 0x2c, 0x24, 0x42, 0x16, 0x22, 0xa6, 0x0e, 0xc8,
0x91, 0x80, 0x1d, 0x81, 0xba, 0xb0, 0x06, 0x26, 0x16, 0xe4, 0xe2, 0x73, 0xb1, 0xe4, 0xe6, 0x2c,
0xfb, 0x3a, 0xf0, 0x2f, 0xf8, 0xc9, 0xa8, 0xb6, 0x83, 0xd2, 0xa9, 0xab, 0xbf, 0xf7, 0x3e, 0xbf,
0x63, 0x57, 0xdf, 0xd2, 0x99, 0xc6, 0x83, 0x05, 0x19, 0xa0, 0x31, 0x9d, 0x46, 0xe1, 0x3c, 0x12,
0xf2, 0xc5, 0x01, 0x88, 0x0c, 0xaa, 0x9b, 0x2d, 0xe2, 0xd6, 0x42, 0x13, 0xd9, 0x66, 0xaf, 0x1b,
0x32, 0x3b, 0x08, 0x24, 0x77, 0x2e, 0xc5, 0xab, 0xeb, 0x23, 0x4f, 0x20, 0x49, 0xfb, 0x90, 0xd0,
0xed, 0xef, 0x88, 0x8d, 0x5f, 0x3b, 0x8d, 0xfc, 0x8e, 0x4d, 0x12, 0x28, 0x8b, 0xba, 0x58, 0xcd,
0xef, 0x2f, 0xc5, 0xf0, 0x0f, 0xf1, 0x16, 0x59, 0x9b, 0x33, 0xfc, 0x99, 0x5d, 0x68, 0xe3, 0x03,
0x7d, 0x2a, 0x70, 0x16, 0x7f, 0x40, 0x95, 0xa3, 0xd8, 0xaa, 0x44, 0xda, 0x22, 0xfa, 0x2d, 0xe2,
0xbd, 0xdf, 0xd2, 0x2e, 0x63, 0x63, 0x9d, 0x0b, 0xfc, 0x89, 0x2d, 0xad, 0x1c, 0x1a, 0xce, 0x4e,
0x1a, 0x16, 0x87, 0xc2, 0xbf, 0xe0, 0x91, 0x4d, 0x15, 0x58, 0x20, 0x50, 0xe5, 0xf8, 0x64, 0xb5,
0x8f, 0xf2, 0x9a, 0xcd, 0xd7, 0x10, 0xbe, 0xbc, 0x71, 0x64, 0xb0, 0x2b, 0xcf, 0xeb, 0x62, 0x35,
0x6b, 0x87, 0x4f, 0x2f, 0xb3, 0x8f, 0x69, 0xbe, 0x7a, 0x33, 0x89, 0xa6, 0x87, 0xbf, 0x00, 0x00,
0x00, 0xff, 0xff, 0x1a, 0x52, 0x8f, 0x9c, 0x89, 0x01, 0x00, 0x00,
// 298 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0xc1, 0x4b, 0xfb, 0x30,
0x1c, 0xc5, 0xe9, 0xba, 0x75, 0x34, 0xdd, 0x7e, 0xfc, 0x08, 0x03, 0x6b, 0x0f, 0x5a, 0x3c, 0xf5,
0x20, 0x29, 0x4c, 0x11, 0xf5, 0x22, 0xca, 0x3c, 0x08, 0x9e, 0xa2, 0x27, 0x2f, 0x92, 0xda, 0x6f,
0x67, 0x30, 0x6b, 0x4a, 0x93, 0x0a, 0x3d, 0xfb, 0x8f, 0x4b, 0x93, 0x56, 0xba, 0xd3, 0x6e, 0xed,
0xf7, 0xf3, 0xde, 0xcb, 0xe3, 0xa1, 0xa3, 0x4f, 0x56, 0xf1, 0xb4, 0x06, 0x01, 0x4c, 0x41, 0xca,
0xcb, 0x42, 0x92, 0xaa, 0x96, 0x5a, 0xe2, 0x45, 0x07, 0x48, 0x0f, 0xa2, 0xd3, 0xad, 0x94, 0x5b,
0x01, 0xa9, 0x61, 0x59, 0x53, 0xa4, 0x9a, 0xef, 0x40, 0x69, 0xb6, 0xab, 0xac, 0x3c, 0x3a, 0xde,
0xcb, 0x51, 0x9a, 0xe9, 0x46, 0x59, 0x74, 0xf6, 0xe3, 0xa2, 0xe9, 0x53, 0x59, 0x48, 0x7c, 0x8e,
0x3c, 0x0b, 0x42, 0x27, 0x76, 0x92, 0x60, 0xbd, 0x22, 0xe3, 0x37, 0xc8, 0x8b, 0x61, 0xb4, 0xd7,
0xe0, 0x7b, 0xf4, 0xaf, 0xe0, 0xb5, 0xd2, 0xef, 0x39, 0x54, 0x42, 0xb6, 0x90, 0x87, 0x13, 0xe3,
0x8a, 0x88, 0xed, 0x42, 0x86, 0x2e, 0xe4, 0x75, 0xe8, 0x42, 0x97, 0xc6, 0xb1, 0xe9, 0x0d, 0xf8,
0x0e, 0x2d, 0x05, 0x1b, 0x27, 0xb8, 0x07, 0x13, 0x16, 0x9d, 0xe1, 0x2f, 0xe0, 0x12, 0xcd, 0x73,
0x10, 0xa0, 0x21, 0x0f, 0xa7, 0x07, 0xad, 0x83, 0x14, 0xc7, 0x28, 0xd8, 0x80, 0xfa, 0xa8, 0x79,
0xa5, 0xb9, 0x2c, 0xc3, 0x59, 0xec, 0x24, 0x3e, 0x1d, 0x9f, 0xf0, 0x15, 0xf2, 0x9e, 0x59, 0x06,
0x42, 0x85, 0x5e, 0xec, 0x26, 0xc1, 0xfa, 0x64, 0x7f, 0x89, 0x6e, 0x2d, 0x62, 0x05, 0x8f, 0xa5,
0xae, 0x5b, 0xda, 0xab, 0xa3, 0x1b, 0x14, 0x8c, 0xce, 0xf8, 0x3f, 0x72, 0xbf, 0xa0, 0x35, 0x6b,
0xfa, 0xb4, 0xfb, 0xc4, 0x2b, 0x34, 0xfb, 0x66, 0xa2, 0x01, 0xb3, 0x95, 0x4f, 0xed, 0xcf, 0xed,
0xe4, 0xda, 0x79, 0xf0, 0xdf, 0xe6, 0x7d, 0x7c, 0xe6, 0x99, 0xf2, 0x17, 0xbf, 0x01, 0x00, 0x00,
0xff, 0xff, 0x0b, 0x0e, 0xb2, 0x17, 0xfc, 0x01, 0x00, 0x00,
}

@ -376,6 +376,8 @@ type UpdateReleaseRequest struct {
ReuseValues bool `protobuf:"varint,10,opt,name=reuse_values,json=reuseValues" json:"reuse_values,omitempty"`
// Force resource update through delete/recreate if needed.
Force bool `protobuf:"varint,11,opt,name=force" json:"force,omitempty"`
// labels is a set of labels to apply to the release.
Labels map[string]string `protobuf:"bytes,12,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (m *UpdateReleaseRequest) Reset() { *m = UpdateReleaseRequest{} }
@ -460,6 +462,13 @@ func (m *UpdateReleaseRequest) GetForce() bool {
return false
}
func (m *UpdateReleaseRequest) GetLabels() map[string]string {
if m != nil {
return m.Labels
}
return nil
}
// UpdateReleaseResponse is the response to an update request.
type UpdateReleaseResponse struct {
Release *hapi_release5.Release `protobuf:"bytes,1,opt,name=release" json:"release,omitempty"`
@ -600,6 +609,8 @@ type InstallReleaseRequest struct {
// wait, if true, will wait until all Pods, PVCs, and Services are in a ready state
// before marking the release as successful. It will wait for as long as timeout
Wait bool `protobuf:"varint,9,opt,name=wait" json:"wait,omitempty"`
// labels is a set of labels to apply to the release.
Labels map[string]string `protobuf:"bytes,10,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (m *InstallReleaseRequest) Reset() { *m = InstallReleaseRequest{} }
@ -670,6 +681,13 @@ func (m *InstallReleaseRequest) GetWait() bool {
return false
}
func (m *InstallReleaseRequest) GetLabels() map[string]string {
if m != nil {
return m.Labels
}
return nil
}
// InstallReleaseResponse is the response from a release installation.
type InstallReleaseResponse struct {
Release *hapi_release5.Release `protobuf:"bytes,1,opt,name=release" json:"release,omitempty"`
@ -1368,82 +1386,86 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("hapi/services/tiller.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 1217 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xdd, 0x6e, 0xe3, 0xc4,
0x17, 0xaf, 0xf3, 0x9d, 0x93, 0x36, 0xff, 0x74, 0x9a, 0xb6, 0xae, 0xff, 0x0b, 0x2a, 0x46, 0xb0,
0xd9, 0x85, 0x4d, 0x21, 0x70, 0x83, 0x84, 0x90, 0xba, 0xdd, 0xa8, 0x2d, 0x94, 0xae, 0xe4, 0x6c,
0x17, 0x09, 0x01, 0x91, 0x9b, 0x4c, 0x5a, 0xb3, 0x8e, 0x27, 0x78, 0xc6, 0x65, 0x7b, 0xcb, 0x1d,
0x8f, 0xc2, 0x5b, 0xf0, 0x1e, 0x5c, 0xc2, 0x83, 0x20, 0xcf, 0x87, 0xeb, 0x49, 0xed, 0xd6, 0xf4,
0x26, 0x9e, 0x99, 0xf3, 0xfd, 0x3b, 0x67, 0xce, 0x9c, 0x80, 0x75, 0xe9, 0x2e, 0xbc, 0x3d, 0x8a,
0xc3, 0x2b, 0x6f, 0x82, 0xe9, 0x1e, 0xf3, 0x7c, 0x1f, 0x87, 0xfd, 0x45, 0x48, 0x18, 0x41, 0xdd,
0x98, 0xd6, 0x57, 0xb4, 0xbe, 0xa0, 0x59, 0x5b, 0x5c, 0x62, 0x72, 0xe9, 0x86, 0x4c, 0xfc, 0x0a,
0x6e, 0x6b, 0x3b, 0x7d, 0x4e, 0x82, 0x99, 0x77, 0x21, 0x09, 0xc2, 0x44, 0x88, 0x7d, 0xec, 0x52,
0xac, 0xbe, 0x9a, 0x90, 0xa2, 0x79, 0xc1, 0x8c, 0x48, 0xc2, 0xff, 0x35, 0x02, 0xc3, 0x94, 0x8d,
0xc3, 0x28, 0x90, 0xc4, 0x1d, 0x8d, 0x48, 0x99, 0xcb, 0x22, 0xaa, 0x19, 0xbb, 0xc2, 0x21, 0xf5,
0x48, 0xa0, 0xbe, 0x82, 0x66, 0xff, 0x59, 0x82, 0x8d, 0x13, 0x8f, 0x32, 0x47, 0x08, 0x52, 0x07,
0xff, 0x12, 0x61, 0xca, 0x50, 0x17, 0xaa, 0xbe, 0x37, 0xf7, 0x98, 0x69, 0xec, 0x1a, 0xbd, 0xb2,
0x23, 0x36, 0x68, 0x0b, 0x6a, 0x64, 0x36, 0xa3, 0x98, 0x99, 0xa5, 0x5d, 0xa3, 0xd7, 0x74, 0xe4,
0x0e, 0x7d, 0x05, 0x75, 0x4a, 0x42, 0x36, 0x3e, 0xbf, 0x36, 0xcb, 0xbb, 0x46, 0xaf, 0x3d, 0xf8,
0xa0, 0x9f, 0x85, 0x53, 0x3f, 0xb6, 0x34, 0x22, 0x21, 0xeb, 0xc7, 0x3f, 0xcf, 0xaf, 0x9d, 0x1a,
0xe5, 0xdf, 0x58, 0xef, 0xcc, 0xf3, 0x19, 0x0e, 0xcd, 0x8a, 0xd0, 0x2b, 0x76, 0xe8, 0x10, 0x80,
0xeb, 0x25, 0xe1, 0x14, 0x87, 0x66, 0x95, 0xab, 0xee, 0x15, 0x50, 0xfd, 0x32, 0xe6, 0x77, 0x9a,
0x54, 0x2d, 0xd1, 0x97, 0xb0, 0x2a, 0x20, 0x19, 0x4f, 0xc8, 0x14, 0x53, 0xb3, 0xb6, 0x5b, 0xee,
0xb5, 0x07, 0x3b, 0x42, 0x95, 0x82, 0x7f, 0x24, 0x40, 0x3b, 0x20, 0x53, 0xec, 0xb4, 0x04, 0x7b,
0xbc, 0xa6, 0xe8, 0x11, 0x34, 0x03, 0x77, 0x8e, 0xe9, 0xc2, 0x9d, 0x60, 0xb3, 0xce, 0x3d, 0xbc,
0x39, 0xb0, 0x7f, 0x82, 0x86, 0x32, 0x6e, 0x0f, 0xa0, 0x26, 0x42, 0x43, 0x2d, 0xa8, 0x9f, 0x9d,
0x7e, 0x73, 0xfa, 0xf2, 0xbb, 0xd3, 0xce, 0x0a, 0x6a, 0x40, 0xe5, 0x74, 0xff, 0xdb, 0x61, 0xc7,
0x40, 0xeb, 0xb0, 0x76, 0xb2, 0x3f, 0x7a, 0x35, 0x76, 0x86, 0x27, 0xc3, 0xfd, 0xd1, 0xf0, 0x45,
0xa7, 0x64, 0xbf, 0x0b, 0xcd, 0xc4, 0x67, 0x54, 0x87, 0xf2, 0xfe, 0xe8, 0x40, 0x88, 0xbc, 0x18,
0x8e, 0x0e, 0x3a, 0x86, 0xfd, 0xbb, 0x01, 0x5d, 0x3d, 0x45, 0x74, 0x41, 0x02, 0x8a, 0xe3, 0x1c,
0x4d, 0x48, 0x14, 0x24, 0x39, 0xe2, 0x1b, 0x84, 0xa0, 0x12, 0xe0, 0xb7, 0x2a, 0x43, 0x7c, 0x1d,
0x73, 0x32, 0xc2, 0x5c, 0x9f, 0x67, 0xa7, 0xec, 0x88, 0x0d, 0xfa, 0x14, 0x1a, 0x32, 0x74, 0x6a,
0x56, 0x76, 0xcb, 0xbd, 0xd6, 0x60, 0x53, 0x07, 0x44, 0x5a, 0x74, 0x12, 0x36, 0xfb, 0x10, 0xb6,
0x0f, 0xb1, 0xf2, 0x44, 0xe0, 0xa5, 0x2a, 0x26, 0xb6, 0xeb, 0xce, 0x31, 0x77, 0x26, 0xb6, 0xeb,
0xce, 0x31, 0x32, 0xa1, 0x2e, 0xcb, 0x8d, 0xbb, 0x53, 0x75, 0xd4, 0xd6, 0x66, 0x60, 0xde, 0x56,
0x24, 0xe3, 0xca, 0xd2, 0xf4, 0x21, 0x54, 0xe2, 0x9b, 0xc0, 0xd5, 0xb4, 0x06, 0x48, 0xf7, 0xf3,
0x38, 0x98, 0x11, 0x87, 0xd3, 0xf5, 0x54, 0x95, 0x97, 0x53, 0x75, 0x94, 0xb6, 0x7a, 0x40, 0x02,
0x86, 0x03, 0xf6, 0x30, 0xff, 0x4f, 0x60, 0x27, 0x43, 0x93, 0x0c, 0x60, 0x0f, 0xea, 0xd2, 0x35,
0xae, 0x2d, 0x17, 0x57, 0xc5, 0x65, 0xff, 0x5d, 0x82, 0xee, 0xd9, 0x62, 0xea, 0x32, 0xac, 0x48,
0x77, 0x38, 0xf5, 0x18, 0xaa, 0xbc, 0xa3, 0x48, 0x2c, 0xd6, 0x85, 0x6e, 0xd1, 0x76, 0x0e, 0xe2,
0x5f, 0x47, 0xd0, 0xd1, 0x53, 0xa8, 0x5d, 0xb9, 0x7e, 0x84, 0x29, 0x07, 0x22, 0x41, 0x4d, 0x72,
0xf2, 0x76, 0xe4, 0x48, 0x0e, 0xb4, 0x0d, 0xf5, 0x69, 0x78, 0x1d, 0xf7, 0x13, 0x7e, 0x05, 0x1b,
0x4e, 0x6d, 0x1a, 0x5e, 0x3b, 0x51, 0x80, 0xde, 0x87, 0xb5, 0xa9, 0x47, 0xdd, 0x73, 0x1f, 0x8f,
0x2f, 0x09, 0x79, 0x43, 0xf9, 0x2d, 0x6c, 0x38, 0xab, 0xf2, 0xf0, 0x28, 0x3e, 0x43, 0x56, 0x5c,
0x49, 0x93, 0x10, 0xbb, 0x0c, 0x9b, 0x35, 0x4e, 0x4f, 0xf6, 0x31, 0x86, 0xcc, 0x9b, 0x63, 0x12,
0x31, 0x7e, 0x75, 0xca, 0x8e, 0xda, 0xa2, 0xf7, 0x60, 0x35, 0xc4, 0x14, 0xb3, 0xb1, 0xf4, 0xb2,
0xc1, 0x25, 0x5b, 0xfc, 0xec, 0xb5, 0x70, 0x0b, 0x41, 0xe5, 0x57, 0xd7, 0x63, 0x66, 0x93, 0x93,
0xf8, 0x5a, 0x88, 0x45, 0x14, 0x2b, 0x31, 0x50, 0x62, 0x11, 0xc5, 0x52, 0xac, 0x0b, 0xd5, 0x19,
0x09, 0x27, 0xd8, 0x6c, 0x71, 0x9a, 0xd8, 0xd8, 0x47, 0xb0, 0xb9, 0x04, 0xf2, 0x43, 0xf3, 0xf5,
0x8f, 0x01, 0x5b, 0x0e, 0xf1, 0xfd, 0x73, 0x77, 0xf2, 0xa6, 0x40, 0xc6, 0x52, 0xe0, 0x96, 0xee,
0x06, 0xb7, 0x9c, 0x01, 0x6e, 0xaa, 0x08, 0x2b, 0x5a, 0x11, 0x6a, 0xb0, 0x57, 0xf3, 0x61, 0xaf,
0xe9, 0xb0, 0x2b, 0x4c, 0xeb, 0x29, 0x4c, 0x13, 0xc0, 0x1a, 0x69, 0xc0, 0xbe, 0x86, 0xed, 0x5b,
0x51, 0x3e, 0x14, 0xb2, 0x3f, 0x4a, 0xb0, 0x79, 0x1c, 0x50, 0xe6, 0xfa, 0xfe, 0x12, 0x62, 0x49,
0x3d, 0x1b, 0x85, 0xeb, 0xb9, 0xf4, 0x5f, 0xea, 0xb9, 0xac, 0x41, 0xae, 0xf2, 0x53, 0x49, 0xe5,
0xa7, 0x50, 0x8d, 0x6b, 0x9d, 0xa5, 0xb6, 0xd4, 0x59, 0xd0, 0x3b, 0x00, 0xa2, 0x28, 0xb9, 0x72,
0x01, 0x6d, 0x93, 0x9f, 0x9c, 0xca, 0x46, 0xa2, 0xb2, 0xd1, 0xc8, 0xce, 0x46, 0xaa, 0xc2, 0xed,
0x63, 0xd8, 0x5a, 0x86, 0xea, 0xa1, 0xb0, 0xff, 0x66, 0xc0, 0xf6, 0x59, 0xe0, 0x65, 0x02, 0x9f,
0x55, 0xaa, 0xb7, 0xa0, 0x28, 0x65, 0x40, 0xd1, 0x85, 0xea, 0x22, 0x0a, 0x2f, 0xb0, 0x84, 0x56,
0x6c, 0xd2, 0x31, 0x56, 0xb4, 0x18, 0xed, 0x31, 0x98, 0xb7, 0x7d, 0x78, 0x60, 0x44, 0xb1, 0xd7,
0xc9, 0x4b, 0xd0, 0x14, 0x5d, 0xdf, 0xde, 0x80, 0xf5, 0x43, 0xcc, 0x5e, 0x8b, 0x6b, 0x21, 0xc3,
0xb3, 0x87, 0x80, 0xd2, 0x87, 0x37, 0xf6, 0xe4, 0x91, 0x6e, 0x4f, 0x8d, 0x45, 0x8a, 0x5f, 0x71,
0xd9, 0x5f, 0x70, 0xdd, 0x47, 0x1e, 0x65, 0x24, 0xbc, 0xbe, 0x0b, 0xba, 0x0e, 0x94, 0xe7, 0xee,
0x5b, 0xf9, 0x50, 0xc4, 0x4b, 0xfb, 0x90, 0x7b, 0x90, 0x88, 0x4a, 0x0f, 0xd2, 0xcf, 0xae, 0x51,
0xec, 0xd9, 0xfd, 0x01, 0xd0, 0x2b, 0x9c, 0x4c, 0x00, 0xf7, 0xbc, 0x58, 0x2a, 0x09, 0x25, 0xbd,
0xd0, 0x4c, 0xa8, 0x4f, 0x7c, 0xec, 0x06, 0xd1, 0x42, 0xa6, 0x4d, 0x6d, 0xed, 0x1f, 0x61, 0x43,
0xd3, 0x2e, 0xfd, 0x8c, 0xe3, 0xa1, 0x17, 0x52, 0x7b, 0xbc, 0x44, 0x9f, 0x43, 0x4d, 0x8c, 0x45,
0x5c, 0x77, 0x7b, 0xf0, 0x48, 0xf7, 0x9b, 0x2b, 0x89, 0x02, 0x39, 0x47, 0x39, 0x92, 0x77, 0xf0,
0x57, 0x03, 0xda, 0xea, 0xa1, 0x17, 0x43, 0x1b, 0xf2, 0x60, 0x35, 0x3d, 0xd1, 0xa0, 0x27, 0xf9,
0x33, 0xdd, 0xd2, 0x60, 0x6a, 0x3d, 0x2d, 0xc2, 0x2a, 0x22, 0xb0, 0x57, 0x3e, 0x31, 0x10, 0x85,
0xce, 0xf2, 0xa0, 0x81, 0x9e, 0x65, 0xeb, 0xc8, 0x99, 0x6c, 0xac, 0x7e, 0x51, 0x76, 0x65, 0x16,
0x5d, 0xf1, 0x9a, 0xd1, 0xa7, 0x03, 0x74, 0xaf, 0x1a, 0x7d, 0x20, 0xb1, 0xf6, 0x0a, 0xf3, 0x27,
0x76, 0x7f, 0x86, 0x35, 0xed, 0x85, 0x43, 0x39, 0x68, 0x65, 0xcd, 0x1a, 0xd6, 0x47, 0x85, 0x78,
0x13, 0x5b, 0x73, 0x68, 0xeb, 0x4d, 0x0a, 0xe5, 0x28, 0xc8, 0xec, 0xfa, 0xd6, 0xc7, 0xc5, 0x98,
0x13, 0x73, 0x14, 0x3a, 0xcb, 0x3d, 0x24, 0x2f, 0x8f, 0x39, 0xfd, 0x2e, 0x2f, 0x8f, 0x79, 0xad,
0xc9, 0x5e, 0x41, 0x2e, 0xc0, 0x4d, 0x0b, 0x41, 0x8f, 0x73, 0x13, 0xa2, 0x77, 0x1e, 0xab, 0x77,
0x3f, 0x63, 0x62, 0x62, 0x01, 0xff, 0x5b, 0x7a, 0x63, 0x51, 0x0e, 0x34, 0xd9, 0x03, 0x87, 0xf5,
0xac, 0x20, 0xf7, 0x52, 0x50, 0xb2, 0x2b, 0xdd, 0x11, 0x94, 0xde, 0xf2, 0xee, 0x08, 0x6a, 0xa9,
0xc1, 0xd9, 0x2b, 0xc8, 0x83, 0xb6, 0x13, 0x05, 0xd2, 0x74, 0xdc, 0x16, 0x50, 0x8e, 0xf4, 0xed,
0xae, 0x66, 0x3d, 0x29, 0xc0, 0x79, 0x73, 0xbf, 0x9f, 0xc3, 0xf7, 0x0d, 0xc5, 0x7a, 0x5e, 0xe3,
0xff, 0x69, 0x3f, 0xfb, 0x37, 0x00, 0x00, 0xff, 0xff, 0xf3, 0x7c, 0x9c, 0x49, 0xc1, 0x0f, 0x00,
0x00,
// 1293 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xdf, 0x73, 0xdb, 0xc4,
0x13, 0x8f, 0x2c, 0x5b, 0xb6, 0xd7, 0xa9, 0xbf, 0xee, 0xd5, 0x4d, 0x54, 0x7d, 0x0b, 0x13, 0xc4,
0x40, 0xdd, 0x96, 0x3a, 0x60, 0x18, 0xa0, 0x0c, 0xc3, 0x4c, 0x9a, 0x7a, 0x92, 0x42, 0x70, 0x66,
0xe4, 0xa6, 0xcc, 0x30, 0x80, 0x47, 0xb1, 0xcf, 0x89, 0x88, 0x2c, 0x19, 0xdd, 0x29, 0xd4, 0xaf,
0xbc, 0xf1, 0x07, 0xf1, 0xce, 0xff, 0xc1, 0x2b, 0xcf, 0xfc, 0x0d, 0x8c, 0xee, 0x87, 0xa2, 0x73,
0xe4, 0x44, 0xcd, 0xf0, 0x62, 0xdd, 0xdd, 0xee, 0xed, 0xaf, 0xcf, 0xee, 0xde, 0x1a, 0xac, 0x53,
0x77, 0xee, 0x6d, 0x13, 0x1c, 0x9d, 0x7b, 0x63, 0x4c, 0xb6, 0xa9, 0xe7, 0xfb, 0x38, 0xea, 0xce,
0xa3, 0x90, 0x86, 0xa8, 0x9d, 0xd0, 0xba, 0x92, 0xd6, 0xe5, 0x34, 0x6b, 0x83, 0xdd, 0x18, 0x9f,
0xba, 0x11, 0xe5, 0xbf, 0x9c, 0xdb, 0xda, 0xcc, 0x9e, 0x87, 0xc1, 0xd4, 0x3b, 0x11, 0x04, 0xae,
0x22, 0xc2, 0x3e, 0x76, 0x09, 0x96, 0x5f, 0xe5, 0x92, 0xa4, 0x79, 0xc1, 0x34, 0x14, 0x84, 0xff,
0x2b, 0x04, 0x8a, 0x09, 0x1d, 0x45, 0x71, 0x20, 0x88, 0xf7, 0x14, 0x22, 0xa1, 0x2e, 0x8d, 0x89,
0xa2, 0xec, 0x1c, 0x47, 0xc4, 0x0b, 0x03, 0xf9, 0xe5, 0x34, 0xfb, 0xcf, 0x12, 0xdc, 0x39, 0xf0,
0x08, 0x75, 0xf8, 0x45, 0xe2, 0xe0, 0x5f, 0x62, 0x4c, 0x28, 0x6a, 0x43, 0xc5, 0xf7, 0x66, 0x1e,
0x35, 0xb5, 0x2d, 0xad, 0xa3, 0x3b, 0x7c, 0x83, 0x36, 0xc0, 0x08, 0xa7, 0x53, 0x82, 0xa9, 0x59,
0xda, 0xd2, 0x3a, 0x75, 0x47, 0xec, 0xd0, 0x57, 0x50, 0x25, 0x61, 0x44, 0x47, 0xc7, 0x0b, 0x53,
0xdf, 0xd2, 0x3a, 0xcd, 0xde, 0x7b, 0xdd, 0xbc, 0x38, 0x75, 0x13, 0x4d, 0xc3, 0x30, 0xa2, 0xdd,
0xe4, 0xe7, 0xd9, 0xc2, 0x31, 0x08, 0xfb, 0x26, 0x72, 0xa7, 0x9e, 0x4f, 0x71, 0x64, 0x96, 0xb9,
0x5c, 0xbe, 0x43, 0x7b, 0x00, 0x4c, 0x6e, 0x18, 0x4d, 0x70, 0x64, 0x56, 0x98, 0xe8, 0x4e, 0x01,
0xd1, 0x87, 0x09, 0xbf, 0x53, 0x27, 0x72, 0x89, 0xbe, 0x84, 0x75, 0x1e, 0x92, 0xd1, 0x38, 0x9c,
0x60, 0x62, 0x1a, 0x5b, 0x7a, 0xa7, 0xd9, 0xbb, 0xc7, 0x45, 0xc9, 0xf0, 0x0f, 0x79, 0xd0, 0x76,
0xc3, 0x09, 0x76, 0x1a, 0x9c, 0x3d, 0x59, 0x13, 0x74, 0x1f, 0xea, 0x81, 0x3b, 0xc3, 0x64, 0xee,
0x8e, 0xb1, 0x59, 0x65, 0x16, 0x5e, 0x1c, 0xd8, 0x3f, 0x41, 0x4d, 0x2a, 0xb7, 0x7b, 0x60, 0x70,
0xd7, 0x50, 0x03, 0xaa, 0x47, 0x83, 0x6f, 0x06, 0x87, 0xdf, 0x0d, 0x5a, 0x6b, 0xa8, 0x06, 0xe5,
0xc1, 0xce, 0xb7, 0xfd, 0x96, 0x86, 0x6e, 0xc3, 0xad, 0x83, 0x9d, 0xe1, 0xcb, 0x91, 0xd3, 0x3f,
0xe8, 0xef, 0x0c, 0xfb, 0xcf, 0x5b, 0x25, 0xfb, 0x6d, 0xa8, 0xa7, 0x36, 0xa3, 0x2a, 0xe8, 0x3b,
0xc3, 0x5d, 0x7e, 0xe5, 0x79, 0x7f, 0xb8, 0xdb, 0xd2, 0xec, 0xdf, 0x35, 0x68, 0xab, 0x10, 0x91,
0x79, 0x18, 0x10, 0x9c, 0x60, 0x34, 0x0e, 0xe3, 0x20, 0xc5, 0x88, 0x6d, 0x10, 0x82, 0x72, 0x80,
0x5f, 0x4b, 0x84, 0xd8, 0x3a, 0xe1, 0xa4, 0x21, 0x75, 0x7d, 0x86, 0x8e, 0xee, 0xf0, 0x0d, 0xfa,
0x08, 0x6a, 0xc2, 0x75, 0x62, 0x96, 0xb7, 0xf4, 0x4e, 0xa3, 0x77, 0x57, 0x0d, 0x88, 0xd0, 0xe8,
0xa4, 0x6c, 0xf6, 0x1e, 0x6c, 0xee, 0x61, 0x69, 0x09, 0x8f, 0x97, 0xcc, 0x98, 0x44, 0xaf, 0x3b,
0xc3, 0xcc, 0x98, 0x44, 0xaf, 0x3b, 0xc3, 0xc8, 0x84, 0xaa, 0x48, 0x37, 0x66, 0x4e, 0xc5, 0x91,
0x5b, 0x9b, 0x82, 0x79, 0x59, 0x90, 0xf0, 0x2b, 0x4f, 0xd2, 0xfb, 0x50, 0x4e, 0x2a, 0x81, 0x89,
0x69, 0xf4, 0x90, 0x6a, 0xe7, 0x8b, 0x60, 0x1a, 0x3a, 0x8c, 0xae, 0x42, 0xa5, 0x2f, 0x43, 0xb5,
0x9f, 0xd5, 0xba, 0x1b, 0x06, 0x14, 0x07, 0xf4, 0x66, 0xf6, 0x1f, 0xc0, 0xbd, 0x1c, 0x49, 0xc2,
0x81, 0x6d, 0xa8, 0x0a, 0xd3, 0x98, 0xb4, 0x95, 0x71, 0x95, 0x5c, 0xf6, 0x3f, 0x3a, 0xb4, 0x8f,
0xe6, 0x13, 0x97, 0x62, 0x49, 0xba, 0xc2, 0xa8, 0x07, 0x50, 0x61, 0x1d, 0x45, 0xc4, 0xe2, 0x36,
0x97, 0xcd, 0xdb, 0xce, 0x6e, 0xf2, 0xeb, 0x70, 0x3a, 0x7a, 0x04, 0xc6, 0xb9, 0xeb, 0xc7, 0x98,
0xb0, 0x40, 0xa4, 0x51, 0x13, 0x9c, 0xac, 0x1d, 0x39, 0x82, 0x03, 0x6d, 0x42, 0x75, 0x12, 0x2d,
0x92, 0x7e, 0xc2, 0x4a, 0xb0, 0xe6, 0x18, 0x93, 0x68, 0xe1, 0xc4, 0x01, 0x7a, 0x17, 0x6e, 0x4d,
0x3c, 0xe2, 0x1e, 0xfb, 0x78, 0x74, 0x1a, 0x86, 0x67, 0x84, 0x55, 0x61, 0xcd, 0x59, 0x17, 0x87,
0xfb, 0xc9, 0x19, 0xb2, 0x92, 0x4c, 0x1a, 0x47, 0xd8, 0xa5, 0xd8, 0x34, 0x18, 0x3d, 0xdd, 0x27,
0x31, 0xa4, 0xde, 0x0c, 0x87, 0x31, 0x65, 0xa5, 0xa3, 0x3b, 0x72, 0x8b, 0xde, 0x81, 0xf5, 0x08,
0x13, 0x4c, 0x47, 0xc2, 0xca, 0x1a, 0xbb, 0xd9, 0x60, 0x67, 0xaf, 0xb8, 0x59, 0x08, 0xca, 0xbf,
0xba, 0x1e, 0x35, 0xeb, 0x8c, 0xc4, 0xd6, 0xfc, 0x5a, 0x4c, 0xb0, 0xbc, 0x06, 0xf2, 0x5a, 0x4c,
0xb0, 0xb8, 0xd6, 0x86, 0xca, 0x34, 0x8c, 0xc6, 0xd8, 0x6c, 0x30, 0x1a, 0xdf, 0xa0, 0x01, 0x18,
0xbe, 0x7b, 0x8c, 0x7d, 0x62, 0xae, 0xb3, 0x6c, 0xff, 0x34, 0xbf, 0x93, 0xe4, 0x01, 0xd1, 0x3d,
0x60, 0x17, 0xfb, 0x01, 0x8d, 0x16, 0x8e, 0x90, 0x62, 0x3d, 0x85, 0x46, 0xe6, 0x18, 0xb5, 0x40,
0x3f, 0xc3, 0x0b, 0x01, 0x55, 0xb2, 0x4c, 0xcc, 0x60, 0x36, 0x8a, 0x5a, 0xe4, 0x9b, 0x2f, 0x4a,
0x9f, 0x6b, 0xf6, 0x3e, 0xdc, 0x5d, 0x52, 0x73, 0xd3, 0xd4, 0xf9, 0x5b, 0x83, 0x0d, 0x27, 0xf4,
0xfd, 0x63, 0x77, 0x7c, 0x56, 0x20, 0x79, 0x32, 0x38, 0x97, 0xae, 0xc6, 0x59, 0xcf, 0xc1, 0x39,
0x53, 0x0f, 0x65, 0xa5, 0x1e, 0x94, 0x0c, 0xa8, 0xac, 0xce, 0x00, 0x43, 0xcd, 0x00, 0x09, 0x6f,
0x35, 0x03, 0x6f, 0x8a, 0x5d, 0x2d, 0x83, 0x9d, 0xfd, 0x35, 0x6c, 0x5e, 0xf2, 0xf2, 0xa6, 0x21,
0xfb, 0x43, 0x87, 0xbb, 0x2f, 0x02, 0x42, 0x5d, 0xdf, 0x5f, 0x8a, 0x58, 0x5a, 0x5a, 0x5a, 0xe1,
0xd2, 0x2a, 0xbd, 0x49, 0x69, 0xe9, 0x4a, 0xc8, 0x25, 0x3e, 0xe5, 0x0c, 0x3e, 0x85, 0xca, 0x4d,
0x69, 0x72, 0xc6, 0x52, 0x93, 0x43, 0x6f, 0x01, 0xf0, 0xfa, 0x60, 0xc2, 0x79, 0x68, 0xeb, 0xec,
0x64, 0x20, 0x7a, 0x9a, 0x44, 0xa3, 0x96, 0x8f, 0x46, 0xb6, 0xd8, 0x0e, 0xd3, 0x9a, 0x01, 0x56,
0x33, 0x9f, 0xe5, 0xd7, 0x4c, 0x6e, 0x38, 0xff, 0xeb, 0xa2, 0x79, 0x01, 0x1b, 0xcb, 0x7a, 0x6e,
0x9a, 0x02, 0xbf, 0x69, 0xb0, 0x79, 0x14, 0x78, 0xb9, 0x49, 0x90, 0x57, 0x36, 0x97, 0x60, 0x29,
0xe5, 0xc0, 0xd2, 0x86, 0xca, 0x3c, 0x8e, 0x4e, 0xb0, 0x80, 0x99, 0x6f, 0xb2, 0xf1, 0x2e, 0x2b,
0xf1, 0xb6, 0x47, 0x60, 0x5e, 0xb6, 0xe1, 0x86, 0x1e, 0x25, 0x56, 0xa7, 0x0f, 0x64, 0x9d, 0x3f,
0x86, 0xf6, 0x1d, 0xb8, 0xbd, 0x87, 0xe9, 0x2b, 0x5e, 0xa2, 0xc2, 0x3d, 0xbb, 0x0f, 0x28, 0x7b,
0x78, 0xa1, 0x4f, 0x1c, 0xa9, 0xfa, 0xe4, 0xb4, 0x28, 0xf9, 0x25, 0x97, 0xfd, 0x94, 0xc9, 0xde,
0xf7, 0x08, 0x0d, 0xa3, 0xc5, 0x55, 0xa1, 0x6b, 0x81, 0x3e, 0x73, 0x5f, 0x8b, 0xf7, 0x33, 0x59,
0xda, 0x7b, 0xcc, 0x82, 0xf4, 0xaa, 0xb0, 0x20, 0x3b, 0x8d, 0x68, 0xc5, 0xa6, 0x91, 0x1f, 0x00,
0xbd, 0xc4, 0xe9, 0x60, 0x74, 0xcd, 0x43, 0x2e, 0x41, 0x28, 0xa9, 0x49, 0x6f, 0x42, 0x75, 0xec,
0x63, 0x37, 0x88, 0xe7, 0x02, 0x36, 0xb9, 0xb5, 0x7f, 0x84, 0x3b, 0x8a, 0x74, 0x61, 0x67, 0xe2,
0x0f, 0x39, 0x91, 0x19, 0x3b, 0x23, 0x27, 0xe8, 0x13, 0x30, 0xf8, 0xb4, 0xc8, 0x64, 0x37, 0x7b,
0xf7, 0x55, 0xbb, 0x99, 0x90, 0x38, 0x10, 0xe3, 0xa5, 0x23, 0x78, 0x7b, 0x7f, 0xd5, 0xa0, 0x29,
0xe7, 0x1f, 0x5e, 0x4d, 0xc8, 0x83, 0xf5, 0xec, 0xa0, 0x87, 0x1e, 0xae, 0x1e, 0x75, 0x97, 0xe6,
0x75, 0xeb, 0x51, 0x11, 0x56, 0xee, 0x81, 0xbd, 0xf6, 0xa1, 0x86, 0x08, 0xb4, 0x96, 0xe7, 0x2f,
0xf4, 0x24, 0x5f, 0xc6, 0x8a, 0x81, 0xcf, 0xea, 0x16, 0x65, 0x97, 0x6a, 0xd1, 0x39, 0xcb, 0x19,
0x75, 0x68, 0x42, 0xd7, 0x8a, 0x51, 0xe7, 0x34, 0x6b, 0xbb, 0x30, 0x7f, 0xaa, 0xf7, 0x67, 0xb8,
0xa5, 0xbc, 0xb6, 0xe8, 0x51, 0xf1, 0x97, 0xdf, 0x7a, 0x5c, 0x88, 0x37, 0xd5, 0x35, 0x83, 0xa6,
0xda, 0xa4, 0xd0, 0xe3, 0x37, 0x68, 0x99, 0xd6, 0x07, 0xc5, 0x98, 0x53, 0x75, 0x04, 0x5a, 0xcb,
0x3d, 0x64, 0x15, 0x8e, 0x2b, 0xfa, 0xdd, 0x2a, 0x1c, 0x57, 0xb5, 0x26, 0x7b, 0x0d, 0xb9, 0x00,
0x17, 0x2d, 0x04, 0x3d, 0x58, 0x09, 0x88, 0xda, 0x79, 0xac, 0xce, 0xf5, 0x8c, 0xa9, 0x8a, 0x39,
0xfc, 0x6f, 0xe9, 0xbd, 0x47, 0x2b, 0x42, 0x93, 0x3f, 0xfc, 0x58, 0x4f, 0x0a, 0x72, 0x2f, 0x39,
0x25, 0xba, 0xd2, 0x15, 0x4e, 0xa9, 0x2d, 0xef, 0x0a, 0xa7, 0x96, 0x1a, 0x9c, 0xbd, 0x86, 0x3c,
0x68, 0x3a, 0x71, 0x20, 0x54, 0x27, 0x6d, 0x01, 0xad, 0xb8, 0x7d, 0xb9, 0xab, 0x59, 0x0f, 0x0b,
0x70, 0x5e, 0xd4, 0xf7, 0x33, 0xf8, 0xbe, 0x26, 0x59, 0x8f, 0x0d, 0xf6, 0x57, 0xff, 0xe3, 0x7f,
0x03, 0x00, 0x00, 0xff, 0xff, 0xc6, 0xc6, 0xc1, 0xe9, 0xd8, 0x10, 0x00, 0x00,
}

@ -236,6 +236,7 @@ func (cfgmaps *ConfigMaps) Delete(key string) (rls *rspb.Release, err error) {
// "STATUS" - status of the release (see proto/hapi/release.status.pb.go for variants)
// "OWNER" - owner of the configmap, currently "TILLER".
// "NAME" - name of the release.
// ... - any custom labels applied to the release.
//
func newConfigMapsObject(key string, rls *rspb.Release, lbs labels) (*api.ConfigMap, error) {
const owner = "TILLER"
@ -256,6 +257,10 @@ func newConfigMapsObject(key string, rls *rspb.Release, lbs labels) (*api.Config
lbs.set("STATUS", rspb.Status_Code_name[int32(rls.Info.Status.Code)])
lbs.set("VERSION", strconv.Itoa(int(rls.Version)))
for labelKey, labelValue := range rls.Info.Labels {
lbs.set(labelKey, labelValue)
}
// create and return configmap object
return &api.ConfigMap{
ObjectMeta: metav1.ObjectMeta{

@ -98,6 +98,7 @@ func (s *ReleaseServer) prepareRelease(req *services.InstallReleaseRequest) (*re
LastDeployed: ts,
Status: &release.Status{Code: release.Status_UNKNOWN},
Description: fmt.Sprintf("Install failed: %s", err),
Labels: req.Labels,
},
Version: 0,
}
@ -118,6 +119,7 @@ func (s *ReleaseServer) prepareRelease(req *services.InstallReleaseRequest) (*re
LastDeployed: ts,
Status: &release.Status{Code: release.Status_PENDING_INSTALL},
Description: "Initial install underway", // Will be overwritten.
Labels: req.Labels,
},
Manifest: manifestDoc.String(),
Hooks: hooks,

Loading…
Cancel
Save