github.com/Azure/aad-pod-identity@v1.8.17/pkg/apis/aadpodidentity/v1/conversion.go (about) 1 package v1 2 3 import ( 4 "reflect" 5 6 aadpodid "github.com/Azure/aad-pod-identity/pkg/apis/aadpodidentity" 7 8 "k8s.io/apimachinery/pkg/runtime/schema" 9 ) 10 11 // ConvertV1BindingToInternalBinding converts v1.AzureIdentityBinding to an internal AzureIdentityBinding type. 12 func ConvertV1BindingToInternalBinding(identityBinding AzureIdentityBinding) aadpodid.AzureIdentityBinding { 13 return aadpodid.AzureIdentityBinding{ 14 TypeMeta: identityBinding.TypeMeta, 15 ObjectMeta: identityBinding.ObjectMeta, 16 Spec: aadpodid.AzureIdentityBindingSpec{ 17 ObjectMeta: identityBinding.Spec.ObjectMeta, 18 AzureIdentity: identityBinding.Spec.AzureIdentity, 19 Selector: identityBinding.Spec.Selector, 20 Weight: identityBinding.Spec.Weight, 21 }, 22 Status: aadpodid.AzureIdentityBindingStatus(identityBinding.Status), 23 } 24 } 25 26 // ConvertV1IdentityToInternalIdentity converts v1.AzureIdentity to an internal AzureIdentity type. 27 func ConvertV1IdentityToInternalIdentity(identity AzureIdentity) aadpodid.AzureIdentity { 28 return aadpodid.AzureIdentity{ 29 TypeMeta: identity.TypeMeta, 30 ObjectMeta: identity.ObjectMeta, 31 Spec: aadpodid.AzureIdentitySpec{ 32 ObjectMeta: identity.Spec.ObjectMeta, 33 Type: aadpodid.IdentityType(identity.Spec.Type), 34 ResourceID: identity.Spec.ResourceID, 35 ClientID: identity.Spec.ClientID, 36 ClientPassword: identity.Spec.ClientPassword, 37 TenantID: identity.Spec.TenantID, 38 AuxiliaryTenantIDs: identity.Spec.AuxiliaryTenantIDs, 39 ADResourceID: identity.Spec.ADResourceID, 40 ADEndpoint: identity.Spec.ADEndpoint, 41 Replicas: identity.Spec.Replicas, 42 }, 43 Status: aadpodid.AzureIdentityStatus(identity.Status), 44 } 45 } 46 47 // ConvertV1AssignedIdentityToInternalAssignedIdentity converts v1.AzureAssignedIdentity to an internal AzureAssignedIdentity type. 48 func ConvertV1AssignedIdentityToInternalAssignedIdentity(assignedIdentity AzureAssignedIdentity) aadpodid.AzureAssignedIdentity { 49 var retIdentity aadpodid.AzureIdentity 50 var retBinding aadpodid.AzureIdentityBinding 51 if assignedIdentity.Spec.AzureIdentityRef != nil { 52 retIdentity = ConvertV1IdentityToInternalIdentity(*assignedIdentity.Spec.AzureIdentityRef) 53 } 54 if assignedIdentity.Spec.AzureBindingRef != nil { 55 retBinding = ConvertV1BindingToInternalBinding(*assignedIdentity.Spec.AzureBindingRef) 56 } 57 58 return aadpodid.AzureAssignedIdentity{ 59 TypeMeta: assignedIdentity.TypeMeta, 60 ObjectMeta: assignedIdentity.ObjectMeta, 61 Spec: aadpodid.AzureAssignedIdentitySpec{ 62 ObjectMeta: assignedIdentity.Spec.ObjectMeta, 63 AzureIdentityRef: &retIdentity, 64 AzureBindingRef: &retBinding, 65 Pod: assignedIdentity.Spec.Pod, 66 PodNamespace: assignedIdentity.Spec.PodNamespace, 67 NodeName: assignedIdentity.Spec.NodeName, 68 Replicas: assignedIdentity.Spec.Replicas, 69 }, 70 Status: aadpodid.AzureAssignedIdentityStatus(assignedIdentity.Status), 71 } 72 } 73 74 // ConvertV1PodIdentityExceptionToInternalPodIdentityException converts v1.AzurePodIdentityException to an internal AzurePodIdentityException type. 75 func ConvertV1PodIdentityExceptionToInternalPodIdentityException(idException AzurePodIdentityException) aadpodid.AzurePodIdentityException { 76 return aadpodid.AzurePodIdentityException{ 77 TypeMeta: idException.TypeMeta, 78 ObjectMeta: idException.ObjectMeta, 79 Spec: aadpodid.AzurePodIdentityExceptionSpec{ 80 ObjectMeta: idException.Spec.ObjectMeta, 81 PodLabels: idException.Spec.PodLabels, 82 }, 83 Status: aadpodid.AzurePodIdentityExceptionStatus(idException.Status), 84 } 85 } 86 87 // ConvertInternalBindingToV1Binding converts an internal AzureIdentityBinding type to v1.AzureIdentityBinding. 88 func ConvertInternalBindingToV1Binding(identityBinding aadpodid.AzureIdentityBinding) AzureIdentityBinding { 89 out := AzureIdentityBinding{ 90 TypeMeta: identityBinding.TypeMeta, 91 ObjectMeta: identityBinding.ObjectMeta, 92 Spec: AzureIdentityBindingSpec{ 93 ObjectMeta: identityBinding.Spec.ObjectMeta, 94 AzureIdentity: identityBinding.Spec.AzureIdentity, 95 Selector: identityBinding.Spec.Selector, 96 Weight: identityBinding.Spec.Weight, 97 }, 98 Status: AzureIdentityBindingStatus(identityBinding.Status), 99 } 100 101 out.TypeMeta.SetGroupVersionKind(schema.GroupVersionKind{ 102 Group: SchemeGroupVersion.Group, 103 Version: SchemeGroupVersion.Version, 104 Kind: reflect.TypeOf(out).Name()}) 105 106 return out 107 } 108 109 // ConvertInternalIdentityToV1Identity converts an internal AzureIdentity type to v1.AzureIdentity. 110 func ConvertInternalIdentityToV1Identity(identity aadpodid.AzureIdentity) AzureIdentity { 111 out := AzureIdentity{ 112 TypeMeta: identity.TypeMeta, 113 ObjectMeta: identity.ObjectMeta, 114 Spec: AzureIdentitySpec{ 115 ObjectMeta: identity.Spec.ObjectMeta, 116 Type: IdentityType(identity.Spec.Type), 117 ResourceID: identity.Spec.ResourceID, 118 ClientID: identity.Spec.ClientID, 119 ClientPassword: identity.Spec.ClientPassword, 120 TenantID: identity.Spec.TenantID, 121 AuxiliaryTenantIDs: identity.Spec.AuxiliaryTenantIDs, 122 ADResourceID: identity.Spec.ADResourceID, 123 ADEndpoint: identity.Spec.ADEndpoint, 124 Replicas: identity.Spec.Replicas, 125 }, 126 Status: AzureIdentityStatus(identity.Status), 127 } 128 129 out.TypeMeta.SetGroupVersionKind(schema.GroupVersionKind{ 130 Group: SchemeGroupVersion.Group, 131 Version: SchemeGroupVersion.Version, 132 Kind: reflect.TypeOf(out).Name()}) 133 134 return out 135 } 136 137 // ConvertInternalAssignedIdentityToV1AssignedIdentity converts an internal AzureAssignedIdentity type to v1.AzureAssignedIdentity. 138 func ConvertInternalAssignedIdentityToV1AssignedIdentity(assignedIdentity aadpodid.AzureAssignedIdentity) AzureAssignedIdentity { 139 retIdentity := ConvertInternalIdentityToV1Identity(*assignedIdentity.Spec.AzureIdentityRef) 140 retBinding := ConvertInternalBindingToV1Binding(*assignedIdentity.Spec.AzureBindingRef) 141 142 out := AzureAssignedIdentity{ 143 TypeMeta: assignedIdentity.TypeMeta, 144 ObjectMeta: assignedIdentity.ObjectMeta, 145 Spec: AzureAssignedIdentitySpec{ 146 ObjectMeta: assignedIdentity.Spec.ObjectMeta, 147 AzureIdentityRef: &retIdentity, 148 AzureBindingRef: &retBinding, 149 Pod: assignedIdentity.Spec.Pod, 150 PodNamespace: assignedIdentity.Spec.PodNamespace, 151 NodeName: assignedIdentity.Spec.NodeName, 152 Replicas: assignedIdentity.Spec.Replicas, 153 }, 154 Status: AzureAssignedIdentityStatus(assignedIdentity.Status), 155 } 156 157 out.TypeMeta.SetGroupVersionKind(schema.GroupVersionKind{ 158 Group: SchemeGroupVersion.Group, 159 Version: SchemeGroupVersion.Version, 160 Kind: reflect.TypeOf(out).Name()}) 161 162 return out 163 } 164 165 // ConvertInternalPodIdentityExceptionToV1PodIdentityException is currently not needed, as AzurePodIdentityException are only listed and not created within the project