Hi Craig,
As folders are a hierarchical structure you would need to specify
under which existing folder you want to create the new folder.
See the code below, use either the portion #1 or #2. The first uses
the default 'vm' folder in a datacenter as parent for your new folder.
The second looks for a folder named "AnExistingFolder" in the
datacenter to be used as parent folder.
This is not working in my test environment, I'm getting an Operation
Not Supported error, I think folder creation is not supported on ESXi
(as the option is not shown either from the VI Client tool).
Regards,
Sebastian.
from pysphere import *
from pysphere.resources import VimService_services as VI
s = VIServer()
s.connect("host", "user", "password")
folder_name = "My New Folder"
datacenter_name = "ha-datacenter"
datacenters = s._get_datacenters()
dc = datacenters[datacenter_name]
#1) TO use a datacenter's main 'vm' folder as parent folder
dc_props = VIProperty(s, dc)
vm_folder = dc_props.vmFolder._obj
#2) Pick a parent folder by name (withing the selected datacenter)
vm_folder = None
parent_folder_name = "AnExistingFolder"
folders = s._retrieve_properties_traversal(property_names=['name'],
from_node=dc, obj_type='Folder')
for f in folders:
print "Folder:", f.PropSet[0].Val
if f.PropSet[0].Val == parent_folder_name:
vm_folder = f.Obj
break
if not vm_folder:
raise Exception("Couldn't find folder %s in datacenter %s"
% (parent_folder_name, datacenter_name))
#create folder
request = VI.CreateFolderRequestMsg()
_this = request.new__this(vm_folder)
_this.set_attribute_type(vm_folder.get_attribute_type())
request.set_element__this(_this)
request.set_element_name(folder_name)
s._proxy.CreateFolder(request)
s.disconnect()