Fix nova.servers_set_meta unit test

The unit test for nova_servers_set_meta was not testing the nova
datasource method itself but rather testing the
DataSourceDriver.execute() method.

Also, align the format of arguments and description of the
nova.servers_set_meta method with commit
daca060c30.

Closes-Bug: #1665594
Change-Id: Ibd78e62351bfbd07b20db746c8cb0a5ced40e2f9
This commit is contained in:
Carlos Goncalves 2017-02-17 09:49:10 +00:00 committed by Eric K
parent 0b46f4bbaf
commit d76057271a
2 changed files with 16 additions and 22 deletions

View File

@ -177,9 +177,14 @@ class NovaDriver(datasource_driver.PollingDataSourceDriver,
self.add_executable_method('servers_set_meta',
[{'name': 'server',
'description': 'server id'},
{'name': 'meta',
'description': 'metadata pairs, ' +
'e.g. meta1=val1 meta2=val2'}],
{'name': 'meta-key1',
'description': 'meta key 1'},
{'name': 'meta-value1',
'description': 'value for meta key1'},
{'name': 'meta-keyN',
'description': 'meta key N'},
{'name': 'meta-valueN',
'description': 'value for meta keyN'}],
"A wrapper for servers.set_meta()")
self.add_executable_client_methods(self.nova_client, 'novaclient.v2.')
self.initialize_update_methods()

View File

@ -301,25 +301,14 @@ class TestNovaDriver(base.TestCase):
self.assertEqual(expected_ans, nova_client.testkey)
def test_execute_servers_set_meta(self):
class server(object):
def __init__(self):
self.testkey = None
def set_meta(self, server=None, metadata=None):
self.testkey = 'server=%s, metadata=%s' % (server, metadata)
class NovaClient(object):
def __init__(self):
self.servers = server()
nova_client = NovaClient()
self.driver.nova_client = nova_client
expected_ans = "server=1, metadata={'meta-key1': 'meta-value1'}"
action_args = {'positional': ['1', 'meta-key1', 'meta-value1']}
self.driver.execute('servers_set_meta', action_args)
self.assertEqual(expected_ans, nova_client.servers.testkey)
args = {'positional': ['1', 'meta-key1', 'meta-value1']}
action_args = {'named': {'server': '1',
'metadata': {'meta-key1': 'meta-value1'}}}
with mock.patch.object(self.driver, '_execute_api') as mock_ea:
self.driver.servers_set_meta(args)
mock_ea.assert_called_with(self.driver.nova_client,
'servers.set_meta',
action_args)
def test_execute_with_non_executable_method(self):
action_args = {'positional': ['1', 'meta-key1', 'meta-value1']}