diff --git a/.coveragerc b/.coveragerc
index d80a427..fdd1fe1 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -4,3 +4,4 @@ exclude_lines =
if __name__ == .__main__.:
include=
hooks/swift_*
+ lib/swift_*
diff --git a/Makefile b/Makefile
index c353b10..945589b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,7 @@
-#!/usr/bin/make
PYTHON := /usr/bin/env python
lint:
- @flake8 --exclude hooks/charmhelpers --ignore=E125 hooks
- @flake8 --exclude hooks/charmhelpers --ignore=E125 unit_tests tests
+ @flake8 --exclude hooks unit_tests tests lib
@charm proof
unit_test:
@@ -29,3 +27,5 @@ sync: bin/charm_helpers_sync.py
publish: lint unit_test
bzr push lp:charms/swift-proxy
bzr push lp:charms/trusty/swift-proxy
+
+.PHONY: lint unit_test test sync publish
diff --git a/charm-helpers-hooks.yaml b/charm-helpers-hooks.yaml
index f0a6384..78dc641 100644
--- a/charm-helpers-hooks.yaml
+++ b/charm-helpers-hooks.yaml
@@ -1,5 +1,5 @@
branch: lp:charm-helpers
-destination: hooks/charmhelpers
+destination: charmhelpers
include:
- core
- cli
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/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/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/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/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/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/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/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-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/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 99%
rename from hooks/charmhelpers/contrib/openstack/utils.py
rename to charmhelpers/contrib/openstack/utils.py
index c98c5c9..17a9379 100644
--- a/hooks/charmhelpers/contrib/openstack/utils.py
+++ b/charmhelpers/contrib/openstack/utils.py
@@ -114,6 +114,7 @@ SWIFT_CODENAMES = OrderedDict([
('2.2.1', 'kilo'),
('2.2.2', 'kilo'),
('2.3.0', 'liberty'),
+ ('2.4.0', 'liberty'),
])
# >= Liberty version->codename mapping
@@ -142,6 +143,9 @@ PACKAGE_CODENAMES = {
'glance-common': OrderedDict([
('11.0.0', 'liberty'),
]),
+ 'openstack-dashboard': OrderedDict([
+ ('8.0.0', 'liberty'),
+ ]),
}
DEFAULT_LOOPBACK_SIZE = '5G'
diff --git a/hooks/charmhelpers/contrib/peerstorage/__init__.py b/charmhelpers/contrib/peerstorage/__init__.py
similarity index 100%
rename from hooks/charmhelpers/contrib/peerstorage/__init__.py
rename to charmhelpers/contrib/peerstorage/__init__.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/ceph.py b/charmhelpers/contrib/storage/linux/ceph.py
similarity index 97%
rename from hooks/charmhelpers/contrib/storage/linux/ceph.py
rename to charmhelpers/contrib/storage/linux/ceph.py
index 00dbffb..6e03669 100644
--- a/hooks/charmhelpers/contrib/storage/linux/ceph.py
+++ b/charmhelpers/contrib/storage/linux/ceph.py
@@ -56,6 +56,8 @@ from charmhelpers.fetch import (
apt_install,
)
+from charmhelpers.core.kernel import modprobe
+
KEYRING = '/etc/ceph/ceph.client.{}.keyring'
KEYFILE = '/etc/ceph/ceph.client.{}.key'
@@ -288,17 +290,6 @@ def place_data_on_block_device(blk_device, data_src_dst):
os.chown(data_src_dst, uid, gid)
-# TODO: re-use
-def modprobe(module):
- """Load a kernel module and configure for auto-load on reboot."""
- log('Loading kernel module', level=INFO)
- cmd = ['modprobe', module]
- check_call(cmd)
- with open('/etc/modules', 'r+') as modules:
- if module not in modules.read():
- modules.write(module)
-
-
def copy_files(src, dst, symlinks=False, ignore=None):
"""Copy files from src to dst."""
for item in os.listdir(src):
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/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/charmhelpers/core/kernel.py b/charmhelpers/core/kernel.py
new file mode 100644
index 0000000..5dc6495
--- /dev/null
+++ b/charmhelpers/core/kernel.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright 2014-2015 Canonical Limited.
+#
+# This file is part of charm-helpers.
+#
+# charm-helpers is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3 as
+# published by the Free Software Foundation.
+#
+# charm-helpers is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with charm-helpers. If not, see .
+
+__author__ = "Jorge Niedbalski "
+
+from charmhelpers.core.hookenv import (
+ log,
+ INFO
+)
+
+from subprocess import check_call, check_output
+import re
+
+
+def modprobe(module, persist=True):
+ """Load a kernel module and configure for auto-load on reboot."""
+ cmd = ['modprobe', module]
+
+ log('Loading kernel module %s' % module, level=INFO)
+
+ check_call(cmd)
+ if persist:
+ with open('/etc/modules', 'r+') as modules:
+ if module not in modules.read():
+ modules.write(module)
+
+
+def rmmod(module, force=False):
+ """Remove a module from the linux kernel"""
+ cmd = ['rmmod']
+ if force:
+ cmd.append('-f')
+ cmd.append(module)
+ log('Removing kernel module %s' % module, level=INFO)
+ return check_call(cmd)
+
+
+def lsmod():
+ """Shows what kernel modules are currently loaded"""
+ return check_output(['lsmod'],
+ universal_newlines=True)
+
+
+def is_module_loaded(module):
+ """Checks if a kernel module is already loaded"""
+ matches = re.findall('^%s[ ]+' % module, lsmod(), re.M)
+ return len(matches) > 0
+
+
+def update_initramfs(version='all'):
+ """Updates an initramfs image"""
+ return check_call(["update-initramfs", "-k", version, "-u"])
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/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/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/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/swift_hooks.py b/hooks/swift_hooks.py
index d5218d7..0e8ffcf 100755
--- a/hooks/swift_hooks.py
+++ b/hooks/swift_hooks.py
@@ -8,7 +8,7 @@ from subprocess import (
CalledProcessError,
)
-from swift_utils import (
+from lib.swift_utils import (
SwiftProxyCharmException,
register_configs,
restart_map,
diff --git a/lib/__init__.py b/lib/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/hooks/swift_context.py b/lib/swift_context.py
similarity index 97%
rename from hooks/swift_context.py
rename to lib/swift_context.py
index f9b2519..a3a6e1c 100644
--- a/hooks/swift_context.py
+++ b/lib/swift_context.py
@@ -50,9 +50,15 @@ class HAProxyContext(OSContextGenerator):
class ApacheSSLContext(SSLContext):
interfaces = ['https']
- external_ports = [config('bind-port')]
service_namespace = 'swift'
+ # We make this a property so that we avoid import-time
+ # dependencies on config()
+
+ @property
+ def external_ports(self):
+ return [config('bind-port')]
+
class SwiftRingContext(OSContextGenerator):
diff --git a/hooks/swift_utils.py b/lib/swift_utils.py
similarity index 100%
rename from hooks/swift_utils.py
rename to lib/swift_utils.py
diff --git a/setup.cfg b/setup.cfg
index 72c20b2..4b68f76 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -2,4 +2,4 @@
verbosity=1
with-coverage=1
cover-erase=1
-cover-package=hooks
+cover-package=lib,swift_hooks
diff --git a/unit_tests/__init__.py b/unit_tests/__init__.py
index f80aab3..e69de29 100644
--- a/unit_tests/__init__.py
+++ b/unit_tests/__init__.py
@@ -1,2 +0,0 @@
-import sys
-sys.path.append('hooks')
diff --git a/unit_tests/test_swift_context.py b/unit_tests/test_swift_context.py
index e0dbb6b..a89932e 100644
--- a/unit_tests/test_swift_context.py
+++ b/unit_tests/test_swift_context.py
@@ -6,12 +6,12 @@ import uuid
with mock.patch('charmhelpers.core.hookenv.config'):
- import swift_context
+ import lib.swift_context as swift_context
class SwiftContextTestCase(unittest.TestCase):
- @mock.patch('swift_context.config')
+ @mock.patch('lib.swift_context.config')
def test_get_swift_hash_file(self, mock_config):
expected = '##FILEHASH##'
with tempfile.NamedTemporaryFile() as tmpfile:
@@ -24,7 +24,7 @@ class SwiftContextTestCase(unittest.TestCase):
self.assertFalse(mock_config.called)
self.assertEqual(expected, hash)
- @mock.patch('swift_context.config')
+ @mock.patch('lib.swift_context.config')
def test_get_swift_hash_config(self, mock_config):
expected = '##CFGHASH##'
mock_config.return_value = expected
@@ -38,8 +38,8 @@ class SwiftContextTestCase(unittest.TestCase):
self.assertTrue(mock_config.called)
self.assertEqual(expected, hash)
- @mock.patch('swift_context.service_name')
- @mock.patch('swift_context.config')
+ @mock.patch('lib.swift_context.service_name')
+ @mock.patch('lib.swift_context.config')
def test_get_swift_hash_env(self, mock_config, mock_service_name):
mock_config.return_value = None
mock_service_name.return_value = "testsvc"
@@ -47,10 +47,10 @@ class SwiftContextTestCase(unittest.TestCase):
swift_context.SWIFT_HASH_FILE = tmpfile
with mock.patch('swift_context.os.environ.get') as mock_env_get:
mock_env_get.return_value = str(uuid.uuid4())
- hash = swift_context.get_swift_hash()
+ hash_ = swift_context.get_swift_hash()
mock_env_get.assert_called_with('JUJU_ENV_UUID')
with open(tmpfile, 'r') as fd:
- self.assertEqual(hash, fd.read())
+ self.assertEqual(hash_, fd.read())
self.assertTrue(mock_config.called)
diff --git a/unit_tests/test_swift_hooks.py b/unit_tests/test_swift_hooks.py
index 6b05631..584b542 100644
--- a/unit_tests/test_swift_hooks.py
+++ b/unit_tests/test_swift_hooks.py
@@ -1,8 +1,9 @@
from mock import patch
+import sys
import unittest
import uuid
-
+sys.path.append("hooks")
with patch('charmhelpers.core.hookenv.log'):
import swift_hooks
diff --git a/unit_tests/test_swift_utils.py b/unit_tests/test_swift_utils.py
index fc06e55..04b4e46 100644
--- a/unit_tests/test_swift_utils.py
+++ b/unit_tests/test_swift_utils.py
@@ -5,9 +5,8 @@ import tempfile
import uuid
import unittest
-
with mock.patch('charmhelpers.core.hookenv.config'):
- import swift_utils
+ import lib.swift_utils as swift_utils
def init_ring_paths(tmpdir):
@@ -21,16 +20,16 @@ def init_ring_paths(tmpdir):
class SwiftUtilsTestCase(unittest.TestCase):
- @mock.patch('swift_utils.get_broker_token')
- @mock.patch('swift_utils.update_www_rings')
- @mock.patch('swift_utils.get_builders_checksum')
- @mock.patch('swift_utils.get_rings_checksum')
- @mock.patch('swift_utils.balance_rings')
- @mock.patch('swift_utils.log')
- @mock.patch('swift_utils.os.path.exists')
- @mock.patch('swift_utils.is_elected_leader')
- @mock.patch('swift_utils.get_min_part_hours')
- @mock.patch('swift_utils.set_min_part_hours')
+ @mock.patch('lib.swift_utils.get_broker_token')
+ @mock.patch('lib.swift_utils.update_www_rings')
+ @mock.patch('lib.swift_utils.get_builders_checksum')
+ @mock.patch('lib.swift_utils.get_rings_checksum')
+ @mock.patch('lib.swift_utils.balance_rings')
+ @mock.patch('lib.swift_utils.log')
+ @mock.patch('lib.swift_utils.os.path.exists')
+ @mock.patch('lib.swift_utils.is_elected_leader')
+ @mock.patch('lib.swift_utils.get_min_part_hours')
+ @mock.patch('lib.swift_utils.set_min_part_hours')
def test_update_rings(self, mock_set_min_hours,
mock_get_min_hours,
mock_is_elected_leader, mock_path_exists,
@@ -76,13 +75,13 @@ class SwiftUtilsTestCase(unittest.TestCase):
self.assertTrue(mock_set_min_hours.called)
self.assertTrue(mock_balance_rings.called)
- @mock.patch('swift_utils.get_broker_token')
- @mock.patch('swift_utils.balance_rings')
- @mock.patch('swift_utils.log')
- @mock.patch('swift_utils.is_elected_leader')
- @mock.patch('swift_utils.config')
- @mock.patch('swift_utils.update_www_rings')
- @mock.patch('swift_utils.cluster_sync_rings')
+ @mock.patch('lib.swift_utils.get_broker_token')
+ @mock.patch('lib.swift_utils.balance_rings')
+ @mock.patch('lib.swift_utils.log')
+ @mock.patch('lib.swift_utils.is_elected_leader')
+ @mock.patch('lib.swift_utils.config')
+ @mock.patch('lib.swift_utils.update_www_rings')
+ @mock.patch('lib.swift_utils.cluster_sync_rings')
def test_sync_builders_and_rings_if_changed(self, mock_cluster_sync_rings,
mock_update_www_rings,
mock_config,
@@ -114,7 +113,7 @@ class SwiftUtilsTestCase(unittest.TestCase):
self.assertTrue(mock_update_www_rings.called)
self.assertTrue(mock_cluster_sync_rings.called)
- @mock.patch('swift_utils.get_www_dir')
+ @mock.patch('lib.swift_utils.get_www_dir')
def test_mark_www_rings_deleted(self, mock_get_www_dir):
try:
tmpdir = tempfile.mkdtemp()
@@ -123,7 +122,7 @@ class SwiftUtilsTestCase(unittest.TestCase):
finally:
shutil.rmtree(tmpdir)
- @mock.patch('swift_utils.uuid')
+ @mock.patch('lib.swift_utils.uuid')
def test_cluster_rpc_stop_proxy_request(self, mock_uuid):
mock_uuid.uuid4.return_value = 'test-uuid'
rpc = swift_utils.SwiftProxyClusterRPC()
@@ -147,7 +146,7 @@ class SwiftUtilsTestCase(unittest.TestCase):
'stop-proxy-service-ack': None,
'sync-only-builders': None}, rq)
- @mock.patch('swift_utils.uuid')
+ @mock.patch('lib.swift_utils.uuid')
def test_cluster_rpc_stop_proxy_ack(self, mock_uuid):
mock_uuid.uuid4.return_value = 'token2'
rpc = swift_utils.SwiftProxyClusterRPC()
@@ -161,7 +160,7 @@ class SwiftUtilsTestCase(unittest.TestCase):
'stop-proxy-service-ack': 'token1',
'sync-only-builders': None}, rq)
- @mock.patch('swift_utils.uuid')
+ @mock.patch('lib.swift_utils.uuid')
def test_cluster_rpc_sync_request(self, mock_uuid):
mock_uuid.uuid4.return_value = 'token2'
rpc = swift_utils.SwiftProxyClusterRPC()
@@ -175,7 +174,7 @@ class SwiftUtilsTestCase(unittest.TestCase):
'stop-proxy-service-ack': None,
'sync-only-builders': None}, rq)
- @mock.patch('swift_utils.uuid')
+ @mock.patch('lib.swift_utils.uuid')
def test_cluster_rpc_notify_leader_changed(self, mock_uuid):
mock_uuid.uuid4.return_value = 'token1'
rpc = swift_utils.SwiftProxyClusterRPC()