Skip to content

[Task](greenhouse): add exposed services list #1399

@ArtieReus

Description

@ArtieReus

Task Description

Create a new admin page at /admin/exposed-services to list all services exposed by plugins. Uses label selector greenhouse.sap/plugin-exposed-services=true for efficient API-level filtering.

Sub-tasks

  • Create API fetch function with label selector see the Implementation Details section below
  • Create route at /admin/exposed-services/
  • [Update] Move ExposedServices component out of plugin instance details and change it in a way that it works for all plugins. Information about which columns to show can be found here.
  • [Update]Make the list filterable by support group and cluster
  • Add navigation menu item
  • [Update] Remove exposed services data grid from plugin instance detail page, and display space separated list of expose services names as hyperlink in basic information sections.
  • Test with real data

Implementation Details

In order to fetch all services exposed by all plugins following method can be used.

/*
 * SPDX-FileCopyrightText: 2026 SAP SE or an SAP affiliate company and Juno contributors
 * SPDX-License-Identifier: Apache-2.0
 */

import { Plugin } from "../../types/k8sTypes"

export const FETCH_EXPOSED_SERVICES_CACHE_KEY = "exposedServices"

export const fetchExposedServices = async ({
  apiClient,
  namespace,
}: {
  apiClient: any
  namespace: string
}): Promise<Plugin[]> => {
  // Filter only by plugins that have exposed services
  const labelSelector = "greenhouse.sap/plugin-exposed-services=true"

  const response = await apiClient.get(`/apis/greenhouse.sap/v1alpha1/namespaces/${namespace}/plugins`, {
    params: {
      labelSelector,
    },
  })
  return Array.isArray(response?.items) ? response.items : []
}

Related Issues

Additional Context

Please follow established Greenhouse admin patterns with React Query, DataGrid components, and proper error handling.

Metadata

Metadata

Labels

greenhouseGreenhouse core related task

Type

Projects

Status

In progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions