Implement a PXE driver equivalent to the Grizzly baremetal PXE driver

Registered by aeva black

Implement a PXE driver which is functionally equivalent to the code in the Grizzly (or trunk) Nova baremetal PXE driver and deploy-helper:
  https://github.com/openstack/nova/blob/master/nova/virt/baremetal/pxe.py
  https://github.com/openstack/nova/blob/master/nova/cmd/baremetal_deploy_helper.py

At a high level, this means it should:
* rely on dnsmasq for the initial DHCP PXE response
* prepare the tftp boot environment
* pull images from Glance, cache locally, and optionally perform file injection
* interact directly with the existing deployment "agent", instead of relying on the old "deploy helper" script.
   https://github.com/stackforge/diskimage-builder/blob/master/elements/deploy/init
* modify the tftp configuration after deployment is complete

Blueprint information

Status:
Complete
Approver:
aeva black
Priority:
Essential
Drafter:
aeva black
Direction:
Approved
Assignee:
Ghe Rivero
Definition:
Approved
Series goal:
Accepted for havana
Implementation:
Implemented
Milestone target:
milestone icon havana-3
Started by
Ghe Rivero
Completed by
aeva black

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/equivalent-pxe-driver,n,z

Addressed by: https://review.openstack.org/30712
    PXE driver - WIP

Addressed by: https://review.openstack.org/34332
    Sync strutils from oslo-incubator

Addressed by: https://review.openstack.org/33616
    Pxe driver

Addressed by: https://review.openstack.org/34500
    Sync fileutils from oslo-incubator

Addressed by: https://review.openstack.org/35272
    Move glance image service client from nova and cinder into ironic.

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.