| Title: Adding New OS Module |
| |
| This is a short guide on how to set up development environment for a OS |
| Module. |
| |
| # Install VCL {#installvcl} |
| |
| * Follow the install guide linked to from the [download](/downloads/download.cgi) |
| page. |
| |
| # Setting up a new OS Module {#settingupanewosmodule} |
| |
| * Start by creating a Module/OS/...pm file. |
| * See the other OS Module for examples. |
| * Set the package path in the file<br> |
| package VCL::Module::OS::...; |
| * Add an entry to the module table pointing to your new module with the |
| package path mentioned above. |
| * Add an entry to the OS table pointing to the entry you add to the module |
| table. |
| * Add entries to the image and imagerevision table for a base new image, |
| with image.OSid pointing to the entry you add to the OS table. |
| * Enter the computer information for a loaded new machine into VCL and make |
| sure that the management node can access this machine via SSH. |
| * Insert the code you want to test at the |
| beginning of the process() subroutine in new.pm, followed by a call to |
| exit: |
| |
| :::PerlLexer |
| sub process { |
| my $self = shift; |
| |
| my $request_data = $self->data->get_request_data(); |
| ... |
| my $imagerevision_id = $self->data->get_imagerevision_id(); |
| |
| print "\n\n---\n\n"; |
| |
| my $ip = $self->os->get_public_ip_address(); |
| print "IP: $ip\n"; |
| |
| print "\n\n---\n\n"; |
| exit; |
| ... |
| |
| * To test things over and over again, run a script which inserts entries |
| into the request and reservation tables with the request state and |
| laststate set to 'new'. vcld picks up the reservation, configures |
| everything as it would for a normal reservation, calls new.pm::process(), |
| test code is executed, then the process exits. |
| * Once this is set up, it should be pretty efficient to test all of the |
| subroutines in OS module. |