Support Trilio encryption options
Add suppot for Trilio encryption options TRILIO_ENCRYPTION_SUPPORT and OPENSTACK_ENCRYPTION_SUPPORT. TRILIO_ENCRYPTION_SUPPORT should set to True for trilio > 4.2. OPENSTACK_ENCRYPTION_SUPPORT should be set to True if Barbican is present in the deployment. It would be nice if Barbicans presence was detected via a relation but since this option is going in Trilio 5.X exposing this as a charm option is a tactical fix. As part of the work the charm classes were restructured a little as this charm does not support 4.0. func-test-pr: https://github.com/openstack-charmers/zaza-openstack-tests/pull/856 Change-Id: I29e83cab68ba670204f27f15010459836d8f8160
This commit is contained in:
parent
36075ac962
commit
89bf944119
|
@ -7,3 +7,7 @@ options:
|
|||
type: string
|
||||
default: "deb [trusted=yes] https://apt.fury.io/triliodata-4-0/ /"
|
||||
description: Repository address of triliovault packages
|
||||
openstack-encryption-support:
|
||||
type: boolean
|
||||
default: False
|
||||
description: If Openstack has encryption(barbican) support (will be deprecated from 5.0)
|
||||
|
|
|
@ -25,19 +25,15 @@ HORIZON_PATH = "/usr/share/openstack-dashboard"
|
|||
MANAGE_PY = os.path.join(HORIZON_PATH, "manage.py")
|
||||
|
||||
|
||||
class TrilioHorizonPluginQueensCharm(
|
||||
class TrilioHorizonPluginBase(
|
||||
charms_openstack.plugins.TrilioVaultSubordinateCharm
|
||||
):
|
||||
|
||||
abstract_class = True
|
||||
|
||||
service_name = name = "trilio-horizon-plugin"
|
||||
|
||||
release = "queens"
|
||||
trilio_release = "4.0"
|
||||
|
||||
required_relations = []
|
||||
|
||||
packages = ["python-workloadmgrclient", "tvault-horizon-plugin"]
|
||||
|
||||
# Setting an empty source_config_key activates special handling of release
|
||||
# selection suitable for subordinate charms
|
||||
source_config_key = ''
|
||||
|
@ -48,16 +44,46 @@ class TrilioHorizonPluginQueensCharm(
|
|||
|
||||
@classmethod
|
||||
def trilio_version_package(cls):
|
||||
return 'tvault-horizon-plugin'
|
||||
return 'python3-tvault-horizon-plugin'
|
||||
|
||||
def trilio_encryption_supported(self):
|
||||
return False
|
||||
|
||||
def local_settings(self):
|
||||
settings = (
|
||||
"TRILIO_ENCRYPTION_SUPPORT = {}\n"
|
||||
"OPENSTACK_ENCRYPTION_SUPPORT = {}").format(
|
||||
self.trilio_encryption_supported(),
|
||||
self.config['openstack-encryption-support'])
|
||||
return settings
|
||||
|
||||
|
||||
class TrilioHorizonPluginCharm(TrilioHorizonPluginQueensCharm):
|
||||
class TrilioHorizonPluginCharmQueens41(TrilioHorizonPluginBase):
|
||||
|
||||
release = "queens"
|
||||
trilio_release = "4.1"
|
||||
packages = ["python-workloadmgrclient", "tvault-horizon-plugin"]
|
||||
|
||||
|
||||
class TrilioHorizonPluginCharmQueens42(TrilioHorizonPluginBase):
|
||||
|
||||
release = "queens"
|
||||
trilio_release = "4.2"
|
||||
packages = ["python-workloadmgrclient", "tvault-horizon-plugin"]
|
||||
|
||||
def trilio_encryption_supported(self):
|
||||
return True
|
||||
|
||||
|
||||
class TrilioHorizonPluginCharmRocky41(TrilioHorizonPluginCharmQueens41):
|
||||
|
||||
release = "rocky"
|
||||
trilio_release = "4.0"
|
||||
|
||||
trilio_release = "4.1"
|
||||
packages = ["python3-workloadmgrclient", "python3-tvault-horizon-plugin"]
|
||||
|
||||
@classmethod
|
||||
def trilio_version_package(cls):
|
||||
return 'python3-tvault-horizon-plugin'
|
||||
|
||||
class TrilioHorizonPluginCharmRocky42(TrilioHorizonPluginCharmQueens42):
|
||||
|
||||
release = "rocky"
|
||||
trilio_release = "4.2"
|
||||
packages = ["python3-workloadmgrclient", "python3-tvault-horizon-plugin"]
|
||||
|
|
|
@ -29,3 +29,18 @@ def install_source_changed():
|
|||
"""Trigger re-install of charm if source configuration options change"""
|
||||
reactive.clear_flag("charm.installed")
|
||||
reactive.set_flag("upgrade.triliovault")
|
||||
|
||||
|
||||
@reactive.when_not('is-update-status-hook')
|
||||
@reactive.when('dashboard-plugin.available')
|
||||
def dashboard_available():
|
||||
"""Relation to OpenStack Dashboard principal charm complete.
|
||||
"""
|
||||
with charm.provide_charm_instance() as charm_instance:
|
||||
dashboard_relation = reactive.endpoint_from_flag(
|
||||
'dashboard-plugin.available')
|
||||
dashboard_relation.publish_plugin_info(
|
||||
charm_instance.local_settings(),
|
||||
1,
|
||||
conflicting_packages=[],
|
||||
install_packages=[])
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
charm_name: trilio-horizon-plugin
|
||||
tests:
|
||||
- zaza.charm_tests.noop.tests.NoopTest
|
||||
- zaza.openstack.charm_tests.trilio.tests.TrilioHorizonPluginTest
|
||||
configure:
|
||||
- zaza.openstack.charm_tests.trilio.setup.basic_setup
|
||||
- zaza.openstack.charm_tests.vault.setup.auto_initialize
|
||||
|
|
|
@ -100,9 +100,16 @@ class TestDmapiHandlers(test_utils.PatchHelper):
|
|||
when_patterns = {
|
||||
"install_source_changed": (
|
||||
"config.changed.triliovault-pkg-source",
|
||||
),
|
||||
"dashboard_available": (
|
||||
"dashboard-plugin.available",
|
||||
)
|
||||
}
|
||||
when_not_patterns = {
|
||||
"dashboard_available": (
|
||||
"is-update-status-hook",
|
||||
)
|
||||
}
|
||||
when_not_patterns = {}
|
||||
# check the when hooks are attached to the expected functions
|
||||
for t, p in [
|
||||
(_when_args, when_patterns),
|
||||
|
|
|
@ -20,19 +20,23 @@ import charms_openstack.test_utils as test_utils
|
|||
class Helper(test_utils.PatchHelper):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.patch_release(trilio_horizon.TrilioHorizonPluginCharm.release)
|
||||
self.patch_release(
|
||||
trilio_horizon.TrilioHorizonPluginCharmQueens42.release)
|
||||
self.patch_release(
|
||||
trilio_horizon.TrilioHorizonPluginCharmRocky42.release)
|
||||
|
||||
|
||||
class TestTrilioHorizonCharm(Helper):
|
||||
|
||||
def test_packages_queens(self):
|
||||
dm_charm = trilio_horizon.TrilioHorizonPluginQueensCharm()
|
||||
dm_charm = trilio_horizon.TrilioHorizonPluginCharmQueens42()
|
||||
self.assertEqual(
|
||||
dm_charm.packages,
|
||||
["python-workloadmgrclient", "tvault-horizon-plugin"],
|
||||
)
|
||||
|
||||
def test_packages_rocky(self):
|
||||
dm_charm = trilio_horizon.TrilioHorizonPluginCharm()
|
||||
dm_charm = trilio_horizon.TrilioHorizonPluginCharmRocky42()
|
||||
self.assertEqual(
|
||||
dm_charm.packages,
|
||||
["python3-workloadmgrclient", "python3-tvault-horizon-plugin"],
|
||||
|
|
Loading…
Reference in New Issue