Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ resource "juju_application" "manila-data" {
}

config = merge({
snap-channel = var.manila-data-channel
snap-channel = var.manila-data-channel
enable-telemetry-notifications = var.enable-telemetry-notifications
}, var.charm-manila-data-config)
endpoint_bindings = var.endpoint_bindings
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,9 @@ variable "database-offer-url" {
type = string
default = null
}

variable "enable-telemetry-notifications" {
description = "Enable telemetry notifications for manila-data"
type = bool
default = false
}
11 changes: 11 additions & 0 deletions sunbeam-python/sunbeam/features/shared_filesystem/manila_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ def __init__(
jhelper: JujuHelper,
manifest: Manifest,
model: str,
extra_tfvars: dict | None = None,
):
super().__init__(
deployment,
Expand All @@ -67,6 +68,7 @@ def __init__(
"Deploying Manila Data",
)
self._offers: dict[str, str | None] = {}
self.override_tfvars: dict[str, Any] = extra_tfvars or {}

def get_application_timeout(self) -> int:
"""Return application timeout in seconds."""
Expand Down Expand Up @@ -133,6 +135,15 @@ def extra_tfvars(self) -> dict:

tfvars.update(self._get_offers())

feature_manager = self.deployment.get_feature_manager()
if feature_manager.is_feature_enabled(self.deployment, "telemetry"):
tfvars["enable-telemetry-notifications"] = True
else:
tfvars["enable-telemetry-notifications"] = False

# Any tfvars that needs override will take precedence from self.override_tfvars
tfvars.update(self.override_tfvars)

return tfvars


Expand Down
41 changes: 41 additions & 0 deletions sunbeam-python/sunbeam/features/telemetry/feature.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
OpenStackControlPlaneFeature,
TerraformPlanLocation,
)
from sunbeam.features.shared_filesystem.manila_data import (
DeployManilaDataApplicationStep,
)
from sunbeam.steps.cinder_volume import DeployCinderVolumeApplicationStep
from sunbeam.steps.hypervisor import ReapplyHypervisorTerraformPlanStep
from sunbeam.steps.juju import RemoveSaasApplicationsStep
Expand Down Expand Up @@ -204,6 +207,25 @@ def run_enable_plans(
if len(plan3) > 1: # More than just TerraformInitStep
run_plan(plan3, console, show_hints)

# Reapply manila-data if shared-filesystem feature is enabled
feature_manager = deployment.get_feature_manager()
if feature_manager.is_feature_enabled(deployment, "shared-filesystem"):
tfhelper_manila_data = deployment.get_tfhelper("manila-data-plan")
extra_tfvars_manila_data = {"enable-telemetry-notifications": True}
manila_data_plan: list[BaseStep] = [
TerraformInitStep(tfhelper_manila_data),
DeployManilaDataApplicationStep(
deployment,
deployment.get_client(),
tfhelper_manila_data,
jhelper,
self.manifest,
deployment.openstack_machines_model,
extra_tfvars=extra_tfvars_manila_data,
),
]
run_plan(manila_data_plan, console, show_hints)

click.echo(f"OpenStack {self.display_name} application enabled.")

def run_disable_plans(self, deployment: Deployment, show_hints: bool) -> None:
Expand Down Expand Up @@ -316,6 +338,25 @@ def run_disable_plans(self, deployment: Deployment, show_hints: bool) -> None:
if len(plan2) > 1: # More than just TerraformInitStep
run_plan(plan2, console, show_hints)

# Reapply manila-data if shared-filesystem feature is enabled
feature_manager = deployment.get_feature_manager()
if feature_manager.is_feature_enabled(deployment, "shared-filesystem"):
tfhelper_manila_data = deployment.get_tfhelper("manila-data-plan")
extra_tfvars_manila_data = {"enable-telemetry-notifications": False}
manila_data_plan: list[BaseStep] = [
TerraformInitStep(tfhelper_manila_data),
DeployManilaDataApplicationStep(
deployment,
deployment.get_client(),
tfhelper_manila_data,
jhelper,
self.manifest,
deployment.openstack_machines_model,
extra_tfvars=extra_tfvars_manila_data,
),
]
run_plan(manila_data_plan, console, show_hints)

click.echo(f"OpenStack {self.display_name} application disabled.")

def set_application_names(self, deployment: Deployment) -> list:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,9 @@ def test_extra_tfvars(
Networks.INTERNAL: "internal",
}[network]

feature_manager = basic_deployment.get_feature_manager.return_value
feature_manager.is_feature_enabled.return_value = False

tfvars = deploy_manila_data_step.extra_tfvars()

expected_tfvars = {
Expand All @@ -165,6 +168,7 @@ def test_extra_tfvars(
"keystone-offer-url": "keystone-offer",
"database-offer-url": "database-offer",
"amqp-offer-url": "amqp-offer",
"enable-telemetry-notifications": False,
}
print(tfvars)
print(expected_tfvars)
Expand Down
3 changes: 3 additions & 0 deletions sunbeam-python/tests/unit/sunbeam/features/test_telemetry.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ def deployment():
client = deploy.get_client.return_value
client.cluster.list_nodes_by_role.return_value = [{"name": "node1", "machineid": 1}]

feature_manager = deploy.get_feature_manager.return_value
feature_manager.is_feature_enabled.return_value = False

return deploy


Expand Down
Loading