Skip to content

Commit 647e4b4

Browse files
committed
Add cloud-init datasources
1 parent 7a402a3 commit 647e4b4

2 files changed

Lines changed: 34 additions & 5 deletions

File tree

coriolis/osmorphing/base.py

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

143+
@property
144+
def datasource_list(self):
145+
return []
146+
143147
@classmethod
144148
def get_required_detected_os_info_fields(cls):
145149
return REQUIRED_DETECTED_OS_FIELDS
@@ -473,7 +477,7 @@ def _configure_cloud_init(self):
473477
cloud_cfg_user_retention = {
474478
'disable_root': False,
475479
'ssh_pwauth': True,
476-
'users': None
480+
'users': []
477481
}
478482
cloud_cfg_mods.update(cloud_cfg_user_retention)
479483
else:
@@ -487,6 +491,12 @@ def _configure_cloud_init(self):
487491
modules = [m for m in modules if m != 'update_etc_hosts']
488492
cloud_cfg_mods.update({'cloud_init_modules': modules})
489493

494+
if self.datasource_list:
495+
datasource_cfg = {'datasource_list': self.datasource_list}
496+
cloud_cfg_mods.update(datasource_cfg)
497+
else:
498+
LOG.warning("No datasource_list passed to cloud-init")
499+
490500
self._write_cloud_init_mods_config(cloud_cfg_mods)
491501

492502
if self._has_systemd_chroot():

coriolis/tests/osmorphing/test_base.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -730,6 +730,7 @@ def test__create_cloudinit_user_already_exists(
730730

731731
@ddt.data(
732732
(
733+
None,
733734
["vim"],
734735
{},
735736
False,
@@ -738,19 +739,22 @@ def test__create_cloudinit_user_already_exists(
738739
False
739740
),
740741
(
742+
["Oracle"],
741743
["cloud-init"],
742744
{"retain_user_credentials": True, "set_dhcp": False},
743745
False,
744746
["set_hostname"],
745747
{
746748
"disable_root": False,
747749
"ssh_pwauth": True,
748-
"users": None,
750+
"users": [],
749751
"network": {"config": "disabled"},
752+
"datasource_list": ["Oracle"]
750753
},
751754
True
752755
),
753756
(
757+
[],
754758
["cloud-init", "vim"],
755759
{"retain_user_credentials": False, "set_dhcp": True},
756760
True,
@@ -759,6 +763,7 @@ def test__create_cloudinit_user_already_exists(
759763
False
760764
),
761765
(
766+
[],
762767
["cloud-init", "vim"],
763768
{"retain_user_credentials": False, "set_dhcp": False},
764769
True,
@@ -769,6 +774,16 @@ def test__create_cloudinit_user_already_exists(
769774
},
770775
False
771776
),
777+
(
778+
["ConfigDrive", "OpenStack"],
779+
["cloud-init", "vim"],
780+
{"retain_user_credentials": False, "set_dhcp": True},
781+
True,
782+
{
783+
"datasource_list": ["ConfigDrive", "OpenStack"]
784+
},
785+
False
786+
),
772787
)
773788
@ddt.unpack
774789
@mock.patch.object(base.BaseLinuxOSMorphingTools,
@@ -785,16 +800,20 @@ def test__create_cloudinit_user_already_exists(
785800
@mock.patch.object(base.BaseLinuxOSMorphingTools,
786801
'_disable_installer_cloud_config')
787802
@mock.patch.object(base.BaseLinuxOSMorphingTools, 'get_packages')
803+
@mock.patch.object(base.BaseLinuxOSMorphingTools, 'datasource_list',
804+
new_callable=mock.PropertyMock)
788805
def test__configure_cloud_init(
789-
self, returned_packages, osmorphing_params, creates_cloudinit_user,
790-
cloud_init_modules,
791-
expected_result, has_systemd_chroot, mock_get_packages,
806+
self, datasource_list, returned_packages, osmorphing_params,
807+
creates_cloudinit_user, expected_result, has_systemd_chroot,
808+
mock_datasource_list, mock_get_packages,
792809
mock__disable_installer_cloud_config,
793810
mock__ensure_cloud_init_not_disabled, mock__reset_cloud_init_run,
794811
mock__create_cloudinit_user, mock__write_cloud_init_mods_config,
795812
mock__get_cloud_init_modules,
796813
mock__has_systemd_chroot, mock__enable_systemd_service
797814
):
815+
if datasource_list is not None:
816+
mock_datasource_list.return_value = datasource_list
798817
mock_get_packages.return_value = returned_packages
799818
self.os_morphing_tools._osmorphing_parameters = osmorphing_params
800819
mock__has_systemd_chroot.return_value = has_systemd_chroot

0 commit comments

Comments
 (0)