Jump to: navigation, search

Difference between revisions of "Baremetal/Historical"

(move merged details here to reduce the size of the active page)
 
(move old review notes from main page to here)
Line 53: Line 53:
 
(6) (Merged) Added bare-metal host manager: https://review.openstack.org/11357
 
(6) (Merged) Added bare-metal host manager: https://review.openstack.org/11357
 
* nova/scheduler/baremetal_host_manager.py
 
* nova/scheduler/baremetal_host_manager.py
* The bare-metal host manager is used when multiple bare-metal instances are created by one request. The bare-metal host manager detects if a nova-compute is for VM or bare-metal. For VM instance provisioning, it simply calls the original ''host_manager''. For bare-metal instance provisioning, ''[[BaremetalNodeState]]'' is used to manage bare-metal node's resources when an instance is provisioned to a bare-metal node.
+
* The bare-metal host manager is used when multiple bare-metal instances are created by one request. The bare-metal host manager detects if a nova-compute is for VM or bare-metal. For VM instance provisioning, it simply calls the original ''host_manager''. For bare-metal instance provisioning, ''[[BaremetalNodeState]]'' is used to manage bare-metal node's resources when an instance is provisioned to a bare-metal node.  
 +
 
 +
== Code Added ==
 +
 
 +
<pre><nowiki>#!wiki red/solid
 +
* [[https://github.com/NTTdocomo-openstack/nova/tree/master/nova/virt/baremetal | nova/nova/virt/baremetal/*]]
 +
* [[https://github.com/NTTdocomo-openstack/nova/tree/master/nova/tests/baremetal | nova/nova/tests/baremetal/*]]
 +
* [[https://github.com/NTTdocomo-openstack/nova/blob/master/bin/bm_deploy_server | nova/bin/bm_deploy_server]]
 +
* [[https://github.com/NTTdocomo-openstack/nova/blob/master/bin/nova-bm-manage | nova/bin/nova-bm-manage]]
 +
* [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/scheduler/baremetal_host_manager.py | nova/nova/scheduler/baremetal_host_manager.py]]
 +
</nowiki></pre>
 +
 
 +
 
 +
== Code Changed ==
 +
 
 +
<pre><nowiki>#!wiki red/solid
 +
  * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/compute/manager.py | nova/compute/manager.py]]
 +
  * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/compute/resource_tracker.py | nova/compute/resource_tracker.py]]
 +
  * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/manager.py | nova/manager.py]]
 +
  * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/scheduler/driver.py | nova/scheduler/driver.py]]
 +
  * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/scheduler/filter_scheduler.py | nova/scheduler/filter_scheduler.py]]
 +
  * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/scheduler/host_manager.py | nova/scheduler/host_manager.py]]
 +
  * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/tests/compute/test_compute.py | nova/tests/compute/test_compute.py]]
 +
  * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/virt/driver.py | nova/virt/driver.py]]
 +
  * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/tests/test_virt_drivers.py | nova/tests/test_virt_drivers.py]]
 +
</nowiki></pre>
 +
 
 +
 
 +
(3) A script for bare-metal node management: https://review.openstack.org/#/c/11366/
 +
* bin/nova-baremetal-manage
 +
* doc/source/man/nova-baremetal-manage.rst
 +
* nova/tests/baremetal/test_nova_baremetal_manage.py
 +
* This script allows the system administrator to manage bare-metal nodes. Bare-metal node creation/deletion, PXE ip address creation/listing, bare-metal interface creation/deletion/list, and other routines are implemented. The script manipulate bare-metal DB accordingly.
 +
 
 +
(4) Updated bare-metal provisioning framework: https://review.openstack.org/11354
 +
* etc/nova/rootwrap.d/baremetal_compute.filters
 +
* nova/tests/baremetal/test_driver.py
 +
* nova/tests/baremetal/test_volume_driver.py
 +
* nova/virt/baremetal/baremetal_states.py 
 +
* nova/virt/baremetal/driver.py           
 +
