in pkg/virtualnode/resource_manager.go [334:371]
func BuildSDKVirtualNodeSpec(vn *appmesh.VirtualNode, vsByKey map[types.NamespacedName]*appmesh.VirtualService) (*appmeshsdk.VirtualNodeSpec, error) {
converter := conversion.NewConverter(conversion.DefaultNameFunc)
converter.RegisterUntypedConversionFunc((*appmesh.VirtualNodeSpec)(nil), (*appmeshsdk.VirtualNodeSpec)(nil), func(a, b interface{}, scope conversion.Scope) error {
return conversions.Convert_CRD_VirtualNodeSpec_To_SDK_VirtualNodeSpec(a.(*appmesh.VirtualNodeSpec), b.(*appmeshsdk.VirtualNodeSpec), scope)
})
sdkVSRefConvertFunc := references.BuildSDKVirtualServiceReferenceConvertFunc(vn, vsByKey)
converter.RegisterUntypedConversionFunc((*appmesh.VirtualServiceReference)(nil), (*string)(nil), func(a, b interface{}, scope conversion.Scope) error {
return sdkVSRefConvertFunc(a.(*appmesh.VirtualServiceReference), b.(*string), scope)
})
sdkVNSpec := &appmeshsdk.VirtualNodeSpec{}
tempSpec := vn.Spec.DeepCopy()
backendMap := make(map[types.NamespacedName]bool)
for _, backend := range tempSpec.Backends {
if backend.VirtualService.VirtualServiceRef != nil {
vsKey := references.ObjectKeyForVirtualServiceReference(vn, *backend.VirtualService.VirtualServiceRef)
backendMap[vsKey] = true
}
}
for vsKey, vs := range vsByKey {
if _, ok := backendMap[vsKey]; ok {
continue
}
tempSpec.Backends = append(tempSpec.Backends, appmesh.Backend{
VirtualService: appmesh.VirtualServiceBackend{
VirtualServiceRef: &appmesh.VirtualServiceReference{
Namespace: aws.String(vs.Namespace),
Name: vs.Name,
},
},
})
}
if err := converter.Convert(tempSpec, sdkVNSpec, nil); err != nil {
return nil, err
}
return sdkVNSpec, nil
}