The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Some ideas of how the implementation could be like

Initialisie a VM object:

 use VM::JiffyBox;

 my $secret_token = 'secretbla1234567890';
 my $hypervisor   = VM::JiffyBox->new( auth_token => $secret_token);

Get a specific box:

 my $vm_id = 'master_box123';
 my $vm    = $hypervisor->get_vm( $vm_id );

Create a new box:

 my $image = 'hfsidhfvksdhverw24ths';
 my $vm    = $hypervisor->create_vm( $image );

Or get all boxes:

 my @vms   = $hypervisor->get_vms();

Get specific ID for box-name:

 my $vm_id = $hypervisor->get_id_for_name( 'KundeA' );

Do stuff with a specific box:

 $vm->stop();
 $vm->delete();

 my $ip    = $vm->get_information()->{result}->{ips}->{public}->[0];
 my $ip    = $vm->get_ip();

 my $image = $vm->get_backup_id( 'daily' );

Forther stuff which is needed:

 # tell a box a specific API-Token,
 # represented with the hypervisor
 $vm->set_hypervisor( $hypervisor );

 # Interface for authentikation token
 $hypervisor->set_auth_token( 'usfhisfh22fsfhs' );

Example how to use

This is an example how we then could use this interface:

 use VM::JiffyBox;

 my $jiffy        = VM::JiffyBox->new( auth_token => 'geheim' );

 my $box_id_A     = $jiffy->get_id_for_name( 'Kunde_A' );

 my $box_A       = $jiffy->get_vm( $box_id_A );

 my $backup_img_A = $box_A->get_backup_id( 'daily' );

 my $test_box_A   = $jiffy->create_vm( $backup_img_A );

 my $test_ip_A    = $test_box_A->get_ip(); 

 # Do some stuff with the clone
 #
 # MAGIC GOES HERE (with Rex e.g.)
 #
 # ssh on IP and so on...

 $test_box_A->stop();
 $test_box_A->delete();