vsphere/resource_vsphere_compute_cluster.go
func resourceVSphereComputeClusterApplyCreate(d *schema.ResourceData, meta interface{}) (*object.ClusterComputeResource, error) {
	log.Printf("[DEBUG] %s: Processing compute cluster creation", resourceVSphereComputeClusterIDString(d))
	client, err := resourceVSphereComputeClusterClient(meta)
	if err != nil {
		return nil, err
	}

	dc, err := datacenterFromID(client, d.Get("datacenter_id").(string))
	if err != nil {
		return nil, fmt.Errorf("cannot locate datacenter: %s", err)
	}

	// Find the folder based off the path to the datacenter. This is where we
	// create the datastore cluster.
	f, err := folder.FromPath(client, d.Get("folder").(string), folder.VSphereFolderTypeHost, dc)
	if err != nil {
		return nil, fmt.Errorf("cannot locate folder: %s", err)
	}

	// Create the cluster. We use an empty config spec so that we can move the
	// necessary hosts into the cluster *before* we send the full configuration,
	// ensuring that any host-dependent configuration does not break.
	cluster, err := clustercomputeresource.Create(f, d.Get("name").(string), types.ClusterConfigSpecEx{})
	if err != nil {
		return nil, fmt.Errorf("error creating cluster: %s", err)
	}

	// Set the ID now before proceeding any further. Any other operation past
	// this point is recoverable.
	d.SetId(cluster.Reference().Value)

	return cluster, nil
}
func resourceVSphereComputeClusterApplyCreate(d *schema.ResourceData, meta interface{}) (*object.ClusterComputeResource, error) {
	log.Printf("[DEBUG] %s: Processing compute cluster creation", resourceVSphereComputeClusterIDString(d))
	client, err := resourceVSphereComputeClusterClient(meta)
	if err != nil {
		return nil, err
	}

	dc, err := datacenterFromID(client, d.Get("datacenter_id").(string))
	if err != nil {
		return nil, fmt.Errorf("cannot locate datacenter: %s", err)
	}

	// Find the folder based off the path to the datacenter. This is where we
	// create the datastore cluster.
	f, err := folder.FromPath(client, d.Get("folder").(string), folder.VSphereFolderTypeHost, dc)
	if err != nil {
		return nil, fmt.Errorf("cannot locate folder: %s", err)
	}

	// Create the cluster. We use an empty config spec so that we can move the
	// necessary hosts into the cluster *before* we send the full configuration,
	// ensuring that any host-dependent configuration does not break.
	cluster, err := clustercomputeresource.Create(f, d.Get("name").(string), types.ClusterConfigSpecEx{})
	if err != nil {
		return nil, fmt.Errorf("error creating cluster: %s", err)
	}

	// Set the ID now before proceeding any further. Any other operation past
	// this point is recoverable.
	d.SetId(cluster.Reference().Value)

	return cluster, nil
}
func resourceVSphereComputeClusterApplyCreate ( d * schema . ResourceData , meta interface { } ) ( * object . ClusterComputeResource , error ) { log . Printf ( " " , resourceVSphereComputeClusterIDString ( d ) ) client , err := resourceVSphereComputeClusterClient ( meta ) if err != nil { return nil , err } dc , err := datacenterFromID ( client , d . Get ( " " ) . ( string ) ) if err != nil { return nil , fmt . Errorf ( " " , err ) } // Find the folder based off the path to the datacenter. This is where we // create the datastore cluster. f , err := folder . FromPath ( client , d . Get ( " " ) . ( string ) , folder . VSphereFolderTypeHost , dc ) if err != nil { return nil , fmt . Errorf ( " " , err ) } // Create the cluster. We use an empty config spec so that we can move the // necessary hosts into the cluster *before* we send the full configuration, // ensuring that any host-dependent configuration does not break. cluster , err := clustercomputeresource . Create ( f , d . Get ( " " ) . ( string ) , types . ClusterConfigSpecEx { } ) if err != nil { return nil , fmt . Errorf ( " " , err ) } // Set the ID now before proceeding any further. Any other operation past // this point is recoverable. d . SetId ( cluster . Reference ( ) . Value ) return cluster , nil }
// resourceVSphereComputeClusterApplyCreate processes the creation part of
// resourceVSphereComputeClusterCreate.
resourceVSphereComputeClusterApplyCreate processes the creation part of resourceVSphereComputeClusterCreate .