I'm trying to collect all VMs in a datastore from a given datacenter, passed as a command line argument. Here's a snippet:
my %allvms = ();
my $clusters = Vim::find_entity_views(
view_type => 'ClusterComputeResource',
filter => { 'name' => "$cluster_name" },
);
foreach my $cluster ( @$clusters ){
print "Cluster: " . $cluster->name . "\n";
my $datastores = Vim::get_views (mo_ref_array => $cluster->datastore);
foreach my $datastore (sort @$datastores){
my $vms = Vim::get_views (mo_ref_array => $datastore->vm);
foreach my $vm ( @$vms ){
$allvms{$vm->name}{path} = $vm->summary->config->vmPathName;
$allvms{$vm->name}{name} = $vm->name;
}
}
}
foreach ( sort keys %allvms ){ print "$_: $allvms{$_}{path}\n"; }
But the %allvms hash is empy. What am I doing wrong?
Thanks much!
Rob
my %allvms = ();
my $clusters = Vim::find_entity_views(
view_type => 'ClusterComputeResource',
filter => { 'name' => "$cluster_name" },
);
foreach my $cluster ( @$clusters ){
print "Cluster: " . $cluster->name . "\n";
my $datastores = Vim::get_views (mo_ref_array => $cluster->datastore);
foreach my $datastore (sort @$datastores){
my $vms = Vim::get_views (mo_ref_array => $datastore->vm);
foreach my $vm ( @$vms ){
$allvms{$vm->name}{path} = $vm->summary->config->vmPathName;
$allvms{$vm->name}{name} = $vm->name;
}
}
}
foreach ( sort keys %allvms ){ print "$_: $allvms{$_}{path}\n"; }
But the %allvms hash is empy. What am I doing wrong?
Thanks much!
Rob