Net-RackSpace-CloudServers
view release on metacpan or search on metacpan
lib/Net/RackSpace/CloudServers/Server.pm view on Meta::CPAN
package Net::RackSpace::CloudServers::Server;
$Net::RackSpace::CloudServers::Server::VERSION = '0.15';
use warnings;
use strict;
our $DEBUG = 0;
use Any::Moose;
use HTTP::Request;
use JSON;
use YAML;
use Net::RackSpace::CloudServers::Image;
use Carp;
has 'cloudservers' =>
(is => 'rw', isa => 'Net::RackSpace::CloudServers', required => 1);
has 'id' => (is => 'ro', isa => 'Int', required => 1, default => 0);
has 'name' => (is => 'ro', isa => 'Str', required => 1);
has 'imageid' => (is => 'ro', isa => 'Maybe[Int]', required => 1);
has 'flavorid' => (is => 'ro', isa => 'Maybe[Int]', required => 1);
has 'hostid' =>
(is => 'ro', isa => 'Maybe[Str]', required => 1, default => undef);
has 'status' =>
(is => 'ro', isa => 'Maybe[Str]', required => 1, default => undef);
has 'adminpass' =>
(is => 'ro', isa => 'Maybe[Str]', required => 1, default => undef);
has 'progress' =>
(is => 'ro', isa => 'Maybe[Str]', required => 1, default => undef);
has 'public_address' => (
is => 'ro',
isa => 'Maybe[ArrayRef[Str]]',
required => 1,
default => undef
);
has 'private_address' => (
is => 'ro',
isa => 'Maybe[ArrayRef[Str]]',
required => 1,
default => undef
);
has 'metadata' =>
(is => 'ro', isa => 'Maybe[HashRef]', required => 1, default => undef);
has 'personality' =>
(is => 'ro', isa => 'Maybe[ArrayRef]', required => 1, default => undef);
no Any::Moose;
__PACKAGE__->meta->make_immutable();
sub change_root_password {
my $self = shift;
my $password = shift;
my $uri = '/servers/' . $self->id;
my $request = HTTP::Request->new(
'PUT',
$self->cloudservers->server_management_url . $uri,
[
'X-Auth-Token' => $self->cloudservers->token,
'Content-Type' => 'application/json',
],
to_json({ server => { adminPass => $password, } }));
my $response = $self->cloudservers->_request($request);
confess 'Unknown error' if $response->code != 202;
return $response;
}
sub change_name {
my $self = shift;
my $name = shift;
my $uri = '/servers/' . $self->id;
my $request = HTTP::Request->new(
'PUT',
$self->cloudservers->server_management_url . $uri,
[
'X-Auth-Token' => $self->cloudservers->token,
'Content-Type' => 'application/json',
],
to_json({ server => { name => $name, } }));
my $response = $self->cloudservers->_request($request);
confess 'Unknown error' if $response->code != 202;
return $response;
}
sub delete_server {
my $self = shift;
my $request = HTTP::Request->new(
'DELETE',
$self->cloudservers->server_management_url . '/servers/' . $self->id,
[
'X-Auth-Token' => $self->cloudservers->token,
'Content-Type' => 'application/json',
],
);
my $response = $self->cloudservers->_request($request);
confess 'Unknown error' if $response->code != 202;
return;
}
sub create_image {
my $self = shift;
my $imgname = shift;
my $request = HTTP::Request->new(
'POST',
$self->cloudservers->server_management_url . '/images',
[
( run in 1.294 second using v1.01-cache-2.11-cpan-39bf76dae61 )