diff options
author | PengpengSun <40026211+PengpengSun@users.noreply.github.com> | 2023-03-01 05:34:10 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-28 15:34:10 -0600 |
commit | f79efeba3540f1d20d28a93c3e29149de0d82365 (patch) | |
tree | 01fe4a94f77c76d16acca8fb8bc34c01584b4313 | |
parent | 2ee614aa6431f4339f48ebabdf2de4ebcc2401ab (diff) | |
download | cloud-init-git-f79efeba3540f1d20d28a93c3e29149de0d82365.tar.gz |
sources/vmware/imc: fix-missing-catch-few-negtive-scenarios (#2027)
1. When metadata is invalid, should catch exception and report imc
failure event.
2. When pre/post customization script is invalid, should catch
exception and report imc failure event.
-rw-r--r-- | cloudinit/sources/helpers/vmware/imc/guestcust_util.py | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/cloudinit/sources/helpers/vmware/imc/guestcust_util.py b/cloudinit/sources/helpers/vmware/imc/guestcust_util.py index 6ffbae40..92e71370 100644 --- a/cloudinit/sources/helpers/vmware/imc/guestcust_util.py +++ b/cloudinit/sources/helpers/vmware/imc/guestcust_util.py @@ -1,5 +1,5 @@ # Copyright (C) 2016 Canonical Ltd. -# Copyright (C) 2016-2022 VMware Inc. +# Copyright (C) 2016-2023 VMware Inc. # # Author: Sankar Tanguturi <stanguturi@vmware.com> # Pengpeng Sun <pegnpengs@vmware.com> @@ -11,14 +11,10 @@ import os import re import time -from cloudinit import subp, util +from cloudinit import safeyaml, subp, util from .config import Config -from .config_custom_script import ( - CustomScriptNotFound, - PostCustomScript, - PreCustomScript, -) +from .config_custom_script import PostCustomScript, PreCustomScript from .config_file import ConfigFile from .config_nic import NicConfigurator from .config_passwd import PasswordConfigurator @@ -265,6 +261,17 @@ def get_data_from_imc_raw_data_cust_cfg(cust_cfg): ) return (None, None, None) + try: + logger.debug("Validating if meta data is valid or not") + md = safeyaml.load(md) + except safeyaml.YAMLError as e: + set_cust_error_status( + "Error parsing the cloud-init meta data", + str(e), + GuestCustErrorEnum.GUESTCUST_ERROR_WRONG_META_FORMAT, + cust_cfg, + ) + ud_file = cust_cfg.user_data_name if ud_file: ud_path = os.path.join(get_imc_dir_path(), ud_file) @@ -512,7 +519,7 @@ def do_pre_custom_script(cust_cfg, custom_script, cust_cfg_dir): try: precust = PreCustomScript(custom_script, cust_cfg_dir) precust.execute() - except CustomScriptNotFound as e: + except Exception as e: set_cust_error_status( "Error executing pre-customization script", str(e), @@ -527,7 +534,7 @@ def do_post_custom_script(cust_cfg, custom_script, cust_cfg_dir, ccScriptsDir): try: postcust = PostCustomScript(custom_script, cust_cfg_dir, ccScriptsDir) postcust.execute() - except CustomScriptNotFound as e: + except Exception as e: set_cust_error_status( "Error executing post-customization script", str(e), |