From: Pedro Escaleira Date: Wed, 22 Feb 2023 10:48:52 +0000 (+0000) Subject: Bug 2217 fixed: modified the cloud-init merge configs and defined the default SSH... X-Git-Tag: release-v14.0-start~20 X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FRO.git;a=commitdiff_plain;h=98740c03567ff8c5a22f06fd3f049248a9e5f98d Bug 2217 fixed: modified the cloud-init merge configs and defined the default SSH keys within the system_info instead of users Change-Id: I12e26a88fb9b50c4a78b9fa8ee2cb5d4b4bf6d00 Signed-off-by: Pedro Escaleira --- diff --git a/RO-plugin/osm_ro_plugin/vimconn.py b/RO-plugin/osm_ro_plugin/vimconn.py index f526aef1..b251d598 100644 --- a/RO-plugin/osm_ro_plugin/vimconn.py +++ b/RO-plugin/osm_ro_plugin/vimconn.py @@ -293,13 +293,32 @@ class VimConnector: userdata = None userdata_list = [] + # For more information, check https://cloudinit.readthedocs.io/en/latest/reference/merging.html + # Basically, with this, we don't override the provider's cloud config + merge_how = yaml.safe_dump( + { + "merge_how": [ + { + "name": "list", + "settings": ["append", "recurse_dict", "recurse_list"], + }, + { + "name": "dict", + "settings": ["no_replace", "recurse_list", "recurse_dict"], + }, + ] + }, + indent=4, + default_flow_style=False, + ) + if isinstance(cloud_config, dict): if cloud_config.get("user-data"): if isinstance(cloud_config["user-data"], str): - userdata_list.append(cloud_config["user-data"]) + userdata_list.append(cloud_config["user-data"] + f"\n{merge_how}") else: for u in cloud_config["user-data"]: - userdata_list.append(u) + userdata_list.append(u + f"\n{merge_how}") if cloud_config.get("boot-data-drive") is not None: config_drive = cloud_config["boot-data-drive"] @@ -314,12 +333,12 @@ class VimConnector: # default user if cloud_config.get("key-pairs"): userdata_dict["ssh-authorized-keys"] = cloud_config["key-pairs"] - userdata_dict["users"] = [ - { - "default": None, - "ssh-authorized-keys": cloud_config["key-pairs"], + userdata_dict["system_info"] = { + "default_user": { + "ssh_authorized_keys": cloud_config["key-pairs"], } - ] + } + userdata_dict["users"] = ["default"] if cloud_config.get("users"): if "users" not in userdata_dict: @@ -358,6 +377,7 @@ class VimConnector: userdata_list.append( "#cloud-config\n" + yaml.safe_dump(userdata_dict, indent=4, default_flow_style=False) + + f"\n{merge_how}" ) userdata = self._create_mimemultipart(userdata_list) self.logger.debug("userdata: %s", userdata) diff --git a/releasenotes/notes/fixing_bug_2217-a214461041d7a5c0.yaml b/releasenotes/notes/fixing_bug_2217-a214461041d7a5c0.yaml new file mode 100644 index 00000000..e7f6399e --- /dev/null +++ b/releasenotes/notes/fixing_bug_2217-a214461041d7a5c0.yaml @@ -0,0 +1,20 @@ +####################################################################################### +# Copyright ETSI Contributors and Others. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. +####################################################################################### +--- +fixes: + - | + This fixes bug 2217. Modified the cloud-init merge configs and defined the default SSH keys within the system_info instead of users