~hopem/charms/trusty/cinder/ensure-apache-restart

« back to all changes in this revision

Viewing changes to hooks/charmhelpers/fetch/__init__.py

  • Committer: Liam Young
  • Date: 2015-01-09 16:02:39 UTC
  • mfrom: (65 cinder.next)
  • mto: This revision was merged to the branch mainline in revision 67.
  • Revision ID: liam.young@canonical.com-20150109160239-qldk423wxfno2ao3
Merged next in and resolved conflicts

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
from charmhelpers.core.host import (
6
6
    lsb_release
7
7
)
8
 
from urlparse import (
9
 
    urlparse,
10
 
    urlunparse,
11
 
)
12
8
import subprocess
13
9
from charmhelpers.core.hookenv import (
14
10
    config,
16
12
)
17
13
import os
18
14
 
 
15
import six
 
16
if six.PY3:
 
17
    from urllib.parse import urlparse, urlunparse
 
18
else:
 
19
    from urlparse import urlparse, urlunparse
 
20
 
19
21
 
20
22
CLOUD_ARCHIVE = """# Ubuntu Cloud Archive
21
23
deb http://ubuntu-cloud.archive.canonical.com/ubuntu {} main
72
74
FETCH_HANDLERS = (
73
75
    'charmhelpers.fetch.archiveurl.ArchiveUrlFetchHandler',
74
76
    'charmhelpers.fetch.bzrurl.BzrUrlFetchHandler',
 
77
    'charmhelpers.fetch.giturl.GitUrlFetchHandler',
75
78
)
76
79
 
77
80
APT_NO_LOCK = 100  # The return code for "couldn't acquire lock" in APT.
148
151
    cmd = ['apt-get', '--assume-yes']
149
152
    cmd.extend(options)
150
153
    cmd.append('install')
151
 
    if isinstance(packages, basestring):
 
154
    if isinstance(packages, six.string_types):
152
155
        cmd.append(packages)
153
156
    else:
154
157
        cmd.extend(packages)
181
184
def apt_purge(packages, fatal=False):
182
185
    """Purge one or more packages"""
183
186
    cmd = ['apt-get', '--assume-yes', 'purge']
184
 
    if isinstance(packages, basestring):
 
187
    if isinstance(packages, six.string_types):
185
188
        cmd.append(packages)
186
189
    else:
187
190
        cmd.extend(packages)
192
195
def apt_hold(packages, fatal=False):
193
196
    """Hold one or more packages"""
194
197
    cmd = ['apt-mark', 'hold']
195
 
    if isinstance(packages, basestring):
 
198
    if isinstance(packages, six.string_types):
196
199
        cmd.append(packages)
197
200
    else:
198
201
        cmd.extend(packages)
218
221
        pocket for the release.
219
222
        'cloud:' may be used to activate official cloud archive pockets,
220
223
        such as 'cloud:icehouse'
 
224
        'distro' may be used as a noop
221
225
 
222
226
    @param key: A key to be added to the system's APT keyring and used
223
227
    to verify the signatures on packages. Ideally, this should be an
251
255
        release = lsb_release()['DISTRIB_CODENAME']
252
256
        with open('/etc/apt/sources.list.d/proposed.list', 'w') as apt:
253
257
            apt.write(PROPOSED_POCKET.format(release))
 
258
    elif source == 'distro':
 
259
        pass
254
260
    else:
255
 
        raise SourceConfigError("Unknown source: {!r}".format(source))
 
261
        log("Unknown source: {!r}".format(source))
256
262
 
257
263
    if key:
258
264
        if '-----BEGIN PGP PUBLIC KEY BLOCK-----' in key:
259
 
            with NamedTemporaryFile() as key_file:
 
265
            with NamedTemporaryFile('w+') as key_file:
260
266
                key_file.write(key)
261
267
                key_file.flush()
262
268
                key_file.seek(0)
293
299
    sources = safe_load((config(sources_var) or '').strip()) or []
294
300
    keys = safe_load((config(keys_var) or '').strip()) or None
295
301
 
296
 
    if isinstance(sources, basestring):
 
302
    if isinstance(sources, six.string_types):
297
303
        sources = [sources]
298
304
 
299
305
    if keys is None:
300
306
        for source in sources:
301
307
            add_source(source, None)
302
308
    else:
303
 
        if isinstance(keys, basestring):
 
309
        if isinstance(keys, six.string_types):
304
310
            keys = [keys]
305
311
 
306
312
        if len(sources) != len(keys):
397
403
        while result is None or result == APT_NO_LOCK:
398
404
            try:
399
405
                result = subprocess.check_call(cmd, env=env)
400
 
            except subprocess.CalledProcessError, e:
 
406
            except subprocess.CalledProcessError as e:
401
407
                retry_count = retry_count + 1
402
408
                if retry_count > APT_NO_LOCK_RETRY_COUNT:
403
409
                    raise