Files
python-novaclient/novaclient/tests/unit/v2/test_hosts.py
jichenjc ea3b9f7fef 2.43: Deprecate novaclient /os-hosts usage
os-hosts is deprecated in the compute REST API with
microversion 2.43 via change:

Ieb85653b85a1eff38a9fb0c9ff05e4cd39150ecc

So nova shell and API bindings should be deprecated as well.

Implements blueprint deprecate-os-hosts

Change-Id: I79091edf5a2569e49e79deba312456fdcdee09e1
2017-04-25 17:37:47 -04:00

149 lines
5.6 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.
import mock
from novaclient import api_versions
from novaclient import exceptions
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit.fixture_data import hosts as data
from novaclient.tests.unit import utils
from novaclient.tests.unit.v2 import fakes
from novaclient.v2 import hosts
class HostsTest(utils.FixturedTestCase):
client_fixture_class = client.V1
data_fixture_class = data.V1
def setUp(self):
super(HostsTest, self).setUp()
self.warning_mock = mock.patch('warnings.warn').start()
self.addCleanup(self.warning_mock.stop)
def test_describe_resource(self):
hs = self.cs.hosts.get('host')
self.warning_mock.assert_called_once()
self.assert_request_id(hs, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hosts/host')
for h in hs:
self.assertIsInstance(h, hosts.Host)
def test_list_host(self):
hs = self.cs.hosts.list()
self.warning_mock.assert_called_once()
self.assert_request_id(hs, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hosts')
for h in hs:
self.assertIsInstance(h, hosts.Host)
self.assertEqual(h.zone, 'nova1')
def test_list_host_with_zone(self):
hs = self.cs.hosts.list('nova')
self.assert_request_id(hs, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hosts?zone=nova')
for h in hs:
self.assertIsInstance(h, hosts.Host)
self.assertEqual(h.zone, 'nova')
def test_update_enable(self):
host = self.cs.hosts.get('sample_host')[0]
values = {"status": "enabled"}
result = host.update(values)
# one warning for the get, one warning for the update
self.assertEqual(2, self.warning_mock.call_count)
self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('PUT', '/os-hosts/sample_host', values)
self.assertIsInstance(result, hosts.Host)
def test_update_maintenance(self):
host = self.cs.hosts.get('sample_host')[0]
values = {"maintenance_mode": "enable"}
result = host.update(values)
self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('PUT', '/os-hosts/sample_host', values)
self.assertIsInstance(result, hosts.Host)
def test_update_both(self):
host = self.cs.hosts.get('sample_host')[0]
values = {"status": "enabled",
"maintenance_mode": "enable"}
result = host.update(values)
self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('PUT', '/os-hosts/sample_host', values)
self.assertIsInstance(result, hosts.Host)
def test_host_startup(self):
host = self.cs.hosts.get('sample_host')[0]
result = host.startup()
# one warning for the get, one warning for the action
self.assertEqual(2, self.warning_mock.call_count)
self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called(
'GET', '/os-hosts/sample_host/startup')
def test_host_reboot(self):
host = self.cs.hosts.get('sample_host')[0]
result = host.reboot()
# one warning for the get, one warning for the action
self.assertEqual(2, self.warning_mock.call_count)
self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called(
'GET', '/os-hosts/sample_host/reboot')
def test_host_shutdown(self):
host = self.cs.hosts.get('sample_host')[0]
result = host.shutdown()
# one warning for the get, one warning for the action
self.assertEqual(2, self.warning_mock.call_count)
self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called(
'GET', '/os-hosts/sample_host/shutdown')
def test_hosts_repr(self):
hs = self.cs.hosts.get('host')
self.assertEqual('<Host: dummy>', repr(hs[0]))
def test_hosts_list_repr(self):
hs = self.cs.hosts.list()
for h in hs:
self.assertEqual('<Host: %s>' % h.host_name, repr(h))
class DeprecatedHostsTestv2_43(utils.FixturedTestCase):
"""Tests the os-hosts API bindings at microversion 2.43 to ensure
they fail with a 404 error.
"""
client_fixture_class = client.V1
def setUp(self):
super(DeprecatedHostsTestv2_43, self).setUp()
self.cs.api_version = api_versions.APIVersion('2.43')
def test_get(self):
self.assertRaises(exceptions.VersionNotFoundForAPIMethod,
self.cs.hosts.get, 'host')
def test_list(self):
self.assertRaises(exceptions.VersionNotFoundForAPIMethod,
self.cs.hosts.list)
def test_update(self):
self.assertRaises(exceptions.VersionNotFoundForAPIMethod,
self.cs.hosts.update, 'host', {"status": "enabled"})
def test_host_action(self):
self.assertRaises(exceptions.VersionNotFoundForAPIMethod,
self.cs.hosts.host_action, 'host', 'reboot')