-
Notifications
You must be signed in to change notification settings - Fork 2
/
serverinfo.pl
38 lines (34 loc) · 1.6 KB
/
serverinfo.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!perl
use strict;
use warnings;
use Net::RackSpace::CloudServers;
use 5.010_000;
my $user = $ENV{'CLOUDSERVERS_USER'} or die "Need CLOUDSERVERS_USER environment variable set";
my $key = $ENV{'CLOUDSERVERS_KEY'} or die "Need CLOUDSERVERS_KEY environment variable set";
$Net::RackSpace::CloudServers::DEBUG = 1;
warn "** Creating Net::RackSpace::CloudServers object..\n";
my $CS = Net::RackSpace::CloudServers->new(
user => $user,
key => $key,
);
warn "** Getting flavor details..\n";
my @flavors = $CS->get_flavor_detail;
warn "** Getting images details..\n";
my @images = $CS->get_image_detail;
warn "** Getting server details..\n";
my @servers = $CS->get_server_detail;
say '#' x 72;
foreach my $server (@servers) {
say "Server ID ", $server->id, " Name ", $server->name;
say "Server status ", $server->status || 'undef', " progress ", $server->progress || 'undef';
say "Public IPs: ", join( ' ', @{ $server->public_address || () } );
say "Private IPs: ", join( ' ', @{ $server->private_address || () } );
my $img = ( grep { $_->id == $server->imageid } @images )[0]; # find image by id
die "Can't find image ID ", $server->imageid, " on list" if ( !defined $img );
say "Image ID ", $server->imageid, " (", $img->name, ")",
" status ", $img->status || 'undef', " progress ", $img->progress || 'undef';
my $flv = ( grep { $_->id == $server->flavorid } @flavors )[0]; # find flavor by id
die "Can't find flavor ID ", $server->flavorid, " on list" if ( !defined $flv );
say "Flavor ID ", $server->flavorid, " (", $flv->name, ")",
" ram ", $flv->ram || 'undef', " disk ", $flv->disk || 'undef';
}