cloud-config: schema drop deprecated dict user.groups value type

Align with latest cloud-init schema avoid using depracated
value types for users. groups definitions in cloud-config.

Also fix get_users_and_groups to return a list instead of
dict as all call sites expected it to return a list.
This commit is contained in:
Chad Smith 2022-06-15 21:48:35 -06:00
parent df1a5adf0b
commit 62ad68bd76
3 changed files with 8 additions and 4 deletions

View File

@ -18,6 +18,7 @@
import logging import logging
import os import os
from typing import List
log = logging.getLogger('subiquity.common.resources') log = logging.getLogger('subiquity.common.resources')
@ -26,7 +27,7 @@ def resource_path(relative_path):
return os.path.join(os.environ.get("SUBIQUITY_ROOT", "."), relative_path) return os.path.join(os.environ.get("SUBIQUITY_ROOT", "."), relative_path)
def get_users_and_groups(chroot_prefix=[]): def get_users_and_groups(chroot_prefix=[]) -> List:
# prevent import when calling just resource_path # prevent import when calling just resource_path
from subiquitycore.utils import run_command from subiquitycore.utils import run_command
@ -43,5 +44,4 @@ def get_users_and_groups(chroot_prefix=[]):
for line in cp.stdout.splitlines(): for line in cp.stdout.splitlines():
target_groups.add(line.split(':')[0]) target_groups.add(line.split(':')[0])
groups = target_groups.intersection(groups) return list(target_groups.intersection(groups))
return groups

View File

@ -262,7 +262,7 @@ class SubiquityModel:
'gecos': user.realname, 'gecos': user.realname,
'passwd': user.password, 'passwd': user.password,
'shell': '/bin/bash', 'shell': '/bin/bash',
'groups': groups, 'groups': ','.join(sorted(groups)),
'lock_passwd': False, 'lock_passwd': False,
} }
if self.ssh.authorized_keys: if self.ssh.authorized_keys:

View File

@ -196,6 +196,10 @@ class TestSubiquityModel(unittest.TestCase):
cloud_init_config = model._cloud_init_config() cloud_init_config = model._cloud_init_config()
self.assertEqual(len(cloud_init_config['users']), 2) self.assertEqual(len(cloud_init_config['users']), 2)
self.assertEqual(cloud_init_config['users'][0]['name'], 'mainuser') self.assertEqual(cloud_init_config['users'][0]['name'], 'mainuser')
self.assertEqual(
cloud_init_config['users'][0]['groups'],
'adm,cdrom,dip,lxd,plugdev,sudo'
)
self.assertEqual(cloud_init_config['users'][1]['name'], 'user2') self.assertEqual(cloud_init_config['users'][1]['name'], 'user2')
with self.subTest('Secondary user only'): with self.subTest('Secondary user only'):