Jump to: navigation, search

Trove/ResourceManagerInterface

< Trove
Revision as of 06:45, 16 April 2014 by Denis M. (talk | contribs) (Nova/Cinder/Neutron/Designate aka Natives)

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 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/Benefits

Justification

Heat allows to work with almost all types of the resources that Trove requires, but Trove does it separately with each resource delivery service (nova/cinder/designate). Since Heat is a cloud orchestration tools Trove needs to work with it as the single dependency instead of relaying to each service at the same time.

Benefits of Network 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 nova/cinder/designate).

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

This configuration parameters are related to trove-api and trove-taskmanager

Parameter name Config value Network managers mapping
resource_manager orchestrator or natives
  { 
       "orchestrator": "trove.resources.orchestrator.ResourceManager", 
       "natives": "trove.resources.natives.ResourceManager" 
  }

Database

There are no expected changes to the database

Public API

No changes

Internal API

No changes

Guest Agent

No changes

Resource manager under the hood

Resource manager interface is nothing else than class with required abstract methods.

Way to implement it

Among all services (api, tm, conductor, guestagent) the most suitable please to refactor code is the taskmanager.

How taskmanager works

Taskmanager works upon manager class that presented inside the configuration file.

taskmanager_manager is set as trove.taskmanager.manager.Manager

https://github.com/openstack/trove/blob/master/trove/cmd/taskmanager.py#L33 https://github.com/openstack-dev/devstack/blob/master/lib/trove#L166

Current taskmanager manager is the mixing of the orechestrator and native client use. It should be splitted into the two different bruches, two resource management drivers, one for nova/cinder/neutron/designate and another one for _only_ heat. Since now all resources are managed according USE_TROVE flag it would be easy to do this. From the first implementation heat branch will be the experimental branch that requires CI job.