All pastes #2099458 Raw Edit

Miscellany

public text v1 · immutable
#2099458 ·published 2012-01-04 22:17 UTC
rendered paste body
sub 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" ;
}