X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=RO-plugin%2Fosm_ro_plugin%2Fvimconn.py;h=a46f581aa0b32075e75a20a84f17611249f8b042;hb=1562e96c49444c1eb09a80243eb8e23af2de2ec6;hp=66fe1909fc9fe4c310f9656bf986eff09191b7e4;hpb=17852167b8cb19a82c07cf763a58e9e0261b3cc6;p=osm%2FRO.git diff --git a/RO-plugin/osm_ro_plugin/vimconn.py b/RO-plugin/osm_ro_plugin/vimconn.py index 66fe1909..a46f581a 100644 --- a/RO-plugin/osm_ro_plugin/vimconn.py +++ b/RO-plugin/osm_ro_plugin/vimconn.py @@ -320,74 +320,87 @@ class VimConnector: ) 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"] + f"\n{merge_how}") - else: - for u in cloud_config["user-data"]: - 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"] - - if ( - cloud_config.get("config-files") - or cloud_config.get("users") - or cloud_config.get("key-pairs") - ): - userdata_dict = {} - - # default user - if cloud_config.get("key-pairs"): - userdata_dict["ssh-authorized-keys"] = cloud_config["key-pairs"] - userdata_dict["system_info"] = { - "default_user": { - "ssh_authorized_keys": cloud_config["key-pairs"], + # If a config drive is needed, userdata is passed directly + if config_drive: + userdata = cloud_config.get("user-data") + # If a config drive is not necessary, then we process userdata and + # generate MIME multipart + else: + if cloud_config.get("user-data"): + if isinstance(cloud_config["user-data"], str): + userdata_list.append( + cloud_config["user-data"] + f"\n{merge_how}" + ) + else: + for u in cloud_config["user-data"]: + userdata_list.append(u + f"\n{merge_how}") + + if ( + cloud_config.get("config-files") + or cloud_config.get("users") + or cloud_config.get("key-pairs") + ): + userdata_dict = {} + + # default user + if cloud_config.get("key-pairs"): + userdata_dict["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: userdata_dict["users"] = ["default"] - for user in cloud_config["users"]: - user_info = { - "name": user["name"], - "sudo": "ALL = (ALL)NOPASSWD:ALL", - } + if cloud_config.get("users"): + if "users" not in userdata_dict: + userdata_dict["users"] = ["default"] - if "user-info" in user: - user_info["gecos"] = user["user-info"] + for user in cloud_config["users"]: + user_info = { + "name": user["name"], + "sudo": "ALL = (ALL)NOPASSWD:ALL", + } - if user.get("key-pairs"): - user_info["ssh-authorized-keys"] = user["key-pairs"] + if "user-info" in user: + user_info["gecos"] = user["user-info"] - userdata_dict["users"].append(user_info) + if user.get("key-pairs"): + user_info["ssh-authorized-keys"] = user["key-pairs"] - if cloud_config.get("config-files"): - userdata_dict["write_files"] = [] - for file in cloud_config["config-files"]: - file_info = {"path": file["dest"], "content": file["content"]} + userdata_dict["users"].append(user_info) - if file.get("encoding"): - file_info["encoding"] = file["encoding"] + if cloud_config.get("config-files"): + userdata_dict["write_files"] = [] + for file in cloud_config["config-files"]: + file_info = { + "path": file["dest"], + "content": file["content"], + } - if file.get("permissions"): - file_info["permissions"] = file["permissions"] + if file.get("encoding"): + file_info["encoding"] = file["encoding"] - if file.get("owner"): - file_info["owner"] = file["owner"] + if file.get("permissions"): + file_info["permissions"] = file["permissions"] - userdata_dict["write_files"].append(file_info) + if file.get("owner"): + file_info["owner"] = file["owner"] - 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) + userdata_dict["write_files"].append(file_info) + + 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) + # End if config_drive elif isinstance(cloud_config, str): userdata = cloud_config