Jump to: navigation, search

Difference between revisions of "Trove/ResourceManagerInterface"

(Configuration)
(Resource manager under the hood)
Line 85: Line 85:
 
== Resource manager under the hood ==
 
== Resource manager under the hood ==
  
Resource manager interface is nothing else than class with required abstract methods.
+
Resource manager interface is nothing else than class with required methods, each of them raises OperationIsNotSupported exception.
 +
=== Why? ===
 +
:Because cloud orchestrator is not 100% ready to cover all required cases.
  
 
=== Way to implement it ===
 
=== Way to implement it ===
Among all services (api, tm, conductor, guestagent) the most suitable please to refactor code is the taskmanager.
+
Among all services (api, tm, conductor, guestagent) the most suitable please to refactor code is a Trove taskmanager service.
 +
 
 
==== How taskmanager works ====
 
==== How taskmanager works ====
 
Taskmanager works upon manager class that presented inside the configuration file.
 
Taskmanager works upon manager class that presented inside the configuration file.
Line 95: Line 98:
 
https://github.com/openstack-dev/devstack/blob/master/lib/trove#L166
 
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.
+
:Current taskmanager manager is the mixing of the orechestration and native client usage. It should be splitted into the two/three resource management drivers, one for nova/cinder/neutron/designate and another one for heat service, and migration for the combinition of the proposed managers. From the first implementation heat branch will be the experimental branch that requires setup CI job.

Revision as of 21:00, 26 April 2014

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 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).

Benefits of Resource manager interface

  1. The restriction that is being described by the resource manager will make developers to follow provided specification while implementing resource managers (heat or natives).
  2. 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).
  3. Single point of failure.
  4. 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. From deployer perspective:

If updating already running deployed Trove then you would need to use migration manager.
If setuping fresh new Trove - use orchestrator manager.

Configuration

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

Parameter name Config value Resource managers mapping
resource_manager orchestrator or native and migration
  { 
       "orchestrator": "trove.taskmanager.orchestrator.Orchestrator", 
       "native": "trove.taskmanager.native.Native" 
       "migration": "trove.taskamanger.migration.Migration" 
  }
Native manager - integrated with native services, makes taskmanager act like a orchestration service.
Orchestration manager - integrated with cloud orchestration service, less orchestration logic required, all tasks are delegated to cloud orchestration service.
Migration manager - combinition of the native and orchestration maanger, works as router - execution task choise depends on how Trove instance was provisioned (native or orchestrator). Route rule based upon new base instance model attribute - provisioning_engine.
With migration driver each new Trove instance is provisioned by cloud orchestration service.
Tasks like: resize flavor/volume and delete were implemented as actual routers with specific rule.
Tasks that envolve direct guest interations like: create backup, restart, update_overrides, unassign_configuration - are common to each resource manager.
Reboot task must be researched(for a cursory glance, it'll envolve: for orchestrator - stack signals, for natives - simple reboot call for server).

Database

There are no expected changes to the database

Column name Attribute type Which model is being extended
provisioning_engine String Base instance mode (DBInstance model)

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 methods, each of them raises OperationIsNotSupported exception.

Why?

Because cloud orchestrator is not 100% ready to cover all required cases.

Way to implement it

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

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 orechestration and native client usage. It should be splitted into the two/three resource management drivers, one for nova/cinder/neutron/designate and another one for heat service, and migration for the combinition of the proposed managers. From the first implementation heat branch will be the experimental branch that requires setup CI job.