Files
python-novaclient/novaclient/tests/functional/v2/test_os_services.py
Matt Riedemann e7b84daa87 Deprecate binary argument in nova service enable/disable/force-down CLIs
Change If1e03c9343b8cc9c34bd51c2b4d25acdb21131ff in the API in Pike
makes the os-services API look up services records via the host mapping
in the API datadabase to determine which cell the service lives in.
The host mappings only exist for nova-compute services, which means
you can only enable/disable/force-down nova-compute services now, which
is realistically the only service that ever made sense for those actions.

That change broke some functional tests in novaclient though which loop
through all services and disables them or forces them down. This change
fixes those tests by only attempting the action on nova-compute services.

This change also deprecates the binary argument to the service
enable/disable/force-down commands since the only value that ever really
worked or does anything is nova-compute, so a future version of the CLI
should just hard-code that value.

Change-Id: Idd0d2be960ca0ed59097c10c931da47a1a3e66fb
Closes-Bug: #1700359
2017-06-27 19:20:51 -04:00

45 lines
2.2 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from novaclient.tests.functional.v2.legacy import test_os_services
class TestOsServicesNovaClientV211(test_os_services.TestOsServicesNovaClient):
"""Functional tests for os-services attributes, microversion 2.11"""
COMPUTE_API_VERSION = "2.11"
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'
% (host, serv.binary))
self.addCleanup(self.nova, 'service-force-down --unset',
params="%s %s" % (host, serv.binary))
status = self._get_column_value_from_single_row_table(
service, 'Forced down')
self.assertEqual('True', status)
service = self.nova('service-force-down --unset %s %s'
% (host, serv.binary))
status = self._get_column_value_from_single_row_table(
service, 'Forced down')
self.assertEqual('False', status)