From 68a28d9e1d3ac8c3022c25e1af8670a6b884d0b8 Mon Sep 17 00:00:00 2001 From: kimorris27 Date: Mon, 15 Apr 2024 08:46:26 -0500 Subject: [PATCH] Add external API converter and example --- ...platformworkloadidentityroleset_convert.go | 65 +++++++++++++++++++ ...platformworkloadidentityroleset_example.go | 24 +++++++ 2 files changed, 89 insertions(+) create mode 100644 pkg/api/v20240812preview/platformworkloadidentityroleset_convert.go create mode 100644 pkg/api/v20240812preview/platformworkloadidentityroleset_example.go diff --git a/pkg/api/v20240812preview/platformworkloadidentityroleset_convert.go b/pkg/api/v20240812preview/platformworkloadidentityroleset_convert.go new file mode 100644 index 00000000000..a651229c16f --- /dev/null +++ b/pkg/api/v20240812preview/platformworkloadidentityroleset_convert.go @@ -0,0 +1,65 @@ +package v20240812preview + +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache License 2.0. + +import ( + "github.com/Azure/ARO-RP/pkg/api" +) + +type platformWorkloadIdentityRoleSetConverter struct{} + +// platformWorkloadIdentityRoleSetConverter.ToExternal returns a new external representation +// of the internal object, reading from the subset of the internal object's +// fields that appear in the external representation. ToExternal does not +// modify its argument; there is no pointer aliasing between the passed and +// returned objects. +func (c platformWorkloadIdentityRoleSetConverter) ToExternal(s *api.PlatformWorkloadIdentityRoleSet) interface{} { + out := &PlatformWorkloadIdentityRoleSet{ + ID: s.ID, + proxyResource: true, + Properties: PlatformWorkloadIdentityRoleSetProperties{ + OpenShiftVersion: s.Properties.OpenShiftVersion, + PlatformWorkloadIdentityRoles: make([]PlatformWorkloadIdentityRole, 0, len(s.Properties.PlatformWorkloadIdentityRoles)), + }, + } + + for i, r := range s.Properties.PlatformWorkloadIdentityRoles { + out.Properties.PlatformWorkloadIdentityRoles[i].OperatorName = r.OperatorName + out.Properties.PlatformWorkloadIdentityRoles[i].RoleDefinitionName = r.RoleDefinitionName + out.Properties.PlatformWorkloadIdentityRoles[i].RoleDefinitionID = r.RoleDefinitionID + } + + return out +} + +// ToExternalList returns a slice of external representations of the internal +// objects +func (c platformWorkloadIdentityRoleSetConverter) ToExternalList(sets []*api.PlatformWorkloadIdentityRoleSet) interface{} { + l := &PlatformWorkloadIdentityRoleSetList{ + PlatformWorkloadIdentityRoleSets: make([]*PlatformWorkloadIdentityRoleSet, 0, len(sets)), + } + + for _, set := range sets { + l.PlatformWorkloadIdentityRoleSets = append(l.PlatformWorkloadIdentityRoleSets, c.ToExternal(set).(*PlatformWorkloadIdentityRoleSet)) + } + + return l +} + +// ToInternal overwrites in place a pre-existing internal object, setting (only) +// all mapped fields from the external representation. ToInternal modifies its +// argument; there is no pointer aliasing between the passed and returned +// objects +func (c platformWorkloadIdentityRoleSetConverter) ToInternal(_new interface{}, out *api.PlatformWorkloadIdentityRoleSet) { + new := _new.(*PlatformWorkloadIdentityRoleSet) + + out.Properties.OpenShiftVersion = new.Properties.OpenShiftVersion + out.Properties.PlatformWorkloadIdentityRoles = make([]api.PlatformWorkloadIdentityRole, 0, len(new.Properties.PlatformWorkloadIdentityRoles)) + + for i, r := range new.Properties.PlatformWorkloadIdentityRoles { + out.Properties.PlatformWorkloadIdentityRoles[i].OperatorName = r.OperatorName + out.Properties.PlatformWorkloadIdentityRoles[i].RoleDefinitionName = r.RoleDefinitionName + out.Properties.PlatformWorkloadIdentityRoles[i].RoleDefinitionID = r.RoleDefinitionID + } +} diff --git a/pkg/api/v20240812preview/platformworkloadidentityroleset_example.go b/pkg/api/v20240812preview/platformworkloadidentityroleset_example.go new file mode 100644 index 00000000000..6cf6a1d0934 --- /dev/null +++ b/pkg/api/v20240812preview/platformworkloadidentityroleset_example.go @@ -0,0 +1,24 @@ +package v20240812preview + +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache License 2.0. + +import "github.com/Azure/ARO-RP/pkg/api" + +func examplePlatformWorkloadIdentityRoleSet() *PlatformWorkloadIdentityRoleSet { + doc := api.ExamplePlatformWorkloadIdentityRoleSetDocument() + ext := (&platformWorkloadIdentityRoleSetConverter{}).ToExternal(doc.PlatformWorkloadIdentityRoleSet) + return ext.(*PlatformWorkloadIdentityRoleSet) +} + +func ExamplePlatformWorkloadIdentityRoleSetResponse() interface{} { + return examplePlatformWorkloadIdentityRoleSet() +} + +func ExamplePlatformWorkloadIdentityRoleSetListResponse() interface{} { + return &PlatformWorkloadIdentityRoleSetList{ + PlatformWorkloadIdentityRoleSets: []*PlatformWorkloadIdentityRoleSet{ + ExamplePlatformWorkloadIdentityRoleSetResponse().(*PlatformWorkloadIdentityRoleSet), + }, + } +}