From 4d7e9c791035f54b55e9bf5e38064d59c9dbe0f6 Mon Sep 17 00:00:00 2001 From: "kirby@puppetlabs.com" Date: Fri, 13 Oct 2017 18:00:16 -0700 Subject: [PATCH] Add capability to create folders This commit adds the capability to create folders within an existing target folder. Without this change folders to support platforms targets need to be created manually. --- lib/vmpooler/providers/vsphere.rb | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/vmpooler/providers/vsphere.rb b/lib/vmpooler/providers/vsphere.rb index e9160b2..f3d9e70 100644 --- a/lib/vmpooler/providers/vsphere.rb +++ b/lib/vmpooler/providers/vsphere.rb @@ -188,9 +188,27 @@ module Vmpooler template: false ) + begin + vm_target_folder = find_folder(target_folder_path, connection, target_datacenter_name) + rescue => _err + if _err =~ /Unexpected object type encountered/ + vm_target_folder = nil + else + raise(_err) + end + end + if vm_target_folder.nil? + if $config[:config]['create_folders'] == true + dc = connection.serviceInstance.find_datacenter(target_datacenter_name) + vm_target_folder = dc.vmFolder.traverse(target_folder_path, type=RbVmomi::VIM::Folder, create=true) + else + raise("Unexpected object type encountered while finding folder") + end + end + # Create the new VM new_vm_object = template_vm_object.CloneVM_Task( - folder: find_folder(target_folder_path, connection, target_datacenter_name), + folder: vm_target_folder, name: new_vmname, spec: clone_spec ).wait_for_completion