Fix change_nova_service_state action

The function signature has been changed in 2.53 version[1]
and this patch is required to fix watcher-tempest-plugin.
If all tests are ok, I'll merge it ASAP.

[1]: https://developer.openstack.org/api-ref/compute/#enable-scheduling-for-a-compute-service

Change-Id: Ie03519dac2a55263e278344fd00f103067f90f27
This commit is contained in:
Alexander Chadin 2018-03-02 20:02:02 +00:00
parent b33b7a0474
commit c53817c33d
3 changed files with 26 additions and 12 deletions

View File

@ -20,7 +20,7 @@ It is used via a single directive in the .rst file
"""
from sphinx.util.compat import Directive
from docutils.parsers.rst import Directive
from docutils import nodes
from watcher.notifications import base as notification

View File

@ -42,6 +42,7 @@ extensions = [
'ext.versioned_notifications',
'oslo_config.sphinxconfiggen',
'openstackdocstheme',
'sphinx.ext.napoleon',
]
wsme_protocols = ['restjson']

View File

@ -29,9 +29,12 @@ import novaclient.exceptions as nvexceptions
from watcher.common import clients
from watcher.common import exception
from watcher.common import utils
from watcher import conf
LOG = log.getLogger(__name__)
CONF = conf.CONF
class NovaHelper(object):
@ -556,21 +559,31 @@ class NovaHelper(object):
"for the instance %s" % instance_id)
def enable_service_nova_compute(self, hostname):
if self.nova.services.enable(host=hostname,
binary='nova-compute'). \
status == 'enabled':
return True
if float(CONF.nova_client.api_version) < 2.53:
status = self.nova.services.enable(
host=hostname, binary='nova-compute').status == 'enabled'
else:
return False
service_uuid = self.nova.services.list(host=hostname,
binary='nova-compute')[0].id
status = self.nova.services.enable(
service_uuid=service_uuid).status == 'enabled'
return status
def disable_service_nova_compute(self, hostname, reason=None):
if self.nova.services.disable_log_reason(host=hostname,
binary='nova-compute',
reason=reason). \
status == 'disabled':
return True
if float(CONF.nova_client.api_version) < 2.53:
status = self.nova.services.disable_log_reason(
host=hostname,
binary='nova-compute',
reason=reason).status == 'disabled'
else:
return False
service_uuid = self.nova.services.list(host=hostname,
binary='nova-compute')[0].id
status = self.nova.services.disable_log_reason(
service_uuid=service_uuid,
reason=reason).status == 'disabled'
return status
def set_host_offline(self, hostname):
# See API on https://developer.openstack.org/api-ref/compute/