libvirt: do not fail instance destroy, if mount_device is missing

In some cases, a volume does not have a mount_device field populated
in the device_mapping, especially for LXC instances. LXC instances
does not have a disk_bus mapping in get_dev_prefix_for_disk_bus()
and that results in mount_device being set to None.

Related to blueprint libvirt-start-lxc-from-block-devices

Change-Id: Idbd4ced0337c64003af08ac0497008878fb1c2e1
Change v3 flavor_manage API to v2.1

This patch changes v3 flavor_manage API to v2.1 and makes v2 unit tests
share between v2 and v2.1.
This patch removes test_create_flavor_name_with_leading_trailing_whitespace
because v2.1 API contains consistent name rule for whole of API request and
the name which contain spaces at the start/end of name is against the rule.

The differences between v2 and v3 are described on the wiki page
https://wiki.openstack.org/wiki/NovaAPIv2tov3 .

Partially implements blueprint v2-on-v3-api

Change-Id: I57ca2562cb02ce5a35c4596e4c5a753d1268493f
Import Ironic Driver & supporting files - part 5

Import the Ironic virt driver and supporting files (driver part 3 -
remaining functionality), as well as relevant
unit tests, as of commit da967d77894be6f23d81fb5cc948f9d13898ba84

This is the dicing up of review/103167 into smaller chunks
ready for review.

Change-Id: I3d1ac1c5c7bc6f94eb77769097ec5e93cdd7468b
Co-authored-by: Adam Gandelman <adamg@ubuntu.com>
Co-authored-by: Andrey Kurilin <akurilin@mirantis.com>
Co-authored-by: ChangBo Guo(gcb) <eric.guo@easystack.cn>
Co-authored-by: Chris Behrens <cbehrens@codestud.com>
Co-authored-by: Chris Krelle <nobodycam@gmail.com>
Co-authored-by: David Shrewsbury <shrewsbury.dave@gmail.com>
Co-authored-by: Devananda van der Veen <devananda.vdv@gmail.com>
Co-authored-by: Dmitry Tantsur <dtantsur@redhat.com>
Co-authored-by: Jim Rollenhagen <jim@jimrollenhagen.com>
Co-authored-by: Lucas Alvares Gomes <lucasagomes@gmail.com>
Co-authored-by: Matthew Gilliard <matthew.gilliard@hp.com>
Co-authored-by: Mikhail Durnosvistov <mdurnosvistov@mirantis.com>
Co-authored-by: Pablo Fernando Cargnelutti <pablo.fernando.cargnelutti@intel.com>
Co-authored-by: Robert Collins <rbtcollins@hp.com>
Co-authored-by: ryo.kurahashi <kurahashi-rxa@necst.nec.co.jp>
Improve Ironic driver performance: patch 6

As part of some large scale operational testing, some needed
performance improvements in the ironic driver have been
identified.  These changes have been reviewed and have been
merged into the ironic tree previously (reviews 108545 & 113036)

Change-Id: I635b974353a9dee542739857aa9778bf1e78cca8
Co-authored-by: Jim Rollenhagen <jim@jimrollenhagen.com>
Co-authored-by: Chris Behrens <cbehrens@codestud.com>
Ironic driver backports: patch 7

The patch to remove the dependency on python-ironicclient was
misplaced in the split of 103167 into the series of smaller
patches that we're now reviewing.  This patch reinstates this
change so ironicclient is loaded dynamically, and does not
become a requirement for Nova when not using Ironic.

Change-Id: I70a2fa8fc45e18524ea4d777d72da24d5d329c25
Co-authored-by: Devananda van der Veen <devananda.vdv@gmail.com>
Merge "Import Ironic Driver & supporting files - part 5"
Merge "Change v3 flavor_manage API to v2.1"
Merge "libvirt: do not fail instance destroy, if mount_device is missing"
Merge "Improve Ironic driver performance: patch 6"
Merge "Ironic driver backports: patch 7"