Merge pull request #14878 from johngmyers/api-ptr-map

Simplify pointers to maps in API
This commit is contained in:
Kubernetes Prow Robot 2022-12-25 21:39:26 -08:00 committed by GitHub
commit 4d7b3df665
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 95 additions and 155 deletions

View File

@ -97,9 +97,9 @@ type ClusterSpec struct {
// 'external': do not apply updates automatically; they are applied manually or by an external system
UpdatePolicy *string `json:"updatePolicy,omitempty"`
// ExternalPolicies allows the insertion of pre-existing managed policies on IG Roles
ExternalPolicies *map[string][]string `json:"externalPolicies,omitempty"`
ExternalPolicies map[string][]string `json:"externalPolicies,omitempty"`
// Additional policies to add for roles
AdditionalPolicies *map[string]string `json:"additionalPolicies,omitempty"`
AdditionalPolicies map[string]string `json:"additionalPolicies,omitempty"`
// A collection of files assets for deployed cluster wide
FileAssets []FileAssetSpec `json:"fileAssets,omitempty"`
// EtcdClusters stores the configuration for each cluster
@ -757,13 +757,13 @@ func (t *TargetSpec) IsEmpty() bool {
// TerraformSpec allows us to specify terraform config in an extensible way
type TerraformSpec struct {
// ProviderExtraConfig contains key/value pairs to add to the main terraform provider block
ProviderExtraConfig *map[string]string `json:"providerExtraConfig,omitempty"`
ProviderExtraConfig map[string]string `json:"providerExtraConfig,omitempty"`
// FilesProviderExtraConfig contains key/value pairs to add to the terraform provider block used for managed files
FilesProviderExtraConfig *map[string]string `json:"filesProviderExtraConfig,omitempty"`
FilesProviderExtraConfig map[string]string `json:"filesProviderExtraConfig,omitempty"`
}
func (t *TerraformSpec) IsEmpty() bool {
return t.ProviderExtraConfig == nil
return len(t.ProviderExtraConfig) == 0 && len(t.FilesProviderExtraConfig) == 0
}
// FillDefaults populates default values.

View File

@ -155,9 +155,9 @@ type ClusterSpec struct {
// 'external': do not apply updates automatically; they are applied manually or by an external system
UpdatePolicy *string `json:"updatePolicy,omitempty"`
// ExternalPolicies allows the insertion of pre-existing managed policies on IG Roles
ExternalPolicies *map[string][]string `json:"externalPolicies,omitempty"`
ExternalPolicies map[string][]string `json:"externalPolicies,omitempty"`
// Additional policies to add for roles
AdditionalPolicies *map[string]string `json:"additionalPolicies,omitempty"`
AdditionalPolicies map[string]string `json:"additionalPolicies,omitempty"`
// A collection of files assets for deployed cluster wide
FileAssets []FileAssetSpec `json:"fileAssets,omitempty"`
// EtcdClusters stores the configuration for each cluster
@ -763,13 +763,13 @@ func (t *TargetSpec) IsEmpty() bool {
// TerraformSpec allows us to specify terraform config in an extensible way
type TerraformSpec struct {
// ProviderExtraConfig contains key/value pairs to add to the main terraform provider block
ProviderExtraConfig *map[string]string `json:"providerExtraConfig,omitempty"`
ProviderExtraConfig map[string]string `json:"providerExtraConfig,omitempty"`
// FilesProviderExtraConfig contains key/value pairs to add to the terraform provider block used for managed files
FilesProviderExtraConfig *map[string]string `json:"filesProviderExtraConfig,omitempty"`
FilesProviderExtraConfig map[string]string `json:"filesProviderExtraConfig,omitempty"`
}
func (t *TerraformSpec) IsEmpty() bool {
return t.ProviderExtraConfig == nil
return len(t.ProviderExtraConfig) == 0 && len(t.FilesProviderExtraConfig) == 0
}
// EnvVar represents an environment variable present in a Container.

View File

@ -76,24 +76,23 @@ func Convert_v1alpha2_ClusterSpec_To_kops_ClusterSpec(in *ClusterSpec, out *kops
return err
}
if in.AdditionalPolicies != nil {
policies := make(map[string]string, len(*in.AdditionalPolicies))
for k, v := range *in.AdditionalPolicies {
out.AdditionalPolicies = make(map[string]string, len(in.AdditionalPolicies))
for k, v := range in.AdditionalPolicies {
if k == "master" {
k = "control-plane"
}
policies[k] = v
out.AdditionalPolicies[k] = v
}
out.AdditionalPolicies = &policies
}
if in.ExternalPolicies != nil {
policies := make(map[string][]string, len(*in.ExternalPolicies))
for k, v := range *in.ExternalPolicies {
policies := make(map[string][]string, len(in.ExternalPolicies))
for k, v := range in.ExternalPolicies {
if k == "master" {
k = "control-plane"
}
policies[k] = v
}
out.ExternalPolicies = &policies
out.ExternalPolicies = policies
}
if in.LegacyNetworking != nil {
if err := autoConvert_v1alpha2_NetworkingSpec_To_kops_NetworkingSpec(in.LegacyNetworking, &out.Networking, s); err != nil {
@ -317,24 +316,22 @@ func Convert_kops_ClusterSpec_To_v1alpha2_ClusterSpec(in *kops.ClusterSpec, out
return err
}
if in.AdditionalPolicies != nil {
policies := make(map[string]string, len(*in.AdditionalPolicies))
for k, v := range *in.AdditionalPolicies {
out.AdditionalPolicies = make(map[string]string, len(in.AdditionalPolicies))
for k, v := range in.AdditionalPolicies {
if k == "control-plane" {
k = "master"
}
policies[k] = v
out.AdditionalPolicies[k] = v
}
out.AdditionalPolicies = &policies
}
if in.ExternalPolicies != nil {
policies := make(map[string][]string, len(*in.ExternalPolicies))
for k, v := range *in.ExternalPolicies {
out.ExternalPolicies = make(map[string][]string, len(in.ExternalPolicies))
for k, v := range in.ExternalPolicies {
if k == "control-plane" {
k = "master"
}
policies[k] = v
out.ExternalPolicies[k] = v
}
out.ExternalPolicies = &policies
}
out.LegacyNetworking = &NetworkingSpec{}
if err := autoConvert_kops_NetworkingSpec_To_v1alpha2_NetworkingSpec(&in.Networking, out.LegacyNetworking, s); err != nil {

View File

@ -1055,32 +1055,24 @@ func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) {
}
if in.ExternalPolicies != nil {
in, out := &in.ExternalPolicies, &out.ExternalPolicies
*out = new(map[string][]string)
if **in != nil {
in, out := *in, *out
*out = make(map[string][]string, len(*in))
for key, val := range *in {
var outVal []string
if val == nil {
(*out)[key] = nil
} else {
in, out := &val, &outVal
*out = make([]string, len(*in))
copy(*out, *in)
}
(*out)[key] = outVal
*out = make(map[string][]string, len(*in))
for key, val := range *in {
var outVal []string
if val == nil {
(*out)[key] = nil
} else {
in, out := &val, &outVal
*out = make([]string, len(*in))
copy(*out, *in)
}
(*out)[key] = outVal
}
}
if in.AdditionalPolicies != nil {
in, out := &in.AdditionalPolicies, &out.AdditionalPolicies
*out = new(map[string]string)
if **in != nil {
in, out := *in, *out
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
if in.FileAssets != nil {
@ -5293,24 +5285,16 @@ func (in *TerraformSpec) DeepCopyInto(out *TerraformSpec) {
*out = *in
if in.ProviderExtraConfig != nil {
in, out := &in.ProviderExtraConfig, &out.ProviderExtraConfig
*out = new(map[string]string)
if **in != nil {
in, out := *in, *out
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
if in.FilesProviderExtraConfig != nil {
in, out := &in.FilesProviderExtraConfig, &out.FilesProviderExtraConfig
*out = new(map[string]string)
if **in != nil {
in, out := *in, *out
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
return

View File

@ -94,9 +94,9 @@ type ClusterSpec struct {
// 'external': do not apply updates automatically; they are applied manually or by an external system
UpdatePolicy *string `json:"updatePolicy,omitempty"`
// ExternalPolicies allows the insertion of pre-existing managed policies on IG Roles
ExternalPolicies *map[string][]string `json:"externalPolicies,omitempty"`
ExternalPolicies map[string][]string `json:"externalPolicies,omitempty"`
// Additional policies to add for roles
AdditionalPolicies *map[string]string `json:"additionalPolicies,omitempty"`
AdditionalPolicies map[string]string `json:"additionalPolicies,omitempty"`
// A collection of files assets for deployed cluster wide
FileAssets []FileAssetSpec `json:"fileAssets,omitempty"`
// EtcdClusters stores the configuration for each cluster
@ -695,13 +695,13 @@ func (t *TargetSpec) IsEmpty() bool {
// TerraformSpec allows us to specify terraform config in an extensible way
type TerraformSpec struct {
// ProviderExtraConfig contains key/value pairs to add to the main terraform provider block
ProviderExtraConfig *map[string]string `json:"providerExtraConfig,omitempty"`
ProviderExtraConfig map[string]string `json:"providerExtraConfig,omitempty"`
// FilesProviderExtraConfig contains key/value pairs to add to the terraform provider block used for managed files
FilesProviderExtraConfig *map[string]string `json:"filesProviderExtraConfig,omitempty"`
FilesProviderExtraConfig map[string]string `json:"filesProviderExtraConfig,omitempty"`
}
func (t *TerraformSpec) IsEmpty() bool {
return t.ProviderExtraConfig == nil
return len(t.ProviderExtraConfig) == 0 && len(t.FilesProviderExtraConfig) == 0
}
// EnvVar represents an environment variable present in a Container.

View File

@ -976,32 +976,24 @@ func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) {
}
if in.ExternalPolicies != nil {
in, out := &in.ExternalPolicies, &out.ExternalPolicies
*out = new(map[string][]string)
if **in != nil {
in, out := *in, *out
*out = make(map[string][]string, len(*in))
for key, val := range *in {
var outVal []string
if val == nil {
(*out)[key] = nil
} else {
in, out := &val, &outVal
*out = make([]string, len(*in))
copy(*out, *in)
}
(*out)[key] = outVal
*out = make(map[string][]string, len(*in))
for key, val := range *in {
var outVal []string
if val == nil {
(*out)[key] = nil
} else {
in, out := &val, &outVal
*out = make([]string, len(*in))
copy(*out, *in)
}
(*out)[key] = outVal
}
}
if in.AdditionalPolicies != nil {
in, out := &in.AdditionalPolicies, &out.AdditionalPolicies
*out = new(map[string]string)
if **in != nil {
in, out := *in, *out
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
if in.FileAssets != nil {
@ -5146,24 +5138,16 @@ func (in *TerraformSpec) DeepCopyInto(out *TerraformSpec) {
*out = *in
if in.ProviderExtraConfig != nil {
in, out := &in.ProviderExtraConfig, &out.ProviderExtraConfig
*out = new(map[string]string)
if **in != nil {
in, out := *in, *out
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
if in.FilesProviderExtraConfig != nil {
in, out := &in.FilesProviderExtraConfig, &out.FilesProviderExtraConfig
*out = new(map[string]string)
if **in != nil {
in, out := *in, *out
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
return

View File

@ -189,16 +189,12 @@ func validateClusterSpec(spec *kops.ClusterSpec, c *kops.Cluster, fieldPath *fie
}
// IAM additional policies
if spec.AdditionalPolicies != nil {
for k, v := range *spec.AdditionalPolicies {
allErrs = append(allErrs, validateAdditionalPolicy(k, v, fieldPath.Child("additionalPolicies"))...)
}
for k, v := range spec.AdditionalPolicies {
allErrs = append(allErrs, validateAdditionalPolicy(k, v, fieldPath.Child("additionalPolicies"))...)
}
// IAM external policies
if spec.ExternalPolicies != nil {
for k, v := range *spec.ExternalPolicies {
allErrs = append(allErrs, validateExternalPolicies(k, v, fieldPath.Child("externalPolicies"))...)
}
for k, v := range spec.ExternalPolicies {
allErrs = append(allErrs, validateExternalPolicies(k, v, fieldPath.Child("externalPolicies"))...)
}
// EtcdClusters

View File

@ -435,7 +435,7 @@ func Test_Validate_AdditionalPolicies(t *testing.T) {
for _, g := range grid {
clusterSpec := &kops.ClusterSpec{
KubernetesVersion: "1.17.0",
AdditionalPolicies: &g.Input,
AdditionalPolicies: g.Input,
Networking: kops.NetworkingSpec{
Subnets: []kops.ClusterSubnetSpec{
{Name: "subnet1", Type: kops.SubnetTypePublic},

View File

@ -1073,32 +1073,24 @@ func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) {
}
if in.ExternalPolicies != nil {
in, out := &in.ExternalPolicies, &out.ExternalPolicies
*out = new(map[string][]string)
if **in != nil {
in, out := *in, *out
*out = make(map[string][]string, len(*in))
for key, val := range *in {
var outVal []string
if val == nil {
(*out)[key] = nil
} else {
in, out := &val, &outVal
*out = make([]string, len(*in))
copy(*out, *in)
}
(*out)[key] = outVal
*out = make(map[string][]string, len(*in))
for key, val := range *in {
var outVal []string
if val == nil {
(*out)[key] = nil
} else {
in, out := &val, &outVal
*out = make([]string, len(*in))
copy(*out, *in)
}
(*out)[key] = outVal
}
}
if in.AdditionalPolicies != nil {
in, out := &in.AdditionalPolicies, &out.AdditionalPolicies
*out = new(map[string]string)
if **in != nil {
in, out := *in, *out
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
if in.FileAssets != nil {
@ -5453,24 +5445,16 @@ func (in *TerraformSpec) DeepCopyInto(out *TerraformSpec) {
*out = *in
if in.ProviderExtraConfig != nil {
in, out := &in.ProviderExtraConfig, &out.ProviderExtraConfig
*out = new(map[string]string)
if **in != nil {
in, out := *in, *out
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
if in.FilesProviderExtraConfig != nil {
in, out := &in.FilesProviderExtraConfig, &out.FilesProviderExtraConfig
*out = new(map[string]string)
if **in != nil {
in, out := *in, *out
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
return

View File

@ -324,12 +324,11 @@ func (b *IAMModelBuilder) buildIAMTasks(role iam.Subject, iamName string, c *fi.
var externalPolicies []string
if b.Cluster.Spec.ExternalPolicies != nil {
p := *(b.Cluster.Spec.ExternalPolicies)
key := roleKey
if key == "master" {
key = "control-plane"
}
externalPolicies = append(externalPolicies, p[key]...)
externalPolicies = append(externalPolicies, b.Cluster.Spec.ExternalPolicies[key]...)
}
sort.Strings(externalPolicies)
@ -349,9 +348,7 @@ func (b *IAMModelBuilder) buildIAMTasks(role iam.Subject, iamName string, c *fi.
{
additionalPolicy := ""
if b.Cluster.Spec.AdditionalPolicies != nil {
additionalPolicies := *(b.Cluster.Spec.AdditionalPolicies)
additionalPolicy = additionalPolicies[roleKey]
additionalPolicy = b.Cluster.Spec.AdditionalPolicies[roleKey]
}
additionalPolicyName := "additional." + iamName

View File

@ -78,9 +78,8 @@ func (t *TerraformTarget) DefaultCheckExisting() bool {
// tfGetProviderExtraConfig is a helper function to get extra config with safety checks on the pointers.
func tfGetProviderExtraConfig(c *kops.TargetSpec) map[string]string {
if c != nil &&
c.Terraform != nil &&
c.Terraform.FilesProviderExtraConfig != nil {
return *c.Terraform.ProviderExtraConfig
c.Terraform != nil {
return c.Terraform.ProviderExtraConfig
}
return nil
}
@ -88,9 +87,8 @@ func tfGetProviderExtraConfig(c *kops.TargetSpec) map[string]string {
// tfGetFilesProviderExtraConfig is a helper function to get extra config with safety checks on the pointers.
func tfGetFilesProviderExtraConfig(c *kops.TargetSpec) map[string]string {
if c != nil &&
c.Terraform != nil &&
c.Terraform.FilesProviderExtraConfig != nil {
return *c.Terraform.FilesProviderExtraConfig
c.Terraform != nil {
return c.Terraform.FilesProviderExtraConfig
}
return nil
}