code: func expandClusterAffinityRuleSpec(d *schema.ResourceData, meta interface{}) (*types.ClusterAffinityRuleSpec, error) {
  	client, err := resourceVSphereComputeClusterVMGroupClient(meta)
  	if err != nil {
  		return nil, err
  	}
  
  	results, err := virtualmachine.MOIDsForUUIDs(
  		client,
  		structure.SliceInterfacesToStrings(d.Get("virtual_machine_ids").(*schema.Set).List()),
  	)
  	if err != nil {
  		return nil, err
  	}
  
  	obj := &types.ClusterAffinityRuleSpec{
  		ClusterRuleInfo: types.ClusterRuleInfo{
  			Enabled:     structure.GetBool(d, "enabled"),
  			Mandatory:   structure.GetBool(d, "mandatory"),
  			Name:        d.Get("name").(string),
  			UserCreated: structure.BoolPtr(true),
  		},
  		Vm: results.ManagedObjectReferences(),
  	}
  	return obj, nil
  }
docs: // expandClusterAffinityRuleSpec reads certain ResourceData keys and returns a
  // ClusterAffinityRuleSpec.