Skip to content

Commit 39e2f6f

Browse files
author
yoerg
committed
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
1 parent 97295ba commit 39e2f6f

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

cloudbaseinit/metadata/services/baseopenstackservice.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,9 @@ def get_network_details_v2(self):
249249
services=services
250250
)
251251

252+
def get_admin_username(self):
253+
return self._get_meta_data().get('meta', {}).get('admin_username')
254+
252255
def get_admin_password(self):
253256
meta_data = self._get_meta_data()
254257
meta = meta_data.get('meta')

cloudbaseinit/tests/metadata/services/test_baseopenstackservice.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,27 @@ def test_get_public_keys(self, mock_get_meta_data):
124124
self.assertEqual(sorted(list(set(public_keys))),
125125
sorted(response))
126126

127+
@mock.patch(MODPATH +
128+
".BaseOpenStackService._get_meta_data")
129+
def _test_get_admin_username(self, mock_get_meta_data, meta_data):
130+
mock_get_meta_data.return_value = meta_data
131+
response = self._service.get_admin_username()
132+
mock_get_meta_data.assert_called_once_with()
133+
if meta_data and 'admin_username' in meta_data.get('meta'):
134+
self.assertEqual(meta_data.get('meta')['admin_username'], response)
135+
else:
136+
self.assertIsNone(response)
137+
138+
def test_get_admin_username_in_meta(self):
139+
self._test_get_admin_username(
140+
meta_data={'meta': {'admin_username': 'fake user'}})
141+
142+
def test_get_admin_username_no_username_in_meta(self):
143+
self._test_get_admin_username(meta_data={'meta': {}})
144+
145+
def test_get_admin_username_no_meta_data(self):
146+
self._test_get_admin_username(meta_data={})
147+
127148
@mock.patch(MODPATH +
128149
".BaseOpenStackService._get_meta_data")
129150
def _test_get_admin_password(self, mock_get_meta_data, meta_data):

doc/source/services.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ Capabilities:
4949
* public keys
5050
* `WinRM <https://docs.microsoft.com/en-us/windows/win32/winrm/authentication-for-remote-connections#client-certificate-based-authentication>`_ authentication certificates
5151
* static network configuration
52+
* admin user name
5253
* admin user password
5354
* post admin user password (only once)
5455
* user data
@@ -101,6 +102,7 @@ Capabilities:
101102
* public keys
102103
* authentication certificates
103104
* static network configuration
105+
* admin user name
104106
* admin user password
105107
* user data
106108

0 commit comments

Comments
 (0)