Fix several bugs about Operation Engine service

fix several bugs as follows:
1. Still use the variables defined in scheduled_operation_state.py
   which is deleted.
2. There is not a method named shoutdown in trigger
3. Miss the serialization object for the rpc client of
   Operation Engine service
4. Miss the __init__.py in tests/unit/operationengine
5. The config item for executor in setup.cfg is wrong

Change-Id: Ie788c558d6517f226a63d2310fb20377c1f37dee
Closes-Bug: #1587751
This commit is contained in:
zengchen 2016-06-01 15:43:46 +08:00
parent b07a20ac2c
commit eb37cf16c7
6 changed files with 22 additions and 18 deletions

View File

@ -49,7 +49,7 @@ smaug.protectables =
server = smaug.services.protection.protectable_plugins.server:ServerProtectablePlugin
volume = smaug.services.protection.protectable_plugins.volume:VolumeProtectablePlugin
smaug.operationengine.engine.executor =
executor = smaug.operationengine.engine.executors.thread_pool_executor:ThreadPoolExecutor
executor = smaug.services.operationengine.engine.executors.thread_pool_executor:ThreadPoolExecutor
[build_sphinx]
source-dir = doc/source

View File

@ -79,7 +79,7 @@ class TriggerManager(object):
if trigger.has_operations():
raise exception.DeleteTriggerNotAllowed(trigger_id=trigger_id)
trigger.shoutdown()
trigger.shutdown()
del self._trigger_obj_map[trigger_id]
def update_trigger(self, trigger_id, trigger_property):

View File

@ -18,12 +18,12 @@ from oslo_config import cfg
from oslo_log import log as logging
import oslo_messaging as messaging
from smaug import context
from smaug.common import constants
from smaug import context as smaug_context
from smaug import exception
from smaug import manager
from smaug import objects
from smaug.services.operationengine.engine import trigger_manager
from smaug.services.operationengine import scheduled_operation_state
CONF = cfg.CONF
@ -60,7 +60,7 @@ class OperationEngineManager(manager.Manager):
limit = 100
marker = None
filters = {}
ctxt = context.get_admin_context()
ctxt = smaug_context.get_admin_context()
while True:
triggers = objects.TriggerList.get_by_filters(
ctxt, filters, limit, marker)
@ -78,13 +78,13 @@ class OperationEngineManager(manager.Manager):
limit = 100
marker = None
filters = {"service_id": self._service_id,
"state": [scheduled_operation_state.REGISTERED,
scheduled_operation_state.TRIGGERED,
scheduled_operation_state.RUNNING]}
"state": [constants.OPERATION_STATE_REGISTERED,
constants.OPERATION_STATE_TRIGGERED,
constants.OPERATION_STATE_RUNNING]}
columns_to_join = ['operation']
ctxt = context.get_admin_context()
resume_states = [scheduled_operation_state.TRIGGERED,
scheduled_operation_state.RUNNING]
ctxt = smaug_context.get_admin_context()
resume_states = [constants.OPERATION_STATE_TRIGGERED,
constants.OPERATION_STATE_RUNNING]
while True:
states = objects.ScheduledOperationStateList.get_by_filters(
ctxt, filters, limit, marker, columns_to_join=columns_to_join)
@ -114,7 +114,7 @@ class OperationEngineManager(manager.Manager):
state_info = {
"operation_id": operation_id,
"service_id": self._service_id,
"state": scheduled_operation_state.REGISTERED
"state": constants.OPERATION_STATE_REGISTERED
}
operation_state = objects.ScheduledOperationState(
context, **state_info)
@ -132,8 +132,8 @@ class OperationEngineManager(manager.Manager):
operation_state = objects.ScheduledOperationState.\
get_by_operation_id(context, operation_id)
if scheduled_operation_state.DELETED != operation_state.state:
operation_state.state = scheduled_operation_state.DELETED
if constants.OPERATION_STATE_DELETED != operation_state.state:
operation_state.state = constants.OPERATION_STATE_DELETED
operation_state.save()
self._trigger_manager.unregister_operation(trigger_id, operation_id)

View File

@ -17,6 +17,7 @@ Client side of the OperationEngine manager RPC API.
from oslo_config import cfg
import oslo_messaging as messaging
from smaug.objects import base as objects_base
from smaug import rpc
@ -37,7 +38,10 @@ class OperationEngineAPI(object):
super(OperationEngineAPI, self).__init__()
target = messaging.Target(topic=CONF.operationengine_topic,
version=self.RPC_API_VERSION)
self.client = rpc.get_client(target, version_cap=None)
serializer = objects_base.SmaugObjectSerializer()
self.client = rpc.get_client(target, version_cap=None,
serializer=serializer)
def create_scheduled_operation(self, ctxt, operation_id, trigger_id):
cctxt = self.client.prepare(version='1.0')

View File

@ -12,10 +12,10 @@
from oslo_messaging.rpc import dispatcher as rpc_dispatcher
from smaug.common import constants
from smaug import context
from smaug import objects
from smaug.services.operationengine import manager as service_manager
from smaug.services.operationengine import scheduled_operation_state
from smaug.tests import base
@ -83,7 +83,7 @@ class OperationEngineManagerTestCase(base.TestCase):
state = objects.ScheduledOperationState.get_by_operation_id(
self.ctxt, self._operation.id)
self.assertEqual(scheduled_operation_state.DELETED, state.state)
self.assertEqual(constants.OPERATION_STATE_DELETED, state.state)
def _create_one_trigger(self):
trigger_info = {
@ -117,7 +117,7 @@ class OperationEngineManagerTestCase(base.TestCase):
state_info = {
"operation_id": operation_id,
"service_id": self.manager._service_id,
"state": scheduled_operation_state.REGISTERED
"state": constants.OPERATION_STATE_REGISTERED
}
operation_state = objects.ScheduledOperationState(context,
**state_info)