summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPengpengSun <40026211+PengpengSun@users.noreply.github.com>2023-03-01 05:34:10 +0800
committerGitHub <noreply@github.com>2023-02-28 15:34:10 -0600
commitf79efeba3540f1d20d28a93c3e29149de0d82365 (patch)
tree01fe4a94f77c76d16acca8fb8bc34c01584b4313
parent2ee614aa6431f4339f48ebabdf2de4ebcc2401ab (diff)
downloadcloud-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.py25
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),