Provide a PXE NodeDriver for the Baremetal driver

This patch implements a PXE NodeDriver class within the Baremetal
provisioning framework, which provides a means for deploying machine
images using TFTP and PXE.

This patch relies on functionality provided by the nova-baremetal-deploy-helper
utility, implemented in review 15830.

blueprint general-bare-metal-provisioning-framework.

Change-Id: I8d849601186e3dc13f10382857ff2bbc1ff1026d
Convert short doc strings to be on one line

This patch just cleans up some one-line doc strings which were
split across 3 lines needlessly.

Change-Id: I3c2011d20fb7c3b8714d7b5a32151e427bf8a311
A script for bare-metal node management.

Part 3 of 6: blueprint general-bare-metal-provisioning-framework.

nova-baremetal-manage:
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.

Change-Id: Ia19ce00edb84aa924c2ab2c9c2217f6b49073d69
Co-authored-by: Mikyung Kang <mkkang@isi.edu>
Co-authored-by: David Kang <dkang@isi.edu>
Co-authored-by: Ken Igarashi <igarashik@nttdocomo.co.jp>
Co-authored-by: Arata Notsu <notsu@virtualtech.jp>
PXE bare-metal provisioning helper server

a part of blueprint general-bare-metal-provisioning-framework.

Implement nova-baremetal-deploy-helper.

This service listens for HTTP requests from baremetal deploy ramdisk,
formats the remote disk and writes an image to it, as part of baremetal
PXE provisioning.

blueprint improve-baremetal-pxe-deploy shows how we plan to improve this
process.

Change-Id: I0a1b020cc5f81d49559acd4dcc781397a58e2c01
Co-authored-by: Mikyung Kang <mkkang@isi.edu>
Co-authored-by: David Kang <dkang@isi.edu>
Co-authored-by: Ken Igarashi <igarashik@nttdocomo.co.jp>
Co-authored-by: Arata Notsu <notsu@virtualtech.jp>
Co-authored-by: Devananda van der Veen <devananda.vdv@gmail.com>
Handle compute node records with no timestamp.

Commit 94560ab57d9fc23673f42017e6f2a78cb2b66b7a added a fast-path
to avoid work when baremetal compute nodes haven't changed, but if
the compute message has None for its updated-at timestamp (which
can happen during startup) the comparison crashes.

Change-Id: Ib8add431d975eee133deefea62eb53479a97396e
Cope better with out of sync bm data.

The baremetal hypervisor tracks references to instances which are deleted
asynchronously from the commit to the nova bm. As such, its a normal but rare
condition for a bare metal node to refer to a deleted (and even garbage
collected) nova instance. We should treat such instances are deleted rather
than erroring on any call through list_instances(), permitting starting
new instances and listing instances to work - fixing bug: 1096722.

Pathologically, the database may suffer permanent skew, which means we
need a way to fix it (and thats tracked as a separate bug).

Change-Id: Ic21ff66b1fc0ad64bb5feff26291873b96d20e4e
Merge branch 'bug-1096719' into baremetal-dev
Merge branch 'bug-1096722' into baremetal-dev