The OS table could be normalized better.  It currently contains
information about OS's (XP, linux, etc) and also install/image types
(VMware, xCAT partimage, etc).  The OS table is growing exponentially
as new OS's, provisioning engines, and image formats are added.  For
example, the OS table has a Windows XP entry for bare metal xCAT
(winxp) and VMware (vmwarewinxp).  Since support has been added for
KVM and soon for Xen, 2 new entries would be added for XP alone.

I propose adding an imagetype table to the database and changing the
way images are mapped to their image type.  The imagetype table will
replace the installtype table but contain similar data.  I think it
adding new tables then removing the old ones will be an easier develop
path as opposed to renaming tables, changing relationships, and coding
all at once.

The imagetype table will contain data such as:
imagetype.id  imagetype.name
1                   partimage
2                   lab
3                   kickstart
4                   vmdk
5                   qcow2

Images are currently mapped to their install/image type via the OS
table:  image.OS --> OS.installtype --> installtype.name.  The OS
table will be taken out of this path by adding an image.imagetypeid
column which points to the imagetype table and removing the
OS.installtype column.  This will result in images being mapped to
their type via image.imagetypeid --> imagetype.name.  This will allow
the OS table to be greatly simplified.  Only 1 entry will need to
exist for each OS.

A provisioningimagetype table would also be added replacing the
provisioningOSintalltype table.  This will map provisioning engines to
image types since some provisioning engines can support multiple image
types.

Thoughts?

Thanks,
Andy

Reply via email to