I could have two autorequires, one for each. 

To allow multiple use of  vcenter::dvswitch (defined type), :name is correct. Each resource referenced by the defined type has to be uniquely labeled within its own resource type, and also linked with the other resources referenced by that invocation of the defined type. 

OTOH, :path would be correct to associate multiple vc_dvswitch_nioc resources referring to a single vc_dvswitch in a single puppet run. I don't know when that would be useful, but adding an autorequire for it is easy to do.