-
Notifications
You must be signed in to change notification settings - Fork 173
The design of xCAT configuration data version control
-
3 levels of object abstraction
- object definition (object definition in xCAT DB)
- object data (object definition + configuration files referenced in object definition)
- object entity (object data + object backend dirs/files + relationships with other objects + xCAT generated config files )
As the first step, the "object definition" and "object data" level will be first covered.
-
all the cluster configuration data in xCAT can be exported/imported as objects in yaml & json format
-
the configuration files should be representation of objects, the schema of objects should be well defined
- include all KEY information in xCAT DB
- objects should be loosely coupled
- suitable for manipulation with RESTful API and representation on GUI
-
the object schema can be configurable
-
object attributes should only contain raw data in DB, without any REGEX translation or group attributes inheritance
-
the configuration files can be used as the inventory file for configuration management tool (Ansible)
-
-
the config files in "object data" include:
- node object: postscripts, postbootscripts
- osimage object: synclists, postscripts, postbootscripts, template, pkglist,otherpkglist, exlist, postinstall, partitionfile
- object abstraction
- figure out the key xCAT objects
- determine the schemas for the xCAT objects
- support the mapping between object definitions and tables in xCAT DB
- ORM: SQLALchemy<==>class for table<= object schema =>class for object
- determine the format and layout of object persistent files, need to consider
- json/yaml
- interaction with configuration management tools(Ansible: https://github.com/chenglch/xcat-play/tree/master/ansible/xcat2)
- support the persistence of object definitions in yaml/json format
- support import of persisted object definitions
- support configurable object schema
- support the persistency of object data
- support the "object entity" (TBD)
- An summary of current xCAT objects and Tables
there are 72 tables in xCAT
auditlog bootparams boottarget cfgmgt chain deps discoverydata domain eventlog firmware hosts hwinv hypervisor ipmi iscsi kit kitcomponent kitrepo kvm_masterdata kvm_nodedata linuximage litefile litetree mac mic monitoring monsetting mp mpa networks nics nimimage nodegroup nodehm nodelist nodepos noderes nodetype notification openbmc osdistro osdistroupdate osimage passwd pdu pduoutlet performance policy postscripts ppc ppcdirect ppchcp prescripts prodkey rack routes servicenode site statelite storage switch switches taskstate token virtsd vm vmmaster vpd websrv winimage zone zvm
59 of them are abstracted to or referred in xCAT objects
auditlog bootparams boottarget cfgmgt chain domain eventlog firmware hosts hwinv hypervisor ipmi iscsi kit kitcomponent kitrepo linuximage mac mic monitoring mp mpa networks nics nimimage nodegroup nodehm nodelist nodepos noderes nodetype notification openbmc osdistro osdistroupdate osimage pdu pduoutlet policy postscripts ppc ppcdirect ppchcp prescripts prodkey rack routes servicenode site storage switch switches taskstate vm vpd websrv winimage zone zvm
the following 13 tables are not related to any object:
< deps < discoverydata < kvm_masterdata < kvm_nodedata < litefile < litetree < monsetting < passwd < performance < statelite < token < virtsd < vmmaster
- A draft of xCAT objects available for version control
-auditlog-
boottarget
-eventlog-
firmware
group
kit
kitcomponent
kitrepo
-monitoring-
network(need enhance)
node(need enhance)
-notification-
osdistro
osdistroupdate
osimage(need enhance)
pdu
policy
rack
route
site(need enhance)
-taskstate-
zone
passwd (NEW)
- some special cases in object abstraction
(1). the "xcatdefaults" entry in postscripts table should be included in site object
(2). the litefile, statelite and litetree tables
[1]. if "image" is osimage groups, the fields should be included as attributes of the osimage object with the osimage group name
[2]. if "image" is ALL, the fields should be included as attributes of the osimage object with the osimage group name "ALL"
[3]. if "image" is an osimage name, the fields should be included in the osimage object
-
investigated the implementation of DB2OBJ
-
plan#1: SQLALchemy+class for table+object schema+class for object
-
pros:
- no backward compatibility, clean code hierarchy
- support configurable object schema
- rich & flexible libraries for DB2OBJ mapping, data persistency in python
-
-
plan#2: refine XXdef commands to eliminate special case, REGEX translation and attribute inheritance
-
cons:
- the code logic of object manipulation is TOO complex and mess up, too many special cases and obscure code logic
- tightly coupled with current xCAT XXdef object ,
- limited room for xCAT object restructure
-
-
-
investigated the layout of the inventory files for Ansible
- Nov 13, 2024: xCAT 2.17 released.
- Mar 08, 2023: xCAT 2.16.5 released.
- Jun 20, 2022: xCAT 2.16.4 released.
- Nov 17, 2021: xCAT 2.16.3 released.
- May 25, 2021: xCAT 2.16.2 released.
- Nov 06, 2020: xCAT 2.16.1 released.
- Jun 17, 2020: xCAT 2.16 released.
- Mar 06, 2020: xCAT 2.15.1 released.
- Nov 11, 2019: xCAT 2.15 released.
- Mar 29, 2019: xCAT 2.14.6 released.
- Dec 07, 2018: xCAT 2.14.5 released.
- Oct 19, 2018: xCAT 2.14.4 released.
- Aug 24, 2018: xCAT 2.14.3 released.
- Jul 13, 2018: xCAT 2.14.2 released.
- Jun 01, 2018: xCAT 2.14.1 released.
- Apr 20, 2018: xCAT 2.14 released.
- Mar 14, 2018: xCAT 2.13.11 released.
- Jan 26, 2018: xCAT 2.13.10 released.
- Dec 18, 2017: xCAT 2.13.9 released.
- Nov 03, 2017: xCAT 2.13.8 released.
- Sep 22, 2017: xCAT 2.13.7 released.
- Aug 10, 2017: xCAT 2.13.6 released.
- Jun 30, 2017: xCAT 2.13.5 released.
- May 19, 2017: xCAT 2.13.4 released.
- Apr 14, 2017: xCAT 2.13.3 released.
- Feb 24, 2017: xCAT 2.13.2 released.
- Jan 13, 2017: xCAT 2.13.1 released.
- Dec 09, 2016: xCAT 2.13 released.
- Dec 06, 2016: xCAT 2.9.4 (AIX only) released.
- Nov 11, 2016: xCAT 2.12.4 released.
- Sep 30, 2016: xCAT 2.12.3 released.
- Aug 19, 2016: xCAT 2.12.2 released.
- Jul 08, 2016: xCAT 2.12.1 released.
- May 20, 2016: xCAT 2.12 released.
- Apr 22, 2016: xCAT 2.11.1 released.
- Mar 11, 2016: xCAT 2.9.3 (AIX only) released.
- Dec 11, 2015: xCAT 2.11 released.
- Nov 11, 2015: xCAT 2.9.2 (AIX only) released.
- Jul 30, 2015: xCAT 2.10 released.
- Jul 30, 2015: xCAT migrates from sourceforge to github
- Jun 26, 2015: xCAT 2.7.9 released.
- Mar 20, 2015: xCAT 2.9.1 released.
- Dec 12, 2014: xCAT 2.9 released.
- Sep 5, 2014: xCAT 2.8.5 released.
- May 23, 2014: xCAT 2.8.4 released.
- Jan 24, 2014: xCAT 2.7.8 released.
- Nov 15, 2013: xCAT 2.8.3 released.
- Jun 26, 2013: xCAT 2.8.2 released.
- May 17, 2013: xCAT 2.7.7 released.
- May 10, 2013: xCAT 2.8.1 released.
- Feb 28, 2013: xCAT 2.8 released.
- Nov 30, 2012: xCAT 2.7.6 released.
- Oct 29, 2012: xCAT 2.7.5 released.
- Aug 27, 2012: xCAT 2.7.4 released.
- Jun 22, 2012: xCAT 2.7.3 released.
- May 25, 2012: xCAT 2.7.2 released.
- Apr 20, 2012: xCAT 2.7.1 released.
- Mar 19, 2012: xCAT 2.7 released.
- Mar 15, 2012: xCAT 2.6.11 released.
- Jan 23, 2012: xCAT 2.6.10 released.
- Nov 15, 2011: xCAT 2.6.9 released.
- Sep 30, 2011: xCAT 2.6.8 released.
- Aug 26, 2011: xCAT 2.6.6 released.
- May 20, 2011: xCAT 2.6 released.
- Feb 14, 2011: Watson plays on Jeopardy and is managed by xCAT!
- xCAT OS And Hw Support Matrix
- Oct 22, 2010: xCAT 2.5 released.
- Apr 30, 2010: xCAT 2.4 is released.
- Oct 31, 2009: xCAT 2.3 released. xCAT's 10 year anniversary!
- Apr 16, 2009: xCAT 2.2 released.
- Oct 31, 2008: xCAT 2.1 released.
- Sep 12, 2008: Support for xCAT 2 can now be purchased!
- June 9, 2008: xCAT breaths life into (at the time) the fastest supercomputer on the planet
- May 30, 2008: xCAT 2.0 for Linux officially released!
- Oct 31, 2007: IBM open sources xCAT 2.0 to allow collaboration among all of the xCAT users.
- Oct 31, 1999: xCAT 1.0 is born!
xCAT started out as a project in IBM developed by Egan Ford. It was quickly adopted by customers and IBM manufacturing sites to rapidly deploy clusters.