// Code generated by "mapstructure-to-hcl2 -type LocationConfig"; DO NOT EDIT.
package common

import (
	"github.com/hashicorp/hcl/v2/hcldec"
	"github.com/zclconf/go-cty/cty"
)

// FlatLocationConfig is an auto-generated flat version of LocationConfig.
// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
type FlatLocationConfig struct {
	VMName                     *string `mapstructure:"vm_name" cty:"vm_name" hcl:"vm_name"`
	Folder                     *string `mapstructure:"folder" cty:"folder" hcl:"folder"`
	Cluster                    *string `mapstructure:"cluster" cty:"cluster" hcl:"cluster"`
	Host                       *string `mapstructure:"host" cty:"host" hcl:"host"`
	ResourcePool               *string `mapstructure:"resource_pool" cty:"resource_pool" hcl:"resource_pool"`
	Datastore                  *string `mapstructure:"datastore" cty:"datastore" hcl:"datastore"`
	SetHostForDatastoreUploads *bool   `mapstructure:"set_host_for_datastore_uploads" cty:"set_host_for_datastore_uploads" hcl:"set_host_for_datastore_uploads"`
}

// FlatMapstructure returns a new FlatLocationConfig.
// FlatLocationConfig is an auto-generated flat version of LocationConfig.
// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up.
func (*LocationConfig) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } {
	return new(FlatLocationConfig)
}

// HCL2Spec returns the hcl spec of a LocationConfig.
// This spec is used by HCL to read the fields of LocationConfig.
// The decoded values from this spec will then be applied to a FlatLocationConfig.
func (*FlatLocationConfig) HCL2Spec() map[string]hcldec.Spec {
	s := map[string]hcldec.Spec{
		"vm_name":                        &hcldec.AttrSpec{Name: "vm_name", Type: cty.String, Required: false},
		"folder":                         &hcldec.AttrSpec{Name: "folder", Type: cty.String, Required: false},
		"cluster":                        &hcldec.AttrSpec{Name: "cluster", Type: cty.String, Required: false},
		"host":                           &hcldec.AttrSpec{Name: "host", Type: cty.String, Required: false},
		"resource_pool":                  &hcldec.AttrSpec{Name: "resource_pool", Type: cty.String, Required: false},
		"datastore":                      &hcldec.AttrSpec{Name: "datastore", Type: cty.String, Required: false},
		"set_host_for_datastore_uploads": &hcldec.AttrSpec{Name: "set_host_for_datastore_uploads", Type: cty.Bool, Required: false},
	}
	return s
}
