Skip to content

Commit e1d846a

Browse files
committed
Add cloud-init datasources
1 parent def53f8 commit e1d846a

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

coriolis/osmorphing/base.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ def __init__(self, conn, os_root_dir, os_root_dev, hypervisor,
136136
detected_os_info, osmorphing_parameters, operation_timeout)
137137
self._ssh = conn
138138

139+
@property
140+
def datasource_list(self):
141+
return []
142+
139143
@classmethod
140144
def get_required_detected_os_info_fields(cls):
141145
return REQUIRED_DETECTED_OS_FIELDS
@@ -459,7 +463,7 @@ def _configure_cloud_init(self):
459463
cloud_cfg_user_retention = {
460464
'disable_root': False,
461465
'ssh_pwauth': True,
462-
'users': None
466+
'users': []
463467
}
464468
cloud_cfg_mods.update(cloud_cfg_user_retention)
465469
else:
@@ -469,6 +473,12 @@ def _configure_cloud_init(self):
469473
disabled_network_config = {"network": {"config": "disabled"}}
470474
cloud_cfg_mods.update(disabled_network_config)
471475

476+
if self.datasource_list:
477+
datasource_cfg = {'datasource_list': self.datasource_list}
478+
cloud_cfg_mods.update(datasource_cfg)
479+
else:
480+
LOG.warning("No datasource_list passed to cloud-init")
481+
472482
self._write_cloud_init_mods_config(cloud_cfg_mods)
473483

474484
if self._has_systemd_chroot():

coriolis/tests/osmorphing/test_base.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -710,31 +710,45 @@ def test__create_cloudinit_user_already_exists(
710710

711711
@ddt.data(
712712
(
713+
None,
713714
["vim"],
714715
{},
715716
False,
716717
None,
717718
False
718719
),
719720
(
721+
["Oracle"],
720722
["cloud-init"],
721723
{"retain_user_credentials": True, "set_dhcp": False},
722724
False,
723725
{
724726
"disable_root": False,
725727
"ssh_pwauth": True,
726-
"users": None,
728+
"users": [],
727729
"network": {"config": "disabled"},
730+
"datasource_list": ["Oracle"]
728731
},
729732
True
730733
),
731734
(
735+
[],
732736
["cloud-init", "vim"],
733737
{"retain_user_credentials": False, "set_dhcp": True},
734738
True,
735739
{},
736740
False
737741
),
742+
(
743+
["ConfigDrive", "OpenStack"],
744+
["cloud-init", "vim"],
745+
{"retain_user_credentials": False, "set_dhcp": True},
746+
True,
747+
{
748+
"datasource_list": ["ConfigDrive", "OpenStack"]
749+
},
750+
False
751+
),
738752
)
739753
@ddt.unpack
740754
@mock.patch.object(base.BaseLinuxOSMorphingTools,
@@ -749,14 +763,19 @@ def test__create_cloudinit_user_already_exists(
749763
@mock.patch.object(base.BaseLinuxOSMorphingTools,
750764
'_disable_installer_cloud_config')
751765
@mock.patch.object(base.BaseLinuxOSMorphingTools, 'get_packages')
766+
@mock.patch.object(base.BaseLinuxOSMorphingTools, 'datasource_list',
767+
new_callable=mock.PropertyMock)
752768
def test__configure_cloud_init(
753-
self, returned_packages, osmorphing_params, creates_cloudinit_user,
754-
expected_result, has_systemd_chroot, mock_get_packages,
769+
self, datasource_list, returned_packages, osmorphing_params,
770+
creates_cloudinit_user, expected_result, has_systemd_chroot,
771+
mock_datasource_list, mock_get_packages,
755772
mock__disable_installer_cloud_config,
756773
mock__ensure_cloud_init_not_disabled, mock__reset_cloud_init_run,
757774
mock__create_cloudinit_user, mock__write_cloud_init_mods_config,
758775
mock__has_systemd_chroot, mock__enable_systemd_service
759776
):
777+
if datasource_list is not None:
778+
mock_datasource_list.return_value = datasource_list
760779
mock_get_packages.return_value = returned_packages
761780
self.os_morphing_tools._osmorphing_parameters = osmorphing_params
762781
mock__has_systemd_chroot.return_value = has_systemd_chroot

0 commit comments

Comments
 (0)