summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cloudinit/CloudConfig/cc_apt_update_upgrade.py25
1 files changed, 22 insertions, 3 deletions
diff --git a/cloudinit/CloudConfig/cc_apt_update_upgrade.py b/cloudinit/CloudConfig/cc_apt_update_upgrade.py
index 30ef8d44..f361b8a4 100644
--- a/cloudinit/CloudConfig/cc_apt_update_upgrade.py
+++ b/cloudinit/CloudConfig/cc_apt_update_upgrade.py
@@ -55,15 +55,34 @@ def handle(name,cfg,cloud,log,args):
log.error("Failed to run debconf-set-selections")
log.debug(traceback.format_exc())
+ errors = [ ]
if update:
- cc.update_package_sources()
+ try:
+ cc.update_package_sources()
+ except subprocess.CalledProcessError as e:
+ log.warn("apt-get update failed")
+ log.debug(traceback.format_exc())
+ errors.append(e)
if upgrade:
- cc.apt_get("upgrade")
+ try:
+ cc.apt_get("upgrade")
+ except subprocess.CalledProcessError as e:
+ log.warn("apt upgrade failed")
+ log.debug(traceback.format_exc())
+ errors.append(e)
pkglist = util.get_cfg_option_list_or_str(cfg,'packages',[])
if len(pkglist):
- cc.install_packages(pkglist)
+ try:
+ cc.install_packages(pkglist)
+ except subprocess.CalledProcessError as e:
+ log.warn("Failed to install packages: %s " % pkglist)
+ log.debug(traceback.format_exc())
+ errors.append(e)
+
+ if len(errors):
+ raise errors[0]
return(True)