* nova/virt/baremetal/fake.py             
 +
* nova/virt/baremetal/interfaces.template
 +
* nova/virt/baremetal/utils.py
 +
* nova/virt/baremetal/vif_driver.py
 +
* nova/virt/baremetal/volume_driver.py
 +
* New Baremetal driver is implemented in this patch. This patch does not include Tilera or PXE back-ends, which will be
 +
provided by subsequent patches. With this driver, nova compute registers multiple entries of baremetal nodes. It periodically updates the capabilities of the multiple bare-metal nodes and reports it as a list of capabilities.
 +
 
 +
(5) Added pxe back-end bare-metal.: https://review.openstack.org/11088
 +
* nova/tests/baremetal/test_ipmi.py
 +
* nova/tests/baremetal/test_pxe.py
 +
* nova/virt/baremetal/ipmi.py      
 +
* nova/virt/baremetal/pxe.py      
 +
* nova/virt/baremetal/vlan.py
 +
* nova/virt/baremetal/doc/pxe-bm-installation.rst  
 +
* nova/virt/baremetal/doc/pxe-bm-instance-creation.rst  
 +
* This patch includes only PXE back-end with IPMI. The documents describe how to install and configure bare-metal nova-compute to support PXE back-end nodes. It includes the packages needed for installation, how to create a bare-metal instance type, how to register bare-metal nodes and NIC, and how to run an instance. Nova flags for the configuration of bare-metal nova-compute are described.
 +
 
 +
(7) Add Tilera back-end for baremetal: https://review.openstack.org/#/c/16608/
 +
* etc/nova/rootwrap.d/baremetal_compute.filters
 +
* nova/tests/baremetal/test_tilera.py
 +
* nova/tests/baremetal/test_tilera_pdu.py
 +
* nova/virt/baremetal/tilera.py     
 +
* nova/virt/baremetal/tilera_pdu.py 
 +
* nova/virt/baremetal/doc/tilera-bm-installation.rst
 +
* nova/virt/baremetal/doc/tilera-bm-instance-creation.rst
 +
* This patchset was split out from (4) at the request of Nova core members.
 +
 
 +
(8) PXE bare-metal provisioning helper server: https://review.openstack.org/#/c/15830/
 +
* bin/nova-baremetal-deploy-helper
 +
* etc/nova/rootwrap.d/baremetal-deploy-helper.filters
 +
* nova/tests/baremetal/test_nova_baremetal_deploy_helper.py
 +
* doc/source/man/nova-baremetal-deploy-helper.rst

Revision as of 21:33, 18 January 2013

  • Launchpad Entry: NovaSpec:general-bare-metal-provisioning-framework

<<TableOfContents()>>

Summary

This page contains information of historical interest to the GeneralBareMetalProvisioningFramework.

Code Added

