v2/pkg/genruntime/arm_transformer.go (29 lines of code) (raw):

/* * Copyright (c) Microsoft Corporation. * Licensed under the MIT license. */ package genruntime import ( "strings" ) // ConvertToARMResolvedDetails contains resolved references and names for use in // converting a Kubernetes type to an ARM type. type ConvertToARMResolvedDetails struct { // Name is the name of the resource // TODO: We might be able to remove this in favor of using AzureName() everywhere in the future Name string // TODO: We could collapse all of these Resolved[X, string] into a single Resolved[any, string], if we wanted to... // ResolvedReferences is a set of references which have been resolved to their ARM IDs. ResolvedReferences Resolved[ResourceReference, string] // ResolvedSecrets is a set of secret references which have been resolved to the corresponding // secret value. ResolvedSecrets Resolved[SecretReference, string] // ResolvedSecretMaps is a set of secret references which have been resolved to the corresponding secrets. ResolvedSecretMaps Resolved[SecretMapReference, map[string]string] // ResolvedConfigMaps is a set of config map references which have been resolved to the corresponding // config map value. ResolvedConfigMaps Resolved[ConfigMapReference, string] } type ToARMConverter interface { // ConvertToARM converts this to an ARM resource. ConvertToARM(resolved ConvertToARMResolvedDetails) (interface{}, error) } type FromARMConverter interface { NewEmptyARMValue() ARMResourceStatus PopulateFromARM(owner ArbitraryOwnerReference, input interface{}) error } // TODO: Consider ArmSpecTransformer and ARMTransformer, so we don't have to pass owningName/name through all the calls // ARMTransformer is a type which can be converted to/from an Arm object shape. // Each CRD resource must implement these methods. type ARMTransformer interface { ToARMConverter FromARMConverter } // ExtractKubernetesResourceNameFromARMName extracts the Kubernetes resource name from an ARM name. // See https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/child-resource-name-type#outside-parent-resource // for details on the format of the name field in ARM templates. func ExtractKubernetesResourceNameFromARMName(armName string) string { if len(armName) == 0 { return "" } // TODO: Possibly need to worry about preserving case here, although ARM should be already strs := strings.Split(armName, "/") return strs[len(strs)-1] }