Sync charm-helpers for Stein release
As a part of the Stein release, we need to ensure that charmhelpers is up to date. Change-Id: I53f388a0371b09bacd10122351f060a5a131947b
This commit is contained in:
parent
ddd26acc6d
commit
09fd760fb1
|
@ -17,12 +17,53 @@ import re
|
|||
from stat import S_ISBLK
|
||||
|
||||
from subprocess import (
|
||||
CalledProcessError,
|
||||
check_call,
|
||||
check_output,
|
||||
call
|
||||
)
|
||||
|
||||
|
||||
def _luks_uuid(dev):
|
||||
"""
|
||||
Check to see if dev is a LUKS encrypted volume, returning the UUID
|
||||
of volume if it is.
|
||||
|
||||
:param: dev: path to block device to check.
|
||||
:returns: str. UUID of LUKS device or None if not a LUKS device
|
||||
"""
|
||||
try:
|
||||
cmd = ['cryptsetup', 'luksUUID', dev]
|
||||
return check_output(cmd).decode('UTF-8').strip()
|
||||
except CalledProcessError:
|
||||
return None
|
||||
|
||||
|
||||
def is_luks_device(dev):
|
||||
"""
|
||||
Determine if dev is a LUKS-formatted block device.
|
||||
|
||||
:param: dev: A full path to a block device to check for LUKS header
|
||||
presence
|
||||
:returns: boolean: indicates whether a device is used based on LUKS header.
|
||||
"""
|
||||
return True if _luks_uuid(dev) else False
|
||||
|
||||
|
||||
def is_mapped_luks_device(dev):
|
||||
"""
|
||||
Determine if dev is a mapped LUKS device
|
||||
:param: dev: A full path to a block device to be checked
|
||||
:returns: boolean: indicates whether a device is mapped
|
||||
"""
|
||||
_, dirs, _ = next(os.walk(
|
||||
'/sys/class/block/{}/holders/'
|
||||
.format(os.path.basename(os.path.realpath(dev))))
|
||||
)
|
||||
is_held = len(dirs) > 0
|
||||
return is_held and is_luks_device(dev)
|
||||
|
||||
|
||||
def is_block_device(path):
|
||||
'''
|
||||
Confirm device at path is a valid block device node.
|
||||
|
|
|
@ -47,6 +47,7 @@ if __platform__ == "ubuntu":
|
|||
cmp_pkgrevno,
|
||||
CompareHostReleases,
|
||||
get_distrib_codename,
|
||||
arch
|
||||
) # flake8: noqa -- ignore F401 for this import
|
||||
elif __platform__ == "centos":
|
||||
from charmhelpers.core.host_factory.centos import ( # NOQA:F401
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import subprocess
|
||||
|
||||
from charmhelpers.core.hookenv import cached
|
||||
from charmhelpers.core.strutils import BasicStringComparator
|
||||
|
||||
|
||||
|
@ -97,3 +98,16 @@ def cmp_pkgrevno(package, revno, pkgcache=None):
|
|||
pkgcache = apt_cache()
|
||||
pkg = pkgcache[package]
|
||||
return apt_pkg.version_compare(pkg.current_ver.ver_str, revno)
|
||||
|
||||
|
||||
@cached
|
||||
def arch():
|
||||
"""Return the package architecture as a string.
|
||||
|
||||
:returns: the architecture
|
||||
:rtype: str
|
||||
:raises: subprocess.CalledProcessError if dpkg command fails
|
||||
"""
|
||||
return subprocess.check_output(
|
||||
['dpkg', '--print-architecture']
|
||||
).rstrip().decode('UTF-8')
|
||||
|
|
|
@ -28,7 +28,7 @@ from charmhelpers.core.hookenv import (
|
|||
__author__ = 'Jorge Niedbalski R. <jorge.niedbalski@canonical.com>'
|
||||
|
||||
|
||||
def create(sysctl_dict, sysctl_file):
|
||||
def create(sysctl_dict, sysctl_file, ignore=False):
|
||||
"""Creates a sysctl.conf file from a YAML associative array
|
||||
|
||||
:param sysctl_dict: a dict or YAML-formatted string of sysctl
|
||||
|
@ -36,6 +36,8 @@ def create(sysctl_dict, sysctl_file):
|
|||
:type sysctl_dict: str
|
||||
:param sysctl_file: path to the sysctl file to be saved
|
||||
:type sysctl_file: str or unicode
|
||||
:param ignore: If True, ignore "unknown variable" errors.
|
||||
:type ignore: bool
|
||||
:returns: None
|
||||
"""
|
||||
if type(sysctl_dict) is not dict:
|
||||
|
@ -52,7 +54,12 @@ def create(sysctl_dict, sysctl_file):
|
|||
for key, value in sysctl_dict_parsed.items():
|
||||
fd.write("{}={}\n".format(key, value))
|
||||
|
||||
log("Updating sysctl_file: %s values: %s" % (sysctl_file, sysctl_dict_parsed),
|
||||
log("Updating sysctl_file: {} values: {}".format(sysctl_file,
|
||||
sysctl_dict_parsed),
|
||||
level=DEBUG)
|
||||
|
||||
check_call(["sysctl", "-p", sysctl_file])
|
||||
call = ["sysctl", "-p", sysctl_file]
|
||||
if ignore:
|
||||
call.append("-e")
|
||||
|
||||
check_call(call)
|
||||
|
|
Loading…
Reference in New Issue