Baremetal/Historical
< Baremetal
Revision as of 21:23, 13 December 2012 by RobertCollins (talk) (move merged details here to reduce the size of the active page)
- 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.