Assign username from config if none is given
When hooks/keystone_utils.py:get_admin_passwd is called without the user parameter, the parameter should default to config('admin-user') Also changed the log, to use the parameter for consistency with facts. Don't assume 'admin' is always the username for admin, when setting the admin password. Added unittests to check the various options, either specifying the username via function arguments, or use setting from config('admin-user'). Change-Id: I02726c07ee4ed1e78ea1bfaa93adc2564a1a8236 Closes-Bug: 1794893
This commit is contained in:
parent
59561fdda0
commit
78f2e5e049
|
@ -1176,12 +1176,14 @@ def get_admin_passwd(user=None):
|
|||
if passwd and passwd.lower() != "none":
|
||||
return passwd
|
||||
|
||||
if user is None:
|
||||
user = config('admin-user')
|
||||
|
||||
_migrate_admin_password()
|
||||
passwd = leader_get('{}_passwd'.format(user))
|
||||
|
||||
if not passwd and is_leader():
|
||||
log("Generating new passwd for user: %s" %
|
||||
config("admin-user"))
|
||||
log("Generating new passwd for user: %s" % user)
|
||||
cmd = ['pwgen', '-c', '16', '1']
|
||||
passwd = str(subprocess.check_output(cmd).decode('UTF-8')).strip()
|
||||
|
||||
|
@ -1190,7 +1192,7 @@ def get_admin_passwd(user=None):
|
|||
|
||||
def set_admin_passwd(passwd, user=None):
|
||||
if user is None:
|
||||
user = 'admin'
|
||||
user = config('admin-user')
|
||||
|
||||
leader_set({'{}_passwd'.format(user): passwd})
|
||||
|
||||
|
|
|
@ -637,6 +637,49 @@ class TestKeystoneUtils(CharmTestCase):
|
|||
self.test_config.set('admin-password', 'supersecret')
|
||||
self.assertEqual(utils.get_admin_passwd(), 'supersecret')
|
||||
|
||||
@patch.object(utils, 'is_leader')
|
||||
@patch.object(utils, 'leader_get')
|
||||
def test_get_admin_passwd_leader_set(self, leader_get, is_leader):
|
||||
is_leader.return_value = False
|
||||
leader_get.return_value = 'admin'
|
||||
self.assertEqual(utils.get_admin_passwd(), 'admin')
|
||||
leader_get.assert_called_with('admin_passwd')
|
||||
|
||||
@patch.object(utils, 'is_leader')
|
||||
@patch.object(utils, 'leader_get')
|
||||
def test_get_admin_passwd_leader_set_user_specified(self, leader_get,
|
||||
is_leader):
|
||||
is_leader.return_value = False
|
||||
leader_get.return_value = 'admin'
|
||||
self.assertEqual(utils.get_admin_passwd(user='test'), 'admin')
|
||||
leader_get.assert_called_with('test_passwd')
|
||||
|
||||
@patch.object(utils, 'is_leader')
|
||||
@patch.object(utils, 'leader_get')
|
||||
def test_get_admin_passwd_leader_set_user_config(self, leader_get,
|
||||
is_leader):
|
||||
is_leader.return_value = False
|
||||
leader_get.return_value = 'admin'
|
||||
self.test_config.set('admin-user', 'test')
|
||||
self.assertEqual(utils.get_admin_passwd(), 'admin')
|
||||
leader_get.assert_called_with('test_passwd')
|
||||
|
||||
@patch.object(utils, 'leader_set')
|
||||
def test_set_admin_password(self, leader_set):
|
||||
utils.set_admin_passwd('secret')
|
||||
leader_set.assert_called_once_with({'admin_passwd': 'secret'})
|
||||
|
||||
@patch.object(utils, 'leader_set')
|
||||
def test_set_admin_password_config_username(self, leader_set):
|
||||
self.test_config.set('admin-user', 'username')
|
||||
utils.set_admin_passwd('secret')
|
||||
leader_set.assert_called_once_with({'username_passwd': 'secret'})
|
||||
|
||||
@patch.object(utils, 'leader_set')
|
||||
def test_set_admin_password_username(self, leader_set):
|
||||
utils.set_admin_passwd('secret', user='username')
|
||||
leader_set.assert_called_once_with({'username_passwd': 'secret'})
|
||||
|
||||
@patch.object(utils, 'is_leader')
|
||||
@patch.object(utils, 'leader_get')
|
||||
@patch('os.path.isfile')
|
||||
|
|
Loading…
Reference in New Issue