summaryrefslogblamecommitdiffstats
path: root/os-plugins/plugins/vmchooser/OpenSLX/OSPlugin/vmchooser.pm
blob: adbc55572192a4b75b256ec6d3872ee76401edd7 (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                                                               


                                                                               









                                     
















                                                                              
                                                                                           
                                                                              
                           
                                  



               
 

                         
                









                                                                                              
                                            











                                                                                              

























































                                                                                     
  
 
# Copyright (c) 2008 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
#
# If you have any feedback please consult http://openslx.org/feedback and
# send your suggestions, praise, or complaints to feedback@openslx.org
#
# General information about OpenSLX can be found at http://openslx.org/
# -----------------------------------------------------------------------------
# vmchooser.pm
#	- allows user to pick from a list of virtual machin images
# -----------------------------------------------------------------------------
package OpenSLX::OSPlugin::vmchooser;

use strict;
use warnings;

use base qw(OpenSLX::OSPlugin::Base);

use OpenSLX::Basics;
use OpenSLX::Utils;

sub new
{
	my $class = shift;

	my $self = {
		name => 'vmchooser',
	};

	return bless $self, $class;
}

sub getInfo
{
	my $self = shift;

	return {
		description => unshiftHereDoc(<<'		End-of-Here'),
			allows user to pick from a list of different virtual machine images
			based on xml-files, which tell about available images.
		End-of-Here
		mustRunAfter => []
	};
}

sub getAttrInfo
{
	my $self = shift;

	return {
		'vmchooser::active' => {
			applies_to_systems => 0,
			applies_to_clients => 0,
			description => unshiftHereDoc(<<'			End-of-Here'),
				should the 'vmchooser'-plugin be executed during boot?
			End-of-Here
			content_regex => qr{^(0|1)$},
			content_descr => '1 means active - 0 means inactive',
			default => '1',
		},
		'vmchooser::precedence' => {
			applies_to_systems => 1,
			applies_to_clients => 1,
			description => unshiftHereDoc(<<'			End-of-Here'),
				the execution precedence of the 'vmchooser' plugin
			End-of-Here
			content_regex => qr{^\d\d$},
			content_descr => 'allowed range is from 01-99',
			default => 50,
		},
	};
}


sub installationPhase
{	# called while chrooted to the vendor-OS root in order to give the plugin
	# a chance to install required files into the vendor-OS.
	my $self = shift;
	
	my $pluginRepositoryPath = shift;
		# The folder where the stage1-plugin should store all files
		# required by the corresponding stage3 runlevel script.
		# As this method is being executed while chrooted into the vendor-OS,
		# this path is relative to that root (i.e. directly usable).
	my $pluginTempPath = shift;
		# A temporary playground that will be cleaned up automatically.
		# As this method is being executed while chrooted into the vendor-OS,
		# this path is relative to that root (i.e. directly usable).
	my $openslxPath = shift;
		# the openslx base path bind-mounted into the chroot (/mnt/openslx)
	
	# for this example plugin, we simply create two files:
	spitFile("$pluginRepositoryPath/right", "(-;\n");
	spitFile("$pluginRepositoryPath/left", ";-)\n");

	# Some plugins have to copy files from their plugin folder into the
	# vendor-OS. In order to make this possible while chrooted, the host's
	# /opt/openslx folder will be mounted to /mnt/openslx in the vendor-OS. 
	# So each plugin could copy some files like this:
	#
	
	# get our own name:
	my $pluginName = $self->{'name'};
	
	
	# get our own base path:
	my $pluginBasePath = "/mnt/openslx/lib/plugins/$pluginName";
	
	# copy all needed files now:
	foreach my $file ( qw( vmchooser ) ) {
	    copyFile("$pluginBasePath/$file", "$pluginRepositoryPath/");
	}

	# name of current os
	# $self->{'os-plugin-engine'}->{'vendor-os-name'} 

	return;
}

sub removalPhase
{	# called while chrooted to the vendor-OS root in order to give the plugin
	# a chance to uninstall no longer required files from the vendor-OS.
	my $self = shift;
	my $pluginRepositoryPath = shift;
		# the repository folder, relative to the vendor-OS root
	my $pluginTempPath = shift;
		# the temporary folder, relative to the vendor-OS root

	return;
}

1;