Support retrieving admin_username from OpenStack metadata
Allows giving an instance an individual cloud username, e.g. for license servers, while still retrieving SSH public keys for that user from OpenStack. Change-Id: I078380ef8f74b30105fd44378045df8b1260acbc
This commit is contained in:
parent
97295ba569
commit
39e2f6faf4
@ -249,6 +249,9 @@ class BaseOpenStackService(base.BaseMetadataService):
|
||||
services=services
|
||||
)
|
||||
|
||||
def get_admin_username(self):
|
||||
return self._get_meta_data().get('meta', {}).get('admin_username')
|
||||
|
||||
def get_admin_password(self):
|
||||
meta_data = self._get_meta_data()
|
||||
meta = meta_data.get('meta')
|
||||
|
@ -124,6 +124,27 @@ class TestBaseOpenStackService(unittest.TestCase):
|
||||
self.assertEqual(sorted(list(set(public_keys))),
|
||||
sorted(response))
|
||||
|
||||
@mock.patch(MODPATH +
|
||||
".BaseOpenStackService._get_meta_data")
|
||||
def _test_get_admin_username(self, mock_get_meta_data, meta_data):
|
||||
mock_get_meta_data.return_value = meta_data
|
||||
response = self._service.get_admin_username()
|
||||
mock_get_meta_data.assert_called_once_with()
|
||||
if meta_data and 'admin_username' in meta_data.get('meta'):
|
||||
self.assertEqual(meta_data.get('meta')['admin_username'], response)
|
||||
else:
|
||||
self.assertIsNone(response)
|
||||
|
||||
def test_get_admin_username_in_meta(self):
|
||||
self._test_get_admin_username(
|
||||
meta_data={'meta': {'admin_username': 'fake user'}})
|
||||
|
||||
def test_get_admin_username_no_username_in_meta(self):
|
||||
self._test_get_admin_username(meta_data={'meta': {}})
|
||||
|
||||
def test_get_admin_username_no_meta_data(self):
|
||||
self._test_get_admin_username(meta_data={})
|
||||
|
||||
@mock.patch(MODPATH +
|
||||
".BaseOpenStackService._get_meta_data")
|
||||
def _test_get_admin_password(self, mock_get_meta_data, meta_data):
|
||||
|
@ -49,6 +49,7 @@ Capabilities:
|
||||
* public keys
|
||||
* `WinRM <https://docs.microsoft.com/en-us/windows/win32/winrm/authentication-for-remote-connections#client-certificate-based-authentication>`_ authentication certificates
|
||||
* static network configuration
|
||||
* admin user name
|
||||
* admin user password
|
||||
* post admin user password (only once)
|
||||
* user data
|
||||
@ -101,6 +102,7 @@ Capabilities:
|
||||
* public keys
|
||||
* authentication certificates
|
||||
* static network configuration
|
||||
* admin user name
|
||||
* admin user password
|
||||
* user data
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user