Clean up calls to get_chassis()

The same work have already been done by Nodes (see 2192f2848e), so right
now the dbapi's are inconsistent across different objects. This patch
fixes it for Chassis.

This patch removes all direct calls to dbapi's get_chassis(). They
are replaced either by Chassis.get(), Chassis.get_by_id(), or
Chassis.get_by_uuid() calls.

Additional detail about the changes:

1) Break DBAPI get_chassis() into get_chassis_by_id() and get_chassis_by_uuid().
Let's be explicit about which type we're passing. This allows
Chassis.get_by_uuid() to work exactly how its named. Also, do not
return an object from the DB API calls. The Chassis object itself will
do the conversion.

2) Adds Chassis.get_by_id() to compliment the current
Chassis.get_by_uuid() for places you are querying by the ID.

3) Adds Chassis.get() so that you can still have a single method to use
to pass either and ID or a UUID.

4) Make all of the Chassis.get* calls set the 'context' so that you
can later just chassis.save() without passing it. Doc strings have been
updated to clarify what 'context' is for.

Co-Authored-By: Chris Behrens <cbehrens@codestud.com>
Related-Bug: #1314732
Change-Id: I5162c2843e15e538c1dc50dd5ac775298f8f0f9d
Clean up calls to get_port()

The same work have already been done by Nodes (see 2192f2848e), so right
now the dbapi's are inconsistent across different objects. This patch
fixes it for Port.

This patch removes all direct calls to dbapi's get_port(). They are
replaced either by Port.get(), Port.get_by_id(), Port.get_by_uuid()
or Port.get_by_address() calls.

Additional detail about the changes:

1) Break DBAPI get_port() into get_port_by_id(), get_port_by_uuid(),
and get_port_by_address(). Let's be explicit about which type we're
passing. This allows Port.get_by_uuid() to work exactly how its
named. Also, do not return an object from the DB API calls. The Chassis
object itself will do the conversion.

2) Adds Port.get_by_id() and Port.get_by_address to compliment the
current Port.get_by_uuid() for places you are querying by the ID.

3) Adds Port.get() so that you can still have a single method to use to
pass either and ID, UUID or MAC address.

4) Make all of the Port.get* calls set the 'context' so that you can
later just port.save() without passing it. Doc strings have been updated
to clarify what 'context' is for.

Co-Authored-By: Chris Behrens <cbehrens@codestud.com>
Related-Bug: #1314732
Change-Id: I39d9a7acc12f0f3b7e06abd038537cd2759fb088
Updated from global requirements

Change-Id: I7e31ef44cd7ba4dd4e68ed598c45bf8ae5076264
Add ironic-python-agent deploy driver

This commit adds a deploy driver for the ironic-python-agent
project. Caveats:

* Only basic functionality (deploy and tear_down) is implemented.
* Only whole disk images are supported.

Implements: blueprint agent-driver

Change-Id: Iebf8d8f756770549d6fcd1bb2fe94d2585d576b1
Log exception with translation

The agent driver had one LOG.exception call that was missing
translation. This commit fixes that.

Change-Id: Iadd2d0284464853b561d557ce3f572a75265c607
Merge "Clean up calls to get_chassis()"
Merge "Add ironic-python-agent deploy driver"
Merge "Log exception with translation"
Merge "Clean up calls to get_port()"
Port iBoot PDU driver from Nova

Ports a custom power driver from Nova to Ironic so that iBoot capable
devices can be used.

Co-Authored-By: Dan Prince <dprince@redhat.com>
Closes-Bug: #1226042
Change-Id: Ibec34a7e0a69bb26d3e2a21b1f2d1a7ce3514347
Implements send-data-to-ceilometer

This patch will define the sensor data collection interface and implement
a driver based on IPMI to collect sensor data and send them to Ceilometer.

The change covered by this patch:

1. Creates a new ironic.driver.base.ManagementInterface common method
*get_sensors_data* for gathering hardware sensor data.

2. Implements the interface into 'ipmitool' driver to gather data via IPMI
command call.

3. Adds periodic task to conductor which emits notification to Ceilometer by
an interval.

Spec: https://review.openstack.org/102435

Change-Id: I2c072321a662db0162c938b7d4f3b59ba07d4e08
Implements: blueprint send-data-to-ceilometer
Merge "Updated from global requirements"
Fix not attribute '_periodic_last_run'

The ConductorManager class wasn't calling __init__ from
its parent object, causing an AttributeError exception
to be raised when accessing the attribute _periodic_last_run.
This attribute was initialized in the PeriodicTasks class.

Change-Id: Ieb850bf448f4b04be33c2cfecbac2de5925d6fda
Closes-Bug: #1351114
Merge "Implements send-data-to-ceilometer"
Merge "Fix not attribute '_periodic_last_run'"
Remove dbapi calls from agent driver

This commit removes dbapi calls from the agent driver in favor
of using objects. It also cleans up the object code a bit, and
adds some test objects to ironic.tests.objects.utils.

Closes-Bug: 1351329
Change-Id: I0b29654d0010386a4a08279cd0228090f2f02a45
Merge "Remove dbapi calls from agent driver"