Hello,
I am learning vSphere sdk, and I am trying to replicate the following Java code from a book in Perl:
CreateFolderDatacenter.javapackage vim25.samples.mo;import java.net.URL;import com.vmware.vim25.mo.Folder;import com.vmware.vim25.mo.ServiceInstance;public class CreateFolderDatacenter{public static void main(String[] args) throws Exception{if(args.length != 3){System.out.println(“Usage: java CreateFolderDatacenter” +“ <url> <username> <password>”);return;}ServiceInstance si = new ServiceInstance(new URL(args[0]),args[1], args[2], true);Folder rootFolder = si.getRootFolder();rootFolder.createDatacenter(“HeadQuarter”);Folder paFolder = rootFolder.createFolder(“Palo Alto”);Folder engFolder = paFolder.createFolder(“Engineering”);engFolder.createDatacenter(“Dev”);engFolder.createDatacenter(“QA”);paFolder.createDatacenter(“Sales”);paFolder.createDatacenter(“Corporate”);Folder bFolder = rootFolder.createFolder(“Boston”);bFolder.createDatacenter(“Engineering”);Folder lFolder = rootFolder.createFolder(“London”);lFolder.createDatacenter(“Engineering”);si.getServerConnection().logout();}
In Perl it looks like I have to call get_view every time I get a MOR to dereference. Is there any way in Perl to make the code look cleaner like Java example? My Perl code looks like:
my $content = Vim::get_service_content();
my $rf=Vim::get_view(mo_ref => $content->{rootFolder});
$rf->CreateDatacenter(name => "Headquarters");
my $paMOR = $rf->CreateFolder(name => "Palo Alto");
my $engMOR=(Vim::get_view(mo_ref => $paMOR)->CreateFolder(name => "Engineering"));
my $engFolder=Vim::get_view(mo_ref => $engMOR);
$engFolder->CreateFolder(name =>"Dev");
$engFolder->CreateFolder(name =>"QA");
$engFolder->CreateFolder(name =>"PROD");
my $paFolder=Vim::get_view(mo_ref => $paMOR);
$paFolder->CreateDatacenter(name =>"Sales");
$paFolder->CreateDatacenter(name =>"Corporate");
etc....