diff --git a/.zuul.yaml b/.zuul.yaml index aa9c508f..7051aeeb 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -1,4 +1,3 @@ - project: templates: - - python-charm-jobs - - openstack-python35-jobs-nonvoting + - python35-charm-jobs diff --git a/actions/actions.py b/actions/actions.py index d7056803..0cd2d971 100755 --- a/actions/actions.py +++ b/actions/actions.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python3 # # Copyright 2016 Canonical Ltd # @@ -17,13 +17,23 @@ import os import sys -sys.path.append('hooks/') +_path = os.path.dirname(os.path.realpath(__file__)) +_hooks = os.path.abspath(os.path.join(_path, '../hooks')) +_root = os.path.abspath(os.path.join(_path, '..')) + + +def _add_path(path): + if path not in sys.path: + sys.path.insert(1, path) + +_add_path(_hooks) +_add_path(_root) from charmhelpers.core.hookenv import action_fail from cinder_utils import ( pause_unit_helper, - resume_unit_helper, register_configs, + resume_unit_helper, ) import cinder_manage @@ -57,7 +67,7 @@ def main(args): try: action = ACTIONS[action_name] except KeyError: - return "Action %s undefined" % action_name + return "Action {} undefined".format(action_name) else: try: action(args) diff --git a/actions/cinder_manage.py b/actions/cinder_manage.py index d8feccae..3dbbd0d8 100755 --- a/actions/cinder_manage.py +++ b/actions/cinder_manage.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # # Copyright 2016 Canonical Ltd # @@ -14,21 +14,33 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os +import subprocess import sys import traceback -import subprocess -sys.path.append('hooks/') + +_path = os.path.dirname(os.path.realpath(__file__)) +_hooks = os.path.abspath(os.path.join(_path, '../hooks')) +_root = os.path.abspath(os.path.join(_path, '..')) + + +def _add_path(path): + if path not in sys.path: + sys.path.insert(1, path) + +_add_path(_hooks) +_add_path(_root) from charmhelpers.contrib.openstack.utils import ( - os_release, CompareOpenStackReleases, + os_release, ) from charmhelpers.core.hookenv import ( - action_set, action_fail, action_get, + action_set, log, ) @@ -50,14 +62,42 @@ class CinderService(): def cinder_manage_remove(binary, hostname): - return subprocess.check_call(["cinder-manage", "service", "remove", binary, - hostname]) + """Call cinder-manage service remove + + :param binary: The binary (executable) for the service to remove + :type binary: str + :param hostname: The host name associated with the binary + :type hostname: str + :returns: 0 if the cinder-manage service command succeeds + :rtype: int + :raises: subprocess.CalledProcessError if the call fails + """ + return (subprocess + .check_call(["cinder-manage", + "service", + "remove", + binary, + hostname])) def cinder_manage_volume_update_host(currenthost, newhost): - return subprocess.check_call(["cinder-manage", "volume", "update_host", - "--currenthost", currenthost, - "--newhost", newhost]) + """Call cinder-manage volume update_host --currenthost \\ + --newhost + + :param currenthost: the hostname to update to newhost + :type currenthost: str + :param newhost: the new name to update the host to + :type newhost: str + :returns: 0 if the cinder-manage volume command succeeds + :rtype: int + :raises: subprocess.CalledProcessError if the call fails + """ + return (subprocess + .check_call(["cinder-manage", + "volume", + "update_host", + "--currenthost", currenthost, + "--newhost", newhost])) def cinder_manage_service_list(): @@ -83,15 +123,16 @@ def remove_services(args): removed_services = [] for service in services: - log("Removing binary:%s, hostname:%s" % (service.binary, service.host)) + log("Removing binary:{}, hostname:{}" + .format(service.binary, service.host)) try: if CompareOpenStackReleases(os_release("cinder")) >= "liberty": cinder_manage_remove(service.binary, service.host) else: - action_fail("Cannot remove service: %s" % service.host) + action_fail("Cannot remove service: {}".format(service.host)) except: action_set({'traceback': traceback.format_exc()}) - action_fail("Cannot remove service: %s" % service.host) + action_fail("Cannot remove service: {}".format(service.host)) else: removed_services.append(service.host) @@ -108,10 +149,8 @@ def _rename_volume_host(currenthost, newhost): action_set({'traceback': traceback.format_exc()}) action_fail("Cannot update host {}".format(currenthost)) else: - action_fail( - "Cannot update host attribute from {}, {} not found".format( - currenthost, - currenthost)) + action_fail("Cannot update host attribute from {}, {} not found" + .format(currenthost, currenthost)) def rename_volume_host(args): diff --git a/actions/openstack_upgrade.py b/actions/openstack_upgrade.py index 716b67f7..7c6c4f92 100755 --- a/actions/openstack_upgrade.py +++ b/actions/openstack_upgrade.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python3 # # Copyright 2016 Canonical Ltd # @@ -14,10 +14,22 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os import sys import uuid -sys.path.append('hooks/') + +_path = os.path.dirname(os.path.realpath(__file__)) +_hooks = os.path.abspath(os.path.join(_path, '../hooks')) +_root = os.path.abspath(os.path.join(_path, '..')) + + +def _add_path(path): + if path not in sys.path: + sys.path.insert(1, path) + +_add_path(_hooks) +_add_path(_root) from charmhelpers.contrib.openstack.utils import ( do_action_openstack_upgrade, diff --git a/charm-helpers-hooks.yaml b/charm-helpers-hooks.yaml index 719830df..470906c1 100644 --- a/charm-helpers-hooks.yaml +++ b/charm-helpers-hooks.yaml @@ -1,5 +1,5 @@ repo: https://github.com/juju/charm-helpers -destination: hooks/charmhelpers +destination: charmhelpers include: - core - osplatform diff --git a/hooks/charmhelpers/__init__.py b/charmhelpers/__init__.py similarity index 100% rename from hooks/charmhelpers/__init__.py rename to charmhelpers/__init__.py diff --git a/hooks/charmhelpers/cli/__init__.py b/charmhelpers/cli/__init__.py similarity index 100% rename from hooks/charmhelpers/cli/__init__.py rename to charmhelpers/cli/__init__.py diff --git a/hooks/charmhelpers/cli/benchmark.py b/charmhelpers/cli/benchmark.py similarity index 100% rename from hooks/charmhelpers/cli/benchmark.py rename to charmhelpers/cli/benchmark.py diff --git a/hooks/charmhelpers/cli/commands.py b/charmhelpers/cli/commands.py similarity index 100% rename from hooks/charmhelpers/cli/commands.py rename to charmhelpers/cli/commands.py diff --git a/hooks/charmhelpers/cli/hookenv.py b/charmhelpers/cli/hookenv.py similarity index 100% rename from hooks/charmhelpers/cli/hookenv.py rename to charmhelpers/cli/hookenv.py diff --git a/hooks/charmhelpers/cli/host.py b/charmhelpers/cli/host.py similarity index 100% rename from hooks/charmhelpers/cli/host.py rename to charmhelpers/cli/host.py diff --git a/hooks/charmhelpers/cli/unitdata.py b/charmhelpers/cli/unitdata.py similarity index 100% rename from hooks/charmhelpers/cli/unitdata.py rename to charmhelpers/cli/unitdata.py diff --git a/hooks/charmhelpers/contrib/__init__.py b/charmhelpers/contrib/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/__init__.py rename to charmhelpers/contrib/__init__.py diff --git a/hooks/charmhelpers/contrib/charmsupport/__init__.py b/charmhelpers/contrib/charmsupport/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/charmsupport/__init__.py rename to charmhelpers/contrib/charmsupport/__init__.py diff --git a/hooks/charmhelpers/contrib/charmsupport/nrpe.py b/charmhelpers/contrib/charmsupport/nrpe.py similarity index 100% rename from hooks/charmhelpers/contrib/charmsupport/nrpe.py rename to charmhelpers/contrib/charmsupport/nrpe.py diff --git a/hooks/charmhelpers/contrib/charmsupport/volumes.py b/charmhelpers/contrib/charmsupport/volumes.py similarity index 100% rename from hooks/charmhelpers/contrib/charmsupport/volumes.py rename to charmhelpers/contrib/charmsupport/volumes.py diff --git a/hooks/charmhelpers/contrib/hahelpers/__init__.py b/charmhelpers/contrib/hahelpers/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hahelpers/__init__.py rename to charmhelpers/contrib/hahelpers/__init__.py diff --git a/hooks/charmhelpers/contrib/hahelpers/apache.py b/charmhelpers/contrib/hahelpers/apache.py similarity index 100% rename from hooks/charmhelpers/contrib/hahelpers/apache.py rename to charmhelpers/contrib/hahelpers/apache.py diff --git a/hooks/charmhelpers/contrib/hahelpers/cluster.py b/charmhelpers/contrib/hahelpers/cluster.py similarity index 100% rename from hooks/charmhelpers/contrib/hahelpers/cluster.py rename to charmhelpers/contrib/hahelpers/cluster.py diff --git a/hooks/charmhelpers/contrib/hardening/README.hardening.md b/charmhelpers/contrib/hardening/README.hardening.md similarity index 100% rename from hooks/charmhelpers/contrib/hardening/README.hardening.md rename to charmhelpers/contrib/hardening/README.hardening.md diff --git a/hooks/charmhelpers/contrib/hardening/__init__.py b/charmhelpers/contrib/hardening/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/__init__.py rename to charmhelpers/contrib/hardening/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/apache/__init__.py b/charmhelpers/contrib/hardening/apache/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/apache/__init__.py rename to charmhelpers/contrib/hardening/apache/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/apache/checks/__init__.py b/charmhelpers/contrib/hardening/apache/checks/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/apache/checks/__init__.py rename to charmhelpers/contrib/hardening/apache/checks/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/apache/checks/config.py b/charmhelpers/contrib/hardening/apache/checks/config.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/apache/checks/config.py rename to charmhelpers/contrib/hardening/apache/checks/config.py diff --git a/hooks/charmhelpers/contrib/hardening/apache/templates/99-hardening.conf b/charmhelpers/contrib/hardening/apache/templates/99-hardening.conf similarity index 100% rename from hooks/charmhelpers/contrib/hardening/apache/templates/99-hardening.conf rename to charmhelpers/contrib/hardening/apache/templates/99-hardening.conf diff --git a/hooks/charmhelpers/contrib/hardening/apache/templates/__init__.py b/charmhelpers/contrib/hardening/apache/templates/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/apache/templates/__init__.py rename to charmhelpers/contrib/hardening/apache/templates/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/apache/templates/alias.conf b/charmhelpers/contrib/hardening/apache/templates/alias.conf similarity index 100% rename from hooks/charmhelpers/contrib/hardening/apache/templates/alias.conf rename to charmhelpers/contrib/hardening/apache/templates/alias.conf diff --git a/hooks/charmhelpers/contrib/hardening/audits/__init__.py b/charmhelpers/contrib/hardening/audits/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/audits/__init__.py rename to charmhelpers/contrib/hardening/audits/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/audits/apache.py b/charmhelpers/contrib/hardening/audits/apache.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/audits/apache.py rename to charmhelpers/contrib/hardening/audits/apache.py diff --git a/hooks/charmhelpers/contrib/hardening/audits/apt.py b/charmhelpers/contrib/hardening/audits/apt.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/audits/apt.py rename to charmhelpers/contrib/hardening/audits/apt.py diff --git a/hooks/charmhelpers/contrib/hardening/audits/file.py b/charmhelpers/contrib/hardening/audits/file.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/audits/file.py rename to charmhelpers/contrib/hardening/audits/file.py diff --git a/hooks/charmhelpers/contrib/hardening/defaults/__init__.py b/charmhelpers/contrib/hardening/defaults/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/defaults/__init__.py rename to charmhelpers/contrib/hardening/defaults/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/defaults/apache.yaml b/charmhelpers/contrib/hardening/defaults/apache.yaml similarity index 100% rename from hooks/charmhelpers/contrib/hardening/defaults/apache.yaml rename to charmhelpers/contrib/hardening/defaults/apache.yaml diff --git a/hooks/charmhelpers/contrib/hardening/defaults/apache.yaml.schema b/charmhelpers/contrib/hardening/defaults/apache.yaml.schema similarity index 100% rename from hooks/charmhelpers/contrib/hardening/defaults/apache.yaml.schema rename to charmhelpers/contrib/hardening/defaults/apache.yaml.schema diff --git a/hooks/charmhelpers/contrib/hardening/defaults/mysql.yaml b/charmhelpers/contrib/hardening/defaults/mysql.yaml similarity index 100% rename from hooks/charmhelpers/contrib/hardening/defaults/mysql.yaml rename to charmhelpers/contrib/hardening/defaults/mysql.yaml diff --git a/hooks/charmhelpers/contrib/hardening/defaults/mysql.yaml.schema b/charmhelpers/contrib/hardening/defaults/mysql.yaml.schema similarity index 100% rename from hooks/charmhelpers/contrib/hardening/defaults/mysql.yaml.schema rename to charmhelpers/contrib/hardening/defaults/mysql.yaml.schema diff --git a/hooks/charmhelpers/contrib/hardening/defaults/os.yaml b/charmhelpers/contrib/hardening/defaults/os.yaml similarity index 100% rename from hooks/charmhelpers/contrib/hardening/defaults/os.yaml rename to charmhelpers/contrib/hardening/defaults/os.yaml diff --git a/hooks/charmhelpers/contrib/hardening/defaults/os.yaml.schema b/charmhelpers/contrib/hardening/defaults/os.yaml.schema similarity index 100% rename from hooks/charmhelpers/contrib/hardening/defaults/os.yaml.schema rename to charmhelpers/contrib/hardening/defaults/os.yaml.schema diff --git a/hooks/charmhelpers/contrib/hardening/defaults/ssh.yaml b/charmhelpers/contrib/hardening/defaults/ssh.yaml similarity index 100% rename from hooks/charmhelpers/contrib/hardening/defaults/ssh.yaml rename to charmhelpers/contrib/hardening/defaults/ssh.yaml diff --git a/hooks/charmhelpers/contrib/hardening/defaults/ssh.yaml.schema b/charmhelpers/contrib/hardening/defaults/ssh.yaml.schema similarity index 100% rename from hooks/charmhelpers/contrib/hardening/defaults/ssh.yaml.schema rename to charmhelpers/contrib/hardening/defaults/ssh.yaml.schema diff --git a/hooks/charmhelpers/contrib/hardening/harden.py b/charmhelpers/contrib/hardening/harden.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/harden.py rename to charmhelpers/contrib/hardening/harden.py diff --git a/hooks/charmhelpers/contrib/hardening/host/__init__.py b/charmhelpers/contrib/hardening/host/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/__init__.py rename to charmhelpers/contrib/hardening/host/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/host/checks/__init__.py b/charmhelpers/contrib/hardening/host/checks/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/checks/__init__.py rename to charmhelpers/contrib/hardening/host/checks/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/host/checks/apt.py b/charmhelpers/contrib/hardening/host/checks/apt.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/checks/apt.py rename to charmhelpers/contrib/hardening/host/checks/apt.py diff --git a/hooks/charmhelpers/contrib/hardening/host/checks/limits.py b/charmhelpers/contrib/hardening/host/checks/limits.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/checks/limits.py rename to charmhelpers/contrib/hardening/host/checks/limits.py diff --git a/hooks/charmhelpers/contrib/hardening/host/checks/login.py b/charmhelpers/contrib/hardening/host/checks/login.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/checks/login.py rename to charmhelpers/contrib/hardening/host/checks/login.py diff --git a/hooks/charmhelpers/contrib/hardening/host/checks/minimize_access.py b/charmhelpers/contrib/hardening/host/checks/minimize_access.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/checks/minimize_access.py rename to charmhelpers/contrib/hardening/host/checks/minimize_access.py diff --git a/hooks/charmhelpers/contrib/hardening/host/checks/pam.py b/charmhelpers/contrib/hardening/host/checks/pam.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/checks/pam.py rename to charmhelpers/contrib/hardening/host/checks/pam.py diff --git a/hooks/charmhelpers/contrib/hardening/host/checks/profile.py b/charmhelpers/contrib/hardening/host/checks/profile.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/checks/profile.py rename to charmhelpers/contrib/hardening/host/checks/profile.py diff --git a/hooks/charmhelpers/contrib/hardening/host/checks/securetty.py b/charmhelpers/contrib/hardening/host/checks/securetty.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/checks/securetty.py rename to charmhelpers/contrib/hardening/host/checks/securetty.py diff --git a/hooks/charmhelpers/contrib/hardening/host/checks/suid_sgid.py b/charmhelpers/contrib/hardening/host/checks/suid_sgid.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/checks/suid_sgid.py rename to charmhelpers/contrib/hardening/host/checks/suid_sgid.py diff --git a/hooks/charmhelpers/contrib/hardening/host/checks/sysctl.py b/charmhelpers/contrib/hardening/host/checks/sysctl.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/checks/sysctl.py rename to charmhelpers/contrib/hardening/host/checks/sysctl.py diff --git a/hooks/charmhelpers/contrib/hardening/host/templates/10.hardcore.conf b/charmhelpers/contrib/hardening/host/templates/10.hardcore.conf similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/templates/10.hardcore.conf rename to charmhelpers/contrib/hardening/host/templates/10.hardcore.conf diff --git a/hooks/charmhelpers/contrib/hardening/host/templates/99-hardening.sh b/charmhelpers/contrib/hardening/host/templates/99-hardening.sh similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/templates/99-hardening.sh rename to charmhelpers/contrib/hardening/host/templates/99-hardening.sh diff --git a/hooks/charmhelpers/contrib/hardening/host/templates/99-juju-hardening.conf b/charmhelpers/contrib/hardening/host/templates/99-juju-hardening.conf similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/templates/99-juju-hardening.conf rename to charmhelpers/contrib/hardening/host/templates/99-juju-hardening.conf diff --git a/hooks/charmhelpers/contrib/hardening/host/templates/__init__.py b/charmhelpers/contrib/hardening/host/templates/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/templates/__init__.py rename to charmhelpers/contrib/hardening/host/templates/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/host/templates/login.defs b/charmhelpers/contrib/hardening/host/templates/login.defs similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/templates/login.defs rename to charmhelpers/contrib/hardening/host/templates/login.defs diff --git a/hooks/charmhelpers/contrib/hardening/host/templates/modules b/charmhelpers/contrib/hardening/host/templates/modules similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/templates/modules rename to charmhelpers/contrib/hardening/host/templates/modules diff --git a/hooks/charmhelpers/contrib/hardening/host/templates/passwdqc.conf b/charmhelpers/contrib/hardening/host/templates/passwdqc.conf similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/templates/passwdqc.conf rename to charmhelpers/contrib/hardening/host/templates/passwdqc.conf diff --git a/hooks/charmhelpers/contrib/hardening/host/templates/pinerolo_profile.sh b/charmhelpers/contrib/hardening/host/templates/pinerolo_profile.sh similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/templates/pinerolo_profile.sh rename to charmhelpers/contrib/hardening/host/templates/pinerolo_profile.sh diff --git a/hooks/charmhelpers/contrib/hardening/host/templates/securetty b/charmhelpers/contrib/hardening/host/templates/securetty similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/templates/securetty rename to charmhelpers/contrib/hardening/host/templates/securetty diff --git a/hooks/charmhelpers/contrib/hardening/host/templates/tally2 b/charmhelpers/contrib/hardening/host/templates/tally2 similarity index 100% rename from hooks/charmhelpers/contrib/hardening/host/templates/tally2 rename to charmhelpers/contrib/hardening/host/templates/tally2 diff --git a/hooks/charmhelpers/contrib/hardening/mysql/__init__.py b/charmhelpers/contrib/hardening/mysql/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/mysql/__init__.py rename to charmhelpers/contrib/hardening/mysql/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/mysql/checks/__init__.py b/charmhelpers/contrib/hardening/mysql/checks/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/mysql/checks/__init__.py rename to charmhelpers/contrib/hardening/mysql/checks/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/mysql/checks/config.py b/charmhelpers/contrib/hardening/mysql/checks/config.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/mysql/checks/config.py rename to charmhelpers/contrib/hardening/mysql/checks/config.py diff --git a/hooks/charmhelpers/contrib/hardening/mysql/templates/__init__.py b/charmhelpers/contrib/hardening/mysql/templates/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/mysql/templates/__init__.py rename to charmhelpers/contrib/hardening/mysql/templates/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/mysql/templates/hardening.cnf b/charmhelpers/contrib/hardening/mysql/templates/hardening.cnf similarity index 100% rename from hooks/charmhelpers/contrib/hardening/mysql/templates/hardening.cnf rename to charmhelpers/contrib/hardening/mysql/templates/hardening.cnf diff --git a/hooks/charmhelpers/contrib/hardening/ssh/__init__.py b/charmhelpers/contrib/hardening/ssh/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/ssh/__init__.py rename to charmhelpers/contrib/hardening/ssh/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/ssh/checks/__init__.py b/charmhelpers/contrib/hardening/ssh/checks/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/ssh/checks/__init__.py rename to charmhelpers/contrib/hardening/ssh/checks/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/ssh/checks/config.py b/charmhelpers/contrib/hardening/ssh/checks/config.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/ssh/checks/config.py rename to charmhelpers/contrib/hardening/ssh/checks/config.py diff --git a/hooks/charmhelpers/contrib/hardening/ssh/templates/__init__.py b/charmhelpers/contrib/hardening/ssh/templates/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/ssh/templates/__init__.py rename to charmhelpers/contrib/hardening/ssh/templates/__init__.py diff --git a/hooks/charmhelpers/contrib/hardening/ssh/templates/ssh_config b/charmhelpers/contrib/hardening/ssh/templates/ssh_config similarity index 100% rename from hooks/charmhelpers/contrib/hardening/ssh/templates/ssh_config rename to charmhelpers/contrib/hardening/ssh/templates/ssh_config diff --git a/hooks/charmhelpers/contrib/hardening/ssh/templates/sshd_config b/charmhelpers/contrib/hardening/ssh/templates/sshd_config similarity index 100% rename from hooks/charmhelpers/contrib/hardening/ssh/templates/sshd_config rename to charmhelpers/contrib/hardening/ssh/templates/sshd_config diff --git a/hooks/charmhelpers/contrib/hardening/templating.py b/charmhelpers/contrib/hardening/templating.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/templating.py rename to charmhelpers/contrib/hardening/templating.py diff --git a/hooks/charmhelpers/contrib/hardening/utils.py b/charmhelpers/contrib/hardening/utils.py similarity index 100% rename from hooks/charmhelpers/contrib/hardening/utils.py rename to charmhelpers/contrib/hardening/utils.py diff --git a/hooks/charmhelpers/contrib/network/__init__.py b/charmhelpers/contrib/network/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/network/__init__.py rename to charmhelpers/contrib/network/__init__.py diff --git a/hooks/charmhelpers/contrib/network/ip.py b/charmhelpers/contrib/network/ip.py similarity index 100% rename from hooks/charmhelpers/contrib/network/ip.py rename to charmhelpers/contrib/network/ip.py diff --git a/hooks/charmhelpers/contrib/openstack/__init__.py b/charmhelpers/contrib/openstack/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/__init__.py rename to charmhelpers/contrib/openstack/__init__.py diff --git a/hooks/charmhelpers/contrib/openstack/alternatives.py b/charmhelpers/contrib/openstack/alternatives.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/alternatives.py rename to charmhelpers/contrib/openstack/alternatives.py diff --git a/hooks/charmhelpers/contrib/openstack/amulet/__init__.py b/charmhelpers/contrib/openstack/amulet/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/amulet/__init__.py rename to charmhelpers/contrib/openstack/amulet/__init__.py diff --git a/hooks/charmhelpers/contrib/openstack/amulet/deployment.py b/charmhelpers/contrib/openstack/amulet/deployment.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/amulet/deployment.py rename to charmhelpers/contrib/openstack/amulet/deployment.py diff --git a/hooks/charmhelpers/contrib/openstack/amulet/utils.py b/charmhelpers/contrib/openstack/amulet/utils.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/amulet/utils.py rename to charmhelpers/contrib/openstack/amulet/utils.py diff --git a/hooks/charmhelpers/contrib/openstack/cert_utils.py b/charmhelpers/contrib/openstack/cert_utils.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/cert_utils.py rename to charmhelpers/contrib/openstack/cert_utils.py diff --git a/hooks/charmhelpers/contrib/openstack/context.py b/charmhelpers/contrib/openstack/context.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/context.py rename to charmhelpers/contrib/openstack/context.py diff --git a/hooks/charmhelpers/contrib/openstack/exceptions.py b/charmhelpers/contrib/openstack/exceptions.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/exceptions.py rename to charmhelpers/contrib/openstack/exceptions.py diff --git a/hooks/charmhelpers/contrib/openstack/files/__init__.py b/charmhelpers/contrib/openstack/files/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/files/__init__.py rename to charmhelpers/contrib/openstack/files/__init__.py diff --git a/hooks/charmhelpers/contrib/openstack/files/check_haproxy.sh b/charmhelpers/contrib/openstack/files/check_haproxy.sh similarity index 100% rename from hooks/charmhelpers/contrib/openstack/files/check_haproxy.sh rename to charmhelpers/contrib/openstack/files/check_haproxy.sh diff --git a/hooks/charmhelpers/contrib/openstack/files/check_haproxy_queue_depth.sh b/charmhelpers/contrib/openstack/files/check_haproxy_queue_depth.sh similarity index 100% rename from hooks/charmhelpers/contrib/openstack/files/check_haproxy_queue_depth.sh rename to charmhelpers/contrib/openstack/files/check_haproxy_queue_depth.sh diff --git a/hooks/charmhelpers/contrib/openstack/ha/__init__.py b/charmhelpers/contrib/openstack/ha/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/ha/__init__.py rename to charmhelpers/contrib/openstack/ha/__init__.py diff --git a/hooks/charmhelpers/contrib/openstack/ha/utils.py b/charmhelpers/contrib/openstack/ha/utils.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/ha/utils.py rename to charmhelpers/contrib/openstack/ha/utils.py diff --git a/hooks/charmhelpers/contrib/openstack/ip.py b/charmhelpers/contrib/openstack/ip.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/ip.py rename to charmhelpers/contrib/openstack/ip.py diff --git a/hooks/charmhelpers/contrib/openstack/keystone.py b/charmhelpers/contrib/openstack/keystone.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/keystone.py rename to charmhelpers/contrib/openstack/keystone.py diff --git a/hooks/charmhelpers/contrib/openstack/neutron.py b/charmhelpers/contrib/openstack/neutron.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/neutron.py rename to charmhelpers/contrib/openstack/neutron.py diff --git a/hooks/charmhelpers/contrib/openstack/ssh_migrations.py b/charmhelpers/contrib/openstack/ssh_migrations.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/ssh_migrations.py rename to charmhelpers/contrib/openstack/ssh_migrations.py diff --git a/hooks/charmhelpers/contrib/openstack/templates/__init__.py b/charmhelpers/contrib/openstack/templates/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/__init__.py rename to charmhelpers/contrib/openstack/templates/__init__.py diff --git a/hooks/charmhelpers/contrib/openstack/templates/ceph.conf b/charmhelpers/contrib/openstack/templates/ceph.conf similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/ceph.conf rename to charmhelpers/contrib/openstack/templates/ceph.conf diff --git a/hooks/charmhelpers/contrib/openstack/templates/git.upstart b/charmhelpers/contrib/openstack/templates/git.upstart similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/git.upstart rename to charmhelpers/contrib/openstack/templates/git.upstart diff --git a/hooks/charmhelpers/contrib/openstack/templates/haproxy.cfg b/charmhelpers/contrib/openstack/templates/haproxy.cfg similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/haproxy.cfg rename to charmhelpers/contrib/openstack/templates/haproxy.cfg diff --git a/hooks/charmhelpers/contrib/openstack/templates/memcached.conf b/charmhelpers/contrib/openstack/templates/memcached.conf similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/memcached.conf rename to charmhelpers/contrib/openstack/templates/memcached.conf diff --git a/hooks/charmhelpers/contrib/openstack/templates/openstack_https_frontend b/charmhelpers/contrib/openstack/templates/openstack_https_frontend similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/openstack_https_frontend rename to charmhelpers/contrib/openstack/templates/openstack_https_frontend diff --git a/hooks/charmhelpers/contrib/openstack/templates/openstack_https_frontend.conf b/charmhelpers/contrib/openstack/templates/openstack_https_frontend.conf similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/openstack_https_frontend.conf rename to charmhelpers/contrib/openstack/templates/openstack_https_frontend.conf diff --git a/hooks/charmhelpers/contrib/openstack/templates/section-keystone-authtoken b/charmhelpers/contrib/openstack/templates/section-keystone-authtoken similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/section-keystone-authtoken rename to charmhelpers/contrib/openstack/templates/section-keystone-authtoken diff --git a/hooks/charmhelpers/contrib/openstack/templates/section-keystone-authtoken-legacy b/charmhelpers/contrib/openstack/templates/section-keystone-authtoken-legacy similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/section-keystone-authtoken-legacy rename to charmhelpers/contrib/openstack/templates/section-keystone-authtoken-legacy diff --git a/hooks/charmhelpers/contrib/openstack/templates/section-keystone-authtoken-mitaka b/charmhelpers/contrib/openstack/templates/section-keystone-authtoken-mitaka similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/section-keystone-authtoken-mitaka rename to charmhelpers/contrib/openstack/templates/section-keystone-authtoken-mitaka diff --git a/hooks/charmhelpers/contrib/openstack/templates/section-oslo-cache b/charmhelpers/contrib/openstack/templates/section-oslo-cache similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/section-oslo-cache rename to charmhelpers/contrib/openstack/templates/section-oslo-cache diff --git a/hooks/charmhelpers/contrib/openstack/templates/section-oslo-middleware b/charmhelpers/contrib/openstack/templates/section-oslo-middleware similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/section-oslo-middleware rename to charmhelpers/contrib/openstack/templates/section-oslo-middleware diff --git a/hooks/charmhelpers/contrib/openstack/templates/section-oslo-notifications b/charmhelpers/contrib/openstack/templates/section-oslo-notifications similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/section-oslo-notifications rename to charmhelpers/contrib/openstack/templates/section-oslo-notifications diff --git a/hooks/charmhelpers/contrib/openstack/templates/section-rabbitmq-oslo b/charmhelpers/contrib/openstack/templates/section-rabbitmq-oslo similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/section-rabbitmq-oslo rename to charmhelpers/contrib/openstack/templates/section-rabbitmq-oslo diff --git a/hooks/charmhelpers/contrib/openstack/templates/section-zeromq b/charmhelpers/contrib/openstack/templates/section-zeromq similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/section-zeromq rename to charmhelpers/contrib/openstack/templates/section-zeromq diff --git a/hooks/charmhelpers/contrib/openstack/templates/wsgi-openstack-api.conf b/charmhelpers/contrib/openstack/templates/wsgi-openstack-api.conf similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/wsgi-openstack-api.conf rename to charmhelpers/contrib/openstack/templates/wsgi-openstack-api.conf diff --git a/hooks/charmhelpers/contrib/openstack/templates/wsgi-openstack-metadata.conf b/charmhelpers/contrib/openstack/templates/wsgi-openstack-metadata.conf similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templates/wsgi-openstack-metadata.conf rename to charmhelpers/contrib/openstack/templates/wsgi-openstack-metadata.conf diff --git a/hooks/charmhelpers/contrib/openstack/templating.py b/charmhelpers/contrib/openstack/templating.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/templating.py rename to charmhelpers/contrib/openstack/templating.py diff --git a/hooks/charmhelpers/contrib/openstack/utils.py b/charmhelpers/contrib/openstack/utils.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/utils.py rename to charmhelpers/contrib/openstack/utils.py diff --git a/hooks/charmhelpers/contrib/openstack/vaultlocker.py b/charmhelpers/contrib/openstack/vaultlocker.py similarity index 100% rename from hooks/charmhelpers/contrib/openstack/vaultlocker.py rename to charmhelpers/contrib/openstack/vaultlocker.py diff --git a/hooks/charmhelpers/contrib/python/__init__.py b/charmhelpers/contrib/python/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/python/__init__.py rename to charmhelpers/contrib/python/__init__.py diff --git a/hooks/charmhelpers/contrib/python/packages.py b/charmhelpers/contrib/python/packages.py similarity index 100% rename from hooks/charmhelpers/contrib/python/packages.py rename to charmhelpers/contrib/python/packages.py diff --git a/hooks/charmhelpers/contrib/storage/__init__.py b/charmhelpers/contrib/storage/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/storage/__init__.py rename to charmhelpers/contrib/storage/__init__.py diff --git a/hooks/charmhelpers/contrib/storage/linux/__init__.py b/charmhelpers/contrib/storage/linux/__init__.py similarity index 100% rename from hooks/charmhelpers/contrib/storage/linux/__init__.py rename to charmhelpers/contrib/storage/linux/__init__.py diff --git a/hooks/charmhelpers/contrib/storage/linux/bcache.py b/charmhelpers/contrib/storage/linux/bcache.py similarity index 100% rename from hooks/charmhelpers/contrib/storage/linux/bcache.py rename to charmhelpers/contrib/storage/linux/bcache.py diff --git a/hooks/charmhelpers/contrib/storage/linux/ceph.py b/charmhelpers/contrib/storage/linux/ceph.py similarity index 100% rename from hooks/charmhelpers/contrib/storage/linux/ceph.py rename to charmhelpers/contrib/storage/linux/ceph.py diff --git a/hooks/charmhelpers/contrib/storage/linux/loopback.py b/charmhelpers/contrib/storage/linux/loopback.py similarity index 100% rename from hooks/charmhelpers/contrib/storage/linux/loopback.py rename to charmhelpers/contrib/storage/linux/loopback.py diff --git a/hooks/charmhelpers/contrib/storage/linux/lvm.py b/charmhelpers/contrib/storage/linux/lvm.py similarity index 100% rename from hooks/charmhelpers/contrib/storage/linux/lvm.py rename to charmhelpers/contrib/storage/linux/lvm.py diff --git a/hooks/charmhelpers/contrib/storage/linux/utils.py b/charmhelpers/contrib/storage/linux/utils.py similarity index 100% rename from hooks/charmhelpers/contrib/storage/linux/utils.py rename to charmhelpers/contrib/storage/linux/utils.py diff --git a/hooks/charmhelpers/core/__init__.py b/charmhelpers/core/__init__.py similarity index 100% rename from hooks/charmhelpers/core/__init__.py rename to charmhelpers/core/__init__.py diff --git a/hooks/charmhelpers/core/decorators.py b/charmhelpers/core/decorators.py similarity index 100% rename from hooks/charmhelpers/core/decorators.py rename to charmhelpers/core/decorators.py diff --git a/hooks/charmhelpers/core/files.py b/charmhelpers/core/files.py similarity index 100% rename from hooks/charmhelpers/core/files.py rename to charmhelpers/core/files.py diff --git a/hooks/charmhelpers/core/fstab.py b/charmhelpers/core/fstab.py similarity index 100% rename from hooks/charmhelpers/core/fstab.py rename to charmhelpers/core/fstab.py diff --git a/hooks/charmhelpers/core/hookenv.py b/charmhelpers/core/hookenv.py similarity index 100% rename from hooks/charmhelpers/core/hookenv.py rename to charmhelpers/core/hookenv.py diff --git a/hooks/charmhelpers/core/host.py b/charmhelpers/core/host.py similarity index 100% rename from hooks/charmhelpers/core/host.py rename to charmhelpers/core/host.py diff --git a/hooks/charmhelpers/core/host_factory/__init__.py b/charmhelpers/core/host_factory/__init__.py similarity index 100% rename from hooks/charmhelpers/core/host_factory/__init__.py rename to charmhelpers/core/host_factory/__init__.py diff --git a/hooks/charmhelpers/core/host_factory/centos.py b/charmhelpers/core/host_factory/centos.py similarity index 100% rename from hooks/charmhelpers/core/host_factory/centos.py rename to charmhelpers/core/host_factory/centos.py diff --git a/hooks/charmhelpers/core/host_factory/ubuntu.py b/charmhelpers/core/host_factory/ubuntu.py similarity index 100% rename from hooks/charmhelpers/core/host_factory/ubuntu.py rename to charmhelpers/core/host_factory/ubuntu.py diff --git a/hooks/charmhelpers/core/hugepage.py b/charmhelpers/core/hugepage.py similarity index 100% rename from hooks/charmhelpers/core/hugepage.py rename to charmhelpers/core/hugepage.py diff --git a/hooks/charmhelpers/core/kernel.py b/charmhelpers/core/kernel.py similarity index 100% rename from hooks/charmhelpers/core/kernel.py rename to charmhelpers/core/kernel.py diff --git a/hooks/charmhelpers/core/kernel_factory/__init__.py b/charmhelpers/core/kernel_factory/__init__.py similarity index 100% rename from hooks/charmhelpers/core/kernel_factory/__init__.py rename to charmhelpers/core/kernel_factory/__init__.py diff --git a/hooks/charmhelpers/core/kernel_factory/centos.py b/charmhelpers/core/kernel_factory/centos.py similarity index 100% rename from hooks/charmhelpers/core/kernel_factory/centos.py rename to charmhelpers/core/kernel_factory/centos.py diff --git a/hooks/charmhelpers/core/kernel_factory/ubuntu.py b/charmhelpers/core/kernel_factory/ubuntu.py similarity index 100% rename from hooks/charmhelpers/core/kernel_factory/ubuntu.py rename to charmhelpers/core/kernel_factory/ubuntu.py diff --git a/hooks/charmhelpers/core/services/__init__.py b/charmhelpers/core/services/__init__.py similarity index 100% rename from hooks/charmhelpers/core/services/__init__.py rename to charmhelpers/core/services/__init__.py diff --git a/hooks/charmhelpers/core/services/base.py b/charmhelpers/core/services/base.py similarity index 100% rename from hooks/charmhelpers/core/services/base.py rename to charmhelpers/core/services/base.py diff --git a/hooks/charmhelpers/core/services/helpers.py b/charmhelpers/core/services/helpers.py similarity index 100% rename from hooks/charmhelpers/core/services/helpers.py rename to charmhelpers/core/services/helpers.py diff --git a/hooks/charmhelpers/core/strutils.py b/charmhelpers/core/strutils.py similarity index 100% rename from hooks/charmhelpers/core/strutils.py rename to charmhelpers/core/strutils.py diff --git a/hooks/charmhelpers/core/sysctl.py b/charmhelpers/core/sysctl.py similarity index 100% rename from hooks/charmhelpers/core/sysctl.py rename to charmhelpers/core/sysctl.py diff --git a/hooks/charmhelpers/core/templating.py b/charmhelpers/core/templating.py similarity index 100% rename from hooks/charmhelpers/core/templating.py rename to charmhelpers/core/templating.py diff --git a/hooks/charmhelpers/core/unitdata.py b/charmhelpers/core/unitdata.py similarity index 100% rename from hooks/charmhelpers/core/unitdata.py rename to charmhelpers/core/unitdata.py diff --git a/hooks/charmhelpers/fetch/__init__.py b/charmhelpers/fetch/__init__.py similarity index 100% rename from hooks/charmhelpers/fetch/__init__.py rename to charmhelpers/fetch/__init__.py diff --git a/hooks/charmhelpers/fetch/archiveurl.py b/charmhelpers/fetch/archiveurl.py similarity index 100% rename from hooks/charmhelpers/fetch/archiveurl.py rename to charmhelpers/fetch/archiveurl.py diff --git a/hooks/charmhelpers/fetch/bzrurl.py b/charmhelpers/fetch/bzrurl.py similarity index 100% rename from hooks/charmhelpers/fetch/bzrurl.py rename to charmhelpers/fetch/bzrurl.py diff --git a/hooks/charmhelpers/fetch/centos.py b/charmhelpers/fetch/centos.py similarity index 100% rename from hooks/charmhelpers/fetch/centos.py rename to charmhelpers/fetch/centos.py diff --git a/hooks/charmhelpers/fetch/giturl.py b/charmhelpers/fetch/giturl.py similarity index 100% rename from hooks/charmhelpers/fetch/giturl.py rename to charmhelpers/fetch/giturl.py diff --git a/hooks/charmhelpers/fetch/snap.py b/charmhelpers/fetch/snap.py similarity index 100% rename from hooks/charmhelpers/fetch/snap.py rename to charmhelpers/fetch/snap.py diff --git a/hooks/charmhelpers/fetch/ubuntu.py b/charmhelpers/fetch/ubuntu.py similarity index 100% rename from hooks/charmhelpers/fetch/ubuntu.py rename to charmhelpers/fetch/ubuntu.py diff --git a/hooks/charmhelpers/osplatform.py b/charmhelpers/osplatform.py similarity index 100% rename from hooks/charmhelpers/osplatform.py rename to charmhelpers/osplatform.py diff --git a/hooks/charmhelpers/payload/__init__.py b/charmhelpers/payload/__init__.py similarity index 100% rename from hooks/charmhelpers/payload/__init__.py rename to charmhelpers/payload/__init__.py diff --git a/hooks/charmhelpers/payload/archive.py b/charmhelpers/payload/archive.py similarity index 100% rename from hooks/charmhelpers/payload/archive.py rename to charmhelpers/payload/archive.py diff --git a/hooks/charmhelpers/payload/execd.py b/charmhelpers/payload/execd.py similarity index 100% rename from hooks/charmhelpers/payload/execd.py rename to charmhelpers/payload/execd.py diff --git a/hooks/cinder_contexts.py b/hooks/cinder_contexts.py index 4f6bf218..5b49ce34 100644 --- a/hooks/cinder_contexts.py +++ b/hooks/cinder_contexts.py @@ -253,8 +253,8 @@ class VolumeUsageAuditContext(OSContextGenerator): DEFAULT_CRONTAB_PATH = '/etc/cron.d/cinder-volume-usage-audit' def __call__(self): - log("Installing crontab: %s" % self.DEFAULT_CRONTAB_PATH) - with open(self.DEFAULT_CRONTAB_PATH, "w+") as crontab: + log("Installing crontab: {}".format(self.DEFAULT_CRONTAB_PATH)) + with open(self.DEFAULT_CRONTAB_PATH, "wt+") as crontab: # The cinder-volume-usage-audit executable will only gather # data that fits on the configured volume-usage-audit-period. crontab.write('0 * * * * root ' diff --git a/hooks/cinder_hooks.py b/hooks/cinder_hooks.py index 6afc8b91..476f820a 100755 --- a/hooks/cinder_hooks.py +++ b/hooks/cinder_hooks.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python3 # # Copyright 2016 Canonical Ltd # @@ -19,6 +19,16 @@ import os import sys import uuid +_path = os.path.dirname(os.path.realpath(__file__)) +_root = os.path.abspath(os.path.join(_path, '..')) + + +def _add_path(path): + if path not in sys.path: + sys.path.insert(1, path) + +_add_path(_root) + from subprocess import ( check_call, ) diff --git a/hooks/cinder_utils.py b/hooks/cinder_utils.py index 0d7f20d5..685ef909 100644 --- a/hooks/cinder_utils.py +++ b/hooks/cinder_utils.py @@ -258,7 +258,7 @@ def register_configs(release=None): release = release or os_release('cinder-common', base='icehouse') configs = templating.OSConfigRenderer(templates_dir=TEMPLATES, openstack_release=release) - for cfg, rscs in resource_map().iteritems(): + for cfg, rscs in resource_map().items(): configs.register(cfg, rscs['contexts']) return configs @@ -411,14 +411,14 @@ def restart_map(): that should be restarted when file changes. ''' return OrderedDict([(cfg, v['services']) - for cfg, v in resource_map().iteritems() + for cfg, v in resource_map().items() if v['services']]) def enabled_services(): m = restart_map() svcs = set() - for t in m.iteritems(): + for t in m.items(): svcs.update(t[1]) return list(svcs) @@ -426,10 +426,10 @@ def enabled_services(): def services(): ''' Returns a list of services associate with this charm ''' - _services = [] + _services = set() for v in restart_map().values(): - _services = _services + v - return list(set(_services)) + _services.update(v) + return list(sorted(_services)) def reduce_lvm_volume_group_missing(volume_group, extra_args=None): @@ -493,7 +493,7 @@ def ensure_lvm_volume_group_non_existent(volume_group): def log_lvm_info(): """Log some useful information about how LVM is setup.""" - pvscan_output = subprocess.check_output(['pvscan']) + pvscan_output = subprocess.check_output(['pvscan']).decode('UTF-8') juju_log('pvscan: %s' % pvscan_output) @@ -586,7 +586,7 @@ def prepare_volume(device): def has_partition_table(block_device): out = subprocess.check_output(['fdisk', '-l', block_device], - stderr=subprocess.STDOUT) + stderr=subprocess.STDOUT).decode('UTF-8') return "doesn't contain a valid partition" not in out @@ -939,11 +939,11 @@ def scrub_old_style_ceph(): # NOTE: purge any CEPH_ARGS data from /etc/environment env_file = '/etc/environment' ceph_match = re.compile("^CEPH_ARGS.*").search - with open(env_file, 'r') as input_file: - with NamedTemporaryFile(mode='w', + with open(env_file, 'rt') as input_file: + with NamedTemporaryFile(mode='wt', delete=False, dir=os.path.dirname(env_file)) as outfile: for line in input_file: if not ceph_match(line): print(line, end='', file=outfile) - os.rename(outfile.name, input_file.name) + os.rename(outfile.name, input_file.name) diff --git a/hooks/install b/hooks/install index 29ff6894..50b8cad9 100755 --- a/hooks/install +++ b/hooks/install @@ -11,7 +11,7 @@ check_and_install() { fi } -PYTHON="python" +PYTHON="python3" for dep in ${DEPS[@]}; do check_and_install ${PYTHON} ${dep} diff --git a/templates/mitaka/cinder.conf b/templates/mitaka/cinder.conf index c948aecd..76c26b4c 100644 --- a/templates/mitaka/cinder.conf +++ b/templates/mitaka/cinder.conf @@ -52,7 +52,7 @@ os_region_name = {{ region }} {% endif -%} {% if user_config_flags -%} -{% for key, value in user_config_flags.iteritems() -%} +{% for key, value in user_config_flags.items() -%} {{ key }} = {{ value }} {% endfor -%} {% endif -%} diff --git a/templates/ocata/cinder.conf b/templates/ocata/cinder.conf index fe3f43b9..f34d40f2 100644 --- a/templates/ocata/cinder.conf +++ b/templates/ocata/cinder.conf @@ -39,7 +39,7 @@ os_region_name = {{ region }} {% endif -%} {% if user_config_flags -%} -{% for key, value in user_config_flags.iteritems() -%} +{% for key, value in user_config_flags.items() -%} {{ key }} = {{ value }} {% endfor -%} {% endif -%} diff --git a/tox.ini b/tox.ini index 0b72fa9e..1457901c 100644 --- a/tox.ini +++ b/tox.ini @@ -2,7 +2,7 @@ # This file is managed centrally by release-tools and should not be modified # within individual charm repos. [tox] -envlist = pep8,py27 +envlist = pep8,py3{5,6} skipsdist = True [testenv] @@ -20,6 +20,7 @@ passenv = HOME TERM AMULET_* CS_API_* basepython = python2.7 deps = -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt +commands = /bin/true [testenv:py35] basepython = python3.5 diff --git a/unit_tests/__init__.py b/unit_tests/__init__.py index a18d4bfc..2da2fb4e 100644 --- a/unit_tests/__init__.py +++ b/unit_tests/__init__.py @@ -12,11 +12,26 @@ # See the License for the specific language governing permissions and # limitations under the License. -import sys import mock +import os +import sys + +_path = os.path.dirname(os.path.realpath(__file__)) +_actions = os.path.abspath(os.path.join(_path, '../actions')) +_hooks = os.path.abspath(os.path.join(_path, '../hooks')) +_charmhelpers = os.path.abspath(os.path.join(_path, '../charmhelpers')) +_unit_tests = os.path.abspath(os.path.join(_path, '../unit_tests')) + + +def _add_path(path): + if path not in sys.path: + sys.path.insert(1, path) + +_add_path(_actions) +_add_path(_hooks) +_add_path(_charmhelpers) +_add_path(_unit_tests) -sys.path.append('actions') -sys.path.append('hooks') cinder = mock.MagicMock() sqlalchemy = mock.MagicMock() sys.modules['sqlalchemy'] = sqlalchemy diff --git a/unit_tests/test_cinder_contexts.py b/unit_tests/test_cinder_contexts.py index 3c1f52e3..8a7b3e93 100644 --- a/unit_tests/test_cinder_contexts.py +++ b/unit_tests/test_cinder_contexts.py @@ -437,11 +437,11 @@ class TestCinderContext(CharmTestCase): 'volumes_dir': '/var/lib/cinder/volumes'} self.assertEqual(ctxt, expect) - @patch('__builtin__.open') + @patch('builtins.open') def test_volume_usage_audit_context(self, _open): self.config.return_value = 'month' ctxt = contexts.VolumeUsageAuditContext()() _open.assert_called_with( - contexts.VolumeUsageAuditContext.DEFAULT_CRONTAB_PATH, "w+") + contexts.VolumeUsageAuditContext.DEFAULT_CRONTAB_PATH, "wt+") self.assertEqual(self.config.return_value, ctxt["volume_usage_audit_period"]) diff --git a/unit_tests/test_cinder_hooks.py b/unit_tests/test_cinder_hooks.py index dc0a68c0..47a5ccab 100644 --- a/unit_tests/test_cinder_hooks.py +++ b/unit_tests/test_cinder_hooks.py @@ -579,11 +579,12 @@ class TestJoinedHooks(CharmTestCase): def test_ceph_broken(self): self.service_name.return_value = 'cinder' - hooks.hooks.execute(['hooks/ceph-relation-broken']) + with patch.object(hooks, 'CEPH_CONF', new="/some/random/file"): + hooks.hooks.execute(['hooks/ceph-relation-broken']) self.delete_keyring.assert_called_with(service='cinder') self.assertTrue(self.CONFIGS.write_all.called) self.remove_alternative.assert_called_with( - os.path.basename(self.CEPH_CONF), + os.path.basename("/some/random/file"), self.ceph_config_file()) def test_ceph_changed_no_leadership(self): diff --git a/unit_tests/test_cinder_utils.py b/unit_tests/test_cinder_utils.py index 85057b34..b3ab48bb 100644 --- a/unit_tests/test_cinder_utils.py +++ b/unit_tests/test_cinder_utils.py @@ -200,7 +200,7 @@ class TestCinderUtils(CharmTestCase): ('test_conf1', ['svc1']), ('test_conf2', ['svc2', 'svc3', 'svc1']), ]) - self.assertEqual(cinder_utils.services(), ['svc2', 'svc3', 'svc1']) + self.assertEqual(cinder_utils.services(), ['svc1', 'svc2', 'svc3']) @patch('cinder_utils.service_enabled') @patch('os.path.exists') @@ -425,7 +425,7 @@ class TestCinderUtils(CharmTestCase): @patch('subprocess.check_output') def test_has_partition_table(self, _check): - _check.return_value = FDISKDISPLAY + _check.return_value = FDISKDISPLAY.encode() block_device = '/dev/fakevbd' cinder_utils.has_partition_table(block_device) _check.assert_called_with(['fdisk', '-l', '/dev/fakevbd'], stderr=-2) @@ -870,11 +870,11 @@ class TestCinderUtils(CharmTestCase): @patch('subprocess.check_output') def test_log_lvm_info(self, _check): - output = "some output" + output = b"some output" _check.return_value = output cinder_utils.log_lvm_info() _check.assert_called_with(['pvscan']) - self.juju_log.assert_called_with("pvscan: %s" % output) + self.juju_log.assert_called_with("pvscan: {}".format(output.decode())) @patch.object(cinder_utils, 'lvm_volume_group_exists') @patch.object(cinder_utils, 'remove_lvm_volume_group') diff --git a/unit_tests/test_utils.py b/unit_tests/test_utils.py index 5cf3ee05..d13851c8 100644 --- a/unit_tests/test_utils.py +++ b/unit_tests/test_utils.py @@ -51,10 +51,11 @@ def load_config(): if not config: logging.error('Could not find config.yaml in any parent directory ' - 'of %s. ' % __file__) + 'of {}. '.format(__file__)) raise Exception - return yaml.safe_load(open(config).read())['options'] + with open(config, 'rt') as f: + return yaml.safe_load(f)['options'] def get_default_config(): @@ -63,7 +64,7 @@ def get_default_config(): ''' default_config = {} config = load_config() - for k, v in config.iteritems(): + for k, v in config.items(): if 'default' in v: default_config[k] = v['default'] else: