Confman
view release on metacpan or search on metacpan
lib/Confman/API.pm view on Meta::CPAN
my $self = shift;
return if $self->{no_cloud};
$self->{cloud_metadata} ||= $self->aws_metadata;
$self->{cloud_metadata};
}
sub aws_metadata {
my $self = shift;
return $self->{aws_metadata} if $self->{aws_metadata};
my @fields = qw(
instance-id ami-id availability-zone
instance-type
kernel-id local-hostname
mac public-hostname
);
$self->{aws_metadata} = {};
my $client = REST::Client->new();
$client->setHost("http://169.254.169.254/latest/meta-data");
$client->setTimeout(1);
foreach my $field (@fields) {
$client->GET($field);
if($client->responseCode() =~ /2\d\d/) {
$self->{aws_metadata}{$field} = $client->responseContent();
$self->{aws_metadata}{type} = 'aws';
}
elsif(scalar(keys %{$self->{aws_metadata}}) == 0) {
last;
}
}
return $self->{aws_metadata};
}
package Confman::ConfSet;
sub new {
my $class = shift;
my $api = shift;
my %conf = @_;
my $self = bless(\%conf, ref($class) || $class);
$self->{api} = $api;
{
no strict 'refs';
foreach my $key (keys %{$self->pairs}) {
*{$class.'::'.$key} = sub {
my $self = shift;
$self->{pairs}{$key};
} unless($self->can($key));
}
}
$self;
}
sub update_pairs {
my $self = shift;
my %pairs = @_;
my ($results, $response) = $self->api->request('PUT', "confman/sets/$self->{id}/update_pairs", {
conf_pairs => \%pairs
});
}
sub api {
my $self = shift;
return $self->{api};
}
sub pairs {
my $self = shift;
unless($self->{pairs}) {
$self->{pairs} = {};
foreach my $pair (@{$self->{conf_pairs}}) {
$self->{pairs}{$pair->{name}} = $pair->{value};
}
}
return $self->{pairs};
}
1;
( run in 1.133 second using v1.01-cache-2.11-cpan-39bf76dae61 )