summaryrefslogtreecommitdiff
path: root/README.rst
diff options
context:
space:
mode:
authorDevananda van der Veen <devananda.vdv@gmail.com>2013-06-04 07:34:44 -0700
committerDevananda van der Veen <devananda.vdv@gmail.com>2013-06-06 11:15:47 -0700
commit0917048268e7892cad549bea0142b34fc7699f33 (patch)
tree25a8e86f6f4c3543353f638c4d9dd34c582f2944 /README.rst
parent89ea41ef51c1a4df5a1b5a7072e1bf78cd886fdd (diff)
downloadironic-0917048268e7892cad549bea0142b34fc7699f33.tar.gz
Remove duplication from README, add link to docs.
Change-Id: I1d4367cccc9669cf18987a6ca36f79a372303e16
Diffstat (limited to 'README.rst')
-rw-r--r--README.rst100
1 files changed, 6 insertions, 94 deletions
diff --git a/README.rst b/README.rst
index 94f0b8c01..b2462c008 100644
--- a/README.rst
+++ b/README.rst
@@ -18,108 +18,20 @@ Project status, bugs, and blueprints are tracked on Launchpad:
http://launchpad.net/ironic
+Developer documentation can be found here:
+
+ http://docs.openstack.org/developer/ironic
+
Additional resources are linked from the project wiki page:
https://wiki.openstack.org/wiki/Ironic
-Developers wishing to contribute to an OpenStack project should
+Anyone wishing to contribute to an OpenStack project should
find plenty of helpful resources here:
- https://wiki.openstack.org/wiki/Getting_Started
+ https://wiki.openstack.org/wiki/HowToContribute
All OpenStack projects use Gerrit for code reviews.
A good reference for that is here:
https://wiki.openstack.org/wiki/GerritWorkflow
-
---------------------
-Project Architecture
---------------------
-
-An Ironic deployment will be composed of the following components:
-
-- A **RESTful API** service, by which operators and other services may interact
- with the managed bare metal servers.
-- A **Manager** service, which does the bulk of the work. Functionality is
- exposed via the API service. The Manager and API services communicate via
- RPC.
-- One or more **Deployment Agents**, which provide local control over the
- hardware which is not available remotely to the Manager. A ramdisk should be
- built which contains one of these agents, eg. with
- https://github.com/stackforge/diskimage-builder, and this ramdisk can be
- booted on-demand. The agent is never run inside a tenant instance.
-- A **Database** and a DB API for storing persistent state of the Manager and
- Drivers.
-
-The internal driver API provides a consistent interface between the
-Manager service and the driver implementations. There are two types of drivers:
-
-- ControlDrivers manage the hardware, performing functions such as power
- on/off, toggle boot device, etc.
-- DeployDrivers handle the task of booting a temporary ramdisk, formatting
- drives, and putting a persistent image onto the hardware.
-- Driver implementations are loaded and instantiated via entrypoints when the
- ManagerService starts. Each Node record stored in the database indicates
- which drivers should manage it. When a task is started on that node,
- information about the node and task is passed to the corresponding driver.
- In this way, heterogeneous hardware deployments can be managed by a single
- Manager service.
-
-In addition to the two types of drivers, there are three categories of driver
-functionality: core, common, and vendor:
-
-- "Core" functionality represents the minimal API for that driver type, eg.
- power on/off for a ControlDriver.
-- "Common" functionality represents an extended but supported API, and any
- driver which implements it must be consistent with all other driver
- implementations of that functionality. For example, if a driver supports
- enumerating PCI devices, it must return that list as well-structured JSON. In
- this case, Ironic may validate the API input's structure, but will pass it
- unaltered to the driver. This ensures compatibility for common features
- across drivers.
-- "Vendor" functionality allows an excemption to the API contract when a vendor
- wishes to expose unique functionality provided by their hardware and is
- unable to do so within the core or common APIs. In this case, Ironic will
- neither store nor introspect the messages passed between the API and the
- driver.
-
-
------------
-Development
------------
-
-Ironic source code should be pulled directly from git::
-
- git clone https://github.com/openstack/ironic
-
-Setting up a local environment for development can be done with tox::
-
- cd <your_src_dir>/ironic
-
- # install prerequisites
- * Ubuntu/Debian:
- sudo apt-get install python-dev swig libssl-dev python-pip libmysqlclient-dev libxml2-dev libxslt-dev
- * Fedora/RHEL:
- sudo yum install python-devel swig openssl-devel python-pip mysql-libs libxml2-devel libxslt-devel
-
- sudo easy_install nose
- sudo pip install virtualenv setuptools-git flake8 tox
-
- # create virtualenv
- tox -evenv -- echo 'done'
-
- # activate the virtualenv
- source .tox/venv/bin/activate
-
- # run testr init
- testr init
-
- # run pep8/flake8 checks
- flake8
-
- # run unit tests
- testr run
-
- # deactivate the virtualenv
- deactivate
-