Trove/Heat.ResizeInstance

Description
This feature makes three change to the behavior of Trove.

Nova/Cinder/Neutron/Designate aka Natives
Simple interface for the implementation of the resource managements, such as:
 * 1) Instances(instance groups).
 * 2) Volumes (cinder or ephemeral).
 * 3) Network attributes (SGs, floating IPs, NICS).
 * 4) DNS records.

Heat and Nova/Cinder/Designate/Neutron implementation of the Resource manager
Heat and Nova/Cinder/Designate implementation of the Resource manager will cover all methods that are presented in Trove now, such as:
 * 1) Provisioning.
 * 2) Resizing instances (flavor).
 * 3) Resizing volumes.
 * 4) DNS records management.
 * 5) Security group/rules management

Justification

 * Heat allows to work with almost all types of the resources that Trove requires, but Trove does it all orchestration over each service expecting to receive the actual resource from nova/cinder/neutron/designate. Since Heat is a cloud orchestration service, Trove should not do orchestration work over multiple serviced. It should work with a single service and have only one dependency instead of multiple(one per each service).

Since Trove API allows to resize instances through native services, Trove taskamanager should be able to accomplish this task withing orchestration based resource management

Benefits of Resource manager interface

 * The restriction that is being described by the resource manager will make developers to follow provided specification while implementing resource managers (heat or natives).
 * Reducing orchestration logic, delegating all possible tasks to Heat Orchestration Service. As the result - reduced number of the dependecies (heatclient against nova/cinder/neutron/designate).
 * Single point of failure.
 * Recovery procedures are delegated to Heat (Template update: allow rollback).

Scope
Heat should be able to accomplish all tasks required by Trove.

Impacts
From a user’s perspective this feature doesn't change any of the expectations and behavior.

Configuration
None

Database
None

Public API
No changes

Internal API
No changes

Guest Agent
No changes

Covered by Heat

 * 1) Resize instance with confirmation.
 * 2) Provisioning.
 * 3) Dropping.

Required but not covered

 * 1) Nova-network security group/rules management.
 * 2) Resize volume.