feat(policies): Update SDK/API to support setting/clearing attributes (#4385)

pull/4396/head
Louis Ruch 2 years ago committed by GitHub
parent c01b8df2a3
commit d59f089819
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,201 @@
package policies
const (
attributesField = "attributes"
deleteAfterField = "delete_after"
retainForField = "retain_for"
daysField = "days"
overridableField = "overridable"
)
func WithStoragePolicyDeleteAfter(inDeleteAfter map[string]any) Option {
return func(o *options) {
raw, ok := o.postMap[attributesField]
if !ok {
raw = interface{}(map[string]interface{}{})
}
val := raw.(map[string]interface{})
val[deleteAfterField] = inDeleteAfter
o.postMap[attributesField] = val
}
}
func DefaultStoragePolicyDeleteAfter() Option {
return func(o *options) {
raw, ok := o.postMap[attributesField]
if !ok {
raw = interface{}(map[string]interface{}{})
}
val := raw.(map[string]interface{})
val[deleteAfterField] = nil
o.postMap[attributesField] = val
}
}
func WithStoragePolicyDeleteAfterDays(inDays int32) Option {
return func(o *options) {
raw, ok := o.postMap[attributesField]
if !ok {
raw = interface{}(map[string]any{})
}
val := raw.(map[string]any)
rawDeleteAfter, ok := val[deleteAfterField]
if !ok {
rawDeleteAfter = interface{}(map[string]any{})
}
deleteAfter := rawDeleteAfter.(map[string]any)
deleteAfter[daysField] = inDays
val[deleteAfterField] = deleteAfter
o.postMap[attributesField] = val
}
}
func DefaultStoragePolicyDeleteAfterDays() Option {
return func(o *options) {
raw, ok := o.postMap[attributesField]
if !ok {
raw = interface{}(map[string]any{})
}
val := raw.(map[string]any)
rawDeleteAfter, ok := val[deleteAfterField]
if !ok {
rawDeleteAfter = interface{}(map[string]any{})
}
deleteAfter := rawDeleteAfter.(map[string]any)
deleteAfter[daysField] = 0
val[deleteAfterField] = deleteAfter
o.postMap[attributesField] = val
}
}
func WithStoragePolicyDeleteAfterOverridable(inOverridable bool) Option {
return func(o *options) {
raw, ok := o.postMap[attributesField]
if !ok {
raw = interface{}(map[string]any{})
}
val := raw.(map[string]any)
rawDeleteAfter, ok := val[deleteAfterField]
if !ok {
rawDeleteAfter = interface{}(map[string]any{})
}
deleteAfter := rawDeleteAfter.(map[string]any)
deleteAfter[overridableField] = inOverridable
val[deleteAfterField] = deleteAfter
o.postMap[attributesField] = val
}
}
func DefaultStoragePolicyDeleteAfterOverridable() Option {
return func(o *options) {
raw, ok := o.postMap[attributesField]
if !ok {
raw = interface{}(map[string]any{})
}
val := raw.(map[string]any)
rawDeleteAfter, ok := val[deleteAfterField]
if !ok {
rawDeleteAfter = interface{}(map[string]any{})
}
deleteAfter := rawDeleteAfter.(map[string]any)
deleteAfter[overridableField] = false
val[deleteAfterField] = deleteAfter
o.postMap[attributesField] = val
}
}
func WithStoragePolicyRetainFor(inDeleteAfter map[string]any) Option {
return func(o *options) {
raw, ok := o.postMap[attributesField]
if !ok {
raw = interface{}(map[string]interface{}{})
}
val := raw.(map[string]interface{})
val[retainForField] = inDeleteAfter
o.postMap[attributesField] = val
}
}
func DefaultStoragePolicyRetainFor() Option {
return func(o *options) {
raw, ok := o.postMap[attributesField]
if !ok {
raw = interface{}(map[string]interface{}{})
}
val := raw.(map[string]interface{})
val[retainForField] = nil
o.postMap[attributesField] = val
}
}
func WithStoragePolicyRetainForDays(inDays int32) Option {
return func(o *options) {
raw, ok := o.postMap[attributesField]
if !ok {
raw = interface{}(map[string]any{})
}
val := raw.(map[string]any)
rawDeleteAfter, ok := val[retainForField]
if !ok {
rawDeleteAfter = interface{}(map[string]any{})
}
deleteAfter := rawDeleteAfter.(map[string]any)
deleteAfter[daysField] = inDays
val[retainForField] = deleteAfter
o.postMap[attributesField] = val
}
}
func DefaultStoragePolicyRetainForDays() Option {
return func(o *options) {
raw, ok := o.postMap[attributesField]
if !ok {
raw = interface{}(map[string]any{})
}
val := raw.(map[string]any)
rawDeleteAfter, ok := val[retainForField]
if !ok {
rawDeleteAfter = interface{}(map[string]any{})
}
deleteAfter := rawDeleteAfter.(map[string]any)
deleteAfter[daysField] = 0
val[retainForField] = deleteAfter
o.postMap[attributesField] = val
}
}
func WithStoragePolicyRetainForOverridable(inOverridable bool) Option {
return func(o *options) {
raw, ok := o.postMap[attributesField]
if !ok {
raw = interface{}(map[string]any{})
}
val := raw.(map[string]any)
rawDeleteAfter, ok := val[retainForField]
if !ok {
rawDeleteAfter = interface{}(map[string]any{})
}
deleteAfter := rawDeleteAfter.(map[string]any)
deleteAfter[overridableField] = inOverridable
val[retainForField] = deleteAfter
o.postMap[attributesField] = val
}
}
func DefaultStoragePolicyRetainForOverridable() Option {
return func(o *options) {
raw, ok := o.postMap[attributesField]
if !ok {
raw = interface{}(map[string]any{})
}
val := raw.(map[string]any)
rawDeleteAfter, ok := val[retainForField]
if !ok {
rawDeleteAfter = interface{}(map[string]any{})
}
deleteAfter := rawDeleteAfter.(map[string]any)
deleteAfter[overridableField] = false
val[retainForField] = deleteAfter
o.postMap[attributesField] = val
}
}

@ -115,30 +115,6 @@ func DefaultAttributes() Option {
}
}
func WithStoragePolicyDeleteAfter(inDeleteAfter map[string]any) Option {
return func(o *options) {
raw, ok := o.postMap["attributes"]
if !ok {
raw = interface{}(map[string]interface{}{})
}
val := raw.(map[string]interface{})
val["delete_after"] = inDeleteAfter
o.postMap["attributes"] = val
}
}
func DefaultStoragePolicyDeleteAfter() Option {
return func(o *options) {
raw, ok := o.postMap["attributes"]
if !ok {
raw = interface{}(map[string]interface{}{})
}
val := raw.(map[string]interface{})
val["delete_after"] = nil
o.postMap["attributes"] = val
}
}
func WithDescription(inDescription string) Option {
return func(o *options) {
o.postMap["description"] = inDescription
@ -162,27 +138,3 @@ func DefaultName() Option {
o.postMap["name"] = nil
}
}
func WithStoragePolicyRetainFor(inRetainFor map[string]any) Option {
return func(o *options) {
raw, ok := o.postMap["attributes"]
if !ok {
raw = interface{}(map[string]interface{}{})
}
val := raw.(map[string]interface{})
val["retain_for"] = inRetainFor
o.postMap["attributes"] = val
}
}
func DefaultStoragePolicyRetainFor() Option {
return func(o *options) {
raw, ok := o.postMap["attributes"]
if !ok {
raw = interface{}(map[string]interface{}{})
}
val := raw.(map[string]interface{})
val["retain_for"] = nil
o.postMap["attributes"] = val
}
}

@ -11,8 +11,8 @@ import (
)
type StoragePolicyAttributes struct {
RetainFor map[string]any `json:"retain_for,omitempty"`
DeleteAfter map[string]any `json:"delete_after,omitempty"`
RetainFor *StoragePolicyRetainFor `json:"retain_for,omitempty"`
DeleteAfter *StoragePolicyDeleteAfter `json:"delete_after,omitempty"`
}
func AttributesMapToStoragePolicyAttributes(in map[string]interface{}) (*StoragePolicyAttributes, error) {

@ -0,0 +1,10 @@
// Code generated by "make api"; DO NOT EDIT.
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package policies
type StoragePolicyDeleteAfter struct {
Days int32 `json:"days,omitempty"`
Overridable bool `json:"overridable,omitempty"`
}

@ -0,0 +1,10 @@
// Code generated by "make api"; DO NOT EDIT.
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package policies
type StoragePolicyRetainFor struct {
Days int32 `json:"days,omitempty"`
Overridable bool `json:"overridable,omitempty"`
}

@ -759,25 +759,21 @@ var inputStructs = []*structInfo{
},
// Policy-related resources.
{
inProto: &policies.StoragePolicyDeleteAfter{},
outFile: "policies/storage_policy_delete_after.gen.go",
},
{
inProto: &policies.StoragePolicyRetainFor{},
outFile: "policies/storage_policy_retain_for.gen.go",
},
{
inProto: &policies.StoragePolicyAttributes{},
outFile: "policies/storage_policy_attributes.gen.go",
parentTypeName: "Policy",
subtypeName: "StoragePolicy",
subtype: "storage",
fieldOverrides: []fieldInfo{
{
Name: "RetainFor",
ProtoName: "retain_for",
FieldType: "map[string]any",
},
{
Name: "DeleteAfter",
ProtoName: "delete_after",
FieldType: "map[string]any",
},
},
templates: []*template.Template{mapstructureConversionTemplate},
templates: []*template.Template{mapstructureConversionTemplate},
},
{
inProto: &policies.Policy{},

@ -95,73 +95,54 @@ func extraStorageFlagsFuncImpl(c *StorageCommand, set *base.FlagSets, _ *base.Fl
}
func extraStorageFlagsHandlingFuncImpl(c *StorageCommand, _ *base.FlagSets, opts *[]policies.Option) bool {
rf := map[string]any{}
da := map[string]any{}
var withRetainFor, withDeleteAfter bool
switch c.flagRetainForDays {
case "":
case "null":
rf["days"] = nil
withRetainFor = true
*opts = append(*opts, policies.DefaultStoragePolicyRetainForDays())
default:
days, err := strconv.ParseInt(c.flagRetainForDays, 10, 64)
days, err := strconv.ParseInt(c.flagRetainForDays, 10, 32)
if err != nil {
c.UI.Error(fmt.Sprintf("Error parsing %q: %s", c.flagRetainForDays, err))
return false
}
rf["days"] = days
withRetainFor = true
*opts = append(*opts, policies.WithStoragePolicyRetainForDays(int32(days)))
}
switch c.flagRetainForOverridable {
case "":
case "null":
rf["overridable"] = nil
withRetainFor = true
*opts = append(*opts, policies.DefaultStoragePolicyRetainForOverridable())
default:
overridable, err := strconv.ParseBool(c.flagRetainForOverridable)
if err != nil {
c.UI.Error(fmt.Sprintf("Error parsing %q: %s", c.flagRetainForOverridable, err))
return false
}
rf["overridable"] = overridable
withRetainFor = true
*opts = append(*opts, policies.WithStoragePolicyRetainForOverridable(overridable))
}
switch c.flagDeleteAfterDays {
case "":
case "null":
da["days"] = nil
withDeleteAfter = true
*opts = append(*opts, policies.DefaultStoragePolicyDeleteAfterDays())
default:
days, err := strconv.ParseInt(c.flagDeleteAfterDays, 10, 64)
days, err := strconv.ParseInt(c.flagDeleteAfterDays, 10, 32)
if err != nil {
c.UI.Error(fmt.Sprintf("Error parsing %q: %s", c.flagDeleteAfterDays, err))
return false
}
da["days"] = days
withDeleteAfter = true
*opts = append(*opts, policies.WithStoragePolicyDeleteAfterDays(int32(days)))
}
switch c.flagDeleteAfterOverridable {
case "":
case "null":
da["overridable"] = nil
withDeleteAfter = true
*opts = append(*opts, policies.DefaultStoragePolicyDeleteAfterOverridable())
default:
overridable, err := strconv.ParseBool(c.flagDeleteAfterOverridable)
if err != nil {
c.UI.Error(fmt.Sprintf("Error parsing %q: %s", c.flagDeleteAfterOverridable, err))
return false
}
da["overridable"] = overridable
withDeleteAfter = true
}
if withRetainFor {
*opts = append(*opts, policies.WithStoragePolicyRetainFor(rf))
}
if withDeleteAfter {
*opts = append(*opts, policies.WithStoragePolicyDeleteAfter(da))
*opts = append(*opts, policies.WithStoragePolicyDeleteAfterOverridable(overridable))
}
return true

@ -75,14 +75,8 @@ message Policy {
}
message StoragePolicyAttributes {
StoragePolicyRetainFor retain_for = 10 [
json_name = "retain_for",
(custom_options.v1.generate_sdk_option) = true
];
StoragePolicyDeleteAfter delete_after = 20 [
json_name = "delete_after",
(custom_options.v1.generate_sdk_option) = true
];
StoragePolicyRetainFor retain_for = 10 [json_name = "retain_for"];
StoragePolicyDeleteAfter delete_after = 20 [json_name = "delete_after"];
}
message StoragePolicyRetainFor {

@ -447,56 +447,56 @@ var file_controller_api_resources_policies_v1_policy_proto_rawDesc = []byte{
0x65, 0x73, 0x12, 0x2f, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64,
0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xac, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
0x12, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x22, 0xe7, 0x01, 0x0a,
0x6f, 0x6e, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x22, 0xdb, 0x01, 0x0a,
0x17, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x74,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x61,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x61,
0x69, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63,
0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65,
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x42, 0x04, 0xa0, 0xda, 0x29, 0x01,
0x52, 0x0a, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x12, 0x68, 0x0a, 0x0c,
0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x14, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x6f,
0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x66, 0x74,
0x65, 0x72, 0x42, 0x04, 0xa0, 0xda, 0x29, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x22, 0xde, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x72, 0x61,
0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x46, 0x6f,
0x72, 0x12, 0x43, 0x0a, 0x04, 0x64, 0x61, 0x79, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42,
0x2f, 0xc2, 0xdd, 0x29, 0x2b, 0x0a, 0x1a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x73, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x2e, 0x64, 0x61, 0x79,
0x73, 0x12, 0x0d, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x44, 0x61, 0x79, 0x73,
0x52, 0x04, 0x64, 0x61, 0x79, 0x73, 0x12, 0x7f, 0x0a, 0x0b, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69,
0x64, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f,
0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x41, 0xc2, 0xdd, 0x29, 0x3d, 0x0a, 0x21, 0x61,
0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e,
0x5f, 0x66, 0x6f, 0x72, 0x2e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65,
0x12, 0x18, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x44, 0x61, 0x79, 0x73, 0x4f,
0x79, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x61,
0x69, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x12, 0x62, 0x0a, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x63,
0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65,
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,
0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x66, 0x74, 0x65, 0x72, 0x52, 0x0c, 0x64, 0x65,
0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x22, 0xde, 0x01, 0x0a, 0x16, 0x53,
0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x74, 0x61,
0x69, 0x6e, 0x46, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x04, 0x64, 0x61, 0x79, 0x73, 0x18, 0x0a, 0x20,
0x01, 0x28, 0x05, 0x42, 0x2f, 0xc2, 0xdd, 0x29, 0x2b, 0x0a, 0x1a, 0x61, 0x74, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x6f, 0x72,
0x2e, 0x64, 0x61, 0x79, 0x73, 0x12, 0x0d, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x46, 0x6f, 0x72,
0x44, 0x61, 0x79, 0x73, 0x52, 0x04, 0x64, 0x61, 0x79, 0x73, 0x12, 0x7f, 0x0a, 0x0b, 0x6f, 0x76,
0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x41, 0xc2, 0xdd, 0x29,
0x3d, 0x0a, 0x21, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x72, 0x65,
0x74, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x2e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64,
0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x44,
0x61, 0x79, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0b,
0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x22, 0xe9, 0x01, 0x0a, 0x18,
0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c,
0x65, 0x74, 0x65, 0x41, 0x66, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x04, 0x64, 0x61, 0x79, 0x73,
0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42, 0x33, 0xc2, 0xdd, 0x29, 0x2f, 0x0a, 0x1c, 0x61, 0x74,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f,
0x61, 0x66, 0x74, 0x65, 0x72, 0x2e, 0x64, 0x61, 0x79, 0x73, 0x12, 0x0f, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x41, 0x66, 0x74, 0x65, 0x72, 0x44, 0x61, 0x79, 0x73, 0x52, 0x04, 0x64, 0x61, 0x79,
0x73, 0x12, 0x83, 0x01, 0x0a, 0x0b, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c,
0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61,
0x6c, 0x75, 0x65, 0x42, 0x45, 0xc2, 0xdd, 0x29, 0x41, 0x0a, 0x23, 0x61, 0x74, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, 0x66, 0x74,
0x65, 0x72, 0x2e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1a,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x66, 0x74, 0x65, 0x72, 0x44, 0x61, 0x79, 0x73, 0x4f,
0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0b, 0x6f, 0x76, 0x65, 0x72,
0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x22, 0xe9, 0x01, 0x0a, 0x18, 0x53, 0x74, 0x6f, 0x72,
0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41,
0x66, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x04, 0x64, 0x61, 0x79, 0x73, 0x18, 0x0a, 0x20, 0x01,
0x28, 0x05, 0x42, 0x33, 0xc2, 0xdd, 0x29, 0x2f, 0x0a, 0x1c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62,
0x75, 0x74, 0x65, 0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, 0x66, 0x74, 0x65,
0x72, 0x2e, 0x64, 0x61, 0x79, 0x73, 0x12, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x66,
0x74, 0x65, 0x72, 0x44, 0x61, 0x79, 0x73, 0x52, 0x04, 0x64, 0x61, 0x79, 0x73, 0x12, 0x83, 0x01,
0x0a, 0x0b, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x14, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42,
0x45, 0xc2, 0xdd, 0x29, 0x41, 0x0a, 0x23, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x73, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x2e, 0x6f,
0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x41, 0x66, 0x74, 0x65, 0x72, 0x44, 0x61, 0x79, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72,
0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0b, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61,
0x62, 0x6c, 0x65, 0x42, 0x52, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x62, 0x6f, 0x75, 0x6e,
0x64, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x62, 0x73, 0x2f, 0x63, 0x6f, 0x6e,
0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x3b, 0x70,
0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x52, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75,
0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f,
0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x62, 0x73,
0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f,
0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69,
0x65, 0x73, 0x3b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
}
var (

Loading…
Cancel
Save