-
Notifications
You must be signed in to change notification settings - Fork 174
Mini design for openbmc python framework
This framework is used to develop the plugin in python to interact with the BMC via REST, it depends on python requests and gevent modules, and leverage coroutions to do things in parallel.
- handle the arguments parsing in
preprocess_request
andprocess_request
- handle dispatching requests to service nodes
- when handling in
process_request
, collect enough nodes information and fork python agent, and send the requests to agent; After that, it acts as a broker betweenxcatd
and python agent.
Run as a program and listening on UNIX domain socket file, and then to communicate with openbmc2.pm
to get
requesting commands and send response.
All codes will be packaged in xCAT-openbmc-py
Directory layout for package by run tree xCAT-openbmc-py/lib/python/agent
xCAT-openbmc-py/lib/python/agent
├── agent.py
├── client.py
├── common
│ ├── __init__.py
│ ├── exceptions.py
│ ├── rest.py
│ ├── task.py
│ └── utils.py
├── hwctl
│ ├── __init__.py
│ ├── executor
│ │ ├── __init__.py
│ │ ├── openbmc_power.py
│ │ └── openbmc_setboot.py
│ ├── openbmc_client.py
│ ├── power.py
│ └── setboot.py
└── xcatagent
├── __init__.py
├── base.py
├── openbmc.py
├── openbmc_rest.py (It will be removed)
└── server.py
4 directories, 18 files
This module contains common utils and base classes for run the agent.
This module contains all the business logic to process hardware control commands via OpenBMC and later on Redfish, etc. It is composed with three parts:
-
HardWare Control Managers - to define the abstract interface for hw ctl.
- power.py - responsible to define power management interfaces
- setboot.py - responsible to define boot target management interfaces
- ...
-
HardWare Control Executors
- openbmc_power.py
- openbmc_setboot.py
- ...
-
BMC clients
- openbmc_client.py - to define the atomic API based on one REST API or some tight integrated REST APIs
- ...
Manager will invoke the specified functions defined in executors based on reflection
.
For example, the interface is get_example
, it will invoke a series of functions (when it is defined in executor class) in below order:
validate_get_example -> pre_get_example -> get_example -> post_get_example
class OpenBMCExampleTask(ParallelNodesCommand):
"""Executor for example-related actions."""
def validate_get_example(self, **kw): pass
def pre_get_example(self, **kw): pass
def get_example(self, **kw): pass
def post_example(self, **kw): pass
- 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.