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

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

// FlatContentLibraryDestinationConfig is an auto-generated flat version of ContentLibraryDestinationConfig.
// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up.
type FlatContentLibraryDestinationConfig struct {
	Library      *string `mapstructure:"library" cty:"library" hcl:"library"`
	Name         *string `mapstructure:"name" cty:"name" hcl:"name"`
	Description  *string `mapstructure:"description" cty:"description" hcl:"description"`
	Cluster      *string `mapstructure:"cluster" cty:"cluster" hcl:"cluster"`
	Folder       *string `mapstructure:"folder" cty:"folder" hcl:"folder"`
	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"`
	Destroy      *bool   `mapstructure:"destroy" cty:"destroy" hcl:"destroy"`
	Ovf          *bool   `mapstructure:"ovf" cty:"ovf" hcl:"ovf"`
}

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

// HCL2Spec returns the hcl spec of a ContentLibraryDestinationConfig.
// This spec is used by HCL to read the fields of ContentLibraryDestinationConfig.
// The decoded values from this spec will then be applied to a FlatContentLibraryDestinationConfig.
func (*FlatContentLibraryDestinationConfig) HCL2Spec() map[string]hcldec.Spec {
	s := map[string]hcldec.Spec{
		"library":       &hcldec.AttrSpec{Name: "library", Type: cty.String, Required: false},
		"name":          &hcldec.AttrSpec{Name: "name", Type: cty.String, Required: false},
		"description":   &hcldec.AttrSpec{Name: "description", Type: cty.String, Required: false},
		"cluster":       &hcldec.AttrSpec{Name: "cluster", Type: cty.String, Required: false},
		"folder":        &hcldec.AttrSpec{Name: "folder", 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},
		"destroy":       &hcldec.AttrSpec{Name: "destroy", Type: cty.Bool, Required: false},
		"ovf":           &hcldec.AttrSpec{Name: "ovf", Type: cty.Bool, Required: false},
	}
	return s
}
