feat(policies): Update SDK/API to support setting/clearing attributes (#4385)
This commit is contained in:
1 parent
c01b8df2a3
commit
d59f089819
9 files changed
+288
-144
No files matched your search
@@ -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 (
|
||||
|
||||
Reference in new issue
Block a user