Kubeflow Dashboard

  • Kubeflow Charmers
  • Ai Ml
Channel Revision Published Runs on
latest/beta 600 09 Jul 2024
Ubuntu 20.04
latest/edge 705 13 Dec 2024
Ubuntu 20.04
1.9/stable 659 30 Jul 2024
Ubuntu 20.04
1.9/edge 686 27 Sep 2024
Ubuntu 20.04
1.8/stable 582 28 Jun 2024
Ubuntu 20.04
1.8/edge 666 06 Aug 2024
Ubuntu 20.04
1.7/stable 439 09 Oct 2023
Ubuntu 20.04
1.7/beta 307 28 Mar 2023
Ubuntu 20.04
1.7/edge 439 28 Sep 2023
Ubuntu 20.04
juju deploy kubeflow-dashboard --channel 1.9/stable
Show information

Platform:

charms.kubeflow_dashboard.v0.kubeflow_dashboard_sidebar

KubeflowDashboardSidebar Library

This library implements data transfer for the kubeflow_dashboard_sidebar interface used by Kubeflow Dashboard to implement the sidebar relation. This relation enables applications to request a link on the Kubeflow Dashboard sidebar dynamically.

To enable an application to add a link to Kubeflow Dashboard's sidebar, use the KubeflowDashboardSidebarRequirer and SidebarItem classes included here as shown below. No additional action is required within the charm. On establishing the relation, the data will be sent to Kubeflow Dashboard to add the link. The link will be removed if the relation is broken.

Getting Started

To get started using the library, fetch the library with charmcraft.

cd some-charm
charmcraft fetch-lib charms.kubeflow_dashboard.v0.kubeflow_dashboard_sidebar

Then in your charm, do:

from charms.kubeflow_dashboard.v0.kubeflow_dashboard_sidebar import (
    KubeflowDashboardSidebarRequirer,
    SidebarItem,
)
# ...

SIDEBAR_ITEMS = [
    SidebarItem(
        text="Example Relative Link",
        link="/relative-link",
        type="item",
        icon="assessment"
    ),
    SidebarItem(
        text="Example External Link",
        link="https://charmed-kubeflow.io/docs",
        type="item",
        icon="assessment"
    ),
]

class SomeCharm(CharmBase):
  def __init__(self, *args):
    # ...
    self.kubeflow_dashboard_sidebar = KubeflowDashboardSidebarRequirer(
        charm=self,
        relation_name="sidebar",  # use whatever you call the relation in your metadata.yaml
        SIDEBAR_ITEMS
    )
    # ...

class SidebarItem

Representation of a Kubeflow Dashboard sidebar entry.

Arguments

text

The text shown in the sidebar

link

The relative link within the host (eg: /runs, not http://.../runs)

type

A type of sidebar entry (typically, "item")

icon

An icon for the link, from https://kevingleason.me/Polymer-Todo/bower_components/iron-icons/demo/index.html

Description

See https://www.kubeflow.org/docs/components/central-dash/customizing-menu/ for more details.

class KubeflowDashboardSidebarDataUpdatedEvent

Description

Indicates the Kubeflow Dashboard Sidebar data was updated. None

class KubeflowDashboardidebarEvents

Description

Events for the Kubeflow Dashboard Sidebar library. None

class KubeflowDashboardSidebarProvider

Description

Relation manager for the Provider side of the Kubeflow Dashboard Sidebar relation.. None

Methods

KubeflowDashboardSidebarProvider. __init__( self , charm: CharmBase , relation_name: str , refresh_event )

Relation manager for the Provider side of the Kubeflow Dashboard Sidebar relation.

Arguments

charm

Charm this relation is being used by

relation_name

Name of this relation (from metadata.yaml)

refresh_event

List of BoundEvents that this manager should handle. Use this to update the data sent on this relation on demand.

Description

This relation manager subscribes to:

  • on[relation_name].relation_changed
  • any events provided in refresh_event

This library emits:

  • KubeflowDashboardSidebarDataUpdatedEvent: when data received on the relation is updated

TODO: Should this class automatically subscribe to events, or should it optionally do that. The former is typical of charm libraries, the latter lets the user better control and visibility on how it is used.

KubeflowDashboardSidebarProvider. get_sidebar_items( self , omit_breaking_app: bool )

Returns a list of all SidebarItems from related Applications.

Arguments

omit_breaking_app

If True and this is called during a sidebar-relation-broken event, the remote app's data will be omitted. For more context, see: https://github.com/canonical/kubeflow-dashboard-operator/issues/124

Returns

List of SidebarItems defining the dashboard sidebar for all related applications.

KubeflowDashboardSidebarProvider. get_sidebar_items_as_json( self , omit_breaking_app: bool )

Returns a JSON string of all SidebarItems from related Applications.

Arguments

omit_breaking_app

If True and this is called during a sidebar-relation-broken event, the remote app's data will be omitted. For more context, see: https://github.com/canonical/kubeflow-dashboard-operator/issues/124

Returns

JSON string of all SidebarItems for all related applications, each as dicts.

class KubeflowDashboardSidebarRequirer

Description

Relation manager for the Requirer side of the Kubeflow Dashboard Sidebar relation. None

Methods

KubeflowDashboardSidebarRequirer. __init__( self , charm: CharmBase , relation_name: str , sidebar_items , refresh_event )

Relation manager for the Requirer side of the Kubeflow Dashboard Sidebar relation.

Arguments

charm

Charm this relation is being used by

relation_name

Name of this relation (from metadata.yaml)

sidebar_items

List of SidebarItem objects to send over the relation

refresh_event

List of BoundEvents that this manager should handle. Use this to update the data sent on this relation on demand.

Description

This relation manager subscribes to:

  • on.leader_elected: because only the leader is allowed to provide this data, and relation_created may fire before the leadership election

  • on[relation_name].relation_created

  • any events provided in refresh_event

This library emits:

  • (nothing)

TODO: Should this class automatically subscribe to events, or should it optionally do that. The former is typical of charm libraries, the latter lets the user better control and visibility on how it is used.

def get_name_of_breaking_app(relation_name: str)

Returns breaking app name if called during RELATION_NAME-relation-broken and the breaking app name is available. # noqa

Description

Else, returns None.

Relation type and app name are inferred from juju environment variables.

Description

Returns a list of SidebarItems as a JSON string. None