Difference between revisions of "PluginsDummyCode"

From VNUML-WIKI
Jump to: navigation, search
(Blanked the page)
Line 1: Line 1:
 +
<pre>
 +
# 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 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 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;
 +
</pre>

Revision as of 10:50, 21 July 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 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 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;