Removed status_topic config parameter
In this changeset, I removed the now obsolete status_topic config option. DocImpact Partially Implements: blueprint watcher-notifications-ovo Change-Id: Icfc03abd875b77fc456bfa286ac2b5774651e8fa
This commit is contained in:
parent
395ccbd94c
commit
cdda06c08c
@ -37,13 +37,6 @@ APPLIER_MANAGER_OPTS = [
|
|||||||
help='The topic name used for'
|
help='The topic name used for'
|
||||||
'control events, this topic '
|
'control events, this topic '
|
||||||
'used for rpc call '),
|
'used for rpc call '),
|
||||||
cfg.StrOpt('status_topic',
|
|
||||||
default='watcher.applier.status',
|
|
||||||
help='The topic name used for '
|
|
||||||
'status events, this topic '
|
|
||||||
'is used so as to notify'
|
|
||||||
'the others components '
|
|
||||||
'of the system'),
|
|
||||||
cfg.StrOpt('publisher_id',
|
cfg.StrOpt('publisher_id',
|
||||||
default='watcher.applier.api',
|
default='watcher.applier.api',
|
||||||
help='The identifier used by watcher '
|
help='The identifier used by watcher '
|
||||||
@ -61,7 +54,7 @@ CONF.register_group(opt_group)
|
|||||||
CONF.register_opts(APPLIER_MANAGER_OPTS, opt_group)
|
CONF.register_opts(APPLIER_MANAGER_OPTS, opt_group)
|
||||||
|
|
||||||
|
|
||||||
class ApplierManager(service_manager.ServiceManagerBase):
|
class ApplierManager(service_manager.ServiceManager):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def service_name(self):
|
def service_name(self):
|
||||||
@ -79,10 +72,6 @@ class ApplierManager(service_manager.ServiceManagerBase):
|
|||||||
def conductor_topic(self):
|
def conductor_topic(self):
|
||||||
return CONF.watcher_applier.conductor_topic
|
return CONF.watcher_applier.conductor_topic
|
||||||
|
|
||||||
@property
|
|
||||||
def status_topic(self):
|
|
||||||
return CONF.watcher_applier.status_topic
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def notification_topics(self):
|
def notification_topics(self):
|
||||||
return []
|
return []
|
||||||
@ -91,10 +80,6 @@ class ApplierManager(service_manager.ServiceManagerBase):
|
|||||||
def conductor_endpoints(self):
|
def conductor_endpoints(self):
|
||||||
return [trigger.TriggerActionPlan]
|
return [trigger.TriggerActionPlan]
|
||||||
|
|
||||||
@property
|
|
||||||
def status_endpoints(self):
|
|
||||||
return []
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def notification_endpoints(self):
|
def notification_endpoints(self):
|
||||||
return []
|
return []
|
||||||
|
@ -15,12 +15,13 @@
|
|||||||
# implied.
|
# implied.
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
|
|
||||||
from watcher.applier import manager
|
from watcher.applier import manager
|
||||||
from watcher.common import exception
|
from watcher.common import exception
|
||||||
from watcher.common import service
|
from watcher.common import service
|
||||||
|
from watcher.common import service_manager
|
||||||
from watcher.common import utils
|
from watcher.common import utils
|
||||||
|
|
||||||
|
|
||||||
@ -42,7 +43,7 @@ class ApplierAPI(service.Service):
|
|||||||
context, 'launch_action_plan', action_plan_uuid=action_plan_uuid)
|
context, 'launch_action_plan', action_plan_uuid=action_plan_uuid)
|
||||||
|
|
||||||
|
|
||||||
class ApplierAPIManager(object):
|
class ApplierAPIManager(service_manager.ServiceManager):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def service_name(self):
|
def service_name(self):
|
||||||
@ -60,10 +61,6 @@ class ApplierAPIManager(object):
|
|||||||
def conductor_topic(self):
|
def conductor_topic(self):
|
||||||
return CONF.watcher_applier.conductor_topic
|
return CONF.watcher_applier.conductor_topic
|
||||||
|
|
||||||
@property
|
|
||||||
def status_topic(self):
|
|
||||||
return CONF.watcher_applier.status_topic
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def notification_topics(self):
|
def notification_topics(self):
|
||||||
return []
|
return []
|
||||||
@ -72,10 +69,6 @@ class ApplierAPIManager(object):
|
|||||||
def conductor_endpoints(self):
|
def conductor_endpoints(self):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
@property
|
|
||||||
def status_endpoints(self):
|
|
||||||
return []
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def notification_endpoints(self):
|
def notification_endpoints(self):
|
||||||
return []
|
return []
|
||||||
|
@ -171,15 +171,11 @@ class Service(service.ServiceBase):
|
|||||||
self.api_version = self.manager.api_version
|
self.api_version = self.manager.api_version
|
||||||
|
|
||||||
self.conductor_topic = self.manager.conductor_topic
|
self.conductor_topic = self.manager.conductor_topic
|
||||||
self.status_topic = self.manager.status_topic
|
|
||||||
self.notification_topics = self.manager.notification_topics
|
self.notification_topics = self.manager.notification_topics
|
||||||
|
|
||||||
self.conductor_endpoints = [
|
self.conductor_endpoints = [
|
||||||
ep(self) for ep in self.manager.conductor_endpoints
|
ep(self) for ep in self.manager.conductor_endpoints
|
||||||
]
|
]
|
||||||
self.status_endpoints = [
|
|
||||||
ep(self.publisher_id) for ep in self.manager.status_endpoints
|
|
||||||
]
|
|
||||||
self.notification_endpoints = self.manager.notification_endpoints
|
self.notification_endpoints = self.manager.notification_endpoints
|
||||||
|
|
||||||
self.serializer = rpc.RequestContextSerializer(
|
self.serializer = rpc.RequestContextSerializer(
|
||||||
@ -188,10 +184,8 @@ class Service(service.ServiceBase):
|
|||||||
self._transport = None
|
self._transport = None
|
||||||
self._notification_transport = None
|
self._notification_transport = None
|
||||||
self._conductor_client = None
|
self._conductor_client = None
|
||||||
self._status_client = None
|
|
||||||
|
|
||||||
self.conductor_topic_handler = None
|
self.conductor_topic_handler = None
|
||||||
self.status_topic_handler = None
|
|
||||||
self.notification_handler = None
|
self.notification_handler = None
|
||||||
|
|
||||||
self.heartbeat = None
|
self.heartbeat = None
|
||||||
@ -199,9 +193,6 @@ class Service(service.ServiceBase):
|
|||||||
if self.conductor_topic and self.conductor_endpoints:
|
if self.conductor_topic and self.conductor_endpoints:
|
||||||
self.conductor_topic_handler = self.build_topic_handler(
|
self.conductor_topic_handler = self.build_topic_handler(
|
||||||
self.conductor_topic, self.conductor_endpoints)
|
self.conductor_topic, self.conductor_endpoints)
|
||||||
if self.status_topic and self.status_endpoints:
|
|
||||||
self.status_topic_handler = self.build_topic_handler(
|
|
||||||
self.status_topic, self.status_endpoints)
|
|
||||||
if self.notification_topics and self.notification_endpoints:
|
if self.notification_topics and self.notification_endpoints:
|
||||||
self.notification_handler = self.build_notification_handler(
|
self.notification_handler = self.build_notification_handler(
|
||||||
self.notification_topics, self.notification_endpoints
|
self.notification_topics, self.notification_endpoints
|
||||||
@ -238,21 +229,6 @@ class Service(service.ServiceBase):
|
|||||||
def conductor_client(self, c):
|
def conductor_client(self, c):
|
||||||
self.conductor_client = c
|
self.conductor_client = c
|
||||||
|
|
||||||
@property
|
|
||||||
def status_client(self):
|
|
||||||
if self._status_client is None:
|
|
||||||
target = om.Target(
|
|
||||||
topic=self.status_topic,
|
|
||||||
version=self.API_VERSION,
|
|
||||||
)
|
|
||||||
self._status_client = om.RPCClient(
|
|
||||||
self.transport, target, serializer=self.serializer)
|
|
||||||
return self._status_client
|
|
||||||
|
|
||||||
@status_client.setter
|
|
||||||
def status_client(self, c):
|
|
||||||
self.status_client = c
|
|
||||||
|
|
||||||
def build_topic_handler(self, topic_name, endpoints=()):
|
def build_topic_handler(self, topic_name, endpoints=()):
|
||||||
serializer = rpc.RequestContextSerializer(rpc.JsonPayloadSerializer())
|
serializer = rpc.RequestContextSerializer(rpc.JsonPayloadSerializer())
|
||||||
target = om.Target(
|
target = om.Target(
|
||||||
@ -278,8 +254,6 @@ class Service(service.ServiceBase):
|
|||||||
CONF.transport_url, CONF.rpc_backend)
|
CONF.transport_url, CONF.rpc_backend)
|
||||||
if self.conductor_topic_handler:
|
if self.conductor_topic_handler:
|
||||||
self.conductor_topic_handler.start()
|
self.conductor_topic_handler.start()
|
||||||
if self.status_topic_handler:
|
|
||||||
self.status_topic_handler.start()
|
|
||||||
if self.notification_handler:
|
if self.notification_handler:
|
||||||
self.notification_handler.start()
|
self.notification_handler.start()
|
||||||
if self.heartbeat:
|
if self.heartbeat:
|
||||||
@ -290,8 +264,6 @@ class Service(service.ServiceBase):
|
|||||||
CONF.transport_url, CONF.rpc_backend)
|
CONF.transport_url, CONF.rpc_backend)
|
||||||
if self.conductor_topic_handler:
|
if self.conductor_topic_handler:
|
||||||
self.conductor_topic_handler.stop()
|
self.conductor_topic_handler.stop()
|
||||||
if self.status_topic_handler:
|
|
||||||
self.status_topic_handler.stop()
|
|
||||||
if self.notification_handler:
|
if self.notification_handler:
|
||||||
self.notification_handler.stop()
|
self.notification_handler.stop()
|
||||||
if self.heartbeat:
|
if self.heartbeat:
|
||||||
|
@ -15,9 +15,11 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import abc
|
import abc
|
||||||
|
import six
|
||||||
|
|
||||||
|
|
||||||
class ServiceManagerBase(object):
|
@six.add_metaclass(abc.ABCMeta)
|
||||||
|
class ServiceManager(object):
|
||||||
|
|
||||||
@abc.abstractproperty
|
@abc.abstractproperty
|
||||||
def service_name(self):
|
def service_name(self):
|
||||||
@ -35,10 +37,6 @@ class ServiceManagerBase(object):
|
|||||||
def conductor_topic(self):
|
def conductor_topic(self):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
@abc.abstractproperty
|
|
||||||
def status_topic(self):
|
|
||||||
raise NotImplementedError()
|
|
||||||
|
|
||||||
@abc.abstractproperty
|
@abc.abstractproperty
|
||||||
def notification_topics(self):
|
def notification_topics(self):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
@ -47,10 +45,6 @@ class ServiceManagerBase(object):
|
|||||||
def conductor_endpoints(self):
|
def conductor_endpoints(self):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
@abc.abstractproperty
|
|
||||||
def status_endpoints(self):
|
|
||||||
raise NotImplementedError()
|
|
||||||
|
|
||||||
@abc.abstractproperty
|
@abc.abstractproperty
|
||||||
def notification_endpoints(self):
|
def notification_endpoints(self):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
@ -51,13 +51,6 @@ WATCHER_DECISION_ENGINE_OPTS = [
|
|||||||
help='The topic name used for '
|
help='The topic name used for '
|
||||||
'control events, this topic '
|
'control events, this topic '
|
||||||
'used for RPC calls'),
|
'used for RPC calls'),
|
||||||
cfg.StrOpt('status_topic',
|
|
||||||
default='watcher.decision.status',
|
|
||||||
help='The topic name used for '
|
|
||||||
'status events; this topic '
|
|
||||||
'is used so as to notify'
|
|
||||||
'the others components '
|
|
||||||
'of the system'),
|
|
||||||
cfg.ListOpt('notification_topics',
|
cfg.ListOpt('notification_topics',
|
||||||
default=['versioned_notifications', 'watcher_notifications'],
|
default=['versioned_notifications', 'watcher_notifications'],
|
||||||
help='The topic names from which notification events '
|
help='The topic names from which notification events '
|
||||||
@ -79,7 +72,7 @@ CONF.register_group(decision_engine_opt_group)
|
|||||||
CONF.register_opts(WATCHER_DECISION_ENGINE_OPTS, decision_engine_opt_group)
|
CONF.register_opts(WATCHER_DECISION_ENGINE_OPTS, decision_engine_opt_group)
|
||||||
|
|
||||||
|
|
||||||
class DecisionEngineManager(service_manager.ServiceManagerBase):
|
class DecisionEngineManager(service_manager.ServiceManager):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def service_name(self):
|
def service_name(self):
|
||||||
@ -97,10 +90,6 @@ class DecisionEngineManager(service_manager.ServiceManagerBase):
|
|||||||
def conductor_topic(self):
|
def conductor_topic(self):
|
||||||
return CONF.watcher_decision_engine.conductor_topic
|
return CONF.watcher_decision_engine.conductor_topic
|
||||||
|
|
||||||
@property
|
|
||||||
def status_topic(self):
|
|
||||||
return CONF.watcher_decision_engine.status_topic
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def notification_topics(self):
|
def notification_topics(self):
|
||||||
return CONF.watcher_decision_engine.notification_topics
|
return CONF.watcher_decision_engine.notification_topics
|
||||||
@ -109,10 +98,6 @@ class DecisionEngineManager(service_manager.ServiceManagerBase):
|
|||||||
def conductor_endpoints(self):
|
def conductor_endpoints(self):
|
||||||
return [audit_endpoint.AuditEndpoint]
|
return [audit_endpoint.AuditEndpoint]
|
||||||
|
|
||||||
@property
|
|
||||||
def status_endpoints(self):
|
|
||||||
return []
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def notification_endpoints(self):
|
def notification_endpoints(self):
|
||||||
return self.collector_manager.get_notification_endpoints()
|
return self.collector_manager.get_notification_endpoints()
|
||||||
|
@ -21,6 +21,7 @@ from oslo_config import cfg
|
|||||||
|
|
||||||
from watcher.common import exception
|
from watcher.common import exception
|
||||||
from watcher.common import service
|
from watcher.common import service
|
||||||
|
from watcher.common import service_manager
|
||||||
from watcher.common import utils
|
from watcher.common import utils
|
||||||
from watcher.decision_engine import manager
|
from watcher.decision_engine import manager
|
||||||
|
|
||||||
@ -45,7 +46,7 @@ class DecisionEngineAPI(service.Service):
|
|||||||
context, 'trigger_audit', audit_uuid=audit_uuid)
|
context, 'trigger_audit', audit_uuid=audit_uuid)
|
||||||
|
|
||||||
|
|
||||||
class DecisionEngineAPIManager(object):
|
class DecisionEngineAPIManager(service_manager.ServiceManager):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def service_name(self):
|
def service_name(self):
|
||||||
@ -63,10 +64,6 @@ class DecisionEngineAPIManager(object):
|
|||||||
def conductor_topic(self):
|
def conductor_topic(self):
|
||||||
return CONF.watcher_decision_engine.conductor_topic
|
return CONF.watcher_decision_engine.conductor_topic
|
||||||
|
|
||||||
@property
|
|
||||||
def status_topic(self):
|
|
||||||
return CONF.watcher_decision_engine.status_topic
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def notification_topics(self):
|
def notification_topics(self):
|
||||||
return []
|
return []
|
||||||
@ -75,10 +72,6 @@ class DecisionEngineAPIManager(object):
|
|||||||
def conductor_endpoints(self):
|
def conductor_endpoints(self):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
@property
|
|
||||||
def status_endpoints(self):
|
|
||||||
return []
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def notification_endpoints(self):
|
def notification_endpoints(self):
|
||||||
return []
|
return []
|
||||||
|
@ -33,13 +33,11 @@ class DummyManager(object):
|
|||||||
API_VERSION = '1.0'
|
API_VERSION = '1.0'
|
||||||
|
|
||||||
conductor_endpoints = [mock.Mock()]
|
conductor_endpoints = [mock.Mock()]
|
||||||
status_endpoints = [mock.Mock()]
|
|
||||||
notification_endpoints = [mock.Mock()]
|
notification_endpoints = [mock.Mock()]
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.publisher_id = "pub_id"
|
self.publisher_id = "pub_id"
|
||||||
self.conductor_topic = "conductor_topic"
|
self.conductor_topic = "conductor_topic"
|
||||||
self.status_topic = "status_topic"
|
|
||||||
self.notification_topics = []
|
self.notification_topics = []
|
||||||
self.api_version = self.API_VERSION
|
self.api_version = self.API_VERSION
|
||||||
self.service_name = None
|
self.service_name = None
|
||||||
@ -85,13 +83,13 @@ class TestService(base.TestCase):
|
|||||||
def test_start(self, m_handler):
|
def test_start(self, m_handler):
|
||||||
dummy_service = service.Service(DummyManager)
|
dummy_service = service.Service(DummyManager)
|
||||||
dummy_service.start()
|
dummy_service.start()
|
||||||
self.assertEqual(2, m_handler.call_count)
|
self.assertEqual(1, m_handler.call_count)
|
||||||
|
|
||||||
@mock.patch.object(om.rpc.server, "RPCServer")
|
@mock.patch.object(om.rpc.server, "RPCServer")
|
||||||
def test_stop(self, m_handler):
|
def test_stop(self, m_handler):
|
||||||
dummy_service = service.Service(DummyManager)
|
dummy_service = service.Service(DummyManager)
|
||||||
dummy_service.stop()
|
dummy_service.stop()
|
||||||
self.assertEqual(2, m_handler.call_count)
|
self.assertEqual(1, m_handler.call_count)
|
||||||
|
|
||||||
def test_build_topic_handler(self):
|
def test_build_topic_handler(self):
|
||||||
topic_name = "mytopic"
|
topic_name = "mytopic"
|
||||||
@ -108,6 +106,3 @@ class TestService(base.TestCase):
|
|||||||
self.assertIsInstance(
|
self.assertIsInstance(
|
||||||
dummy_service.conductor_topic_handler,
|
dummy_service.conductor_topic_handler,
|
||||||
om.rpc.server.RPCServer)
|
om.rpc.server.RPCServer)
|
||||||
self.assertIsInstance(
|
|
||||||
dummy_service.status_topic_handler,
|
|
||||||
om.rpc.server.RPCServer)
|
|
||||||
|
@ -16,30 +16,44 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
from watcher.common import service_manager
|
||||||
from watcher.decision_engine.model.notification import nova as novanotification
|
from watcher.decision_engine.model.notification import nova as novanotification
|
||||||
from watcher.tests.decision_engine.model import faker_cluster_state
|
from watcher.tests.decision_engine.model import faker_cluster_state
|
||||||
|
|
||||||
|
|
||||||
class FakeManager(object):
|
class FakeManager(service_manager.ServiceManager):
|
||||||
|
|
||||||
API_VERSION = '1.0'
|
API_VERSION = '1.0'
|
||||||
|
|
||||||
def __init__(self):
|
fake_cdmc = faker_cluster_state.FakerModelCollector()
|
||||||
self.api_version = self.API_VERSION
|
|
||||||
self.service_name = None
|
|
||||||
|
|
||||||
# fake cluster instead on Nova CDM
|
@property
|
||||||
self.fake_cdmc = faker_cluster_state.FakerModelCollector()
|
def service_name(self):
|
||||||
|
return 'watcher-fake'
|
||||||
|
|
||||||
self.publisher_id = 'test_publisher_id'
|
@property
|
||||||
self.conductor_topic = 'test_conductor_topic'
|
def api_version(self):
|
||||||
self.status_topic = 'test_status_topic'
|
return self.API_VERSION
|
||||||
self.notification_topics = ['nova']
|
|
||||||
|
|
||||||
self.conductor_endpoints = [] # Disable audit endpoint
|
@property
|
||||||
self.status_endpoints = []
|
def publisher_id(self):
|
||||||
|
return 'test_publisher_id'
|
||||||
|
|
||||||
self.notification_endpoints = [
|
@property
|
||||||
|
def conductor_topic(self):
|
||||||
|
return 'test_conductor_topic'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def notification_topics(self):
|
||||||
|
return ['nova']
|
||||||
|
|
||||||
|
@property
|
||||||
|
def conductor_endpoints(self):
|
||||||
|
return [] # Disable audit endpoint
|
||||||
|
|
||||||
|
@property
|
||||||
|
def notification_endpoints(self):
|
||||||
|
return [
|
||||||
novanotification.ServiceUpdated(self.fake_cdmc),
|
novanotification.ServiceUpdated(self.fake_cdmc),
|
||||||
|
|
||||||
novanotification.InstanceCreated(self.fake_cdmc),
|
novanotification.InstanceCreated(self.fake_cdmc),
|
||||||
|
@ -31,9 +31,9 @@ from watcher.tests.decision_engine.model.notification import fake_managers
|
|||||||
|
|
||||||
class DummyManager(fake_managers.FakeManager):
|
class DummyManager(fake_managers.FakeManager):
|
||||||
|
|
||||||
def __init__(self):
|
@property
|
||||||
super(DummyManager, self).__init__()
|
def notification_endpoints(self):
|
||||||
self.notification_endpoints = [DummyNotification(self.fake_cdmc)]
|
return [DummyNotification(self.fake_cdmc)]
|
||||||
|
|
||||||
|
|
||||||
class DummyNotification(base.NotificationEndpoint):
|
class DummyNotification(base.NotificationEndpoint):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user