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