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

This commit is contained in:
Louis Ruch authored and GitHub committed 2024-02-09 09:37:34 -08:00
1 parent c01b8df2a3
commit d59f089819
9 files changed
+288 -144

No files matched your search

+201
View File
@@ -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
}
}
-48
View File
@@ -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"`
}