summaryrefslogblamecommitdiffstats
path: root/os-plugins/plugins/VMware/OpenSLX/OSPlugin/VMware.pm
blob: 4167ffdd23bb3e081e40bceb2472223d7fd3ff8b (plain) (tree)
























































































































                                                                                                 
# Copyright (c) 2007 - 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/
# -----------------------------------------------------------------------------
# VMware.pm
#	- an example implementation of the OSPlugin API (i.e. an os-plugin)
# -----------------------------------------------------------------------------
package OpenSLX::OSPlugin::VMware;

use strict;
use warnings;

our $VERSION = 1.01;    # API-version . implementation-version

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

################################################################################
# if you have any questions regarding the concept of OS-plugins and their
# implementation, please drop a mail to: ot@openslx.com, or join the IRC-channel
# '#openslx' (on freenode).
################################################################################
### interface methods
################################################################################
sub new
{
	my $class = shift;

	my $self = {};

	return bless $self, $class;
}

sub initialize
{
	my $self = shift;

	# The os-plugin-engine drives us, it provides some useful services relevant 
	# to installing stuff into the vendor-OS, like downloading functionality, 
	# access to meta-packager, ...
	$self->{'os-plugin-engine'} = shift;

	# Any other static initialization necessary for a plugin should be done 
	# here, more often than not, this will involve a configurational hash
	# representing the default settings for this plugin.
	# At a later stage, the user will be able to change plugin-specific settings
	# (on a per-system/client basis) via slxconfig, such that the actual 
	# configuration will be stored in the DB. 
	# Currently, though, you have to change the settings here:
	$self->{config} = {
		'active' => 0,					# set to 0 in order to deactivate
		'precedence' => 10,				# runlevel precedence
	}
}

sub preInstallationPhase
{	# called before chrooting into vendor-OS root, should be used if any files
	# have to be downloaded outside of the chroot (which might be necessary
	# if the required files can't be installed via the meta-packager)
	my $self = shift;
	my $pluginRepositoryPath = shift;
		# the folder where the stage1-plugin should store all files
		# required by the corresponding stage3 runlevel script
	my $pluginTempPath = shift;
		# a temporary playground that will be cleaned up automatically
	
	# in this example plugin, there's no need to do anything here ...
}

sub installationPhase
{	# called while chrooted to the vendor-OS root, most plugins will do all
	# their installation work here
	my $self = shift;
	my $pluginRepositoryPath = shift;
		# the repository folder, this time from inside the chroot
	my $pluginTempPath = shift;
		# the temporary folder, this time from inside the chroot
	
	# for this example plugin, we simply create two files:
	spitFile("$pluginRepositoryPath/right", "(-;\n");
	spitFile("$pluginRepositoryPath/left", ";-)\n");
}

sub postInstallationPhase
{	# called after having returned from chrooted environment, should be used
	# to cleanup any leftovers, if any such thing is necessary
	my $self                 = shift;
	my $pluginRepositoryPath = shift;
	my $pluginTempPath       = shift;
	
	# in this example plugin, there's no need to do anything here ...
}

sub getConfig
{	# called from the config-demuxer in order ot access the configurational
    # hash, which will then be written to a file (in this case: 
    # /opt/openslx/plugin-conf/VMware.conf), that will be transported to each
    # client as part of the conf-TGZ.
	my $self = shift;

    return $self->{config};
}

sub preRemovalPhase
{
}

sub removalPhase
{
}

sub postRemovalPhase
{
}