| WebService-Linode documentation | Contained in the WebService-Linode distribution. |
WebService::Linode - Perl Interface to the Linode.com API.
Version 0.05
my $api = new WebService::Linode( apikey => 'your api key here');
print Dumper($api->linode_list);
$api->linode_reboot(linodeid=>242);
This module implements the Linode.com api methods. Linode methods have had dots replaced with underscores to generate the perl method name. All keys and parameters have been lower cased but returned data remains otherwise the same. For additional information see http://www.linode.com/api/autodoc.cfm
Optional Parameters:
Optional Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Optional Parameters:
Required Parameters:
Returns the ID for a domain given the name.
Takes a record name and domainid or domain and returns the resourceid.
Michael Greb, <mgreb@linode.com>, and Stan "The Intern Man" Schwertly
This module does not yet support the Linode API batch method, patches welcome.
Please report any bugs or feature requests to bug-webservice-linode
at rt.cpan.org, or through the web interface at
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=WebService-Linode. I will
be notified, and then you'll automatically be notified of progress on your
bug as I make changes.
You can find documentation for this module with the perldoc command.
perldoc WebService::Linode
You can also look for information at:
Copyright 2008-2009 Linode, LLC, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| WebService-Linode documentation | Contained in the WebService-Linode distribution. |
package WebService::Linode; require 5.006000; use warnings; use strict; use Carp; use List::Util qw(first); use WebService::Linode::Base; our $VERSION = '0.05'; our @ISA = ("WebService::Linode::Base"); our $AUTOLOAD; my %validation = ( avail => { datacenters => [ [], [ ] ], kernels => [ [], [ 'kernelid', 'isxen' ] ], linodeplans => [ [], [ 'plainid' ] ], distributions => [ [], [ 'distributionid' ] ], }, domain => { create => [ [ 'domain', 'type' ], [ qw( description soa_email refresh_sec retry_sec expire_sec ttl_sec status master_ips ) ]], list => [ [], ['domainid'] ], update => [ ['domainid'], [ qw( domain description type soa_email refresh_sec retry_sec expire_sec ttl_sec status master_ips) ]], delete => [ ['domainid'], [] ], }, domain_resource => { create => [ ['domainid', 'type'], [ qw( name target priority weight port protocol ttl_sec )] ], list => [ ['domainid'], ['resouceid'] ], update => [ [ 'domainid', 'resourceid' ], [ qw( name target priority weight port protocol ttl_sec )] ], delete => [ [ 'domainid', 'resourceid' ], [] ], }, linode => { create => [ [ qw( datacenterid planid paymentterm ) ], [] ], list => [ [], ['linodeid'] ], update => [ ['linodeid'], [ qw( label lpm_displaygroup alert_cpu_enabled alert_cpu_threshold alert_diskio_enabled alert_diskio_threshold alert_bwin_enabled alert_bwin_threshold alert_bwout_enabled alert_bwout_threshold alert_bwquota_enabled alert_bwquota_threshold backupwindow backupweeklyday watchdog ) ] ], delete => [ ['linodeid'], [] ], shutdown => [ ['linodeid'], [] ], boot => [ ['linodeid'], ['configid'] ], reboot => [ ['linodeid'], ['configid'] ], }, linode_config => { create => [ [ qw( linodeid kernelid label ) ], [ qw( comments ramlimit disklist runlevel rootdevicenum rootdevicecustom rootdevicero helper_disableupdatedb helper_xen helper_depmod ) ] ], list => [ ['linodeid'], ['configid'] ], update => [ [ 'linodeid', 'configid' ], [ qw( kernelid label comments ramlimit disklist runlevel rootdevicenum rootdevicecustom rootdevicero helper_xen helper_disableupdatedb helper_depmod ) ] ], delete => [ [ 'linodeid', 'configid' ], [] ], }, linode_disk => { create => [ [ 'linodeid', 'label', 'type', 'size' ], [ 'isreadonly' ] ], list => [ [ 'linodeid' ], ['diskid' ] ], update => [ [ 'linodeid', 'diskid' ], [ 'label', 'isreadonly' ] ], delete => [ [ 'linodeid', 'diskid' ], [] ], createfromdistribution => [ [ qw( linodeid distributionid label size rootpass ) ], [ 'rootsshkey' ] ], duplicate => [ [ 'linodeid', 'diskid' ], [] ], resize => [ [ 'linodeid', 'diskid', 'size' ], [] ], }, linode_ip => { list => [ [ 'linodeid' ], [ 'ipaddressid' ] ], }, linode_job => { list => [ [ 'linodeid' ], [ 'jobid', 'pendingonly' ] ], }, user => { getapikey => [ [ 'username', 'password' ], [] ], }, ); sub AUTOLOAD { (my $name = $AUTOLOAD) =~ s/.+:://; return if $name eq 'DESTROY'; if ($name =~ m/^(.*?)_([^_]+)$/) { my ($thing, $action) = ($1, $2); if (exists $validation{$thing} && exists $validation{$thing}{$action}) { no strict 'refs'; *{ $AUTOLOAD } = sub { my ($self, %args) = @_; for my $req ( @{ $validation{$thing}{$action}[0] } ) { if ( !exists $args{$req} ) { carp "Missing required argument $req for ${thing}_${action}"; return; } } for my $given ( keys %args ) { if (!first { $_ eq $given } @{ $validation{$thing}{$action}[0] }, @{ $validation{$thing}{$action}[1] } ) { carp "Unknown argument $given for ${thing}_${action}"; return; } } (my $apiAction = "${thing}_${action}") =~ s/_/./g; my $data = $self->do_request( api_action => $apiAction, %args); return [ map { $self->_lc_keys($_) } @$data ] if ref $data eq 'ARRAY'; return $self->_lc_keys($data) if ref $data eq 'HASH'; return $data; }; goto &{ $AUTOLOAD }; } else { carp "Can't call ${thing}_${action}"; return; } return; } croak "Undefined subroutine \&$AUTOLOAD called"; } sub getDomainIDbyName { my ($self, $name) = @_; foreach my $domain (@{$self->domain_list()}) { return $domain->{domainid} if $domain->{domain} eq $name; } return; } sub getDomainResourceIDbyName { my ( $self, %args ) = @_; $self->_debug( 10, 'getResourceIDbyName called' ); my $domainid = $args{domainid}; if ( !exists( $args{domainid} ) && exists( $args{domain} ) ) { $domainid = $self->getDomainIDbyName( $args{domain} ); } if ( !( defined($domainid) && exists( $args{name} ) ) ) { $self->_error( -1, 'Must pass domain or domainid and (resource) name to getResourceIDbyName' ); return; } for my $rr ( @{ $self->domain_resource_list( domainid => $domainid ) } ) { return $rr->{resourceid} if $rr->{name} eq $args{name}; } } 'mmm, cake'; __END__