rendered paste bodysub ecloud_vm_find_url {
my ($VM_QUERY) = @_ ;
my $VM_URI ;
return($VM_QUERY) if ($VM_QUERY =~ m/\//) ;
our %ECLOUD ; # = ecloud_get_cloud unless (%ECLOUD) ;
for my $THIS_ORG (keys %ECLOUD) {
next unless (exists $ECLOUD{$THIS_ORG}{LOCATIONS}) ;
for my $THIS_LOC (keys %{${ECLOUD}{$THIS_ORG}{LOCATIONS}}) {
next unless (exists $ECLOUD{$THIS_ORG}{LOCATIONS}{$THIS_LOC}{ENVS}) ;
for my $THIS_ENV (keys %{${ECLOUD}{$THIS_ORG}{LOCATIONS}{$THIS_LOC}{ENVS}}) {
next unless (exists $ECLOUD{$THIS_ORG}{LOCATIONS}{$THIS_LOC}{ENVS}{$THIS_ENV}{POOLS}) ;
for my $THIS_POOL (keys %{${ECLOUD}{$THIS_ORG}{LOCATIONS}{$THIS_LOC}{ENVS}{$THIS_ENV}{POOLS}}) {
if (exists $ECLOUD{$THIS_ORG}{LOCATIONS}{$THIS_LOC}{ENVS}{$THIS_ENV}{POOLS}{$THIS_POOL}{VMS}) {
for my $THIS_VM (keys ${ECLOUD}{$THIS_ORG}{LOCATIONS}{$THIS_LOC}{ENVS}{$THIS_ENV}{POOLS}{$THIS_POOL}{VMS}) {
if ($THIS_VM =~ m/^$VM_QUERY$/) {
return(${ECLOUD}{$THIS_ORG}{LOCATIONS}{$THIS_LOC}{ENVS}{$THIS_ENV}{POOLS}{$THIS_POOL}{VMS}{$THIS_VM}{HREF}) ;
} elsif (${ECLOUD}{$THIS_ORG}{LOCATIONS}{$THIS_LOC}{ENVS}{$THIS_ENV}{POOLS}{$THIS_POOL}{VMS}{$THIS_VM}{HREF} =~ m/\/$VM_QUERY$/) {
return(${ECLOUD}{$THIS_ORG}{LOCATIONS}{$THIS_LOC}{ENVS}{$THIS_ENV}{POOLS}{$THIS_POOL}{VMS}{$THIS_VM}{HREF}) ;
}
}
}
}
}
}
}
return ;
}
sub ecloud_vm_poweron { ecloud_vm_action(ecloud_vm_find_url(shift)) }
sub ecloud_vm_poweroff { ecloud_vm_action(ecloud_vm_find_url(shift)) }
sub ecloud_vm_shutdown { ecloud_vm_action(ecloud_vm_find_url(shift)) }
sub ecloud_vm_reboot { ecloud_vm_action(ecloud_vm_find_url(shift)) }
---------------------------------------------------------------------------------------------------
my @TEST_QUERIES = ("test-2", "189342", "/cloudapi/ecloud/virtualmachines/189342") ;
for (@TEST_QUERIES) {
print "ecloud_vm_find_url(\"$_\") = ", ecloud_vm_find_url("$_"), "\n" ;
}