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()