~ionutbalutoiu/charms/trusty/neutron-api/next

« back to all changes in this revision

Viewing changes to hooks/neutron_api_utils.py

  • Committer: Liam Young
  • Date: 2014-06-20 10:02:09 UTC
  • Revision ID: liam.young@canonical.com-20140620100209-ibeiy1g9kt5ayimn
Added openstack upgrade, unit tests and lint fixes

Show diffs side-by-side

added added

removed removed

Lines of Context:
8
8
 
9
9
from charmhelpers.contrib.openstack.utils import (
10
10
    os_release,
 
11
    get_os_codename_install_source,
 
12
    configure_installation_source,
11
13
)
12
14
 
13
15
from charmhelpers.core.hookenv import (
14
16
    config,
 
17
    log,
15
18
)
16
 
 
 
19
from charmhelpers.fetch import apt_update, apt_install, apt_upgrade
17
20
import neutron_api_context
18
21
 
19
22
TEMPLATES = 'templates/'
160
163
        return None
161
164
    with open(CA_CERT_PATH) as _in:
162
165
        return b64encode(_in.read())
 
166
 
 
167
 
 
168
def do_openstack_upgrade(configs):
 
169
    """
 
170
    Perform an upgrade.  Takes care of upgrading packages, rewriting
 
171
    configs, database migrations and potentially any other post-upgrade
 
172
    actions.
 
173
 
 
174
    :param configs: The charms main OSConfigRenderer object.
 
175
    """
 
176
    new_src = config('openstack-origin')
 
177
    new_os_rel = get_os_codename_install_source(new_src)
 
178
 
 
179
    log('Performing OpenStack upgrade to %s.' % (new_os_rel))
 
180
 
 
181
    configure_installation_source(new_src)
 
182
    dpkg_opts = [
 
183
        '--option', 'Dpkg::Options::=--force-confnew',
 
184
        '--option', 'Dpkg::Options::=--force-confdef',
 
185
    ]
 
186
    apt_update(fatal=True)
 
187
    apt_upgrade(options=dpkg_opts, fatal=True, dist=True)
 
188
    pkgs = determine_packages()
 
189
    # Sort packages just to make unit tests easier
 
190
    pkgs.sort()
 
191
    apt_install(packages=pkgs,
 
192
                options=dpkg_opts,
 
193
                fatal=True)
 
194
 
 
195
    # set CONFIGS to load templates from new release
 
196
    configs.set_release(openstack_release=new_os_rel)