Merge "service instance: Read public ssh key directly"

This commit is contained in:
Zuul 2023-02-20 21:26:43 +00:00 committed by Gerrit Code Review
commit 5a21666551
2 changed files with 11 additions and 7 deletions

View File

@ -220,7 +220,6 @@ class ServiceInstanceManager(object):
raise exception.ServiceInstanceException(
_('Service instance user is not specified.'))
self.admin_context = context.get_admin_context()
self._execute = utils.execute
self.image_api = image.API()
self.compute_api = compute.API()
@ -493,6 +492,11 @@ class ServiceInstanceManager(object):
instance_details.pop(key)
return instance_details
def _load_public_key(self, path):
with open(path, 'r') as f:
public_key = f.read()
return public_key
@utils.synchronized("service_instance_get_key", external=True)
def _get_key(self, context):
"""Get ssh key.
@ -513,7 +517,7 @@ class ServiceInstanceManager(object):
if len(keypairs) > 1:
raise exception.ServiceInstanceException(_('Ambiguous keypairs.'))
public_key, __ = self._execute('cat', path_to_public_key)
public_key = self._load_public_key(path_to_public_key)
if not keypairs:
keypair = self.compute_api.keypair_import(
context, keypair_name, public_key)

View File

@ -137,7 +137,7 @@ class ServiceInstanceManagerTestCase(test.TestCase):
self.mock_object(service_instance, 'NeutronNetworkHelper',
mock.Mock(side_effect=FakeNetworkHelper))
self._manager = service_instance.ServiceInstanceManager(self.config)
self._manager._execute = mock.Mock(return_value=('', ''))
self._manager._load_public_key = mock.Mock(return_value='')
self.mock_object(time, 'sleep')
def test_get_config_option_from_driver_config(self):
@ -645,8 +645,8 @@ class ServiceInstanceManagerTestCase(test.TestCase):
mock.Mock(return_value=[fake_keypair]))
self.mock_object(self._manager.compute_api, 'keypair_import',
mock.Mock(return_value=fake_keypair))
self.mock_object(self._manager, '_execute',
mock.Mock(return_value=('fake_public_key', '')))
self.mock_object(self._manager, '_load_public_key',
mock.Mock(return_value='fake_public_key'))
result = self._manager._get_key(self._manager.admin_context)
@ -669,8 +669,8 @@ class ServiceInstanceManagerTestCase(test.TestCase):
self.mock_object(self._manager.compute_api, 'keypair_import',
mock.Mock(return_value=fake_keypair))
self.mock_object(self._manager.compute_api, 'keypair_delete')
self.mock_object(self._manager, '_execute',
mock.Mock(return_value=('fake_public_key2', '')))
self.mock_object(self._manager, '_load_public_key',
mock.Mock(return_value='fake_public_key2'))
result = self._manager._get_key(self._manager.admin_context)