From 2ffada72b6b75c1d2922401cbd43030607e09b64 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