~ubuntu-branches/ubuntu/saucy/cloud-init/saucy-proposed

« back to all changes in this revision

Viewing changes to cloudinit/config/cc_apt_configure.py

  • Committer: Package Import Robot
  • Author(s): Scott Moser
  • Date: 2013-08-14 21:44:22 UTC
  • mfrom: (1.4.1)
  • Revision ID: package-import@ubuntu.com-20130814214422-uzrq82t5srz2g4c2
Tags: 0.7.3~bzr858-0ubuntu1
* New upstream snapshot.
  * fix resizing of root partition by preferring the functional 'growpart'
    support over the broken 'parted resizepart' support (LP: #1212444)
  * add options for apt_ftp_proxy, apt_https_proxy and apt_config
    (LP: #1057195)

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
distros = ['ubuntu', 'debian']
28
28
 
29
29
PROXY_TPL = "Acquire::HTTP::Proxy \"%s\";\n"
30
 
PROXY_FN = "/etc/apt/apt.conf.d/95cloud-init-proxy"
 
30
APT_CONFIG_FN = "/etc/apt/apt.conf.d/94cloud-init-config"
 
31
APT_PROXY_FN = "/etc/apt/apt.conf.d/95cloud-init-proxy"
31
32
 
32
33
# A temporary shell program to get a given gpg key
33
34
# from a given keyserver
67
68
                               "security": "security.ubuntu.com/ubuntu"})
68
69
        rename_apt_lists(old_mirrors, mirrors)
69
70
 
70
 
    # Set up any apt proxy
71
 
    proxy = cfg.get("apt_proxy", None)
72
 
    proxy_filename = PROXY_FN
73
 
    if proxy:
74
 
        try:
75
 
            # See man 'apt.conf'
76
 
            contents = PROXY_TPL % (proxy)
77
 
            util.write_file(proxy_filename, contents)
78
 
        except Exception as e:
79
 
            util.logexc(log, "Failed to write proxy to %s", proxy_filename)
80
 
    elif os.path.isfile(proxy_filename):
81
 
        util.del_file(proxy_filename)
 
71
    try:
 
72
        apply_apt_config(cfg, APT_PROXY_FN, APT_CONFIG_FN)
 
73
    except Exception as e:
 
74
        log.warn("failed to proxy or apt config info: %s", e)
82
75
 
83
76
    # Process 'apt_sources'
84
77
    if 'apt_sources' in cfg:
256
249
        mirror_info.update({'primary': mirror})
257
250
 
258
251
    return mirror_info
 
252
 
 
253
 
 
254
def apply_apt_config(cfg, proxy_fname, config_fname):
 
255
    # Set up any apt proxy
 
256
    cfgs = (('apt_proxy', 'Acquire::HTTP::Proxy "%s";'),
 
257
            ('apt_http_proxy', 'Acquire::HTTP::Proxy "%s";'),
 
258
            ('apt_ftp_proxy', 'Acquire::FTP::Proxy "%s";'),
 
259
            ('apt_https_proxy', 'Acquire::HTTPS::Proxy "%s";'))
 
260
 
 
261
    proxies = [fmt % cfg.get(name) for (name, fmt) in cfgs if cfg.get(name)]
 
262
    if len(proxies):
 
263
        util.write_file(proxy_fname, '\n'.join(proxies) + '\n')
 
264
    elif os.path.isfile(proxy_fname):
 
265
        util.del_file(proxy_fname)
 
266
 
 
267
    if cfg.get('apt_config', None):
 
268
        util.write_file(config_fname, cfg.get('apt_config'))
 
269
    elif os.path.isfile(config_fname):
 
270
        util.del_file(config_fname)