Support to more nova server operations

With SDK release 0.9.11, we now have more nova server operations to use,
this patch adds support from nova server profile.

Ref:
http://git.openstack.org/cgit/openstack/python-openstacksdk/tag/?h=0.9.11

Change-Id: I9d9a93a1ed62e1e693b6454b769671e30c854f60
This commit is contained in:
tengqm 2016-12-19 04:40:08 -05:00
parent 6bf9067cdb
commit 4feebb0544
2 changed files with 180 additions and 0 deletions

View File

@ -90,6 +90,52 @@ class NovaClient(base.DriverBase):
def server_change_password(self, server, new_password):
return self.conn.compute.change_server_password(server, new_password)
@sdk.translate_exception
def server_pause(self, server):
return self.conn.compute.pause_server(server)
@sdk.translate_exception
def server_unpause(self, server):
return self.conn.compute.unpause_server(server)
@sdk.translate_exception
def server_suspend(self, server):
return self.conn.compute.suspend_server(server)
@sdk.translate_exception
def server_resume(self, server):
return self.conn.compute.resume_server(server)
@sdk.translate_exception
def server_lock(self, server):
return self.conn.compute.lock_server(server)
@sdk.translate_exception
def server_unlock(self, server):
return self.conn.compute.unlock_server(server)
@sdk.translate_exception
def server_start(self, server):
return self.conn.compute.start_server(server)
@sdk.translate_exception
def server_stop(self, server):
return self.conn.compute.stop_server(server)
@sdk.translate_exception
def server_rescue(self, server, admin_pass=None, image_ref=None):
return self.conn.compute.rescue_server(server, admin_pass=admin_pass,
image_ref=image_ref)
@sdk.translate_exception
def server_unrescue(self, server):
return self.conn.compute.unrescue_server(server)
@sdk.translate_exception
def server_evacuate(self, server, host=None, admin_pass=None, force=None):
return self.conn.compute.evacuate_server(
server, host=host, admin_pass=admin_pass, force=force)
@sdk.translate_exception
def wait_for_server(self, server, status='ACTIVE', failures=['ERROR'],
interval=2, timeout=None):

View File

@ -158,6 +158,140 @@ class TestNovaV2(base.SenlinTestCase):
self.assertEqual(target.return_value, res)
target.assert_called_once_with('fakeid', 'new_password')
def test_server_pause(self):
d = nova_v2.NovaClient(self.conn_params)
server = mock.Mock()
target = d.conn.compute.pause_server
res = d.server_pause(server)
self.assertEqual(target.return_value, res)
target.assert_called_once_with(server)
def test_server_unpause(self):
d = nova_v2.NovaClient(self.conn_params)
server = mock.Mock()
target = d.conn.compute.unpause_server
res = d.server_unpause(server)
self.assertEqual(target.return_value, res)
target.assert_called_once_with(server)
def test_server_suspend(self):
d = nova_v2.NovaClient(self.conn_params)
server = mock.Mock()
target = d.conn.compute.suspend_server
res = d.server_suspend(server)
self.assertEqual(target.return_value, res)
target.assert_called_once_with(server)
def test_server_resume(self):
d = nova_v2.NovaClient(self.conn_params)
server = mock.Mock()
target = d.conn.compute.resume_server
res = d.server_resume(server)
self.assertEqual(target.return_value, res)
target.assert_called_once_with(server)
def test_server_lock(self):
d = nova_v2.NovaClient(self.conn_params)
server = mock.Mock()
target = d.conn.compute.lock_server
res = d.server_lock(server)
self.assertEqual(target.return_value, res)
target.assert_called_once_with(server)
def test_server_unlock(self):
d = nova_v2.NovaClient(self.conn_params)
server = mock.Mock()
target = d.conn.compute.unlock_server
res = d.server_unlock(server)
self.assertEqual(target.return_value, res)
target.assert_called_once_with(server)
def test_server_start(self):
d = nova_v2.NovaClient(self.conn_params)
server = mock.Mock()
target = d.conn.compute.start_server
res = d.server_start(server)
self.assertEqual(target.return_value, res)
target.assert_called_once_with(server)
def test_server_stop(self):
d = nova_v2.NovaClient(self.conn_params)
server = mock.Mock()
target = d.conn.compute.stop_server
res = d.server_stop(server)
self.assertEqual(target.return_value, res)
target.assert_called_once_with(server)
def test_server_rescue(self):
d = nova_v2.NovaClient(self.conn_params)
server = mock.Mock()
target = d.conn.compute.rescue_server
res = d.server_rescue(server)
self.assertEqual(target.return_value, res)
target.assert_called_once_with(server, admin_pass=None, image_ref=None)
def test_server_rescue_with_params(self):
d = nova_v2.NovaClient(self.conn_params)
server = mock.Mock()
target = d.conn.compute.rescue_server
res = d.server_rescue(server, admin_pass='PASS', image_ref='IMAGE')
self.assertEqual(target.return_value, res)
target.assert_called_once_with(server, admin_pass='PASS',
image_ref='IMAGE')
def test_server_unrescue(self):
d = nova_v2.NovaClient(self.conn_params)
server = mock.Mock()
target = d.conn.compute.unrescue_server
res = d.server_unrescue(server)
self.assertEqual(target.return_value, res)
target.assert_called_once_with(server)
def test_server_evacuate(self):
d = nova_v2.NovaClient(self.conn_params)
server = mock.Mock()
target = d.conn.compute.evacuate_server
res = d.server_evacuate(server)
self.assertEqual(target.return_value, res)
target.assert_called_once_with(server, host=None, admin_pass=None,
force=None)
def test_server_evacuate_with_params(self):
d = nova_v2.NovaClient(self.conn_params)
server = mock.Mock()
target = d.conn.compute.evacuate_server
res = d.server_evacuate(server, host='HOST', admin_pass='PASS',
force='True')
self.assertEqual(target.return_value, res)
target.assert_called_once_with(server, host='HOST', admin_pass='PASS',
force='True')
def test_wait_for_server(self):
self.compute.find_server.return_value = 'foo'