← Back to team overview

wordpress-charmers team mailing list archive

[Merge] ~tcuthbert/charm-k8s-wordpress:update_charm into charm-k8s-wordpress:master

 

Thomas Cuthbert has proposed merging ~tcuthbert/charm-k8s-wordpress:update_charm into charm-k8s-wordpress:master.

Requested reviews:
  Wordpress Charmers (wordpress-charmers)

For more details, see:
https://code.launchpad.net/~tcuthbert/charm-k8s-wordpress/+git/charm-k8s-wordpress-1/+merge/393537
-- 
Your team Wordpress Charmers is requested to review the proposed merge of ~tcuthbert/charm-k8s-wordpress:update_charm into charm-k8s-wordpress:master.
diff --git a/.gitignore b/.gitignore
index 33ab628..ed12673 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
+build
+*.charm
 .tox
 .coverage
 __pycache__
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 8c05fa9..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "mod/operator"]
-	path = mod/operator
-	url = https://github.com/canonical/operator
diff --git a/.jujuignore b/.jujuignore
new file mode 100644
index 0000000..739b280
--- /dev/null
+++ b/.jujuignore
@@ -0,0 +1,5 @@
+/env
+/image
+*.py[cod]
+*.charm
+Makefile
diff --git a/Makefile b/Makefile
index 14d1b2e..c46ed23 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,7 @@
+wordpress.charm: src/*.py requirements.txt
+	@echo "Building Kubernetes WordPress Charm."
+	@charmcraft build
+
 format:
 	@echo "Normalising python layout with black."
 	@tox -e black
@@ -20,5 +24,6 @@ clean:
 	@echo "Cleaning files"
 	@git clean -fXd || true
 	@rm -r /tmp/charm-k8s-wordpress/.tox
+	@rm -r ./build || true
 
 .PHONY: format lint test unittest integration clean
diff --git a/dispatch b/dispatch
deleted file mode 120000
index ac5c45c..0000000
--- a/dispatch
+++ /dev/null
@@ -1 +0,0 @@
-src/charm.py
\ No newline at end of file
diff --git a/hooks/start b/hooks/start
deleted file mode 120000
index 25b1f68..0000000
--- a/hooks/start
+++ /dev/null
@@ -1 +0,0 @@
-../src/charm.py
\ No newline at end of file
diff --git a/lib/ops b/lib/ops
deleted file mode 120000
index d934193..0000000
--- a/lib/ops
+++ /dev/null
@@ -1 +0,0 @@
-../mod/operator/ops
\ No newline at end of file
diff --git a/mod/operator b/mod/operator
deleted file mode 160000
index 63e7d9e..0000000
--- a/mod/operator
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 63e7d9e4dc2a38a3fbc5623ff504eb18173e3f41
diff --git a/requirements.txt b/requirements.txt
index 888e37a..addda44 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,3 @@
 # Include python requirements here
 requests
+ops
diff --git a/src/charm.py b/src/charm.py
index a7f87fc..68d3b60 100755
--- a/src/charm.py
+++ b/src/charm.py
@@ -3,14 +3,11 @@
 import io
 import logging
 import subprocess
-import sys
 from pprint import pprint
 from yaml import safe_load
 
 from wordpress import Wordpress, password_generator, WORDPRESS_SECRETS
 
-sys.path.append("lib")
-
 from ops.charm import CharmBase, CharmEvents
 from ops.framework import EventBase, EventSource, StoredState
 from ops.main import main
diff --git a/tests/unit/requirements.txt b/tests/unit/requirements.txt
index c2bd57a..460a692 100644
--- a/tests/unit/requirements.txt
+++ b/tests/unit/requirements.txt
@@ -1,6 +1,7 @@
 requests
 charmhelpers
 charms.reactive
+flake8
 freezegun
 mock
 pytest
diff --git a/tests/unit/test_charm.py b/tests/unit/test_charm.py
index c72e1d5..795b0fa 100644
--- a/tests/unit/test_charm.py
+++ b/tests/unit/test_charm.py
@@ -3,10 +3,6 @@
 import copy
 import mock
 import unittest
-import sys
-
-sys.path.append('lib')
-sys.path.append('src')
 
 from charm import WordpressK8sCharm, create_wordpress_secrets, gather_wordpress_secrets
 from wordpress import WORDPRESS_SECRETS
@@ -34,7 +30,7 @@ class TestWordpressK8sCharm(unittest.TestCase):
         self.harness = testing.Harness(WordpressK8sCharm)
 
         self.harness.begin()
-        self.harness.charm.model.config = copy.deepcopy(self.test_model_config)
+        self.harness.update_config(copy.deepcopy(self.test_model_config))
 
     def test_is_config_valid(self):
         # Test a valid model config.
@@ -45,22 +41,22 @@ class TestWordpressK8sCharm(unittest.TestCase):
         want_msg_fmt = "Missing required config: {}"
         want_keys = ("image", "db_host", "db_name", "db_user", "db_password", "tls_secret_name")
         for wanted_key in want_keys:
-            self.harness.charm.model.config[wanted_key] = ""
+            self.harness.update_config({wanted_key: ""})
             want_false = self.harness.charm.is_valid_config()
             self.assertFalse(want_false)
             self.assertLogs(want_msg_fmt.format(wanted_key), level="INFO")
-            self.harness.charm.model.config = copy.deepcopy(self.test_model_config)
+            self.harness.update_config(copy.deepcopy(self.test_model_config))
 
         # Test for missing initial_settings in model config.
-        self.harness.charm.model.config["initial_settings"] = ""
+        self.harness.update_config({"initial_settings": ""})
         want_false = self.harness.charm.is_valid_config()
         self.assertFalse(want_false)
         self.assertLogs("No initial_setting provided. Skipping first install.", level="INFO")
-        self.harness.charm.model.config = copy.deepcopy(self.test_model_config)
+        self.harness.update_config(copy.deepcopy(self.test_model_config))
 
         # Test unit status msg.
         for wanted_key in want_keys:
-            self.harness.charm.model.config[wanted_key] = ""
+            self.harness.update_config({wanted_key: ""})
         expected_msg = want_msg_fmt.format(" ".join(want_keys))
         self.harness.charm.is_valid_config()
         self.assertIsInstance(self.harness.charm.unit.status, BlockedStatus)
@@ -90,8 +86,10 @@ class TestWordpressK8sCharm(unittest.TestCase):
             self.assertEqual(len(wp_secrets[key]), 64)
 
     def test_make_pod_resources(self):
-        self.harness.charm.model.config["blog_hostname"] = "blog.example.com"
-        self.harness.charm.model.config["tls_secret_name"] = "blog-example-com-tls"
+        self.harness.update_config({
+            "blog_hostname": "blog.example.com",
+            "tls_secret_name": "blog-example-com-tls"
+        })
         # Test for https://bugs.launchpad.net/juju/+bug/1884674
         ingress_name = 'wordpress-k8s-ingress'
         self.assertNotEqual(ingress_name, self.harness.charm.app.name)
diff --git a/tests/unit/test_wordpress.py b/tests/unit/test_wordpress.py
index 5ebc90a..f204cac 100644
--- a/tests/unit/test_wordpress.py
+++ b/tests/unit/test_wordpress.py
@@ -2,12 +2,9 @@ import copy
 import mock
 import requests
 import string
-import sys
 import unittest
 import yaml
 
-sys.path.append("src")
-
 import charm
 import wordpress
 
diff --git a/tox.ini b/tox.ini
index 4f55f1b..fdaabc8 100644
--- a/tox.ini
+++ b/tox.ini
@@ -19,7 +19,8 @@ commands =
 deps = -r{toxinidir}/tests/unit/requirements.txt
        -r{toxinidir}/requirements.txt
 setenv =
-  PYTHONPATH={toxinidir}/lib
+#  PYTHONPATH={toxinidir}/lib
+  PYTHONPATH={toxinidir}/src:{toxinidir}/build/lib:{toxinidir}/build/venv
   TZ=UTC
 
 [testenv:integration]

Follow ups