Re: Image capture improvements and API development

2009-03-05 Thread Andy Kurth
The commits I made on 2/26 extended the state modules with the new flow 
described in this thread.  Up to this point, nothing has functionally changed 
because none of the provisioning or OS modules have been committed which have 
been modified to use the new flow.


The image capture flow changes and OS modularization that I'm working on are 
very intertwined.  Vista.pm was the first attempt at modularization and the next 
step is to get the other Windows OS's working in the same fashion.  I want to 
take steps so the code that's already working isn't affected.  Here's how I 
intend to do this...


See the diagram at the top of this page:
http://cwiki.apache.org/confluence/display/VCL/Operating%20System%20Module%20Inheritance

The current Windows OS modules are using or inheriting from Windows.pm, 
Desktop.pm, and Vista.pm.  I don't want to change these at all.  I plan to 
commit new files named Windows_mod.pm, Version_5.pm, Version_6.pm, XP_mod.pm, 
and Vista_mod.pm, as shown on the right side of the diagram.  This will allow us 
to work on and test the new modules without affecting existing, working code. 
Once tested and everyone's comfortable with the modularized code, the old files 
can be removed and Windows_mod.pm will be renamed Windows.pm, etc.  Much of the 
code is not actually new.  Several subroutines were copied from Vista.pm because 
they work for any Windows OS.


It's possible to use the old code and test new in parallel because of the way 
the database was designed to handle modularization.  All that needs to be done 
is to create a new entry in the OS table (call it XP_mod) and a corresponding 
entry in the module table with its module.perlpackage column pointing to 
XP_mod.pm.  Any images you configure with the image.OSid pointing to the new 
XP_mod OS type will receive the new code.  All of existing XP images will not be 
affected.  I have begun to document this on the page noted above.


The file named Version_5.pm and Version_6.pm will replace Desktop.pm and 
Server.pm (which doesn't actually exist).  After working with the different 
Windows versions and seeing where the major differences lie, it makes more sense 
to organize the Windows inheritance tree by Windows major version rather than 
desktop/server.


I have a good bit of the new layout done and will commit it soon if there are no 
objections.  Please let me know if you have any questions, ideas, or want to help.


Thanks,
Andy


Andy Kurth wrote:
Thanks to everyone for the feedback.  I'll begin working on the proposed 
changes today.


Thanks,
Andy

Aaron Peeler wrote:
I like these changes also, this falls in line with our overall 
modularization goal.

Aaron

--On February 12, 2009 3:48:30 PM -0500 Andy Kurth 
andy_ku...@ncsu.edu wrote:



I would like to begin defining and documenting the API for the backend
code as people are actively working on developing new modules.  I have
begun some pages on the Confluence site and would like to start
discussing this.

API development is somewhat related to the image capture and
modularization issues discussed at the meeting on 2/5.  Solving the
issues requires the modularization architecture to be modified and the
API should be specified/updated along the way.

The main problem is that xCAT.pm expects the OS to reboot when the OS
capture tasks are done and vmware.pm needs the OS to shut down.  xCAT.pm
is currently the only provisioning module which has had the OS-specific
code removed and is fully modularized.  vmware.pm still contains OS 
code.

It will be difficult to modularize vmware.pm and the ESX.pm module that
Brian and Andrew are working on because of this.

I have given it some thought and would like to propose the numbered
changes below.  These changes probably sound bigger than they really 
are.

Minor changes would need to be made to xCAT.pm and image.pm.  This will
be easier to understand if you look at the diagram on the following 
page:

http://cwiki.apache.org/confluence/display/VCL/Image+Capture+Sequence


1. The name of the OS module's capture_prepare subroutine will be 
changed

to pre_capture().  The reason for this is to align the name of the main
OS capture subroutine with the main OS load subroutine - pre_capture()
and post_load().

2. image.pm will no longer call the OS::pre_capture() subroutine.  It
will be the provisioning module's responsibility to do this.  This 
allows

the provisioning module to have greater control over the capture
sequence.  image.pm will only call the provisioning module's capture()
subroutine.  This makes better sense to me because provisioning engines
can be quite varied and the sequence should really be driven by the
provisioning module.

3. OS::pre_capture() will accept an optional argument named 'end_state'
with possible values 'on', 'off', 'reboot'.  This instructs
OS::pre_capture() what to do after completing its image capture steps.
Because pre_capture() will be called by the provisioning module, the
provisioning module 

Re: a hypervisor's username password

2009-03-05 Thread Aaron Peeler
option 2 - vmprofile table is the definitely the correct location to store 
this type of data.


The vmhost table will eventually only have 4 columns 
id,computerid,vmlimit,vmprofileid.All additional info about a given 
hypervisor should in a profile.


After extending the database - we'll need to extend the query in 
utils::get_vmhost_info routine


Are there any other variables for the esx module that should go into the 
vmprofile table?


Aaron

--On March 5, 2009 3:19:20 PM -0500 Brian Bouterse bmbou...@ncsu.edu 
wrote:



Heretofore, VCL SSH's to a hypervisor when it wants to cause some change
(ie: provision or deprovision a VM).  The VCL uses pre-shared SSH keys
between VCL and the hypervisor to allow the SSHing the authenticate.
This works for VMware server and regular ESX because they are
configurable to accept SSH keys.  ESX 3i isn't configurable to accept an
SSH logon, and can only be communicated with through a web service which
requires a valid hypervisor username and password.

So I'd like to propose that we add a hypervisor username and password in
the VCL database associated.  As far as I can tell, there are two places
to add this information.

1)  Extend the 'vmhost' table to include a username field and a password
field.  This would allow each individual hypervisor to have its own
user/pass.  However, if all the hypervisors use the same user/pass then
we've just duplicated a lot of data, and it is very hard to change this
system wide password later.

