
Juju 2.0 provides support for display of the version of an application deployed by a charm in juju status. Insert the os_application_version_set function into the existing assess_status function - this gets called after all hook executions, and periodically after that, so any changes in package versions due to normal system updates will also be reflected in the status output. This review also includes a resync of charm-helpers to pickup hookenv and contrib.openstack support for this feature. Change-Id: I5734e87d39e62c1fb791b0b79ff216e30a784d1f
57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
import subprocess
|
|
|
|
|
|
def service_available(service_name):
|
|
"""Determine whether a system service is available"""
|
|
try:
|
|
subprocess.check_output(
|
|
['service', service_name, 'status'],
|
|
stderr=subprocess.STDOUT).decode('UTF-8')
|
|
except subprocess.CalledProcessError as e:
|
|
return b'unrecognized service' not in e.output
|
|
else:
|
|
return True
|
|
|
|
|
|
def add_new_group(group_name, system_group=False, gid=None):
|
|
cmd = ['addgroup']
|
|
if gid:
|
|
cmd.extend(['--gid', str(gid)])
|
|
if system_group:
|
|
cmd.append('--system')
|
|
else:
|
|
cmd.extend([
|
|
'--group',
|
|
])
|
|
cmd.append(group_name)
|
|
subprocess.check_call(cmd)
|
|
|
|
|
|
def lsb_release():
|
|
"""Return /etc/lsb-release in a dict"""
|
|
d = {}
|
|
with open('/etc/lsb-release', 'r') as lsb:
|
|
for l in lsb:
|
|
k, v = l.split('=')
|
|
d[k.strip()] = v.strip()
|
|
return d
|
|
|
|
|
|
def cmp_pkgrevno(package, revno, pkgcache=None):
|
|
"""Compare supplied revno with the revno of the installed package.
|
|
|
|
* 1 => Installed revno is greater than supplied arg
|
|
* 0 => Installed revno is the same as supplied arg
|
|
* -1 => Installed revno is less than supplied arg
|
|
|
|
This function imports apt_cache function from charmhelpers.fetch if
|
|
the pkgcache argument is None. Be sure to add charmhelpers.fetch if
|
|
you call this function, or pass an apt_pkg.Cache() instance.
|
|
"""
|
|
import apt_pkg
|
|
if not pkgcache:
|
|
from charmhelpers.fetch import apt_cache
|
|
pkgcache = apt_cache()
|
|
pkg = pkgcache[package]
|
|
return apt_pkg.version_compare(pkg.current_ver.ver_str, revno)
|