Kubeflow Dashboard
- Kubeflow Charmers
- Ai Ml
Channel | Revision | Published | Runs on |
---|---|---|---|
latest/beta | 600 | 09 Jul 2024 | |
latest/edge | 705 | 13 Dec 2024 | |
1.9/stable | 659 | 30 Jul 2024 | |
1.9/edge | 686 | 27 Sep 2024 | |
1.8/stable | 582 | 28 Jun 2024 | |
1.8/edge | 666 | 06 Aug 2024 | |
1.7/stable | 439 | 09 Oct 2023 | |
1.7/beta | 307 | 28 Mar 2023 | |
1.7/edge | 439 | 28 Sep 2023 |
juju deploy kubeflow-dashboard --channel 1.9/stable
Deploy Kubernetes operators easily with Juju, the Universal Operator Lifecycle Manager. Need a Kubernetes cluster? Install MicroK8s to create a full CNCF-certified Kubernetes system in under 60 seconds.
Platform:
charms.kubeflow_dashboard.v0.kubeflow_dashboard_links
-
- Last updated 22 Jul 2024
- Revision Library version 0.3
KubeflowDashboardLinks Library This library implements data transfer for the kubeflow_dashboard_links interface used by Kubeflow Dashboard to implement the links relation. This relation enables applications to request a link on the Kubeflow Dashboard dynamically.
To enable an application to add a link to Kubeflow Dashboard, use the KubeflowDashboardLinksRequirer and DashboardLink 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 links. The links 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_links
Then in your charm, do:
from charms.kubeflow_dashboard.v0.kubeflow_dashboard_links import (
KubeflowDashboardLinksRequirer,
DashboardLink,
)
# ...
DASHBOARD_LINKS = [
DashboardLink(
text="Example Relative Link",
link="/relative-link",
type="item",
icon="assessment",
location="sidebar",
),
DashboardLink(
text="Example External Link",
link="https://charmed-kubeflow.io/docs",
type="item",
icon="assessment",
location="sidebar-external"
),
]
class SomeCharm(CharmBase):
def __init__(self, *args):
# ...
self.kubeflow_dashboard_links = KubeflowDashboardLinksRequirer(
charm=self,
relation_name="links", # use whatever you call the relation in your metadata.yaml
DASHBOARD_LINKS
)
# ...
Index
class DashboardLink
Representation of a Kubeflow Dashboard Link entry.
Arguments
The text shown for the link
The link (a relative link for location=menu
or location=quick
, eg: /mlflow
,
or a full URL for other locations, eg: http://my-website.com)
A type of link entry (typically, "item")
An icon for the link, from https://kevingleason.me/Polymer-Todo/bower_components/iron-icons/demo/index.html
Link's location on the dashboard. One of menu
, external
, quick
,
and documentation
.
Description
See https://www.kubeflow.org/docs/components/central-dash/customizing-menu/ for more details.
Methods
DashboardLink. __post_init__( self )
Description
Validate that location is one of the accepted values. None
class KubeflowDashboardLinksUpdatedEvent
Description
Indicates the Kubeflow Dashboard link data was updated. None
class KubeflowDashboardLinksEvents
Description
Events for the Kubeflow Dashboard Links library. None
class KubeflowDashboardLinksProvider
Description
Relation manager for the Provider side of the Kubeflow Dashboard Sidebar relation.. None
Methods
KubeflowDashboardLinksProvider. __init__( self , charm: CharmBase , relation_name: str , refresh_event )
Relation manager for the Provider side of the Kubeflow Dashboard Links relation.
Arguments
Charm this relation is being used by
Name of this relation (from metadata.yaml)
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:
- KubeflowDashboardLinksUpdatedEvent: 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.
KubeflowDashboardLinksProvider. get_dashboard_links( self , omit_breaking_app: bool , location )
Returns a list of all DashboardItems from related Applications.
Arguments
If True and this is called during a link-relation-broken event, the remote app's data will be omitted. For more context, see: https://github.com/canonical/kubeflow-dashboard-operator/issues/124
If specified, return only links with this location. Else, returns all links.
Returns
List of DashboardLinks defining the dashboard links for all related applications.
KubeflowDashboardLinksProvider. get_dashboard_links_as_json( self , omit_breaking_app: bool , location )
Returns a JSON string of all DashboardItems from related Applications.
Arguments
If True and this is called during a links-relation-broken event, the remote app's data will be omitted. For more context, see: https://github.com/canonical/kubeflow-dashboard-operator/issues/124
If specified, return only links with this location. Else, returns all links.
Returns
JSON string of all DashboardLinks for all related applications, each as dicts.
class KubeflowDashboardLinksRequirer
Description
Relation manager for the Requirer side of the Kubeflow Dashboard Links relation. None
Methods
KubeflowDashboardLinksRequirer. __init__( self , charm: CharmBase , relation_name: str , dashboard_links , refresh_event )
Relation manager for the Requirer side of the Kubeflow Dashboard Link relation.
Arguments
Charm this relation is being used by
Name of this relation (from metadata.yaml)
List of DashboardLink objects to send over the relation
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.
def dashboard_links_to_json(dashboard_links)
Description
Returns a list of SidebarItems as a JSON string. None