code: 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
  }
docs: // resourceVSphereComputeClusterApplyCreate processes the creation part of
  // resourceVSphereComputeClusterCreate.