Difference between revisions of "PluginsDummyCode"
Line 114: | Line 114: | ||
# | # | ||
# Returns: | # Returns: | ||
− | # - a hashname which | + | # - a hashname which keys are absolute pathnames of files in vm filesystem and |
# values the the pathname of the file in the host filesystem. The file in the | # values the the pathname of the file in the host filesystem. The file in the | ||
# host filesytesm is removed after VNUML processed it, so temporal files in | # host filesytesm is removed after VNUML processed it, so temporal files in |
Latest revision as of 01:13, 20 August 2011
# Dummy.pm # # This file is a sample for VNUML extension plugins. It can be used # as a template to implement custom user plugins. Note that, in order # to conform the VNUML plugins API, the modules has to implement all # the methods. package dummy; @ISA = qw(Exporter); @EXPORT = qw(createPlugin bootingCreateFiles bootingCommands execCreateFiles execCommands shutdownCommand finalizePlugin); use strict; # createPlugin # # To be called always, just before starting procesing the scenario specification # # Arguments: # - the operation mode ("t","x","d" or "P") # - the plugin configuration file # # Returns: # - an error message or 0 if all is ok # sub createPlugin { my $self = shift; my $mode = shift; my $conf = shift; # Sample code print "dummy plugin: creating in mode $mode with file $conf\n"; # Example of error message returning: # # return "an error has occur in dummy plugin" # return 0; } # bootingCreateFiles # # To be called during "t" mode, for each vm in the scenario # # Arguments: # - vm name # # Returns: # - a hashname which kyes are absolute pathnames of files in vm filesystem and # values the the pathname of the file in the host filesystem. The file in the # host filesytesm is removed after VNUML processed it, so temporal files in # /tmp are preferable) # sub bootingCreateFiles { my $self = shift; my $vm = shift; my %files; # Sample code print "dummy plugin: booting create files for vm $vm\n"; system("touch /tmp/boot1.$vm"); system("touch /tmp/boot2.$vm"); $files{"/etc/init.d/boot1"} = "/tmp/boot1.$vm"; $files{"/etc/init.d/boot2"} = "/tmp/boot2.$vm"; return %files; } # bootingCommands # # To be called during "t" mode, for each vm in the scenario # # Arguments: # - vm name # # Returns: # - list of commands to execute in the virtual machine at booting time # sub bootingCommands { my $self = shift; my $vm = shift; my @commands; # Sample code print "dummy plugin: booting commands for vm $vm\n"; push (@commands,"sh /etc/init.d/boot1"); push (@commands,"sh /etc/init.d/boot2"); return @commands; } # execCreateFiles # # To be called during "x" mode, for each vm in the scenario # # Arguments: # - vm name # - seq command sequence # # Returns: # - a hashname which keys are absolute pathnames of files in vm filesystem and # values the the pathname of the file in the host filesystem. The file in the # host filesytesm is removed after VNUML processed it, so temporal files in # /tmp are preferable) # sub execCreateFiles { my $self = shift; my $vm = shift; my $seq = shift; my %files; # Sample code print "dummy plugin: exec create files for vm $vm and seq $seq\n"; system("touch /tmp/exec1.$vm.$seq"); system("touch /tmp/exec2.$vm.$seq"); $files{"/etc/init.d/exec1.$seq"} = "/tmp/exec1.$vm.$seq"; $files{"/etc/init.d/exec2.$seq"} = "/tmp/exec2.$vm.$seq"; return %files; } # execCommands # # To be called during "x" mode, for each vm in the scenario # # Arguments: # - vm name # - seq command sequence # # Returns: # - list of commands to execute in the virtual machine after <exec> processing # sub execCommands { my $self = shift; my $vm = shift; my $seq = shift; my @commands; # Sample code print "dummy plugin: exec commands for vm $vm and seq $seq\n"; push (@commands,"sh /etc/init.d/exec1.$seq"); push (@commands,"sh /etc/init.d/exec2.$seq"); return @commands; } # shutdownCommand # # To be called during "d" mode, for each vm in the scenario # # Arguments: # - vm name # # Returns: # - list of commands to execute in the virtual machine at shutdown time # sub shutdownCommands { my $self = shift; my $vm = shift; my @commands; # Sample code print "dummy plugin: shutdown commands for vm $vm\n"; push (@commands,"sh /etc/init.d/shutdown1"); push (@commands,"sh /etc/init.d/shutdown2"); return @commands; } # finalizePlugin # # To be called always, just before ending the procesing the scenario specification # # Arguments: # - none # # Returns: # - none # sub finalizePlugin { my $self = shift; # Sample code print "dummy plugin: finishing\n" } 1;