X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=.build%2FspEUsgyear%2Flib%2FOyster%2FProvision.pm;fp=.build%2FspEUsgyear%2Flib%2FOyster%2FProvision.pm;h=36cd7cc4769d9149c33a9164110bc03c40a10c5e;hb=e74d6d9cf461eb98e13a8179119c66fcd96064ad;hp=0000000000000000000000000000000000000000;hpb=c96da56acf355bceeda2421a97953c43d3960173;p=p5sagit%2FOyster.git diff --git a/.build/spEUsgyear/lib/Oyster/Provision.pm b/.build/spEUsgyear/lib/Oyster/Provision.pm new file mode 100644 index 0000000..36cd7cc --- /dev/null +++ b/.build/spEUsgyear/lib/Oyster/Provision.pm @@ -0,0 +1,76 @@ +package Oyster::Provision; + +use Moose; + +has 'name' => ( is => 'ro', isa => 'Str', required => 1 ); +has 'size' => ( is => 'ro', isa => 'Str', required => 1 ); +has 'image' => ( is => 'ro', isa => 'Str', required => 1 ); +has 'pub_ssh' => ( is => 'ro', isa => 'Str', required => 1 ); + + +sub config { + return {provision_backend => 'Oyster::Provision::Rackspace'}; +} + +sub BUILD { + + my $self = shift; + + my $role = $self->config()->{provision_backend}; + + eval "use $role"; + "$role"->meta->apply($self); +} + +1; + +__END__ + +=head1 NAME + +Oyster::Provision - Provision an Oyster + +=head1 SYNOPSIS + + my $server = Oyster::Provision->new( + name => 'Ostrica', + size => '256', + image => 'Meerkat', + pub_ssh => "$ENV{HOME}/.ssh/id_rsa.pub", + ); + $server->create; + +=head1 BACKENDS + +By default, the L backend +will be used. + +Each backend needs to accept at least the C, +C, C and C parameters. The meaning +of these parameters may differ from one backend to another. + +=head1 METHOS + +Each backend usually implements the following C +methods: + +=over + +=item create + +Creates a new server by given name, if such server does +not exist. + +Installs the required packages for the distribution + +=item delete + +Gets rid of the server instance + +=item resize + +Hopefully scales the server + +=back + +=cut