Documentation ¶
Index ¶
- func CreateTokensForOutput(in string) hclwrite.Tokens
- func InterfaceToCty(in interface{}) (cty.Value, error)
- func IsInlineStruct(field *reflect.StructField) bool
- func IsZero(v reflect.Value) bool
- func Kubernetes2HCL(manifest interface{}, dst *hclwrite.Body) error
- func Kubernetes2HCLCustom(manifest interface{}, key string, rootBody *hclwrite.Body) error
- func NormalizeTerraformName(s string, toSingular bool, path string) string
- func ProvidersToHCL(in interface{}) (*hclwrite.File, error)
- func ReplaceStingMarkerInBody(body *hclwrite.Body, marker, value string)
- func ToTerraformAttributeName(field *reflect.StructField, path string) string
- func ToTerraformResourceType(obj runtime.Object, blockKind *schema.GroupVersionKind) string
- func ToTerraformSubBlockName(field *reflect.StructField, path string) string
- func WriteObject(obj runtime.Object, dst *hclwrite.Body) (int, error)
- type ObjectWalker
- func (w *ObjectWalker) Enter(l reflectwalk.Location) error
- func (w *ObjectWalker) Exit(l reflectwalk.Location) error
- func (w *ObjectWalker) Map(m reflect.Value) error
- func (w *ObjectWalker) MapElem(m, k, v reflect.Value) error
- func (w *ObjectWalker) Primitive(v reflect.Value) error
- func (w *ObjectWalker) ResourceName() string
- func (w *ObjectWalker) ResourceType() string
- func (w *ObjectWalker) Slice(v reflect.Value) error
- func (w *ObjectWalker) SliceElem(i int, v reflect.Value) error
- func (w *ObjectWalker) Struct(v reflect.Value) error
- func (w *ObjectWalker) StructField(field reflect.StructField, v reflect.Value) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CreateTokensForOutput ¶
CreateTokensForOutput create slice of tokens, from splitted by dot substrings of in.
func InterfaceToCty ¶
InterfaceToCty convert go type to cty.Value(for hlc lib), using hack with JSON marshal/unmarshal.
func IsInlineStruct ¶ added in v0.8.0
func IsInlineStruct(field *reflect.StructField) bool
IsInlineStruct looks at the json tag of the given StructField, to determine if it has been marked as "inline" e.g. someField string `json:",inline"`
func IsZero ¶ added in v0.8.0
IsZero reports whether is considered the zero / empty / unset value fo the type
func Kubernetes2HCL ¶ added in v0.8.0
func Kubernetes2HCLCustom ¶ added in v0.8.0
func NormalizeTerraformName ¶ added in v0.8.0
normalizeTerraformName converts the given string to snake case and optionally to singular form of the given word s is the string to normalize set toSingular to true to singularize the given word path is the full schema path to the named element Src: https://github.com/sl1pm4t/k2tf
func ProvidersToHCL ¶
func ReplaceStingMarkerInBody ¶
ReplaceStingMarkerInBody replace all substrings in TokenQuotedLit tokens to value as terraform expression.
func ToTerraformAttributeName ¶ added in v0.8.0
func ToTerraformAttributeName(field *reflect.StructField, path string) string
func ToTerraformResourceType ¶ added in v0.8.0
func ToTerraformResourceType(obj runtime.Object, blockKind *schema.GroupVersionKind) string
ToTerraformResourceType converts a Kubernetes API Object Type name to the equivalent `terraform-provider-kubernetes` schema name. Src: https://github.com/sl1pm4t/k2tf
func ToTerraformSubBlockName ¶ added in v0.8.0
func ToTerraformSubBlockName(field *reflect.StructField, path string) string
Types ¶
type ObjectWalker ¶ added in v0.8.0
type ObjectWalker struct { // The Kubernetes API Object to be walked RuntimeObject runtime.Object // contains filtered or unexported fields }
ObjectWalker implements reflectwalk.Walker interfaces It's used to "walk" the Kubernetes API Objects structure and generate an HCL document based on the values defined.
func NewObjectWalker ¶ added in v0.8.0
NewObjectWalker returns a new ObjectWalker object dst is the hclwrite.Body where HCL blocks will be appended.
func (*ObjectWalker) Enter ¶ added in v0.8.0
func (w *ObjectWalker) Enter(l reflectwalk.Location) error
Enter is called by reflectwalk.Walk each time we enter a level
func (*ObjectWalker) Exit ¶ added in v0.8.0
func (w *ObjectWalker) Exit(l reflectwalk.Location) error
Exit is called by reflectwalk each time it exits from a reflectwalk.Location
func (*ObjectWalker) Map ¶ added in v0.8.0
func (w *ObjectWalker) Map(m reflect.Value) error
Map is called everytime reflectwalk enters a Map Golang maps are usually output as HCL maps, but sometimes as sub-blocks.
func (*ObjectWalker) MapElem ¶ added in v0.8.0
func (w *ObjectWalker) MapElem(m, k, v reflect.Value) error
MapElem is called every time reflectwalk enters a Map element
normalize the element key, and write element value to the HCL block as an attribute value
func (*ObjectWalker) Primitive ¶ added in v0.8.0
func (w *ObjectWalker) Primitive(v reflect.Value) error
Primitive is called whenever reflectwalk visits a Primitive value. If it's not a zero value, add an Attribute to the current HCL Block.
func (*ObjectWalker) ResourceName ¶ added in v0.8.0
func (w *ObjectWalker) ResourceName() string
ResourceName returns the Terraform Resource name for the Kubernetes Object
func (*ObjectWalker) ResourceType ¶ added in v0.8.0
func (w *ObjectWalker) ResourceType() string
ResourceType returns the Terraform Resource type for the Kubernetes Object
func (*ObjectWalker) Slice ¶ added in v0.8.0
func (w *ObjectWalker) Slice(v reflect.Value) error
Slice implements reflectwalk.SliceWalker interface, and is called each time reflectwalk enters a Slice Golang slices need to be converted to HCL in one of two ways:
*1 - a simple list of primitive values:
list_name = ["foo", "bar", "baz"]
*2 - a list of complex objects that will be rendered as repeating HCL blocks
container { name = "blah" image = "nginx" } container { name = "foo" image = "sidecar" }
For the second case, each time we process a SliceElem we need to use the StructField data of the Slice itself, and not the slice elem.
func (*ObjectWalker) SliceElem ¶ added in v0.8.0
func (w *ObjectWalker) SliceElem(i int, v reflect.Value) error
SliceElem implements reflectwalk.SliceWalker interface
func (*ObjectWalker) Struct ¶ added in v0.8.0
func (w *ObjectWalker) Struct(v reflect.Value) error
Struct is called every time reflectwalk enters a Struct
func (*ObjectWalker) StructField ¶ added in v0.8.0
func (w *ObjectWalker) StructField(field reflect.StructField, v reflect.Value) error
StructField is called by reflectwalk whenever it enters a field of a struct. We ignore Invalid fields, or some API fields we don't need to convert to HCL. The rest are added to the StuctField stack so we have access to the StructField data in other funcs.