Hi Sean,
Welcome! As Aaron mentioned, here is the provisioning module specification:
http://cwiki.apache.org/confluence/display/VCL/Provisioning+Engine+Module+Interface+Specification
If you haven't done so already, browse the pages under the following URL to
familiarize yourself with the backend modularization and inheritance architecture:
http://cwiki.apache.org/confluence/display/VCL/Backend
(Note: the purple text on these pages are just notes of additional things which
should be documented)
These pages along with going through existing modules are probably your best
bet. The xCAT.pm and vmware.pm modules are the most current. I would work off
of them.
The VCL ASF community really hasn't discussed coding guidelines so this would be
a good exercise as this is developed.
We (NCSU) mainly use VMware Server 1.x at the current time. I'm hoping to work
with the community to rework the vmware.pm module to use the VMware Perl API,
possibly for a 2.2 release. This is necessary in order for us to be able to use
VMware Server 2.x, which I believe is going to be necessary to support Windows 7
VMware environments.
Ideally, vmware.pm would contain all of the general functions common to the
different VMware products. esx.pm module would inherit from vmware.pm and would
implement functions specific to ESX. Some work needs to be done to get these
aligned. Your module would then inherit from esx.pm and would only need to
implement the special linked cloning functions.
That said, you don't have to wait for other modules to be updated you don't
really have to deal with VMware/ESX inheritance in order to get started. All
the functions you need could be implemented in your .pm file for now. As you
identify or write subroutines which could be used across the VMware product
lines, bring them up on the list and we can decide where in the hierarchy they
should go.
-Andy
Sean Dilda wrote:
I'm about to embark on writing a new provisioning module for VCL based
on some existing perl scripts I have. Is there any documentation for
how the module interface works? I haven't been able to find any aside
from reading existing modules. Also are there any required/preferred
coding guidelines for this project?
For those that are interested, this module is going to be another ESX
provisioning module. This module will use VMware snapshots to create
deployed VMs as snapshots against the base image's disk, which leads to
extremely quick provisioning with little wasted disk usage. Its based on
the techniques used in the ghetto linked clones script
(http://communities.vmware.com/docs/DOC-9020) but rewritten in perl
using the VI Perl Toolkit. I already have stand alone scripts in perl
that work, so this is mostly an exercise of converting those scripts
into a VCL module.