2)  Extend the 'vmprofile' table to include a username field and a
password.  In this case a group of hypervisors (linked through the same
vmprofile) would share a single user/pass.  This would make password
changes easier since it only has to be updated in one place, but requires
hypervisors to have a consistant username/password across them.  Because
of the de-duplication of data, and easyness of password changes, I favor
of this second option.

Whichever table it goes in, here are the lines to be added to the vcl.sql
file:

  `username` varchar(8) NOT NULL default ''
`password` varchar(40) NOT NULL default ''

Could someone tell us a bit about how to get that username and password
out of the database and into our module as a variable?

Best,
Brian

Brian Bouterse
Secure Open Systems Initiative
919.698.8796








Aaron Peeler
OIT Advanced Computing
College of Engineering-NCSU
919.513.4571
http://vcl.ncsu.edu


Re: a hypervisor's username password

2009-03-05 Thread Josh Thompson
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On Thu March 5 2009 3:41:47 pm Aaron Peeler wrote:
 option 2 - vmprofile table is the definitely the correct location to store
 this type of data.

snip

  Whichever table it goes in, here are the lines to be added to the vcl.sql
  file:
 
`username` varchar(8) NOT NULL default ''
  `password` varchar(40) NOT NULL default ''

These should be allowed to be NULL with a default value of NULL since they 
will exist for every vmprofile, including those that do not require these 
fields.

Also, are you sure ESXi limits the username to 8 characters?

Josh
- -- 
- ---
Josh Thompson
Systems Programmer
Virtual Computing Lab (VCL)
North Carolina State University

josh_thomp...@ncsu.edu
919-515-5323

my GPG/PGP key can be found at www.keyserver.net
-BEGIN PGP SIGNATURE-
Version: GnuPG v2.0.9 (GNU/Linux)

iD8DBQFJsD+XV/LQcNdtPQMRAtJSAJsEV/QcbIPmukSzDP9uhxKuhUGNawCfX3ar
PJ/6OqBsttA5YaoOKt6C+kQ=
=Obs6
-END PGP SIGNATURE-