Allow Ironic URL from config file

Currently when using username/password auth from configs with
ironic client, it's not possible to specify the ironic URL in
a config file. This commit makes that possible.

Change-Id: Ib99c48c2f80abaf42b08f36af942535d7c9ac5d1
Sync oslo.incubator modules

Update the openstack.common modules from oslo.incubator
to have a current copy needed to start using new released
oslo libraries.

Change-Id: I60ea98b3381cbbc3d2905af224792ee68b423825
Fix self.fields on API Chassis object

All fields from objects.Chassis were being added to self.fields in
the API Chassis object. Because of this, when someone would POST,
there'd be an entry for {'id': None} in the dictionary passed to
dbapi.create_chassis(). We should only set fields we're exposing.

This also required fixing PATCH to not try to look at fields not set on
the API Chassis object when mapping to objects.Chassis.

Change-Id: Ie5b31455b925ae395995de7b7c638ab5e3543633
Fix self.fields on API Port object

All fields from objects.Port were being added to self.fields in the
API Port object. Because of this, when someone would POST, there'd be an
entry for {'id': None} in the dictionary passed to dbapi.create_port(). We
should only set fields we're exposing.

This also required fixing PATCH to not try to look at fields not set on
the API Port object when mapping to objects.Port.

Change-Id: I7f163d42d1298ce4ba62b1b7d637fb0a4e3409ce
Migration to oslo.utils library

oslo.utils has been released with the modules excutils, importutils,
strutils and timeutils.

Changes done:
- Use the new oslo.utils modules when possible (not updated in the
nova.ironic driver and other oslo.incubator modules)
- importutils.import_module now is importutils.try_import
- Updated requirements.txt with the new library
- strutils.to_bytes now is strutils.string_to_bytes

Once the nova.ironic driver is migrated into nova tree, old references
and libraries can be cleaned (Bug: #1350269)

Closes-Bug: #1353540

Change-Id: Ic0af04ebd07b23eb94df32a6abf0e490d597f32a
Merge "Sync oslo.incubator modules"
Merge "Migration to oslo.utils library"
Merge "Fix self.fields on API Chassis object"
Merge "Fix self.fields on API Port object"
Move the 'instance_info' fields to GenericDriverFields

The instance_info parameters are common across all drivers and not
just for PXE drivers.

This patch corrects an issue in nova/virt/ironic/patcher.py by moving
the generation of the instance_info patch to the common base class.
It also adds notes stating the intent to remove the PXE-specific
patching in Kilo.

Closes-Bug: #1353631
Change-Id: I80d2208d41d21821f0da662637418ecd76b5db2b
Merge "Move the 'instance_info' fields to GenericDriverFields"
backport reviewer comments on nova.virt.ironic.patcher

Backport comments on the Nova driver review in
https://review.openstack.org/#/c/111423/
to Ironic's tree.

Change-Id: If5939e3dcc3686046e0fc7989114d25270f034e8
Add posix_ipc to requirements

Change-Id: Ia564f7d7653c1abcb732b8261ee9ec99323d0f43
Closes-Bug: 1354078
Imported Translations from Transifex

Change-Id: I9bdf526891a67287792e392a2491dbd004d7fb04
Add iPXE support for Ironic

As the size of our deploy ramdisk would continue to increase (Ironic
Python Agent) we need a more reliable way to transfer such data via
the network without relying on TFTP. The problem with TFTP is that it's
unreliable and any transmission error will result consequently in boot
problems. This patch adds support for iPXE so that we have the ability
to transfer data through HTTP which is a reliable protocol.

New configuration options added to the 'pxe' group:

- ipxe_enabled: Whether iPXE is enabled or not
- ipxe_boot_script: The path to the main iPXE script file
- http_url: The HTTP server URL
- http_root: The HTTP root path

Two functions from pxe.py were renamed because they are not related only
to tftp anymore:

- _get_tftp_image_info renamed to _get_image_info

- _cache_tftp_images renamed to _cache_ramdisk_kernel (because that's
what this function is about, it fetchs the kernels and ramdisks associated
with the image, not the image itself)

Implements: blueprint ipxe-boot
Change-Id: I8dc7640a19374a9c4d687877ea6c0ff1ebc13979
Add create() and destroy() to Chassis object

What it says. Also make the code and tests use them vs direct calls
to dbapi.

Partial-Bug: 1314732
Change-Id: Iabd62baba09e2f8ea94ed3aab417b6a63ea14ec4
Use timeutils from one place

Usage of timeutils from different places (from oslo.db and from ironic)
can produce errors (for example, during porting oslo.db to using
oslo.utils, see https://review.openstack.org/#/c/111701/ )

So we need to remove all imports 'oslo.db.openstack.common.timeutils' and
don't use `oslo.db.sqlalchemy.models.TimestampMixin`, until ironic and
oslo.db will use timeutils from one place(from oslo.utils).

Related-Bug: #1354443

Change-Id: I53f519570df3351b6acf019d89f67b43d8b637da
Merge "Add iPXE support for Ironic"
Merge "Add posix_ipc to requirements"
Correct `op.drop_constraint` parameters

`drop_constraint` method require `type_` parameter, when called with
MySQL.

> type_ – optional, required on MySQL. can be "foreignkey", "primary",
"unique", or "check".

Change-Id: I069a74ea60ba678fb128f27858db169f4dac89a6
Closes-Bug: #1354463