Jump to: navigation, search

Difference between revisions of "Ironic-python-agent"

(Motivation)
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
==What is the Ironic Python Agent?==
 +
* The agent is a small python application that is embedded in a ramdisk.
 +
* During deployment or cleaning, a node boots the ramdisk.
 +
* The agent inside then exposes a REST API that Ironic uses to interact with the agent.
 +
* The API calls pluggable HardwareManagers to interact with the machine.
  
 +
==Current Status==
 +
The ironic-python-agent is the only supported deploy mechanism for Ironic, as the old bash ramdisk was deprecated during Mitaka cycle.
  
==Motivation==
+
==More Information==
At the moment Ironic uses exactly the same deployment ramdisk as nova baremetal driver does. Current implementation of deployment agent exposes a hard drive via ISCSI and then conductor driver mounts it and copies OS image to it. However, there are a number of other possible much more scalable mechanisms such as downloading OS images via HTTP or BitTorrent or any kind of multicast protocols. Besides, default Ironic approach at the moment is to avoid installing bootloader on a node hard drive, but it is better to have such a possibility as well. Another point is that user often wants to have a comprehensive disk partitioning scheme with support of LVM, MD (software RAID), plain partitions, msdos and gpt partition tables, etc. User often needs to have a convenient mechanism of updating firmware, configuring hardware RAIDs, etc. As a conclusion, we need to have a comprehensive pluggable agent to deal with all that stuff.
+
For more information, please view ironic-python-agent documentation at http://docs.openstack.org/developer/ironic-python-agent/.
 
 
=What is ironic python agent?=
 
* It supposed to be a built-in component of so called utility ramdisk.
 
* Ironic conductor drivers are supposed to be able to interact with this component via REST API.
 
* It is supposed to use JSON as a transport layer.
 
* It is supposed to have a pluggable architecture in order to make user able to easily add their own functionality (whether gathering data about the hardware or applying changes to it). Plugins are supposed to be JSON driven components (python modules, bash scripts, what ever).
 
* Agent itself is supposed to route the incoming JSON to the appropriate plugin, and to route the response back via the transport layer.
 
 
 
=Preliminary architecture diagram=
 
* Drow.io editable diagram https://drive.google.com/file/d/0BybDDjx4oqkYOVZ5a2hURUViblk/edit?usp=sharing
 
[[File:Ironic python agent.png|650px]]
 
 
 
Full system architecture when using the ironic python agent: https://www.lucidchart.com/publicSegments/view/532335f8-edc4-40c2-804e-11060a009433/image.pdf
 
 
 
=On Ironic conductor side=
 
Currently Ironic pxe driver is able to interact with only nova baremetal agent. It is supposed that all that stuff about provisioning and using comprehensive agent will also be implemented as a part of Ironic pxe driver (NOT separate driver).
 

Latest revision as of 23:14, 10 June 2016

What is the Ironic Python Agent?

  • The agent is a small python application that is embedded in a ramdisk.
  • During deployment or cleaning, a node boots the ramdisk.
  • The agent inside then exposes a REST API that Ironic uses to interact with the agent.
  • The API calls pluggable HardwareManagers to interact with the machine.

Current Status

The ironic-python-agent is the only supported deploy mechanism for Ironic, as the old bash ramdisk was deprecated during Mitaka cycle.

More Information

For more information, please view ironic-python-agent documentation at http://docs.openstack.org/developer/ironic-python-agent/.