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"`
|
||||
}
|
||||
Reference in new issue
Block a user