~brad-marshall/charms/trusty/apache2-wsgi/fix-haproxy-relations

« back to all changes in this revision

Viewing changes to hooks/lib/charmhelpers/contrib/python/packages.py

  • Committer: Robin Winslow
  • Date: 2014-05-27 14:00:44 UTC
  • Revision ID: robin.winslow@canonical.com-20140527140044-8rpmb3wx4djzwa83
Add all files

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
# coding: utf-8
 
3
 
 
4
__author__ = "Jorge Niedbalski <jorge.niedbalski@canonical.com>"
 
5
 
 
6
from charmhelpers.fetch import apt_install
 
7
from charmhelpers.core.hookenv import log
 
8
 
 
9
try:
 
10
    from pip import main as pip_execute
 
11
except ImportError:
 
12
    apt_install('python-pip')
 
13
    from pip import main as pip_execute
 
14
 
 
15
 
 
16
def parse_options(given, available):
 
17
    """Given a set of options, check if available"""
 
18
    for key, value in given.items():
 
19
        if key in available:
 
20
            yield "--{0}={1}".format(key, value)
 
21
 
 
22
 
 
23
def pip_install_requirements(requirements, **options):
 
24
    """Install a requirements file """
 
25
    command = ["install"]
 
26
 
 
27
    available_options = ('proxy', 'src', 'log', )
 
28
    for option in parse_options(options, available_options):
 
29
        command.append(option)
 
30
 
 
31
    command.append("-r {0}".format(requirements))
 
32
    log("Installing from file: {} with options: {}".format(requirements,
 
33
                                                           command))
 
34
    pip_execute(command)
 
35
 
 
36
 
 
37
def pip_install(package, fatal=False, **options):
 
38
    """Install a python package"""
 
39
    command = ["install"]
 
40
 
 
41
    available_options = ('proxy', 'src', 'log', "index-url", )
 
42
    for option in parse_options(options, available_options):
 
43
        command.append(option)
 
44
 
 
45
    if isinstance(package, list):
 
46
        command.extend(package)
 
47
    else:
 
48
        command.append(package)
 
49
 
 
50
    log("Installing {} package with options: {}".format(package,
 
51
                                                        command))
 
52
    pip_execute(command)
 
53
 
 
54
 
 
55
def pip_uninstall(package, **options):
 
56
    """Uninstall a python package"""
 
57
    command = ["uninstall", "-q", "-y"]
 
58
 
 
59
    available_options = ('proxy', 'log', )
 
60
    for option in parse_options(options, available_options):
 
61
        command.append(option)
 
62
 
 
63
    if isinstance(package, list):
 
64
        command.extend(package)
 
65
    else:
 
66
        command.append(package)
 
67
 
 
68
    log("Uninstalling {} package with options: {}".format(package,
 
69
                                                          command))
 
70
    pip_execute(command)
 
71
 
 
72
 
 
73
def pip_list():
 
74
    """Returns the list of current python installed packages
 
75
    """
 
76
    return pip_execute(["list"])