Merge "Deprecate binary argument in nova service enable/disable/force-down CLIs"

This commit is contained in:
Jenkins 2017-06-29 13:30:47 +00:00 committed by Gerrit Code Review
commit da5b563143
5 changed files with 58 additions and 3 deletions

View File

@ -31,6 +31,14 @@ class TestOsServicesNovaClient(base.ClientTestBase):
# in serial way (https://review.openstack.org/#/c/217768/), but
# it's a potential issue for making these tests parallel in the future
for serv in self.client.services.list():
# In Pike the os-services API was made multi-cell aware and it
# looks up services by host, which uses the host mapping record
# in the API DB which is only populated for nova-compute services,
# effectively making it impossible to perform actions like enable
# or disable non-nova-compute services since the API won't be able
# to find them. So filter out anything that's not nova-compute.
if serv.binary != 'nova-compute':
continue
host = self._get_column_value_from_single_row_table(
self.nova('service-list --binary %s' % serv.binary), 'Host')
service = self.nova('service-disable %s %s' % (host, serv.binary))
@ -46,6 +54,14 @@ class TestOsServicesNovaClient(base.ClientTestBase):
def test_os_service_disable_log_reason(self):
for serv in self.client.services.list():
# In Pike the os-services API was made multi-cell aware and it
# looks up services by host, which uses the host mapping record
# in the API DB which is only populated for nova-compute services,
# effectively making it impossible to perform actions like enable
# or disable non-nova-compute services since the API won't be able
# to find them. So filter out anything that's not nova-compute.
if serv.binary != 'nova-compute':
continue
host = self._get_column_value_from_single_row_table(
self.nova('service-list --binary %s' % serv.binary), 'Host')
service = self.nova('service-disable --reason test_disable %s %s'

View File

@ -20,6 +20,14 @@ class TestOsServicesNovaClientV211(test_os_services.TestOsServicesNovaClient):
def test_os_services_force_down_force_up(self):
for serv in self.client.services.list():
# In Pike the os-services API was made multi-cell aware and it
# looks up services by host, which uses the host mapping record
# in the API DB which is only populated for nova-compute services,
# effectively making it impossible to perform actions like enable
# or disable non-nova-compute services since the API won't be able
# to find them. So filter out anything that's not nova-compute.
if serv.binary != 'nova-compute':
continue
host = self._get_column_value_from_single_row_table(
self.nova('service-list --binary %s' % serv.binary), 'Host')
service = self.nova('service-force-down %s %s'

View File

@ -2201,11 +2201,23 @@ class ShellTest(utils.TestCase):
body = {'host': 'host1', 'binary': 'nova-cert'}
self.assert_called('PUT', '/os-services/enable', body)
def test_services_enable_default_binary(self):
"""Tests that the default binary is nova-compute if not specified."""
self.run_command('service-enable host1')
body = {'host': 'host1', 'binary': 'nova-compute'}
self.assert_called('PUT', '/os-services/enable', body)
def test_services_disable(self):
self.run_command('service-disable host1 nova-cert')
body = {'host': 'host1', 'binary': 'nova-cert'}
self.assert_called('PUT', '/os-services/disable', body)
def test_services_disable_default_binary(self):
"""Tests that the default binary is nova-compute if not specified."""
self.run_command('service-disable host1')
body = {'host': 'host1', 'binary': 'nova-compute'}
self.assert_called('PUT', '/os-services/disable', body)
def test_services_disable_with_reason(self):
self.run_command('service-disable host1 nova-cert --reason no_reason')
body = {'host': 'host1', 'binary': 'nova-cert',

View File

@ -3463,7 +3463,10 @@ def do_service_list(cs, args):
@utils.arg('host', metavar='<hostname>', help=_('Name of host.'))
@utils.arg('binary', metavar='<binary>', help=_('Service binary.'))
# TODO(mriedem): Eventually just hard-code the binary to "nova-compute".
@utils.arg('binary', metavar='<binary>', help=_('Service binary. The only '
'meaningful binary is "nova-compute". (Deprecated)'),
default='nova-compute', nargs='?')
def do_service_enable(cs, args):
"""Enable the service."""
result = cs.services.enable(args.host, args.binary)
@ -3471,7 +3474,10 @@ def do_service_enable(cs, args):
@utils.arg('host', metavar='<hostname>', help=_('Name of host.'))
@utils.arg('binary', metavar='<binary>', help=_('Service binary.'))
# TODO(mriedem): Eventually just hard-code the binary to "nova-compute".
@utils.arg('binary', metavar='<binary>', help=_('Service binary. The only '
'meaningful binary is "nova-compute". (Deprecated)'),
default='nova-compute', nargs='?')
@utils.arg(
'--reason',
metavar='<reason>',
@ -3490,7 +3496,10 @@ def do_service_disable(cs, args):
@api_versions.wraps("2.11")
@utils.arg('host', metavar='<hostname>', help=_('Name of host.'))
@utils.arg('binary', metavar='<binary>', help=_('Service binary.'))
# TODO(mriedem): Eventually just hard-code the binary to "nova-compute".
@utils.arg('binary', metavar='<binary>', help=_('Service binary. The only '
'meaningful binary is "nova-compute". (Deprecated)'),
default='nova-compute', nargs='?')
@utils.arg(
'--unset',
dest='force_down',

View File

@ -0,0 +1,10 @@
---
deprecations:
- |
The ``binary`` argument to the ``nova service-enable``,
``nova service-disable``, and ``nova service-force-down`` commands has been
deprecated. The only binary that it makes sense to use is ``nova-compute``
since disabling a service like ``nova-scheduler`` or ``nova-conductor``
does not actually do anything, and starting in the 16.0.0 Pike release the
compute API will not be able to look up services other than
``nova-compute`` for these operations.