launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #28986
[Merge] ~cjwatson/launchpad:charm-layers into launchpad:master
Colin Watson has proposed merging ~cjwatson/launchpad:charm-layers into launchpad:master.
Commit message:
Split some charm code into a layer
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/428107
At the moment there isn't much of this beyond `layer:ols`, but this should make it a little easier to develop multiple charms for different Launchpad deployments.
--
Your team Launchpad code reviewers is requested to review the proposed merge of ~cjwatson/launchpad:charm-layers into launchpad:master.
diff --git a/charm/.gitignore b/charm/.gitignore
index da831d3..de07da3 100644
--- a/charm/.gitignore
+++ b/charm/.gitignore
@@ -1,4 +1,5 @@
*.charm
bundle.yaml
dist
+layer/*/codetree-collect-info.yaml
tmp
diff --git a/charm/Makefile b/charm/Makefile
index de55a73..5bb96fe 100644
--- a/charm/Makefile
+++ b/charm/Makefile
@@ -45,12 +45,13 @@ build-launchpad: ## build the launchpad charm
build-launchpad: dist/$(call charm_file,launchpad)
dist/%_ubuntu-$(CHARM_SERIES)-$(ARCH).charm: $(CHARM_DEPS) | $(BUILDDIR)
- @echo "Building $*..."
- @rm -rf $*/tmp
- @cp -a tmp $*/tmp
- @cd $* && charmcraft pack
- @cp -a $*/$(call charm_file,$*) dist/
- @rm -rf $*/tmp
+ echo "Building $*..."
+ rm -rf $*/tmp
+ cp -a tmp $*/tmp
+ cp -a layer/launchpad-base $*/tmp/deps/ols-layers/layer/
+ cd $* && charmcraft pack
+ cp -a $*/$(call charm_file,$*) dist/
+ rm -rf $*/tmp
clean: ## clean the build environment
clean: $(foreach charm,$(CHARMS),clean-$(charm))
diff --git a/charm/launchpad/layer.yaml b/charm/launchpad/layer.yaml
index ae16aa0..bcff867 100644
--- a/charm/launchpad/layer.yaml
+++ b/charm/launchpad/layer.yaml
@@ -1,15 +1,3 @@
includes:
- - layer:basic
- - layer:ols
-options:
- apt:
- packages:
- - launchpad-dependencies
- ols:
- service_name: launchpad
- config_filename: service.conf
- user: launchpad
- tarball_payload: true
- symlink_switch_payload: true
- python_bin: /usr/bin/python3
+ - layer:launchpad-base
repo: https://git.launchpad.net/launchpad
diff --git a/charm/launchpad/reactive/launchpad.py b/charm/launchpad/reactive/launchpad.py
index 076a8c9..5b4222b 100644
--- a/charm/launchpad/reactive/launchpad.py
+++ b/charm/launchpad/reactive/launchpad.py
@@ -1,23 +1,8 @@
# Copyright 2022 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
-import subprocess
-
from charmhelpers.core import hookenv
-from charms.reactive import remove_state, set_state, when, when_not
-from ols import base
-
-
-# Monkey-patch layer:ols.
-def create_virtualenv(wheels_dir, codedir, python_exe):
- subprocess.run(
- ["make", "compile", "PYTHON={}".format(python_exe)],
- cwd=codedir,
- check=True,
- )
-
-
-base.create_virtualenv = create_virtualenv
+from charms.reactive import set_state, when, when_not
@when("ols.configured")
@@ -30,15 +15,3 @@ def configure():
@when("service.configured")
def check_is_running():
hookenv.status_set("active", "Ready")
-
-
-@when("config.changed.build_label")
-def build_label_changed():
- remove_state("ols.service.installed")
- remove_state("ols.configured")
- remove_state("service.configured")
-
-
-@when("config.changed")
-def config_changed():
- remove_state("service.configured")
diff --git a/charm/launchpad/config.yaml b/charm/layer/launchpad-base/config.yaml
similarity index 100%
rename from charm/launchpad/config.yaml
rename to charm/layer/launchpad-base/config.yaml
diff --git a/charm/launchpad/icon.svg b/charm/layer/launchpad-base/icon.svg
similarity index 100%
rename from charm/launchpad/icon.svg
rename to charm/layer/launchpad-base/icon.svg
diff --git a/charm/layer/launchpad-base/layer.yaml b/charm/layer/launchpad-base/layer.yaml
new file mode 100644
index 0000000..ae16aa0
--- /dev/null
+++ b/charm/layer/launchpad-base/layer.yaml
@@ -0,0 +1,15 @@
+includes:
+ - layer:basic
+ - layer:ols
+options:
+ apt:
+ packages:
+ - launchpad-dependencies
+ ols:
+ service_name: launchpad
+ config_filename: service.conf
+ user: launchpad
+ tarball_payload: true
+ symlink_switch_payload: true
+ python_bin: /usr/bin/python3
+repo: https://git.launchpad.net/launchpad
diff --git a/charm/layer/launchpad-base/reactive/launchpad-base.py b/charm/layer/launchpad-base/reactive/launchpad-base.py
new file mode 100644
index 0000000..88a6f5b
--- /dev/null
+++ b/charm/layer/launchpad-base/reactive/launchpad-base.py
@@ -0,0 +1,31 @@
+# Copyright 2022 Canonical Ltd. This software is licensed under the
+# GNU Affero General Public License version 3 (see the file LICENSE).
+
+import subprocess
+
+from charms.reactive import remove_state, when
+from ols import base
+
+
+# Monkey-patch layer:ols.
+def create_virtualenv(wheels_dir, codedir, python_exe):
+ subprocess.run(
+ ["make", "compile", "PYTHON={}".format(python_exe)],
+ cwd=codedir,
+ check=True,
+ )
+
+
+base.create_virtualenv = create_virtualenv
+
+
+@when("config.changed.build_label")
+def build_label_changed():
+ remove_state("ols.service.installed")
+ remove_state("ols.configured")
+ remove_state("service.configured")
+
+
+@when("config.changed")
+def config_changed():
+ remove_state("service.configured")