From 6f80985f6c1bef1c63dd12e29f9e4f70473c92d1 Mon Sep 17 00:00:00 2001 From: Caner Derici Date: Tue, 30 May 2023 15:09:59 -0600 Subject: [PATCH 1/2] Add kubernetes as supported series as per juju/core/series/supported.go Fixes #865 --- juju/utils.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/juju/utils.py b/juju/utils.py index 4296665d..abb98ea8 100644 --- a/juju/utils.py +++ b/juju/utils.py @@ -316,11 +316,18 @@ def get_local_charm_charmcraft_yaml(path): KINETIC: "22.10", } +KUBERNETES = "kubernetes" +KUBERNETES_SERIES = { + KUBERNETES: "kubernetes" +} + +ALL_SERIES_VERSIONS = {**UBUNTU_SERIES, **KUBERNETES_SERIES} + def get_series_version(series_name): - if series_name not in UBUNTU_SERIES: + if series_name not in ALL_SERIES_VERSIONS: raise errors.JujuError("Unknown series : %s", series_name) - return UBUNTU_SERIES[series_name] + return ALL_SERIES_VERSIONS[series_name] def get_version_series(version): @@ -349,7 +356,10 @@ def get_local_charm_base(series, charm_path, base_class): # we currently only support ubuntu series (statically) # TODO (cderici) : go juju/core/series/supported.go and get the # others here too - os_name_for_base = 'ubuntu' + if series in KUBERNETES_SERIES: + os_name_for_base = 'kubernetes' + else: + os_name_for_base = 'ubuntu' # Check the charm manifest if channel_for_base == '': From fc2f39ce55708255857887b7eaa8700d2949d204 Mon Sep 17 00:00:00 2001 From: Caner Derici Date: Tue, 30 May 2023 15:11:16 -0600 Subject: [PATCH 2/2] Add example local charm to test and reproduce #865 Unfortunately we can't write an integration test that uses this because we run our tests on lxd so the charm will be deployed but will never actually get 'active'. We could test the deployment itself (that it doesn't error), but if we did that, the 3.0 will actually fail to deploy on lxd because the series is kubernetes so the test will be invalid anyways. --- .../integration/charm-series-kubernetes/config.yaml | 4 ++++ tests/integration/charm-series-kubernetes/dispatch | 13 +++++++++++++ .../charm-series-kubernetes/metadata.yaml | 5 +++++ 3 files changed, 22 insertions(+) create mode 100644 tests/integration/charm-series-kubernetes/config.yaml create mode 100755 tests/integration/charm-series-kubernetes/dispatch create mode 100644 tests/integration/charm-series-kubernetes/metadata.yaml diff --git a/tests/integration/charm-series-kubernetes/config.yaml b/tests/integration/charm-series-kubernetes/config.yaml new file mode 100644 index 00000000..64677b53 --- /dev/null +++ b/tests/integration/charm-series-kubernetes/config.yaml @@ -0,0 +1,4 @@ +options: + status: + type: string + default: "active" diff --git a/tests/integration/charm-series-kubernetes/dispatch b/tests/integration/charm-series-kubernetes/dispatch new file mode 100755 index 00000000..3df48e7d --- /dev/null +++ b/tests/integration/charm-series-kubernetes/dispatch @@ -0,0 +1,13 @@ +#!/bin/bash + +status="$(config-get status)" + +if [[ "$status" == "error" ]]; then + if [[ -e .errored ]]; then + status="active" + else + touch .errored + exit 1 + fi +fi +status-set "$status" diff --git a/tests/integration/charm-series-kubernetes/metadata.yaml b/tests/integration/charm-series-kubernetes/metadata.yaml new file mode 100644 index 00000000..12ce170a --- /dev/null +++ b/tests/integration/charm-series-kubernetes/metadata.yaml @@ -0,0 +1,5 @@ +name: charm +series: ["kubernetes"] +summary: "test" +description: "test" +maintainers: ["test"]