summaryrefslogtreecommitdiff
path: root/cloudinit/CloudConfig/cc_apt_update_upgrade.py
diff options
context:
space:
mode:
Diffstat (limited to 'cloudinit/CloudConfig/cc_apt_update_upgrade.py')
-rw-r--r--cloudinit/CloudConfig/cc_apt_update_upgrade.py46
1 files changed, 26 insertions, 20 deletions
diff --git a/cloudinit/CloudConfig/cc_apt_update_upgrade.py b/cloudinit/CloudConfig/cc_apt_update_upgrade.py
index dea89d25..8aaaa334 100644
--- a/cloudinit/CloudConfig/cc_apt_update_upgrade.py
+++ b/cloudinit/CloudConfig/cc_apt_update_upgrade.py
@@ -22,6 +22,7 @@ import os
import glob
import cloudinit.CloudConfig as cc
+
def handle(_name, cfg, cloud, log, _args):
update = util.get_cfg_option_bool(cfg, 'apt_update', False)
upgrade = util.get_cfg_option_bool(cfg, 'apt_upgrade', False)
@@ -39,7 +40,6 @@ def handle(_name, cfg, cloud, log, _args):
"archive.ubuntu.com/ubuntu")
rename_apt_lists(old_mir, mirror)
-
# set up proxy
proxy = cfg.get("apt_proxy", None)
proxy_filename = "/etc/apt/apt.conf.d/95cloud-init-proxy"
@@ -54,9 +54,9 @@ def handle(_name, cfg, cloud, log, _args):
os.unlink(proxy_filename)
# process 'apt_sources'
- if cfg.has_key('apt_sources'):
+ if 'apt_sources' in cfg:
errors = add_sources(cfg['apt_sources'],
- { 'MIRROR' : mirror, 'RELEASE' : release } )
+ {'MIRROR': mirror, 'RELEASE': release})
for e in errors:
log.warn("Source Error: %s\n" % ':'.join(e))
@@ -71,7 +71,7 @@ def handle(_name, cfg, cloud, log, _args):
pkglist = util.get_cfg_option_list_or_str(cfg, 'packages', [])
- errors = [ ]
+ errors = []
if update or len(pkglist) or upgrade:
try:
cc.update_package_sources()
@@ -101,6 +101,7 @@ def handle(_name, cfg, cloud, log, _args):
return(True)
+
def mirror2lists_fileprefix(mirror):
string = mirror
# take of http:// or ftp://
@@ -108,12 +109,12 @@ def mirror2lists_fileprefix(mirror):
string = string[0:-1]
pos = string.find("://")
if pos >= 0:
- string = string[pos+3:]
+ string = string[pos + 3:]
string = string.replace("/", "_")
return string
+
def rename_apt_lists(omirror, new_mirror, lists_d="/var/lib/apt/lists"):
-
oprefix = "%s/%s" % (lists_d, mirror2lists_fileprefix(omirror))
nprefix = "%s/%s" % (lists_d, mirror2lists_fileprefix(new_mirror))
if(oprefix == nprefix):
@@ -122,26 +123,31 @@ def rename_apt_lists(omirror, new_mirror, lists_d="/var/lib/apt/lists"):
for filename in glob.glob("%s_*" % oprefix):
os.rename(filename, "%s%s" % (nprefix, filename[olen:]))
+
def get_release():
stdout, _stderr = subprocess.Popen(['lsb_release', '-cs'],
stdout=subprocess.PIPE).communicate()
- return(stdout.strip())
+ return(str(stdout).strip())
+
def generate_sources_list(codename, mirror):
util.render_to_file('sources.list', '/etc/apt/sources.list', \
- { 'mirror' : mirror, 'codename' : codename })
+ {'mirror': mirror, 'codename': codename})
+
-# srclist is a list of dictionaries,
-# each entry must have: 'source'
-# may have: key, ( keyid and keyserver)
def add_sources(srclist, searchList=None):
+ """
+ add entries in /etc/apt/sources.list.d for each abbreviated
+ sources.list entry in 'srclist'. When rendering template, also
+ include the values in dictionary searchList
+ """
if searchList is None:
searchList = {}
elst = []
for ent in srclist:
- if not ent.has_key('source'):
- elst.append([ "", "missing source" ])
+ if 'source' not in ent:
+ elst.append(["", "missing source"])
continue
source = ent['source']
@@ -154,16 +160,16 @@ def add_sources(srclist, searchList=None):
source = util.render_string(source, searchList)
- if not ent.has_key('filename'):
+ if 'filename' not in ent:
ent['filename'] = 'cloud_config_sources.list'
if not ent['filename'].startswith("/"):
ent['filename'] = "%s/%s" % \
("/etc/apt/sources.list.d/", ent['filename'])
- if ( ent.has_key('keyid') and not ent.has_key('key') ):
+ if ('keyid' in ent and 'key' not in ent):
ks = "keyserver.ubuntu.com"
- if ent.has_key('keyserver'):
+ if 'keyserver' in ent:
ks = ent['keyserver']
try:
ent['key'] = util.getkeybyid(ent['keyid'], ks)
@@ -171,7 +177,7 @@ def add_sources(srclist, searchList=None):
elst.append([source, "failed to get key from %s" % ks])
continue
- if ent.has_key('key'):
+ if 'key' in ent:
try:
util.subp(('apt-key', 'add', '-'), ent['key'])
except:
@@ -199,7 +205,7 @@ def find_apt_mirror(cloud, cfg):
cfg_mirror = cfg.get("apt_mirror", None)
if cfg_mirror:
mirror = cfg["apt_mirror"]
- elif cfg.has_key("apt_mirror_search"):
+ elif "apt_mirror_search" in cfg:
mirror = util.search_for_mirror(cfg['apt_mirror_search'])
else:
if cloud:
@@ -211,7 +217,7 @@ def find_apt_mirror(cloud, cfg):
if not mirror and cloud:
# if we have a fqdn, then search its domain portion first
- ( _hostname, fqdn ) = util.get_hostname_fqdn(cfg, cloud)
+ (_hostname, fqdn) = util.get_hostname_fqdn(cfg, cloud)
mydom = ".".join(fqdn.split(".")[1:])
if mydom:
doms.append(".%s" % mydom)
@@ -220,7 +226,7 @@ def find_apt_mirror(cloud, cfg):
doms.extend((".localdomain", "",))
mirror_list = []
- mirrorfmt = "http://%s-mirror%s/%s" % (distro, "%s", distro )
+ mirrorfmt = "http://%s-mirror%s/%s" % (distro, "%s", distro)
for post in doms:
mirror_list.append(mirrorfmt % post)