NAME

Device::Node::ACME.pm - example for node devices


MODULE

base


SYNOPSIS

$obj = Device::Node::ACME->new();


DESCRIPTION

Another Cluster Module Example. Full class name Device::Node::ACME This module can be used as an example of how to develop modules for new Node type devices in conjunction with the actual device modules that can be found in this distribution.

The Methods in this module generally override methods that appear in the parent classes. When developing a class for a Node type device be sure to use parent methods whenever possible to exploit code shareing at the highest level in the hierarchy. The methods in this class will function normally with the exception of when they require the actual device to interact with in which case they will just print out informative messages of what they would do if a device was present.

The vast majority of the code in the ACME modules found in each class path (Node Power and TermSrvr) is identical. Small additions and omissions are present (or absent) where they are meaninful to describe functionality that may be unique to a class.

Please see the code source for detailed information and implementation details.


METHODS

power - get/set power attribute, or initiate power control action
If passed no arguments, simply returns the object's power attribute, which is an array ref. If passed an array reference, sets the object's power attribute.

If passed a scalar (on, off, cycle, inter, etc.), then the appropriate action
is taken to control the power of the device.

This method is largely the same as a power method that would be found in any functional module. It is included here as an example of a typical implementation. Most actual device interaction is done in methods called by the power method which are also found in this module.

This method should be almost identical to the power method found in the Device.pm module. When developing modules please consider using your parents class methods whenenver appropriate.

_perform - A ``private'' method used by the methods off and on to execute the appropriate operation.
This method would normally accomplish the actual device interaction but for the purposes of this class will only print out information to the user about the operation that would be performed.

off - Power off method.
This method is called by the power method when an argument of ``off'' is passed. This method calls the _perform method to accomplish its function. This method is inluded to illustrate a device type that has its own power control capabilities. Alternatively a different object could be specified in the power attribute, and that objects off method would be used. For example if an object of type Device::Power::ACME was specified in the power attribute, the off method from that class would be executed instead of this off method.

on - Power on method.
This method is called by the power method when an argument of ``on'' is passed. This method calls the _perform method to accomplish its function. This method is inluded to illustrate a device type that has its own power control capabilities. Alternatively a different object could be specified in the power attribute, and that objects on method would be used. For example if an object of type Device::Power::ACME was specified in the power attribute, the on method from that class would be executed instead of this on method.

connect - connect method.
This method is used to establish a connection to the device. The method will determine how to establish a connection based on the console attribute of the object. If the object itself is listed in the console attribute of the object, the connect method of this class will be used to directly connect to the device that the object describes. Alternatively another device like a terminal server may be used to establish a connection with the device described by this class. If this is the case the connect method of this class will call the connect method of the class that describes the terminal server device. For these example modules that class will be Device::TermSrvr::ACME.

status - Status method.
This method is used to status a device of this class. What status actually means is device specific but in general status should return what state the device is in. Other methods like discover may need the device to be in a specific state to perform the required funcitonality. The status method commonly uses other class methods like connect.

discover - Discover method.
This method is used to discover a device of this type. What discovering a device means is very device specific but generally includes obtaining MAC addresses for one to all of the interfaces defined in the database for the specific device. The discover method typically uses other class methods like status and connect.

config - config method.
This method will accomplish whatever it means to config a device of this type. Configure in this sense generally means the basic configuration necessary to allow this device to act as expected as a member of the cluster. For a Node type device this could mean setting parameters in the BIOS or in the case of alpha nodes configuring the SRM. See device specific modules for detailed examples.

cycle_time - cycle_time method.
This method is used as an example of how other class methods can be used to alter the functionality of methods that appear in the local module or methods that are inherited from parent classes. In real implementations the power method can appear in a parent class of a range of specific device classes. If each of the classes that inherit the parent power method have different delay times between a power off and a power on, a method like this can be used to modify the functionality without replicating entire methods in each class that have little difference. This practice should be employed wherever possible.

boot - boot method.
This method will accomplish whatever it means to boot a device of this type. For an alpha node this is simply connecting to the SRM of the device and passing the string ``boot''. For other device types this could mean executing a power off followed but a power on.

Note: This is one of the few differences in the ACME modules for Node as opposed to Power and TermSrvr classes. The boot method is generally not meaninful for other than node devices.