#!wiki red/solid
 * [[https://github.com/NTTdocomo-openstack/nova/tree/master/nova/virt/baremetal | nova/nova/virt/baremetal/*]] 
 * [[https://github.com/NTTdocomo-openstack/nova/tree/master/nova/tests/baremetal | nova/nova/tests/baremetal/*]]
 * [[https://github.com/NTTdocomo-openstack/nova/blob/master/bin/bm_deploy_server | nova/bin/bm_deploy_server]]
 * [[https://github.com/NTTdocomo-openstack/nova/blob/master/bin/nova-bm-manage | nova/bin/nova-bm-manage]]
 * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/scheduler/baremetal_host_manager.py | nova/nova/scheduler/baremetal_host_manager.py]]


Code Changed

#!wiki red/solid
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/compute/manager.py | nova/compute/manager.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/compute/resource_tracker.py | nova/compute/resource_tracker.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/manager.py | nova/manager.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/scheduler/driver.py | nova/scheduler/driver.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/scheduler/filter_scheduler.py | nova/scheduler/filter_scheduler.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/scheduler/host_manager.py | nova/scheduler/host_manager.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/tests/compute/test_compute.py | nova/tests/compute/test_compute.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/virt/driver.py | nova/virt/driver.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/tests/test_virt_drivers.py | nova/tests/test_virt_drivers.py]]


(1) (Merged) Updated scheduler and compute for multiple bare-metal capabilities: : https://review.openstack.org/13920

  • nova/compute/manager.py
  • nova/compute/resource_tracker.py
  • nova/manager.py
  • nova/scheduler/driver.py
  • nova/scheduler/filter_scheduler.py
  • nova/scheduler/host_manager.py
  • nova/tests/compute/test_compute.py
  • nova/tests/test_virt_drivers.py
  • nova/virt/driver.py
  • This patch includes updates on scheduler and compute codes for multiple bare-metal capabilities. In bare-metal provisioning, a bare-metal nova-compute manages multiple bare-metal nodes where instances are provisioned. Nova DB's compute_nodes entry needs to be created for each bare-metal node, and a scheduler can choose an appropriate bare-metal node to provision an instance. With this patch, one service entry with multiple bare-metal compute_node entries is registered at the start of bare-metal nova-compute. Distinct 'node name' is given for each bare-metal node. For this purpose, we extended FilterScheduler to put <nodename> to Nova DB's instance_system_metadata, and bare-metal nova-compute use <host> and <hypervisor_hostname> instead of <host> to identify the bare-metal node to provision the instance. Also, 'capability’ is extended from a dictionary to a list of dictionaries to describe the multiple capabilities of the multiple bare-metal nodes.

(2) (Merged) Added separate bare-metal MySQL DB: https://review.openstack.org/10726

  • nova/virt/baremetal/bmdb/*
  • nova/tests/baremetal/bmdb/*
  • Previously, bare-metal provisioning used text files to store information of bare-metal machines. In this patch, a MySQL is used to store the information. The DB is designed to support PXE/non-PXE booting methods, heterogeneous hypervisor types, and architectures. Using a MySQL makes maintenance and upgrades easier than using text files. The DB for bare-metal nodes is implemented as a separate DB from the main Nova DB. The DB can be on any machines/places. The location of the DB and its server needs to be specified as a flag in the nova.conf file (as in the case of glance). There are a couple of reasons for this approach. First, the information needed for bare-metal nodes is different from that for non-bare-metal nodes. With a separate database for bare-metal nodes, the database can be customized without affecting the main Nova DB. Second, fault tolerance can be embedded in bare-metal nova-compute. Since one bare-metal nova-compute manages multiple bare-metal nodes, fault tolerance of a bare-metal nova-compute node is very important. With a separate DB for bare-metal nodes, fault-tolerance can be achieved independently from the main Nova DB. Replication of the bare-metal DB and implementation of fault-tolerance are not part of this patch. The implementation models nova and its DB as much as possible. The bare-metal driver must be upgraded to use this DB.

(6) (Merged) Added bare-metal host manager: https://review.openstack.org/11357

  • nova/scheduler/baremetal_host_manager.py
  • The bare-metal host manager is used when multiple bare-metal instances are created by one request. The bare-metal host manager detects if a nova-compute is for VM or bare-metal. For VM instance provisioning, it simply calls the original host_manager. For bare-metal instance provisioning, BaremetalNodeState is used to manage bare-metal node's resources when an instance is provisioned to a bare-metal node.

Code Added

#!wiki red/solid
 * [[https://github.com/NTTdocomo-openstack/nova/tree/master/nova/virt/baremetal | nova/nova/virt/baremetal/*]] 
 * [[https://github.com/NTTdocomo-openstack/nova/tree/master/nova/tests/baremetal | nova/nova/tests/baremetal/*]]
 * [[https://github.com/NTTdocomo-openstack/nova/blob/master/bin/bm_deploy_server | nova/bin/bm_deploy_server]]
 * [[https://github.com/NTTdocomo-openstack/nova/blob/master/bin/nova-bm-manage | nova/bin/nova-bm-manage]]
 * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/scheduler/baremetal_host_manager.py | nova/nova/scheduler/baremetal_host_manager.py]]


Code Changed

#!wiki red/solid
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/compute/manager.py | nova/compute/manager.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/compute/resource_tracker.py | nova/compute/resource_tracker.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/manager.py | nova/manager.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/scheduler/driver.py | nova/scheduler/driver.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/scheduler/filter_scheduler.py | nova/scheduler/filter_scheduler.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/scheduler/host_manager.py | nova/scheduler/host_manager.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/tests/compute/test_compute.py | nova/tests/compute/test_compute.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/virt/driver.py | nova/virt/driver.py]]
   * [[https://github.com/NTTdocomo-openstack/nova/blob/master/nova/tests/test_virt_drivers.py | nova/tests/test_virt_drivers.py]]


(3) A script for bare-metal node management: https://review.openstack.org/#/c/11366/

  • bin/nova-baremetal-manage
  • doc/source/man/nova-baremetal-manage.rst
  • nova/tests/baremetal/test_nova_baremetal_manage.py
  • This script allows the system administrator to manage bare-metal nodes. Bare-metal node creation/deletion, PXE ip address creation/listing, bare-metal interface creation/deletion/list, and other routines are implemented. The script manipulate bare-metal DB accordingly.

(4) Updated bare-metal provisioning framework: https://review.openstack.org/11354

  • etc/nova/rootwrap.d/baremetal_compute.filters
  • nova/tests/baremetal/test_driver.py
  • nova/tests/baremetal/test_volume_driver.py
  • nova/virt/baremetal/baremetal_states.py
  • nova/virt/baremetal/driver.py
  • nova/virt/baremetal/fake.py
  • nova/virt/baremetal/interfaces.template
  • nova/virt/baremetal/utils.py
  • nova/virt/baremetal/vif_driver.py
  • nova/virt/baremetal/volume_driver.py
  • New Baremetal driver is implemented in this patch. This patch does not include Tilera or PXE back-ends, which will be

provided by subsequent patches. With this driver, nova compute registers multiple entries of baremetal nodes. It periodically updates the capabilities of the multiple bare-metal nodes and reports it as a list of capabilities.

(5) Added pxe back-end bare-metal.: https://review.openstack.org/11088

  • nova/tests/baremetal/test_ipmi.py
  • nova/tests/baremetal/test_pxe.py
  • nova/virt/baremetal/ipmi.py      
  • nova/virt/baremetal/pxe.py      
  • nova/virt/baremetal/vlan.py
  • nova/virt/baremetal/doc/pxe-bm-installation.rst  
  • nova/virt/baremetal/doc/pxe-bm-instance-creation.rst  
  • This patch includes only PXE back-end with IPMI. The documents describe how to install and configure bare-metal nova-compute to support PXE back-end nodes. It includes the packages needed for installation, how to create a bare-metal instance type, how to register bare-metal nodes and NIC, and how to run an instance. Nova flags for the configuration of bare-metal nova-compute are described.

(7) Add Tilera back-end for baremetal: https://review.openstack.org/#/c/16608/

  • etc/nova/rootwrap.d/baremetal_compute.filters
  • nova/tests/baremetal/test_tilera.py
  • nova/tests/baremetal/test_tilera_pdu.py
  • nova/virt/baremetal/tilera.py
  • nova/virt/baremetal/tilera_pdu.py
  • nova/virt/baremetal/doc/tilera-bm-installation.rst
  • nova/virt/baremetal/doc/tilera-bm-instance-creation.rst
  • This patchset was split out from (4) at the request of Nova core members.

(8) PXE bare-metal provisioning helper server: https://review.openstack.org/#/c/15830/

  • bin/nova-baremetal-deploy-helper
  • etc/nova/rootwrap.d/baremetal-deploy-helper.filters
  • nova/tests/baremetal/test_nova_baremetal_deploy_helper.py
  • doc/source/man/nova-baremetal-deploy-helper.rst