canonical / charmed-kubeflow-chisme

Shared Utilities used across Charmed Kubeflow
Apache License 2.0
1 stars 4 forks source link

assert_grafana_dashboards failed for local charms #113

Closed rgildein closed 16 hours ago

rgildein commented 5 days ago

Bug Description

Locally build charms will return charm_name as <charm_name>-<revision>, e.g. seldon-controller-manager-0. Because of this, the assert_grafana_dashboards will always fail on this line. e.g. assert "seldon-controller-manager" == "seldon-controller-manager-0"

This issue is due grafana_dashboard lib using name from metadata (as can be seen here) and libjuju getting it from charm url (as can be seen here).

We need to find better way how we will check that template was defined for proper charm.

To Reproduce

Adding this to any charm integrations tests for charm already using grafana_dashboard relation.

async def test_grafana_dashboards(ops_test):
    """Test Grafana dashboards are defined in relation data bag."""
    app = ops_test.model.applications[APP_NAME]
    dashboards = get_grafana_dashboards()
    logger.info("found dashboards: %s", dashboards)
    await assert_grafana_dashboards(app, dashboards)

Environment

$ juju show-controller | grep version agent-version: 3.4.2 controller-model-version: 3.4.2 $ microk8s version
MicroK8s v1.28.10 revision 6829

Relevant Log Output

File "/home/rgildein/code/canonical/seldon-core-operator/tests/integration/test_charm.py", line 113, in test_grafana_dashboards                                                                                                             
    await assert_grafana_dashboards(app, dashboards)                                                                                                                                                                                          
  File "/home/rgildein/code/canonical/seldon-core-operator/.tox/charm-integration/lib/python3.12/site-packages/charmed_kubeflow_chisme/testing/cos_integration.py", line 388, in assert_grafana_dashboards                                    
    assert template["charm"] == app.charm_name                                                                                                                                                                                                
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                                                                
AssertionError

Additional Context

No response

syncronize-issues-to-jira[bot] commented 5 days ago

Thank you for reporting us your feedback!

The internal ticket has been created: https://warthogs.atlassian.net/browse/KF-5961.

This message was autogenerated

rgildein commented 5 days ago

One of the options is to get metadata from deployed charm.

async def _get_charm_name(app: Application) -> str:
    """Get charm name for application from metadata.

    We are getting from metdata, since locally builded charmas will return
    `<charm_name>-<revision>` from `app.charm_name`.
    """
    unit = app.units[0]
    result = await _run_on_unit(unit, "cat metadata.yaml")
    meta = yaml.safe_load(result.results["stdout"])
    return meta["name"]