7ea0be57de
Change-Id: I8c8df27be189098be363d0ea125f86e59fdbb020
73 lines
1.9 KiB
Python
73 lines
1.9 KiB
Python
import subprocess
|
|
import yum
|
|
import os
|
|
|
|
from charmhelpers.core.strutils import BasicStringComparator
|
|
|
|
|
|
class CompareHostReleases(BasicStringComparator):
|
|
"""Provide comparisons of Host releases.
|
|
|
|
Use in the form of
|
|
|
|
if CompareHostReleases(release) > 'trusty':
|
|
# do something with mitaka
|
|
"""
|
|
|
|
def __init__(self, item):
|
|
raise NotImplementedError(
|
|
"CompareHostReleases() is not implemented for CentOS")
|
|
|
|
|
|
def service_available(service_name):
|
|
# """Determine whether a system service is available."""
|
|
if os.path.isdir('/run/systemd/system'):
|
|
cmd = ['systemctl', 'is-enabled', service_name]
|
|
else:
|
|
cmd = ['service', service_name, 'is-enabled']
|
|
return subprocess.call(cmd) == 0
|
|
|
|
|
|
def add_new_group(group_name, system_group=False, gid=None):
|
|
cmd = ['groupadd']
|
|
if gid:
|
|
cmd.extend(['--gid', str(gid)])
|
|
if system_group:
|
|
cmd.append('-r')
|
|
cmd.append(group_name)
|
|
subprocess.check_call(cmd)
|
|
|
|
|
|
def lsb_release():
|
|
"""Return /etc/os-release in a dict."""
|
|
d = {}
|
|
with open('/etc/os-release', 'r') as lsb:
|
|
for l in lsb:
|
|
s = l.split('=')
|
|
if len(s) != 2:
|
|
continue
|
|
d[s[0].strip()] = s[1].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 YumBase function if the pkgcache argument
|
|
is None.
|
|
"""
|
|
if not pkgcache:
|
|
y = yum.YumBase()
|
|
packages = y.doPackageLists()
|
|
pkgcache = {i.Name: i.version for i in packages['installed']}
|
|
pkg = pkgcache[package]
|
|
if pkg > revno:
|
|
return 1
|
|
if pkg < revno:
|
|
return -1
|
|
return 0
|