Use correct user password as occ credential

Don't generate/update user password again if
the user has already been created, to make sure
the occ credential works.

Change-Id: Iffcb7aa0fb256d36aef64f5fd0ec37af4bf47be8
Closes-Bug: #1697623
(cherry picked from commit e23fcfe93a)
This commit is contained in:
huangtianhua 2017-06-13 17:46:39 +08:00
parent c6403967b9
commit 2ca4aad532
2 changed files with 58 additions and 1 deletions

View File

@ -137,7 +137,8 @@ class BaseServer(stack_user.StackUser):
elif (self.transport_poll_server_heat(props) or
self.transport_zaqar_message(props)):
self.password = uuid.uuid4().hex
if self.password is None:
self.password = uuid.uuid4().hex
self._create_user()
self._register_access_key()

View File

@ -1683,6 +1683,62 @@ class ServersTest(common.HeatTestCase):
md['os-collect-config']['request']['metadata_url'] = 'the_url'
self.assertEqual(expected_md, server.metadata_get())
def test_update_transport_heat_to_zaqar(self):
stack, server = self._server_create_software_config_poll_heat()
password = server.password
self.assertEqual({
'os-collect-config': {
'heat': {
'auth_url': 'http://server.test:5000/v2.0',
'password': password,
'project_id': '8888',
'resource_name': 'WebServer',
'stack_id': 'software_config_s/%s' % stack.id,
'user_id': '1234'
},
'collectors': ['ec2', 'heat', 'local'],
},
'deployments': []
}, server.metadata_get())
update_props = self.server_props.copy()
update_props['software_config_transport'] = 'ZAQAR_MESSAGE'
update_template = server.t.freeze(properties=update_props)
zcc = self.patchobject(zaqar.ZaqarClientPlugin, 'create_for_tenant')
zc = mock.Mock()
zcc.return_value = zc
queue = mock.Mock()
zc.queue.return_value = queue
self.rpc_client = mock.MagicMock()
server._rpc_client = self.rpc_client
self.rpc_client.create_software_config.return_value = None
scheduler.TaskRunner(server.update, update_template)()
self.assertEqual((server.UPDATE, server.COMPLETE), server.state)
password_1 = server.password
self.assertEqual(password, password_1)
self.assertEqual({
'os-collect-config': {
'zaqar': {
'user_id': '1234',
'password': password_1,
'auth_url': 'http://server.test:5000/v2.0',
'project_id': '8888',
'queue_id': server.data().get('metadata_queue_id')
},
'heat': {
'auth_url': None,
'password': None,
'project_id': None,
'resource_name': None,
'stack_id': None,
'user_id': None
},
'collectors': ['ec2', 'zaqar', 'local']
},
'deployments': []
}, server.metadata_get())
def test_server_update_nova_metadata(self):
return_server = self.fc.servers.list()[1]
server = self._create_test_server(return_server,