I am a getting this error when running my code:
Can't call method "roleid" on unblessed reference at /home/mlevine/vm-perms.pl line 34.
My code is below:
#!/usr/bin/perl
use strict;
use warnings;
use VMware::VIRuntime;
Opts::parse();
Opts::validate();
Util::connect();
my $entity_type = "VirtualMachine";
my $vm_view = Vim::find_entity_views(
view_type => "VirtualMachine",
filter => {
'config.guestFullName' => qr/Solaris/
}
);
my $auth_mgr = Vim::get_view(mo_ref => Vim::get_service_content()->authorizationManager);
my %role_hash;
my $role_list = $auth_mgr->roleList;
foreach (@$role_list) {
$role_hash{$_->roleId} = $_->name;
}
foreach my $vm (@$vm_view) {
my $vm_name = $vm->name;
next unless $vm_name eq "sol-test";
my @permissions = $auth_mgr->RetrieveEntityPermissions(entity=>$vm, inherited=>"true");
foreach my $perm (@permissions) {
if ($perm->roleid eq "102" or $perm->roleid eq "251658360") {
delete $permissions[$perm];
}
}
Util::trace(0, "Found $entity_type: $vm_name\n");
}
Disconnect from the server
Util::disconnect();
Any clue about this error?