#!/usr/bin/perl -w # # Copyright 2006 VMware, Inc. All rights reserved. # # This script prints names of all VM's with Windows guest use strict; use warnings; use VMware::VIRuntime; my %opts = ( datacenter => { type => "=s", help => "Datacenter name", required => 1, } ); # read/validate options and connect to the server Opts::add_options(%opts); Opts::parse(); Opts::validate(); Util::connect(); $Data::Dumper::Sortkeys = 1; #Sort the keys in the output $Data::Dumper::Deepcopy = 1; #Enable deep copies of structures $Data::Dumper::Indent = 2; #Output in a reasonable style (but no array indexes) # find datacenter my $datacenter = Opts::get_option('datacenter'); my $datacenter_view = Vim::find_entity_view(view_type => 'Datacenter', filter => { name => $datacenter }); # Check if datacenter OK if (!$datacenter_view) { die "Datacenter '" . $datacenter . "' not found\n"; } print "Datacenter: " . $datacenter_view->name . "\n"; my @clus; my $cluscount = 0; print "\n Clusters found:\n"; # get all clus's under this datacenter my $clus_views = Vim::find_entity_views(view_type => 'ClusterComputeResource', begin_entity => $datacenter_view); foreach (@$clus_views) { my $clus_name = $_->name; push (@clus, $clus_name); } @clus = sort {lc $a cmp lc $b} @clus; foreach my $clus_name (@clus) { my $clus_view = Vim::find_entity_view(view_type => 'ClusterComputeResource', filter => {name => $clus_name}); print " -- Cluster: " . $clus_view->name . "\n"; my $haopt = $clus_view->configurationEx->dasConfig->option; # print Dumper($clus_view->configurationEx->dasConfig); my $das; if (defined $haopt){ my $foundopt = 0; foreach (@$haopt){ if ($_->key eq "das.isolationaddress"){ $foundopt = 1; $das = $_->value; } } } # Find HA Specific Settings print " -- HA Settings\n"; print " -- HA: "; if ($clus_view->configurationEx->dasConfig->enabled){ print "Enabled\n"; } else { print "Disabled\n"; } print " -- HA Admission Control: "; if ($clus_view->configurationEx->dasConfig->admissionControlEnabled){ print "Enabled\n"; } else { print "Disabled\n"; } print " -- das.isolationaddress: "; if (defined $das){ print $das . "\n"; } else { print "Undefined\n"; } print " -- Configured Failover Capacity: " . $clus_view->configurationEx->dasConfig->failoverLevel . "\n"; my $vmset = $clus_view->configurationEx->dasConfig->defaultVmSettings; print " -- Default VM Settings: \n"; print " -- isolationResponse: " . $clus_view->configurationEx->dasConfig->defaultVmSettings->isolationResponse . "\n"; print " -- restartPriority: " . $clus_view->configurationEx->dasConfig->defaultVmSettings->restartPriority . "\n"; print " -- DRS Settings\n"; print " -- DRS: "; if ($clus_view->configurationEx->drsConfig->enabled){ print "Enabled\n"; } else { print "Disabled\n"; } print " -- DRS Automation Level: "; if ($clus_view->configurationEx->drsConfig->defaultVmBehavior->val eq "fullyAutomated"){ print "Fully Automated\n"; } elsif ($clus_view->configurationEx->drsConfig->defaultVmBehavior->val eq "partiallyAutomated") { print "Partially Automated\n"; } elsif ($clus_view->configurationEx->drsConfig->defaultVmBehavior->val eq "manual") { print "Manual\n"; } else{ print "Unknown\n"; } print " -- DRS Rating: " . $clus_view->configurationEx->drsConfig->vmotionRate . " Stars\n"; #print Dumper($clus_view->configurationEx->drsConfig); print "\n"; $cluscount++; } print " Total Clusters: $cluscount\n"; # disconnect from the server Util::disconnect();