@stolostron/multicluster-sdk
Version:
Provides extensions and APIs that dynamic plugins can use to leverage multicluster capabilities provided by Red Hat Advanced Cluster Management.
53 lines • 2.37 kB
TypeScript
import React from 'react';
import { FleetResourceLinkProps } from '../types/fleet';
/**
* Enhanced ResourceLink component for ACM fleet environments.
*
* Unlike the standard OpenShift ResourceLink which always links to the OpenShift console,
* FleetResourceLink provides intelligent routing based on cluster context:
* - First-class ACM resources (ManagedCluster) get direct links in all cases
* - For hub clusters: Extension-based routing first, then fallback to OpenShift console
* - For managed clusters: Extension-based routing first, then fallback to ACM search results
*
* This prevents users from having to jump between different consoles when managing
* multi-cluster resources.
*
* @see https://github.com/openshift/console/blob/main/frontend/packages/console-dynamic-plugin-sdk/docs/api.md#resourcelink
*
* @param props - FleetResourceLinkProps extending ResourceLinkProps with cluster information
* @param props.cluster - the target cluster name for the resource
* @param props.groupVersionKind - K8s GroupVersionKind for the resource
* @param props.name - the resource name
* @param props.namespace - the resource namespace (required for namespaced resources)
* @param props.displayName - optional display name override
* @param props.className - additional CSS classes
* @param props.inline - whether to display inline
* @param props.hideIcon - whether to hide the resource icon
* @param props.children - additional content to render
*
* @example
* ```typescript
* // Hub cluster VirtualMachine - routes to ACM VM page via extension system
* <FleetResourceLink
* name="my-vm"
* namespace="default"
* groupVersionKind={{ group: 'kubevirt.io', version: 'v1', kind: 'VirtualMachine' }}
* />
*
* // Managed cluster VirtualMachine - routes to ACM search results
* <FleetResourceLink
* name="remote-vm"
* namespace="default"
* cluster="prod-cluster"
* groupVersionKind={{ group: 'kubevirt.io', version: 'v1', kind: 'VirtualMachine' }}
* />
*
* // ManagedCluster resource (lives on hub) - cluster prop omitted
* <FleetResourceLink
* name="prod-cluster"
* groupVersionKind={{ group: 'cluster.open-cluster-management.io', version: 'v1', kind: 'ManagedCluster' }}
* />
* ```
*/
export declare const FleetResourceLink: React.FC<FleetResourceLinkProps>;
//# sourceMappingURL=FleetResourceLink.d.ts.map