{"version":3,"sources":["webpack:///./public/components/utils/index.tsx","webpack:///./public/module/k8s/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/coderefs/coderef-resolver.ts","webpack:///./public/models/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/index.ts","webpack:///./packages/console-shared/src/index.ts","webpack:///./packages/console-shared/src/constants/index.ts","webpack:///./public/components/factory/index.tsx","webpack:///./packages/console-shared/src/components/dashboard/status-card/states.tsx","webpack:///./public/actions/ui.ts","webpack:///./public/components/monitoring/utils.ts","webpack:///./public/actions/observe.ts","webpack:///./packages/console-shared/src/hooks/index.ts","webpack:///./packages/console-plugin-sdk/src/index.ts","webpack:///./packages/knative-plugin/src/models.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/lib-core.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/k8s-ref.ts","webpack:///./packages/console-shared/src/constants/common.ts","webpack:///./public/components/modals/index.ts","webpack:///./public/co-fetch.ts","webpack:///./public/components/factory/modal.tsx","webpack:///./public/components/utils/k8s-watch-hook.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/k8s/actions/k8s.ts","webpack:///./public/components/utils/details-item.tsx","webpack:///./packages/operator-lifecycle-manager/src/models.ts","webpack:///./packages/knative-plugin/src/const.ts","webpack:///./packages/console-shared/src/components/formik-fields/field-utils.ts","webpack:///./public/components/utils/resource-link.tsx","webpack:///./packages/console-shared/src/components/status/index.tsx","webpack:///./public/components/utils/status-box.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/cloud-shell-utils.ts","webpack:///./packages/operator-lifecycle-manager/src/types.ts","webpack:///./packages/console-shared/src/components/catalog/utils/types.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/console-types.ts","webpack:///./public/components/utils/datetime.ts","webpack:///./public/components/graphs/index.tsx","webpack:///./public/module/k8s/k8s-ref.ts","webpack:///./packages/metal3-plugin/src/models.ts","webpack:///./packages/console-shared/src/components/error/index.ts","webpack:///./packages/console-shared/src/hooks/useTelemetry.ts","webpack:///./packages/console-shared/src/utils/index.ts","webpack:///./packages/console-app/src/models/index.ts","webpack:///./packages/console-plugin-shared/src/datetime/prometheus.ts","webpack:///./public/components/utils/link.tsx","webpack:///./public/reducers/features.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/fetch/index.ts","webpack:///./packages/console-shared/src/components/catalog/utils/catalog-utils.tsx","webpack:///./packages/console-shared/src/components/markdown-extensions/const.ts","webpack:///./public/components/graphs/helpers.ts","webpack:///./public/components/monitoring/hooks/useBoolean.ts","webpack:///./public/reducers/connectToFlags.ts","webpack:///./public/components/utils/async.tsx","webpack:///./public/redux.ts","webpack:///./packages/console-plugin-sdk/src/api/pluginSubscriptionService.ts","webpack:///./public/module/k8s/pods.ts","webpack:///./packages/console-shared/src/utils/user-settings.ts","webpack:///./packages/console-shared/src/components/dashboard/status-card/alert-utils.ts","webpack:///./public/module/k8s/k8s.ts","webpack:///./public/actions/features.ts","webpack:///./packages/console-app/src/consts.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/k8s-watcher.ts","webpack:///./public/components/utils/headings.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/useK8sModel.ts","webpack:///./packages/console-shared/src/hooks/useUserSettings.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/k8s-utils.ts","webpack:///./public/i18n.js","webpack:///./packages/console-shared/src/hooks/useActiveNamespace.ts","webpack:///./packages/console-shared/src/components/status/icons.tsx","webpack:///./public/reducers/dashboards.ts","webpack:///./public/components/factory/Table/VirtualizedTable.tsx","webpack:///./public/components/factory/table-filters.ts","webpack:///./public/graphql/client.ts","webpack:///./packages/console-app/src/components/tour/const.ts","webpack:///./packages/metal3-plugin/src/features.ts","webpack:///./packages/patternfly/src/index.ts","webpack:///./public/components/monitoring/types.ts","webpack:///./public/module/k8s/cluster-settings.ts","webpack:///./packages/console-shared/src/components/catalog/utils/category-utils.ts","webpack:///./public/components/events.jsx","webpack:///./packages/console-shared/src/hooks/flag.ts","webpack:///./public/module/k8s/builds.ts","webpack:///./public/components/utils/resource-icon.tsx","webpack:///./packages/console-app/src/components/user-preferences/language/getLastLanguage.ts","webpack:///./public/components/monitoring/dashboards/monitoring-dashboard-utils.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/error/http-error.ts","webpack:///./public/components/utils/rbac.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/app/components/status/StatusIconAndText.tsx","webpack:///./packages/console-shared/src/hooks/useK8sModel.ts","webpack:///./packages/console-shared/src/components/dashboard/inventory-card/status-group.ts","webpack:///./packages/console-shared/src/selectors/common.ts","webpack:///./public/plugins.ts","webpack:///./packages/console-app/src/components/nav/utils.ts","webpack:///./public/actions/dashboards.ts","webpack:///./public/reducers/ui.ts","webpack:///./packages/console-shared/src/components/dashboard/inventory-card/InventoryCard.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/index.ts","webpack:///./packages/console-shared/src/hooks/useUserSettingsCompatibility.ts","webpack:///./packages/console-shared/src/utils/pod-utils.ts","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/setup/cloud-shell-setup-utils.ts","webpack:///./public/components/monitoring/dashboards/types.ts","webpack:///./packages/console-shared/src/components/dashboard/Dashboard.tsx","webpack:///./public/kinds.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/k8s-resource.ts","webpack:///./packages/webterminal-plugin/src/redux/reducers/cloud-shell-selectors.ts","webpack:///./public/components/graphs/area.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/error/custom-error.ts","webpack:///./packages/console-shared/src/components/catalog/utils/filter-utils.ts","webpack:///./packages/console-shared/src/utils/resource-utils.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/k8s/reducers/k8sSelector.ts","webpack:///./packages/console-shared/src/components/synced-editor/editor-toggle.tsx","webpack:///./packages/operator-lifecycle-manager/src/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/api/common-types.ts","webpack:///./packages/console-app/src/components/user-preferences/search/index.ts","webpack:///./packages/console-app/src/components/tour/tour-context.ts","webpack:///./public/components/factory/Table/sort.ts","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/useCloudShellAvailable.ts","webpack:///./packages/webterminal-plugin/src/redux/actions/cloud-shell-actions.ts","webpack:///./packages/console-shared/src/components/quick-search/utils/quick-search-utils.tsx","webpack:///./packages/console-shared/src/components/actions/types.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/core/actions/core.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/storeHandler.ts","webpack:///./packages/console-plugin-sdk/src/utils/extension-i18n.ts","webpack:///./public/components/secrets/create-secret.tsx","webpack:///./public/components/radio.tsx","webpack:///./public/components/utils/timestamp.tsx","webpack:///./packages/knative-plugin/src/utils/icons.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/index.ts","webpack:///./packages/metal3-plugin/src/constants/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/promise.ts","webpack:///./packages/console-shared/src/components/query-browser/index.ts","webpack:///./packages/console-shared/src/components/alerts/error.tsx","webpack:///./public/components/utils/drag-drop-context.tsx","webpack:///./packages/webterminal-plugin/src/const.ts","webpack:///./packages/container-security/src/const.ts","webpack:///./public/components/utils/k8s-watcher.js","webpack:///./public/components/notification-drawer.tsx","webpack:///./packages/console-shared/src/components/virtualized-grid/utils.ts","webpack:///./packages/container-security/src/models.ts","webpack:///./packages/dev-console/src/const.ts","webpack:///./packages/console-shared/src/graph-helper/data-utils.ts","webpack:///./public/components/utils/url-poll-hook.ts","webpack:///./public/components/error.tsx","webpack:///./packages/console-shared/src/hooks/debounce.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/useK8sWatchResource.ts","webpack:///./public/components/RBAC/index.js","webpack:///./packages/service-binding-plugin/src/models.ts","webpack:///./public/module/k8s/k8s-models.ts","webpack:///./public/components/factory/ListPage/ListPageCreate.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/app/components/status/icons.tsx","webpack:///./packages/console-shared/src/components/close-button/index.ts","webpack:///./packages/rhoas-plugin/src/const.ts","webpack:///./public/module/auth.js","webpack:///./packages/console-shared/src/components/pagetitle/PageTitleContext.tsx","webpack:///./packages/console-shared/src/components/namespace/filters.ts","webpack:///./public/actions/k8s.ts","webpack:///./packages/console-shared/src/hooks/useQueryParams.tsx","webpack:///./packages/console-shared/src/components/error/error-boundary.tsx","webpack:///./packages/console-shared/src/hooks/deep-compare-memoize.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/modal-support/useModal.ts","webpack:///./packages/console-shared/src/utils/default-categories.ts","webpack:///./packages/console-shared/src/components/catalog/CatalogBadges.tsx","webpack:///./packages/console-shared/src/constants/time.ts","webpack:///./packages/console-app/src/components/user-preferences/language/const.ts","webpack:///./packages/console-app/src/components/user-preferences/const.ts","webpack:///./packages/webterminal-plugin/models.ts","webpack:///./packages/knative-plugin/src/utils/fetch-dynamic-eventsources-utils.ts","webpack:///./public/components/default-resource.tsx","webpack:///./packages/operator-lifecycle-manager/src/const.ts","webpack:///./public/components/utils/file-input.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/fetch/console-fetch.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/api/useResolvedExtensions.ts","webpack:///./packages/network-attachment-definition-plugin/src/models/index.ts","webpack:///./packages/console-shared/src/selectors/node.ts","webpack:///./packages/console-shared/src/hooks/useQuickStartContext.ts","webpack:///./public/module/k8s/selector-requirement.js","webpack:///./public/components/monitoring/alertmanager/alertmanager-utils.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/app/core/reducers/coreSelectors.ts","webpack:///./public/module/k8s/get-resources.ts","webpack:///./public/components/RBAC/bindings.jsx","webpack:///./packages/console-shared/src/hooks/version.ts","webpack:///./packages/console-shared/src/components/catalog/utils/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/resource-metadata.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/components/status/GenericStatus.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/app/components/status/statuses.tsx","webpack:///./packages/console-shared/src/constants/duration.ts","webpack:///./packages/console-shared/src/components/namespace/NamespaceDropdown.tsx","webpack:///./packages/knative-plugin/src/actions/index.ts","webpack:///./packages/console-shared/src/components/getting-started/useGettingStartedShowState.tsx","webpack:///./public/components/masthead.jsx","webpack:///./packages/insights-plugin/src/components/InsightsPopup/mappers.ts","webpack:///./packages/console-shared/src/promql/resource-metrics.ts","webpack:///./packages/console-shared/src/components/virtualized-grid/const.ts","webpack:///./packages/knative-plugin/src/providers/index.ts","webpack:///./public/components/resource-list.tsx","webpack:///./public/components/conditions.tsx","webpack:///./packages/service-binding-plugin/src/const.ts","webpack:///./public/components/build.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/api/core-api.ts","webpack:///./public/components/start-guide.tsx","webpack:///./public/components/utils/router.ts","webpack:///./public/components/utils/dropdown.jsx","webpack:///./public/components/utils/kebab.tsx","webpack:///./public/components/utils/units.js","webpack:///./public/components/resource-pages.ts","webpack:///./public/components/utils/breadcrumbs.ts","webpack:///./public/components/filter-toolbar.tsx","webpack:///./public/module/k8s/selector.ts","webpack:///./public/module/ws-factory.ts","webpack:///./public/components/cluster-settings/global-config.tsx","webpack:///./packages/local-storage-operator-plugin/src/models.ts","webpack:///./packages/console-plugin-sdk/src/api/useDynamicPluginInfo.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/useDeepCompareMemoize.ts","webpack:///./public/components/RBAC/role.jsx","webpack:///./packages/console-dynamic-plugin-sdk/src/perspective/perspective-context.ts","webpack:///./public/components/utils/poll-hook.ts","webpack:///./public/components/utils/button-bar.jsx","webpack:///./public/components/utils/ref-width-hook.ts","webpack:///./packages/console-shared/src/utils/hpa-utils.ts","webpack:///./packages/console-plugin-sdk/src/api/useExtensions.ts","webpack:///./packages/console-shared/src/hooks/useForceRender.ts","webpack:///./packages/console-plugin-sdk/src/store.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/fetch/console-fetch-utils.ts","webpack:///./packages/console-plugin-sdk/src/typings/index.ts","webpack:///./packages/console-shared/src/selectors/infrastructure.ts","webpack:///./packages/console-shared/src/hooks/formik-validation-fix.ts","webpack:///./packages/console-shared/src/hooks/useResizeObserver.ts","webpack:///./public/components/utils/safe-fetch-hook.ts","webpack:///./public/components/secret.jsx","webpack:///./public/components/utils/owner-references.tsx","webpack:///./packages/console-shared/src/components/actions/utils.ts","webpack:///./packages/knative-plugin/src/components/pub-sub/PubSubModalLauncher.ts","webpack:///./packages/console-shared/src/components/modal/index.ts","webpack:///./packages/console-shared/src/components/popper/index.ts","webpack:///./packages/console-shared/src/components/toast/ToastContext.tsx","webpack:///./packages/console-shared/src/components/catalog/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/alerts.ts","webpack:///./packages/console-shared/src/components/popper/Portal.tsx","webpack:///./packages/console-app/src/components/user-preferences/namespace/usePreferredNamespace.ts","webpack:///./public/components/monitoring/format.tsx","webpack:///./packages/console-shared/src/utils/validation/types.ts","webpack:///./packages/console-shared/src/components/formik-fields/text-column-field/text-column-types.ts","webpack:///./packages/console-app/src/components/nav/NavItemResource.tsx","webpack:///./packages/console-shared/src/hooks/useLocation.ts","webpack:///./packages/console-app/src/components/user-preferences/language/usePreferredLanguage.ts","webpack:///./public/actions/common.ts","webpack:///./public/components/build-pipeline.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/runtime/plugin-utils.ts","webpack:///./packages/dev-console/src/components/guided-tour/GuidedTourText.tsx","webpack:///./packages/topology/src/operators/index.ts","webpack:///./public/components/graphs/prometheus-poll-hook.ts","webpack:///./public/components/utils/copy-to-clipboard.tsx","webpack:///./packages/console-shared/src/hooks/useUtilizationDuration.ts","webpack:///./packages/operator-lifecycle-manager/src/utils.ts","webpack:///./public/components/factory/ListPage/ListPageFilter.tsx","webpack:///./public/components/factory/ListPage/ListPageHeader.tsx","webpack:///./public/components/factory/ListPage/filter-hook.ts","webpack:///./public/components/utils/namespace-redirect.tsx","webpack:///./public/components/graphs/graph-empty.tsx","webpack:///./packages/console-shared/src/components/popper/Popper.tsx","webpack:///./packages/console-shared/src/selectors/index.ts","webpack:///./packages/console-shared/src/components/error/fallbacks/ErrorBoundaryFallbackPage.tsx","webpack:///./packages/console-shared/src/utils/annotations.ts","webpack:///./public/components/utils/service-level.tsx","webpack:///./packages/console-shared/src/components/actions/ActionServiceProvider.tsx","webpack:///./public/components/utils/selector.tsx","webpack:///./packages/rhoas-plugin/src/models/index.ts","webpack:///./packages/console-app/src/components/user-preferences/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/horizontal-nav-tabs.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/components/safety-first.tsx","webpack:///./packages/console-shared/src/components/error/fallbacks/ErrorBoundaryFallbackInline.tsx","webpack:///./packages/console-shared/src/components/error/fallbacks/withFallback.tsx","webpack:///./packages/console-shared/src/components/badges/InlineBadge.tsx","webpack:///./packages/console-shared/src/hooks/previous.ts","webpack:///./packages/console-shared/src/components/query-browser/theme.ts","webpack:///./public/components/utils/types.ts","webpack:///./public/components/utils/inject.js","webpack:///./public/module/k8s/managed-by.ts","webpack:///./packages/console-plugin-shared/src/hooks/index.ts","webpack:///./public/components/ThemeProvider.tsx","webpack:///./packages/console-shared/src/components/catalog/service/CatalogExtensionHookResolver.tsx","webpack:///./packages/console-app/src/queries.ts","webpack:///./packages/console-app/src/components/user-preferences/perspective/usePreferredPerspective.ts","webpack:///./packages/console-app/src/components/user-preferences/language/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/object.ts","webpack:///./packages/console-app/src/components/dashboards-page/status.ts","webpack:///./packages/console-app/src/components/detect-namespace/namespace.ts","webpack:///./public/imgs/logos/serverlessfx.svg","webpack:///./public/components/monitoring/labels.tsx","webpack:///./public/imgs/logos/redhat.svg","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/TerminalLoadingBox.tsx","webpack:///./public/components/utils/draggable-item-types.js","webpack:///./packages/topology/src/components/graph-view/components/nodes/decorators/getDefaultDecorators.ts","webpack:///./packages/topology/src/utils/connector-utils.ts","webpack:///./public/components/catalog/catalog-item-icon.tsx","webpack:///./packages/knative-plugin/src/index.ts","webpack:///./public/components/routes.tsx","webpack:///./public/components/graphs/utils.ts","webpack:///./packages/operator-lifecycle-manager/src/components/index.tsx","webpack:///./public/components/pod.tsx","webpack:///./packages/console-shared/src/components/dashboard/status-card/state-utils.ts","webpack:///./public/components/utils/details-page.tsx","webpack:///./packages/knative-plugin/src/utils/get-knative-resources.ts","webpack:///./public/components/utils/label-list.tsx","webpack:///./public/components/utils/alerts.tsx","webpack:///./packages/console-shared/src/utils/utils.ts","webpack:///./packages/console-shared/src/hooks/useNotificationAlerts.ts","webpack:///./packages/console-shared/src/components/namespace/index.tsx","webpack:///./packages/service-binding-plugin/src/utils.ts","webpack:///./packages/console-shared/src/components/actions/menu/ActionMenuItem.tsx","webpack:///./packages/console-shared/src/components/getting-started/index.ts","webpack:///./packages/console-shared/src/components/toast/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/components/status/Status.tsx","webpack:///./public/components/utils/firehose.jsx","webpack:///./public/components/configmap-and-secret-data.tsx","webpack:///./public/components/row-filter.jsx","webpack:///./public/components/utils/documentation.tsx","webpack:///./packages/console-shared/src/hooks/perspective-utils.ts","webpack:///./packages/console-plugin-shared/src/hooks/useForceRender.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/components/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/components/utils/resource-status.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/app/components/utils/rbac.tsx","webpack:///./public/module/k8s/label-selector.js","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/useK8sWatchResources.ts","webpack:///./public/components/utils/expand-collapse.tsx","webpack:///./packages/console-shared/src/components/badges/DevPreviewBadge.tsx","webpack:///./packages/console-plugin-shared/src/hooks/useResizeObserver.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/api/internal-types.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/flags.ts","webpack:///./public/components/utils/number-spinner.tsx","webpack:///./packages/operator-lifecycle-manager/src/status/csv-status.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/cluster-settings.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/details-item.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/feature-flags.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/core/actions/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/core/reducers/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/core/reducers/core.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/ws-factory.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/redux.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/components/utils/camel-case-wrap.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/app/components/status/PopoverStatus.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/app/constants.ts","webpack:///./packages/console-plugin-sdk/src/typings/kebab-actions.ts","webpack:///./packages/console-plugin-sdk/src/typings/guided-tour.ts","webpack:///./packages/console-shared/src/components/badges/TechPreviewBadge.tsx","webpack:///./packages/console-shared/src/hooks/useCanClusterUpgrade.ts","webpack:///./public/components/utils/line-buffer.ts","webpack:///./public/components/utils/promise-component.tsx","webpack:///./packages/console-shared/src/utils/useCombineRefs.ts","webpack:///./packages/console-shared/src/components/close-button/CloseButton.tsx","webpack:///./packages/console-app/src/components/user-preferences/namespace/index.ts","webpack:///./public/components/RBAC/rules.jsx","webpack:///./public/components/factory/table.tsx","webpack:///./public/components/ingress.jsx","webpack:///./public/components/utils/dom-utils.tsx","webpack:///./packages/console-shared/src/hooks/useScrollContainer.ts","webpack:///./public/components/modals/labels-modal.tsx","webpack:///./packages/patternfly/src/components/notification-drawer/notification-drawer-heading.tsx","webpack:///./packages/console-shared/src/utils/keyword-filter.ts","webpack:///./packages/console-shared/src/utils/order-extensions.ts","webpack:///./packages/console-shared/src/hooks/useServicesWatcher.ts","webpack:///./packages/console-shared/src/hooks/post-form-submit-action.ts","webpack:///./packages/console-shared/src/hooks/hpa-hooks.ts","webpack:///./packages/console-shared/src/components/dropdown/ResourceDropdown.tsx","webpack:///./packages/console-shared/src/components/status/statuses.tsx","webpack:///./packages/console-shared/src/components/status/SecondaryStatus.tsx","webpack:///./packages/console-shared/src/components/formik-fields/InputField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/RadioButtonField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/RadioGroupField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/field-types.ts","webpack:///./packages/console-shared/src/components/pod/PodStatus.tsx","webpack:///./packages/console-shared/src/components/drawer/Drawer.tsx","webpack:///./packages/console-shared/src/components/virtualized-grid/index.ts","webpack:///./packages/console-shared/src/components/spotlight/index.ts","webpack:///./packages/console-shared/src/components/toast/ToastProvider.tsx","webpack:///./packages/console-shared/src/components/catalog/catalog-view/CatalogCategories.tsx","webpack:///./public/imgs/logos/catalog-icon.svg","webpack:///./packages/console-shared/src/components/catalog/catalog-view/CatalogEmptyState.tsx","webpack:///./packages/console-shared/src/components/catalog/catalog-view/CatalogGrid.tsx","webpack:///./packages/console-shared/src/components/catalog/catalog-view/CatalogToolbar.tsx","webpack:///./packages/console-shared/src/components/catalog/catalog-view/CatalogTypeSelector.tsx","webpack:///./packages/console-shared/src/components/catalog/catalog-view/CatalogView.tsx","webpack:///./packages/console-shared/src/components/catalog/details/CatalogDetailsModal.tsx","webpack:///./packages/console-shared/src/components/catalog/hooks/useCtaLink.ts","webpack:///./packages/console-shared/src/components/catalog/details/CatalogDetailsPanel.tsx","webpack:///./packages/console-shared/src/components/catalog/hooks/useCatalogExtensions.ts","webpack:///./packages/console-shared/src/components/catalog/CatalogTile.tsx","webpack:///./packages/console-shared/src/components/progressive-list/ProgressiveListFooter.tsx","webpack:///./packages/console-shared/src/components/progressive-list/ProgressiveListItem.tsx","webpack:///./packages/console-app/src/components/user-preferences/language/useLanguage.ts","webpack:///./packages/console-app/src/components/quick-starts/utils/quick-start-context.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/app/configSetup.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/k8s.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/useModelsLoaded.ts","webpack:///./packages/console-shared/src/components/error/fallbacks/ErrorDetailsBlock.tsx","webpack:///./public/module/k8s/container.ts","webpack:///./public/components/resource-dropdown.tsx","webpack:///./packages/console-shared/src/components/namespace/NamespaceMenuToggle.tsx","webpack:///./public/components/useMirroredLocalState.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/modal-support/ModalProvider.tsx","webpack:///./public/components/monitoring/table-pagination.tsx","webpack:///./packages/console-shared/src/components/formik-fields/ToggleableFieldBase.tsx","webpack:///./packages/console-shared/src/components/formik-fields/BaseInputField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/multi-column-field/MultiColumnFieldFooter.tsx","webpack:///./packages/console-shared/src/components/formik-fields/text-column-field/TextColumnItemContent.tsx","webpack:///./packages/console-shared/src/components/Tooltip/Tooltip.tsx","webpack:///./packages/webterminal-plugin/src/redux/actions/cloud-shell-dispatchers.ts","webpack:///./packages/console-shared/src/components/actions/menu/ActionMenuContent.tsx","webpack:///./packages/console-shared/src/components/actions/menu/ActionMenuToggle.tsx","webpack:///./packages/console-app/src/components/nav/confirmNavUnpinModal.tsx","webpack:///./packages/console-app/src/components/tour/index.ts","webpack:///./packages/console-app/src/components/nav/NavLink.tsx","webpack:///./packages/console-app/src/components/nav/NavItemHref.tsx","webpack:///./packages/console-app/src/components/nav/useNavExtensionForPerspective.ts","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/MultiTabbedTerminal.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/setup/CloudShellSetupForm.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/url.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/models/index.ts","webpack:///./public/components/monitoring/kebab-dropdown.tsx","webpack:///./public/imgs/logos/openjdk.svg","webpack:///./packages/console-app/src/components/tour/StepComponent.tsx","webpack:///./public/imgs/openshift-logo.svg","webpack:///./public/components/utils/telemetry.ts","webpack:///./packages/console-shared/src/utils/yaml.ts","webpack:///./public/components/modals/error-modal.tsx","webpack:///./public/components/graphs/prometheus-graph.tsx","webpack:///./public/components/namespace-bar.tsx","webpack:///./packages/metal3-plugin/src/selectors/index.ts","webpack:///./public/components/utils/horizontal-nav.tsx","webpack:///./packages/console-shared/src/components/dashboard/activity-card/ActivityBody.tsx","webpack:///./packages/helm-plugin/src/models/index.ts","webpack:///./public/components/utils/name-value-editor.jsx","webpack:///./public/components/factory/Table/active-columns-hook.ts","webpack:///./packages/service-binding-plugin/src/types.ts","webpack:///./public/components/pod-traffic.tsx","webpack:///./packages/console-app/src/components/quick-starts/loader/QuickStartsLoader.tsx","webpack:///./packages/console-app/src/status/index.ts","webpack:///./public/components/monitoring/alerting.tsx","webpack:///./packages/console-shared/src/components/actions/LazyActionMenu.tsx","webpack:///./public/components/utils/list-dropdown.jsx","webpack:///./packages/console-dynamic-plugin-sdk/src/perspective/useActivePerspective.ts","webpack:///./packages/console-shared/src/hooks/useLabelsModal.tsx","webpack:///./public/components/graphs/status.jsx","webpack:///./packages/console-shared/src/hooks/useAnnotationsModal.tsx","webpack:///./packages/patternfly/src/components/notification-drawer/notification-entry.tsx","webpack:///./packages/console-shared/src/components/virtualized-grid/VirtualizedGrid.tsx","webpack:///./packages/container-security/src/components/summary.tsx","webpack:///./packages/console-app/src/components/user-preferences/UserPreferencePage.tsx","webpack:///./public/components/service.jsx","webpack:///./packages/console-app/src/components/detect-namespace/useLastNamespace.ts","webpack:///./public/components/modals/tags.tsx","webpack:///./public/components/utils/build-utils.ts","webpack:///./public/components/modals/delete-modal.tsx","webpack:///./public/components/monitoring/dashboards/index.tsx","webpack:///./public/components/monitoring/metrics.tsx","webpack:///./public/components/monitoring/silence-form.tsx","webpack:///./public/components/utils/value-from-pair.jsx","webpack:///./public/components/search.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/app/k8s/api-discovery/discovery-cache.ts","webpack:///./public/actions/features.gql","webpack:///./packages/console-app/src/components/dashboards-page/activity.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/usePrevious.ts","webpack:///./packages/console-app/src/components/detect-namespace/checkNamespaceExists.ts","webpack:///./packages/console-shared/src/hooks/useDetailsItemExtensionsForResource.ts","webpack:///./packages/console-shared/src/components/details-page/ExtensionDetailsItem.tsx","webpack:///./packages/knative-plugin/src/imgs/event-sink.svg","webpack:///./packages/knative-plugin/src/imgs/event-source.svg","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/dashboard-data-source.ts","webpack:///./packages/console-app/src/components/user-preferences/synced-editor/index.ts","webpack:///./packages/console-shared/src/components/virtualized-grid/Cell.tsx","webpack:///./public/imgs/logos/golang.svg","webpack:///./packages/gitops-plugin/src/models/index.ts","webpack:///./packages/knative-plugin/src/utils/kebab-actions.ts","webpack:///./packages/topology/src/operators/operatorResources.ts","webpack:///./public/components/search-filter-dropdown.tsx","webpack:///./public/components/create-resource.tsx","webpack:///./public/components/console-notifier.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/const.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/runtime/plugin-loader.ts","webpack:///./packages/topology/src/const.ts","webpack:///./packages/pipelines-plugin/src/models/index.ts","webpack:///./packages/console-app/src/components/pdb/PodDisruptionBudgetField.tsx","webpack:///./public/components/volumes-table.tsx","webpack:///./packages/console-shared/src/components/dashboard/status-card/StatusPopup.tsx","webpack:///./packages/knative-plugin/src/types.ts","webpack:///./packages/console-app/src/status/node.ts","webpack:///./packages/console-shared/src/constants/resource.ts","webpack:///./packages/console-shared/src/hooks/promise-handler.ts","webpack:///./public/components/markdown-view.tsx","webpack:///./packages/console-app/src/status/snapshot.ts","webpack:///./packages/console-app/src/components/modals/service-binding/index.ts","webpack:///./packages/topology/src/models/index.ts","webpack:///./packages/console-shared/src/components/pod/PodRing.tsx","webpack:///./packages/console-plugin-shared/src/index.ts","webpack:///./packages/operator-lifecycle-manager/src/components/operator-group.tsx","webpack:///./packages/console-shared/src/components/formik-fields/SelectorInputField.tsx","webpack:///./packages/console-shared/src/components/form-utils/index.ts","webpack:///./public/models/yaml-templates.ts","webpack:///./packages/console-shared/src/components/shortcuts/Shortcut.tsx","webpack:///./packages/metal3-plugin/src/hooks/useMaintenanceCapability.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/pvc.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/yaml-templates.ts","webpack:///./packages/knative-plugin/src/components/modals/index.ts","webpack:///./packages/console-shared/src/components/actions/index.ts","webpack:///./packages/service-binding-plugin/src/components/service-binding-utils/ServiceBindingAlerts.tsx","webpack:///./packages/rhoas-plugin/src/models/rhoas.ts","webpack:///./public/module/k8s/swagger.ts","webpack:///./packages/console-shared/src/utils/operator-utils.ts","webpack:///./packages/console-shared/src/components/shortcuts/index.ts","webpack:///./packages/console-shared/src/components/modals/index.ts","webpack:///./packages/pipelines-plugin/src/models/pipelines.ts","webpack:///./packages/topology/src/models/gitops-primer.ts","webpack:///./packages/console-shared/src/components/index.ts","webpack:///./public/components/utils/field-level-help.tsx","webpack:///./public/components/AsyncCodeEditor.tsx","webpack:///./packages/console-shared/src/hooks/select-list.ts","webpack:///./packages/console-shared/src/hooks/usePrometheusGate.ts","webpack:///./packages/console-shared/src/components/formik-fields/index.ts","webpack:///./packages/console-shared/src/components/synced-editor/useEditorType.ts","webpack:///./packages/console-shared/src/components/utils/index.ts","webpack:///./packages/console-shared/src/components/quick-search/QuickSearchIcon.tsx","webpack:///./packages/console-app/src/components/nodes/csr.ts","webpack:///./packages/console-shared/src/hooks/useK8sModels.ts","webpack:///./packages/console-shared/src/components/badges/index.ts","webpack:///./public/components/graphs/themes.ts","webpack:///./public/components/autocomplete.tsx","webpack:///./packages/console-app/src/components/pdb/utils/get-pdb-resources.ts","webpack:///./public/components/utils/managed-by.tsx","webpack:///./public/components/utils/truncate-middle.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/api/dynamic-core-api.ts","webpack:///./packages/knative-plugin/src/actions/add-event-source.tsx","webpack:///./packages/knative-plugin/src/imgs/channel.svg","webpack:///./packages/knative-plugin/src/actions/add-trigger.ts","webpack:///./packages/knative-plugin/src/actions/add-subscription.ts","webpack:///./packages/knative-plugin/src/actions/knatify.ts","webpack:///./public/components/monitoring/alertmanager/alertmanager-config.tsx","webpack:///./packages/console-shared/src/hooks/useCopyCodeModal.tsx","webpack:///./packages/console-shared/src/components/dropdown/index.ts","webpack:///./packages/console-shared/src/selectors/machine.ts","webpack:///./public/imgs/logos/helm.svg","webpack:///./public/imgs/logos/openshift.svg","webpack:///./packages/dev-console/src/components/topology/bindable-services/fetch-bindable-services-utils.ts","webpack:///./packages/metal3-plugin/src/constants/bare-metal-host.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/actions.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/add-actions.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/breadcrumbs.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/catalog.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/cluster-configuration.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/cluster-overview.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/context-providers.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/create-resource.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/dashboards.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/file-upload.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/import-environments.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/navigation.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/notification-alert.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/pages.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/perspectives.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/project-overview.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/redux.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/storage-class-provisioner.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/storage-provider.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/telemetry.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/topology-details.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/topology.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/user-preferences.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/extensions/node.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/perspective/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/index.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/AppInitSDK.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/app/components/factory/ListPage/ListPageBody.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/app/core/index.ts","webpack:///./packages/console-shared/src/constants/pod.ts","webpack:///./packages/console-shared/src/constants/ui.ts","webpack:///./packages/console-plugin-sdk/src/typings/base.ts","webpack:///./packages/console-plugin-sdk/src/typings/dashboards.ts","webpack:///./packages/console-plugin-sdk/src/typings/features.ts","webpack:///./packages/console-plugin-sdk/src/typings/models.ts","webpack:///./packages/console-plugin-sdk/src/typings/overview.ts","webpack:///./packages/console-plugin-sdk/src/typings/pages.ts","webpack:///./packages/console-plugin-sdk/src/typings/horizontal-nav.ts","webpack:///./packages/console-plugin-sdk/src/typings/post-form-submit.ts","webpack:///./packages/console-plugin-sdk/src/typings/detail-page-bread-crumbs.ts","webpack:///./public/module/k8s/job.js","webpack:///./public/module/k8s/resource.ts","webpack:///./packages/console-plugin-sdk/src/api/withExtensions.tsx","webpack:///./public/module/k8s/cluster-operator.ts","webpack:///./public/module/k8s/template.ts","webpack:///./public/module/k8s/types.ts","webpack:///./packages/console-shared/src/components/error/fallbacks/ErrorBoundaryPage.tsx","webpack:///./packages/console-shared/src/components/error/fallbacks/ErrorBoundaryInline.tsx","webpack:///./packages/console-shared/src/components/badges/badge-factory.tsx","webpack:///./packages/console-shared/src/components/badges/EmptyStateResourceBadge.tsx","webpack:///./packages/console-shared/src/components/text/index.ts","webpack:///./packages/console-shared/src/components/text/ClampedText.tsx","webpack:///./packages/console-shared/src/hooks/document-listener.ts","webpack:///./packages/console-shared/src/hooks/fullscreen.ts","webpack:///./packages/console-shared/src/hooks/scroll.ts","webpack:///./packages/console-shared/src/hooks/useScrollShadows.ts","webpack:///./packages/console-shared/src/hooks/plugins-overview-tab-section.ts","webpack:///./packages/helm-plugin/src/models/helm.ts","webpack:///./public/components/utils/selector-input.jsx","webpack:///./public/components/utils/resource-log.tsx","webpack:///./public/components/factory/details.tsx","webpack:///./public/components/graphs/tooltip.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/useK8sModels.ts","webpack:///./packages/console-app/src/components/user-preferences/namespace/NamespaceDropdown.tsx","webpack:///./packages/console-app/src/components/user-preferences/search/useExactSearch.ts","webpack:///./packages/console-shared/src/constants/auth.ts","webpack:///./public/components/factory/list-page.tsx","webpack:///./public/components/factory/table-data-hook.ts","webpack:///./packages/console-shared/src/components/query-browser/QueryBrowser.tsx","webpack:///./public/components/utils/disabled.tsx","webpack:///./public/components/utils/toggle-play.jsx","webpack:///./public/components/utils/cloud-provider.js","webpack:///./public/components/utils/router-hooks.ts","webpack:///./public/components/utils/download-button.tsx","webpack:///./public/components/utils/entitlements.ts","webpack:///./public/components/utils/build-strategy.tsx","webpack:///./public/components/utils/build-hooks.tsx","webpack:///./public/components/utils/webhooks.tsx","webpack:///./public/components/utils/scroll-to-top-on-mount.tsx","webpack:///./public/components/utils/container-table.tsx","webpack:///./public/components/utils/simple-tab-nav.tsx","webpack:///./public/components/utils/request-size-input.tsx","webpack:///./public/components/utils/workload-pause.tsx","webpack:///./public/components/utils/list-input.tsx","webpack:///./public/components/utils/volume-type.tsx","webpack:///./public/components/utils/skeleton-catalog.tsx","webpack:///./public/components/utils/hint-block.tsx","webpack:///./public/components/utils/operator-backed-owner-references.tsx","webpack:///./public/components/utils/release-notes-link.tsx","webpack:///./packages/patternfly/src/components/index.ts","webpack:///./packages/patternfly/src/components/notification-drawer/index.ts","webpack:///./packages/patternfly/src/components/notification-drawer/notification-drawer.tsx","webpack:///./packages/patternfly/src/components/notification-drawer/notification-category.tsx","webpack:///./packages/console-shared/src/hooks/useBuildConfigsWatcher.ts","webpack:///./packages/console-shared/src/utils/grammar.ts","webpack:///./packages/console-shared/src/utils/pod-ring-utils.ts","webpack:///./packages/knative-plugin/src/actions/sink-source.ts","webpack:///./packages/console-shared/src/utils/pod-resource-utils.ts","webpack:///./public/components/monitoring/poll-interval-dropdown.tsx","webpack:///./public/components/monitoring/fetch-alerts.tsx","webpack:///./packages/console-shared/src/utils/validation/index.ts","webpack:///./packages/console-shared/src/utils/validation/validation.ts","webpack:///./packages/console-shared/src/utils/table-utils.ts","webpack:///./packages/console-shared/src/utils/storage-utils.ts","webpack:///./packages/console-shared/src/utils/icon-utils.ts","webpack:///./packages/console-shared/src/utils/namespace.ts","webpack:///./packages/console-shared/src/utils/label-filter.ts","webpack:///./packages/console-shared/src/utils/alert-utils.ts","webpack:///./packages/console-shared/src/utils/helm-utils.ts","webpack:///./packages/console-shared/src/utils/sample-utils.ts","webpack:///./packages/console-shared/src/utils/multiselectdropdown.tsx","webpack:///./packages/console-shared/src/utils/xterm-addon-fullscreen.ts","webpack:///./packages/console-shared/src/utils/yup-validations.ts","webpack:///./packages/console-shared/src/utils/console-plugin.ts","webpack:///./packages/console-shared/src/hooks/useJobsForCronJobWatcher.ts","webpack:///./packages/console-shared/src/hooks/usePodsWatcher.ts","webpack:///./packages/console-shared/src/hooks/useReplicationControllersWatcher.ts","webpack:///./packages/console-shared/src/hooks/useRoutesWatcher.ts","webpack:///./packages/console-shared/src/hooks/csv-watch-hook.ts","webpack:///./packages/console-shared/src/hooks/useTabbedTableBreadcrumb.ts","webpack:///./packages/console-shared/src/hooks/usePinnedResources.ts","webpack:///./packages/console-shared/src/hooks/useIsMobile.ts","webpack:///./packages/console-shared/src/hooks/useBoundingClientRect.ts","webpack:///./packages/console-shared/src/hooks/useEventListener.ts","webpack:///./packages/console-shared/src/components/modal/Modal.tsx","webpack:///./packages/console-shared/src/hooks/useCopyLoginCommands.ts","webpack:///./packages/console-shared/src/components/contextMenu/index.ts","webpack:///./packages/console-shared/src/components/contextMenu/PopupKebabMenu.tsx","webpack:///./packages/console-shared/src/components/dropdown/dropdown-with-switch/DropdownWithSwitch.tsx","webpack:///./packages/console-shared/src/selectors/machineSet.ts","webpack:///./packages/console-shared/src/selectors/namespace.ts","webpack:///./packages/console-shared/src/selectors/storage.ts","webpack:///./packages/console-shared/src/components/form-utils/FormFooter.tsx","webpack:///./packages/console-shared/src/components/form-utils/FormHeader.tsx","webpack:///./packages/console-shared/src/components/form-utils/PageBody.tsx","webpack:///./packages/console-shared/src/components/form-utils/FlexForm.tsx","webpack:///./packages/console-shared/src/components/form-utils/ActionGroupWithIcons.tsx","webpack:///./packages/console-shared/src/components/form-utils/FormBody.tsx","webpack:///./packages/console-shared/src/components/formik-fields/CheckboxField.tsx","webpack:///./packages/console-shared/src/components/status/Status.tsx","webpack:///./packages/console-shared/src/components/status/NodeUnschedulableStatus.tsx","webpack:///./packages/console-shared/src/components/formik-fields/DropdownField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/DroppableFileInputField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/EnvironmentField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/FormSelectField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/multi-column-field/MultiColumnField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/NSDropdownField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/NumberSpinnerField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/ResourceDropdownField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/ResourceLimitField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/SwitchField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/TextAreaField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/CodeEditorField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/item-selector-field/ItemSelectorField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/InputGroupField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/text-column-field/TextColumnField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/DynamicFormField.tsx","webpack:///./packages/console-shared/src/components/formik-fields/SyncedEditorField.tsx","webpack:///./packages/console-app/src/components/user-preferences/synced-editor/usePreferredCreateEditMethod.ts","webpack:///./packages/console-shared/src/components/formik-fields/SelectInputField.tsx","webpack:///./packages/console-shared/src/components/getting-started/GettingStartedGrid.tsx","webpack:///./packages/console-shared/src/components/getting-started/GettingStartedCard.tsx","webpack:///./packages/console-shared/src/components/getting-started/RestoreGettingStartedButton.tsx","webpack:///./packages/console-shared/src/components/getting-started/QuickStartGettingStartedCard.tsx","webpack:///./packages/console-app/src/components/quick-starts/utils/useQuickStarts.ts","webpack:///./packages/console-shared/src/components/getting-started/GettingStartedExpandableGrid.tsx","webpack:///./packages/console-shared/src/components/lists/index.ts","webpack:///./packages/console-shared/src/components/lists/DetailPropertyList.tsx","webpack:///./packages/console-shared/src/components/lists/DetailPropertyListItem.tsx","webpack:///./packages/console-shared/src/components/log/index.ts","webpack:///./packages/console-shared/src/components/log/LogSnippet.tsx","webpack:///./packages/console-shared/src/components/pod/index.ts","webpack:///./packages/console-shared/src/components/shortcuts/ShortcutTable.tsx","webpack:///./packages/console-shared/src/components/drawer/index.ts","webpack:///./packages/console-shared/src/components/health-checks/index.ts","webpack:///./packages/console-shared/src/components/health-checks/HealthChecksAlert.tsx","webpack:///./packages/console-shared/src/components/alerts/index.ts","webpack:///./packages/console-shared/src/components/alerts/AlertSeverityIcon.tsx","webpack:///./packages/console-shared/src/components/popover/index.ts","webpack:///./packages/console-shared/src/components/popover/Popover.tsx","webpack:///./packages/console-shared/src/components/popover/const.ts","webpack:///./packages/console-shared/src/components/layout/index.ts","webpack:///./packages/console-shared/src/components/layout/PageLayout.tsx","webpack:///./packages/console-shared/src/components/utils/ConsolePluginRadioInputs.tsx","webpack:///./packages/console-shared/src/components/utils/ConsolePluginWarning.tsx","webpack:///./packages/console-shared/src/components/hpa/index.ts","webpack:///./packages/console-shared/src/components/hpa/DeleteHPAModal.tsx","webpack:///./packages/console-shared/src/components/multi-tab-list/index.ts","webpack:///./packages/console-shared/src/components/multi-tab-list/MultiTabListPage.tsx","webpack:///./packages/console-shared/src/components/spotlight/Spotlight.tsx","webpack:///./packages/console-shared/src/components/markdown-highlight-extension/index.ts","webpack:///./packages/console-shared/src/components/markdown-highlight-extension/MarkdownHighlightExtension.tsx","webpack:///./packages/console-shared/src/components/custom-resource-list/index.ts","webpack:///./packages/console-shared/src/components/custom-resource-list/CustomResourceList.tsx","webpack:///./packages/console-shared/src/components/toast/useToast.ts","webpack:///./packages/console-shared/src/components/markdown-extensions/index.ts","webpack:///./packages/console-shared/src/components/markdown-extensions/MarkdownCopyClipboard.tsx","webpack:///./packages/console-shared/src/components/markdown-extensions/MarkdownExecuteSnippet.tsx","webpack:///./packages/console-shared/src/components/markdown-extensions/inline-clipboard-extension.ts","webpack:///./packages/console-shared/src/components/markdown-extensions/inline-execute-extension.ts","webpack:///./packages/console-shared/src/components/markdown-extensions/multiline-clipboard-extension.ts","webpack:///./packages/console-shared/src/components/markdown-extensions/multiline-execute-extension.ts","webpack:///./packages/console-shared/src/components/actions/menu/ActionMenu.tsx","webpack:///./packages/console-shared/src/components/quick-search/index.ts","webpack:///./packages/console-shared/src/components/quick-search/QuickSearchController.tsx","webpack:///./packages/console-shared/src/components/catalog/catalog-view/index.ts","webpack:///./packages/console-plugin-shared/src/components/index.ts","webpack:///./packages/console-plugin-shared/src/components/OverviewPage/index.ts","webpack:///./packages/console-plugin-shared/src/components/OverviewPage/OverviewDetailItem.tsx","webpack:///./packages/console-plugin-shared/src/components/Markdown/index.ts","webpack:///./packages/console-plugin-shared/src/components/Markdown/MarkdownView.tsx","webpack:///./packages/console-plugin-shared/src/datetime/index.ts","webpack:///./packages/console-shared/src/components/catalog/details/index.ts","webpack:///./packages/console-shared/src/components/catalog/hooks/index.ts","webpack:///./packages/console-shared/src/components/catalog/hooks/useCatalogCategories.ts","webpack:///./packages/console-shared/src/components/catalog/service/index.ts","webpack:///./packages/console-shared/src/components/catalog/service/CatalogServiceProvider.tsx","webpack:///./packages/console-shared/src/components/catalog/CatalogController.tsx","webpack:///./packages/console-shared/src/components/progressive-list/index.ts","webpack:///./packages/console-shared/src/components/progressive-list/ProgressiveList.tsx","webpack:///./packages/console-shared/src/types/index.ts","webpack:///./packages/console-shared/src/sorts/index.ts","webpack:///./packages/console-shared/src/sorts/nodes.ts","webpack:///./packages/console-shared/src/sorts/pvc.ts","webpack:///./packages/console-shared/src/sorts/snapshot.ts","webpack:///./packages/console-shared/src/hoc/index.ts","webpack:///./packages/console-shared/src/hoc/withPostFormSubmissionCallback.tsx","webpack:///./packages/console-shared/src/hoc/withUserSettingsCompatibility.tsx","webpack:///./packages/console-shared/src/hoc/withUserSettings.tsx","webpack:///./packages/console-shared/src/hoc/withActivePerspective.tsx","webpack:///./packages/console-shared/src/hoc/withTelemetry.tsx","webpack:///./packages/dev-console/src/components/topology/bindable-services/bindable-service-resources.ts","webpack:///./packages/dev-console/src/components/topology/bindable-services/models.ts","webpack:///./packages/gitops-plugin/src/models/gitops.ts","webpack:///./packages/metal3-plugin/src/constants/node-maintenance.ts","webpack:///./packages/metal3-plugin/src/selectors/node-maintenance.ts","webpack:///./packages/metal3-plugin/src/selectors/baremetal-hosts.ts","webpack:///./packages/topology/src/models/application.ts","webpack:///./packages/console-shared/src/hooks/create-resource-hook.ts","webpack:///./packages/console-app/src/components/tour/GuidedTour.tsx","webpack:///./packages/console-app/src/components/tour/GuidedTourMastheadTrigger.tsx","webpack:///./packages/console-app/src/components/tabs/Tabs.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/useCloudShellNamespace.ts","webpack:///./packages/console-app/src/components/detect-perspective/useValuesForPerspectiveContext.ts","webpack:///./packages/console-app/src/components/user-preferences/perspective/index.ts","webpack:///./packages/console-app/src/components/user-preferences/perspective/PerspectiveDropdown.tsx","webpack:///./packages/console-app/src/components/user-preferences/language/LanguageDropdown.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/api/internal-api.ts","webpack:///./packages/console-plugin-sdk/src/utils/useTranslatedExtensions.ts","webpack:///./packages/console-plugin-sdk/src/utils/useTranslationExt.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/k8s/api-discovery/api-discovery.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/utils/k8s/k8s-get-resource.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/useReduxStore.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/app/k8s/reducers/k8s.ts","webpack:///./public/graphql/client.gql","webpack:///./packages/console-app/src/components/user-preferences/UserPreferenceCheckboxField.tsx","webpack:///./packages/console-shared/src/hooks/useUserSettingsLocalStorage.ts","webpack:///./packages/console-app/src/components/user-preferences/UserPreferenceCustomField.tsx","webpack:///./packages/console-app/src/components/user-preferences/UserPreferenceDropdownField.tsx","webpack:///./public/components/utils/useToggleLineBuffer.ts","webpack:///./public/propTypes.ts","webpack:///./public/components/routes/route-metrics.tsx","webpack:///./public/imgs/restricted-sign.svg","webpack:///./public/components/overview/constants.ts","webpack:///./public/components/modals/add-secret-to-workload.tsx","webpack:///./packages/console-app/src/components/detect-namespace/getValueForNamespace.ts","webpack:///./public/components/useRowFilterFix.ts","webpack:///./public/components/useLabelSelectionFix.ts","webpack:///./public/components/useSearchFilters.ts","webpack:///./public/components/cluster-settings/filterNonUpgradableResources.ts","webpack:///./public/components/factory/details-breadcrumb-resolver.tsx","webpack:///./public/components/utils/event-stream.tsx","webpack:///./public/components/pod-logs.jsx","webpack:///./public/components/factory/Table/VirtualizedTableBody.tsx","webpack:///./packages/console-app/src/components/pdb/AvailabilityRequirement.tsx","webpack:///./public/components/utils/resource-metrics.tsx","webpack:///./public/components/build-logs.jsx","webpack:///./packages/console-shared/src/components/actions/loader/ActionsLoader.tsx","webpack:///./packages/console-shared/src/components/actions/loader/ActionsHookResolver.tsx","webpack:///./packages/console-shared/src/constants/monitoring.ts","webpack:///./public/components/monitoring/dashboards/bar-chart.tsx","webpack:///./public/components/monitoring/dashboards/graph.tsx","webpack:///./public/components/monitoring/dashboards/single-stat.tsx","webpack:///./public/components/monitoring/dashboards/table.tsx","webpack:///./public/components/monitoring/dashboards/timespan-dropdown.tsx","webpack:///./public/components/monitoring/dashboards/custom-time-range-modal.tsx","webpack:///./public/components/monitoring/hooks/useIsVisible.ts","webpack:///./public/components/monitoring/dashboards/useFetchDashboards.ts","webpack:///./public/components/monitoring/targets.tsx","webpack:///./public/components/monitoring/alertmanager/alertmanager-yaml-editor.tsx","webpack:///./public/imgs/network-policy-samples/1-deny-other-namespaces.svg","webpack:///./public/imgs/network-policy-samples/2-limit-certain-apps.svg","webpack:///./public/imgs/network-policy-samples/3-allow-ingress.svg","webpack:///./public/imgs/network-policy-samples/4-default-deny-all.svg","webpack:///./public/imgs/network-policy-samples/5-web-allow-external.svg","webpack:///./public/imgs/network-policy-samples/6-web-db-allow-all-ns.svg","webpack:///./public/imgs/network-policy-samples/7-web-allow-production.svg","webpack:///./packages/console-shared/src/components/dropdown/dropdown-with-switch/DropdownWithSwitchMenu.tsx","webpack:///./packages/console-shared/src/components/dropdown/dropdown-with-switch/DropdownWithSwitchGroups.tsx","webpack:///./packages/console-shared/src/components/dropdown/dropdown-with-switch/DropdownWithSwitchToggle.tsx","webpack:///./packages/console-shared/src/components/formik-fields/multi-column-field/multicolumn-field-utils.ts","webpack:///./packages/console-shared/src/components/formik-fields/multi-column-field/MultiColumnFieldHeader.tsx","webpack:///./packages/console-shared/src/components/formik-fields/multi-column-field/MultiColumnFieldRow.tsx","webpack:///./packages/console-shared/src/components/formik-fields/item-selector-field/SelectorCard.tsx","webpack:///./packages/console-shared/src/components/formik-fields/text-column-field/TextColumnItem.tsx","webpack:///./packages/console-shared/src/components/formik-fields/text-column-field/TextColumnItemWithDnd.tsx","webpack:///./packages/console-app/src/components/quick-starts/loader/QuickStartPermissionChecker.tsx","webpack:///./packages/console-app/src/components/quick-starts/utils/useQuickStartPermission.ts","webpack:///./packages/console-shared/src/hooks/useForceUpdate.ts","webpack:///./packages/console-shared/src/components/drawer/DraggableCoreIFrameFix.tsx","webpack:///./packages/console-shared/src/components/virtualized-grid/Grid.tsx","webpack:///./packages/console-shared/src/components/virtualized-grid/GroupByFilterGrid.tsx","webpack:///./packages/console-shared/src/components/spotlight/InteractiveSpotlight.tsx","webpack:///./packages/console-shared/src/components/spotlight/StaticSpotlight.tsx","webpack:///./packages/console-shared/src/components/popper/Tippy.tsx","webpack:///./packages/console-shared/src/components/quick-search/QuickSearchModal.tsx","webpack:///./packages/console-shared/src/components/quick-search/QuickSearchModalBody.tsx","webpack:///./packages/console-shared/src/components/quick-search/QuickSearchBar.tsx","webpack:///./packages/console-shared/src/components/quick-search/QuickSearchContent.tsx","webpack:///./packages/console-shared/src/components/quick-search/QuickSearchDetails.tsx","webpack:///./public/imgs/logos/3scale.svg","webpack:///./public/imgs/logos/aerogear.svg","webpack:///./public/imgs/logos/amq.svg","webpack:///./public/imgs/logos/angularjs.svg","webpack:///./public/imgs/logos/ansible.svg","webpack:///./public/imgs/logos/apache.svg","webpack:///./public/imgs/logos/beaker.svg","webpack:///./public/imgs/logos/build-icon.svg","webpack:///./public/imgs/logos/camel.svg","webpack:///./public/imgs/logos/capedwarf.svg","webpack:///./public/imgs/logos/cassandra.svg","webpack:///./public/imgs/logos/clojure.svg","webpack:///./public/imgs/logos/codeigniter.svg","webpack:///./public/imgs/logos/cordova.png","webpack:///./public/imgs/logos/datagrid.svg","webpack:///./public/imgs/logos/datavirt.svg","webpack:///./public/imgs/logos/debian.svg","webpack:///./public/imgs/logos/decisionserver.svg","webpack:///./public/imgs/logos/django.svg","webpack:///./public/imgs/logos/dotnet.svg","webpack:///./public/imgs/logos/drupal.svg","webpack:///./public/imgs/logos/eap.svg","webpack:///./public/imgs/logos/elastic.svg","webpack:///./public/imgs/logos/erlang.svg","webpack:///./public/imgs/logos/fedora.svg","webpack:///./public/imgs/logos/freebsd.svg","webpack:///./public/imgs/logos/git.svg","webpack:///./public/imgs/logos/github.svg","webpack:///./public/imgs/logos/gitlab.svg","webpack:///./public/imgs/logos/glassfish.svg","webpack:///./public/imgs/logos/grails.svg","webpack:///./public/imgs/logos/hadoop.svg","webpack:///./public/imgs/logos/haproxy.svg","webpack:///./public/imgs/logos/infinispan.svg","webpack:///./public/imgs/logos/jboss.svg","webpack:///./public/imgs/logos/jenkins.svg","webpack:///./public/imgs/logos/jetty.svg","webpack:///./public/imgs/logos/joomla.svg","webpack:///./public/imgs/logos/jruby.svg","webpack:///./public/imgs/logos/js.svg","webpack:///./public/imgs/logos/knative.svg","webpack:///./public/imgs/logos/kubevirt.svg","webpack:///./public/imgs/logos/laravel.svg","webpack:///./public/imgs/logos/load-balancer.svg","webpack:///./public/imgs/logos/mariadb.svg","webpack:///./public/imgs/logos/mediawiki.svg","webpack:///./public/imgs/logos/memcached.svg","webpack:///./public/imgs/logos/mongodb.svg","webpack:///./public/imgs/logos/mssql.svg","webpack:///./public/imgs/logos/mysql-database.svg","webpack:///./public/imgs/logos/nginx.svg","webpack:///./public/imgs/logos/nodejs.svg","webpack:///./public/imgs/logos/openliberty.svg","webpack:///./public/imgs/logos/openstack.svg","webpack:///./public/imgs/logos/other-linux.svg","webpack:///./public/imgs/logos/other-unknown.svg","webpack:///./public/imgs/logos/perl.svg","webpack:///./public/imgs/logos/phalcon.svg","webpack:///./public/imgs/logos/php.svg","webpack:///./public/imgs/logos/play.svg","webpack:///./public/imgs/logos/postgresql.svg","webpack:///./public/imgs/logos/processserver.svg","webpack:///./public/imgs/logos/python.svg","webpack:///./public/imgs/logos/quarkus.svg","webpack:///./public/imgs/logos/rabbitmq.svg","webpack:///./public/imgs/logos/rails.svg","webpack:///./public/imgs/logos/react.svg","webpack:///./public/imgs/logos/redis.svg","webpack:///./public/imgs/logos/rh-integration.svg","webpack:///./public/imgs/logos/rh-spring-boot.svg","webpack:///./public/imgs/logos/rh-tomcat.svg","webpack:///./public/imgs/logos/ruby.svg","webpack:///./public/imgs/logos/rust.svg","webpack:///./public/imgs/logos/scala.svg","webpack:///./public/imgs/logos/shadowman.svg","webpack:///./public/imgs/logos/spring.svg","webpack:///./public/imgs/logos/spring-boot.svg","webpack:///./public/imgs/logos/sso.svg","webpack:///./public/imgs/logos/stackoverflow.svg","webpack:///./public/imgs/logos/suse.svg","webpack:///./public/imgs/logos/symfony.svg","webpack:///./public/imgs/logos/tomcat.svg","webpack:///./public/imgs/logos/ubuntu.svg","webpack:///./public/imgs/logos/vertx.svg","webpack:///./public/imgs/logos/wildfly.svg","webpack:///./public/imgs/logos/windows.svg","webpack:///./public/imgs/logos/wordpress.svg","webpack:///./public/imgs/logos/xamarin.svg","webpack:///./public/imgs/logos/zend.svg","webpack:///./public/imgs/logos/operator.svg","webpack:///./packages/console-shared/src/components/catalog/catalog-view/CatalogFilters.tsx","webpack:///./packages/console-shared/src/components/quick-search/QuickSearchList.tsx","webpack:///./packages/dev-console/src/components/guided-tour/index.ts","webpack:///./packages/gitops-plugin/src/const.ts","webpack:///./packages/insights-plugin/src/components/InsightsPopup/status.ts","webpack:///./packages/knative-plugin/src/topology/topology-plugin.ts","webpack:///./packages/operator-lifecycle-manager/src/components/dashboard/utils.ts","webpack:///./packages/topology/src/components/graph-view/components/nodes/decorators/defaultDecoratorsPlugin.ts","webpack:///./packages/topology/src/operators/operatorsTopologyPlugin.ts","webpack:///./packages/topology/src/operators/actions/index.ts","webpack:///./public/reducers/observe.ts","webpack:///./public/components/app-contents.tsx","webpack:///./public/components/global-notifications.jsx","webpack:///./public/components/impersonate-notifier.jsx","webpack:///./public/components/kube-admin-notifier.jsx","webpack:///./public/components/global-telemetry-notifications.tsx","webpack:///./public/components/masthead-toolbar.jsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/CloudShellMastheadButton.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/CloudShellMastheadAction.tsx","webpack:///./public/components/about-modal.tsx","webpack:///./public/module/status.js","webpack:///./packages/console-app/src/components/tour/utils.ts","webpack:///./packages/console-app/src/components/tour/TourStepComponent.tsx","webpack:///./packages/console-app/src/components/tour/steps/StepBadge.tsx","webpack:///./packages/console-app/src/components/tour/steps/StepContent.tsx","webpack:///./packages/console-app/src/components/tour/steps/StepFooter.tsx","webpack:///./packages/console-app/src/components/tour/steps/StepHeader.tsx","webpack:///./packages/console-app/src/components/nav/ClusterMenu.tsx","webpack:///./packages/console-app/src/components/nav/ClusterMenuToggle.tsx","webpack:///./public/components/feedback-local.jsx","webpack:///./public/imgs/okd-logo.svg","webpack:///./public/imgs/openshift-online-logo.svg","webpack:///./public/imgs/openshift-dedicated-logo.svg","webpack:///./public/imgs/openshift-service-on-aws-logo.svg","webpack:///./packages/console-app/src/components/nav/index.tsx","webpack:///./packages/console-app/src/components/nav/NavHeader.tsx","webpack:///./public/imgs/ACM-icon.svg","webpack:///./packages/console-app/src/components/nav/PerspectiveNav.tsx","webpack:///./packages/console-app/src/components/nav/PinnedResource.tsx","webpack:///./packages/console-app/src/components/nav/PluginNavItem.tsx","webpack:///./packages/console-app/src/components/nav/NavSection.tsx","webpack:///./packages/console-app/src/components/nav/useNavExtensionsForSection.ts","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/CloudShell.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/CloudShellDrawer.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/MinimizeRestoreButton.tsx","webpack:///./packages/console-app/src/components/tabs/index.ts","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/CloudShellTerminal.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/CloudShellExec.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/ExecuteCommand.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/Terminal.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/setup/CloudShellAdminSetup.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/setup/AdminNamespaceSection.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/setup/CloudShellAdvancedOption.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/setup/ImageSection.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/setup/TimeoutSection.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/setup/NamespaceSection.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/setup/CloudShellDeveloperSetup.tsx","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/useCloudShellWorkspace.ts","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/useActivityTick.ts","webpack:///./packages/webterminal-plugin/src/components/cloud-shell/CloudShellTab.tsx","webpack:///./packages/console-app/src/components/detect-perspective/DetectPerspective.tsx","webpack:///./packages/console-app/src/components/detect-perspective/PerspectiveDetector.tsx","webpack:///./packages/console-app/src/components/user-preferences/UserPreferenceForm.tsx","webpack:///./packages/console-app/src/components/user-preferences/UserPreferenceField.tsx","webpack:///./packages/console-app/src/components/user-preferences/utils/getUserPreferenceGroups.ts","webpack:///./packages/console-app/src/components/detect-perspective/useLastPerspective.ts","webpack:///./packages/console-app/src/components/detect-namespace/DetectNamespace.tsx","webpack:///./packages/console-app/src/components/detect-language/DetectLanguage.tsx","webpack:///./packages/console-app/src/components/flags/FeatureFlagExtensionLoader.tsx","webpack:///./packages/console-app/src/components/flags/FeatureFlagExtensionHookResolver.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/runtime/plugin-init.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/build-types.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/shared-modules-init.ts","webpack:///./packages/console-shared/src/components/dashboard/activity-card/EventItem.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/runtime/plugin-dependencies.ts","webpack:///./packages/console-dynamic-plugin-sdk/src/runtime/plugin-manifest.ts","webpack:///./packages/console-app/src/components/quick-starts/QuickStartDrawerAsync.tsx","webpack:///./packages/console-app/src/components/admission-webhook-warnings/AdmissionWebhookWarningNotifications.tsx","webpack:///./packages/console-shared/src/components/dashboard/status-card/HealthBody.tsx","webpack:///./packages/console-shared/src/components/dashboard/utilization-card/UtilizationBody.tsx","webpack:///./packages/console-shared/src/components/dashboard/utilization-card/UtilizationDurationDropdown.tsx","webpack:///./packages/console-shared/src/components/dashboard/DashboardGrid.tsx","webpack:///./packages/console-shared/src/components/dashboard/status-card/AlertsBody.tsx","webpack:///./packages/console-shared/src/components/dashboard/status-card/AlertItem.tsx","webpack:///./packages/console-shared/src/components/dashboard/status-card/HealthItem.tsx","webpack:///./packages/console-shared/src/components/dashboard/inventory-card/InventoryItem.tsx","webpack:///./packages/console-shared/src/components/dashboard/details-card/DetailsBody.tsx","webpack:///./packages/console-shared/src/components/dashboard/utilization-card/UtilizationItem.tsx","webpack:///./packages/console-shared/src/components/dashboard/activity-card/ActivityItem.tsx","webpack:///./public/components/AsyncResourceYAMLEditor.tsx","webpack:///./packages/console-dynamic-plugin-sdk/src/lib-internal.ts","webpack:///./packages/console-shared/src/hooks/useDeleteModal.tsx","webpack:///./public/components/app.jsx","webpack:///./packages/console-app/src/plugin.tsx","webpack:///./packages/console-telemetry-plugin/src/plugin.ts","webpack:///./packages/container-security/src/plugin.ts","webpack:///./packages/dev-console/src/plugin.tsx","webpack:///./packages/gitops-plugin/src/plugin.ts","webpack:///./packages/helm-plugin/src/plugin.ts","webpack:///./packages/insights-plugin/src/plugin.tsx","webpack:///./packages/knative-plugin/src/plugin.tsx","webpack:///./packages/kubevirt-plugin/src/plugin.tsx","webpack:///./packages/local-storage-operator-plugin/src/plugin.ts","webpack:///./packages/metal3-plugin/src/plugin.tsx","webpack:///./packages/network-attachment-definition-plugin/src/plugin.ts","webpack:///./packages/operator-lifecycle-manager/src/plugin.tsx","webpack:///./packages/pipelines-plugin/src/plugin.tsx","webpack:///./packages/rhoas-plugin/src/plugin.ts","webpack:///./packages/service-binding-plugin/src/plugin.ts","webpack:///./packages/shipwright-plugin/src/plugin.ts","webpack:///./packages/topology/src/plugin.tsx","webpack:///./packages/vsphere-plugin/src/plugin.ts","webpack:///./packages/webterminal-plugin/src/plugin.ts","webpack:///./packages/console-shared/src/hooks/useDashboardResources.ts","webpack:///./packages/console-dynamic-plugin-sdk/generated/schema/plugin-manifest.cjs"],"names":["codeRefSymbol","Symbol","applyCodeRefSymbol","ref","isEncodedCodeRef","obj","Object","getOwnPropertyNames","$codeRef","isExecutableCodeRef","getOwnPropertySymbols","codeRefErrorSymbol","resolveEncodedCodeRefs","extensions","entryModule","pluginID","errorCallback","map","e","properties","key","loader","moduleName","exportName","value","match","parseEncodedCodeRefValue","requestedModule","console","error","get","loadReferencedObject","defineProperty","resolveExtension","extension","valueResolutions","isCodeRefError","getCodeRefError","push","then","resolvedValue","warn","catch","setCodeRefError","PrometheusModel","kind","label","labelKey","labelPlural","labelPluralKey","apiGroup","apiVersion","abbr","namespaced","crd","plural","propagationPolicy","ServiceMonitorModel","PodMonitorModel","AlertmanagerModel","ServiceModel","id","PodModel","ContainerModel","DaemonSetModel","ReplicationControllerModel","HorizontalPodAutoscalerModel","ServiceAccountModel","ReplicaSetModel","DeploymentModel","DeploymentConfigModel","BuildConfigModel","BuildModel","TemplateModel","TemplateInstanceModel","ImageStreamModel","ImageStreamTagModel","ImageStreamImportsModel","JobModel","NodeModel","CertificateSigningRequestModel","EventModel","ComponentStatusModel","NamespaceModel","ProjectModel","ProjectRequestModel","IngressModel","RouteModel","ConfigMapModel","SecretModel","ClusterRoleBindingModel","ClusterRoleModel","RoleBindingModel","RoleModel","SelfSubjectAccessReviewModel","SelfSubjectReviewModel","ResourceAccessReviewsModel","LocalResourceAccessReviewsModel","PersistentVolumeModel","PersistentVolumeClaimModel","StatefulSetModel","ResourceQuotaModel","ClusterResourceQuotaModel","AppliedClusterResourceQuotaModel","NetworkPolicyModel","CustomResourceDefinitionModel","CronJobModel","StorageClassModel","LimitRangeModel","APIServiceModel","UserModel","GroupModel","MachineModel","MachineSetModel","MachineDeploymentModel","MachineConfigPoolModel","MachineConfigModel","MachineAutoscalerModel","MachineHealthCheckModel","ClusterOperatorModel","ClusterVersionModel","CSIDriverModel","ClusterAutoscalerModel","OAuthModel","InfrastructureModel","NetworkOperatorConfigModel","ConsoleOperatorConfigModel","ConsoleLinkModel","ConsoleCLIDownloadModel","ConsoleNotificationModel","ConsoleExternalLogLinkModel","ConsoleYAMLSampleModel","VolumeSnapshotModel","VolumeSnapshotClassModel","VolumeSnapshotContentModel","ConsolePluginModel","CloudCredentialModel","AuthenticationModel","MultiNetworkPolicyModel","healthStateMessage","state","t","OK","UNKNOWN","PROGRESS","UPDATING","WARNING","ERROR","LOADING","UPGRADABLE","NOT_AVAILABLE","healthStateMapping","priority","health","icon","title","className","ActionType","getActiveNamespace","getState","UI","getActiveUserName","username","getNamespaceMetric","ns","metric","metrics","getIn","metadata","name","getPodMetric","pod","namespace","getNodeMetric","node","getPVCMetric","pvc","formatNamespaceRoute","activeNamespace","originalPath","location","forceList","path","substr","window","SERVER_FLAGS","basePath","length","parts","split","filter","p","prefix","shift","previousNS","slice","join","search","hash","setCurrentLocation","SetCurrentLocation","setServiceLevel","serviceLevel","daysRemaining","clusterID","trialDateEnd","hasSecretAccess","SetServiceLevel","setActiveApplication","application","SetActiveApplication","setActiveNamespace","trim","sessionStorage","setItem","SetActiveNamespace","startImpersonate","dispatch","textEncoder","TextEncoder","info","module","imp","subprotocols","encodedName","encode","String","fromCharCode","apply","replace","close","stopImpersonate","sortList","listId","field","func","orderBy","SortList","selectOverviewDetailsTab","tab","SelectOverviewDetailsTab","updateOverviewMetrics","UpdateOverviewMetrics","updateTimestamps","lastTick","UpdateTimestamps","notificationDrawerToggleExpanded","NotificationDrawerToggleExpanded","setPodMetrics","podMetrics","SetPodMetrics","setNamespaceMetrics","namespaceMetrics","SetNamespaceMetrics","setNodeMetrics","nodeMetrics","SetNodeMetrics","setPVCMetrics","pvcMetrics","SetPVCMetrics","setUtilizationDuration","duration","SetUtilizationDuration","setUtilizationDurationSelectedKey","SetUtilizationDurationSelectedKey","setUtilizationDurationEndTime","endTime","SetUtilizationDurationEndTime","setShowOperandsInAllNamespaces","SetShowOperandsInAllNamespaces","setDeprecatedPackage","SetDeprecatedPackage","setDeprecatedChannel","SetDeprecatedChannel","setDeprecatedVersion","SetDeprecatedVersion","PROMETHEUS_BASE_PATH","prometheusBaseURL","AlertResource","RuleResource","SilenceResource","labelsToParams","labels","v","k","encodeURIComponent","alertURL","alert","ruleID","getAlertsAndRules","data","groups","rules","g","type","r","file","query","alerts","rule","a","alertState","silenceState","s","status","silenceMatcherEqualitySymbol","isEqual","isRegex","alertDescription","annotations","description","message","alertname","isSilenced","silence","Firing","Silenced","includes","matchers","m","alertValue","isMatch","RegExp","test","alertSeverityOrder","severity","Critical","Warning","None","alertingRuleStateOrder","counts","Pending","Number","MAX_SAFE_INTEGER","targetSource","target","prometheus","Platform","User","dashboardsPatchVariable","patch","perspective","DashboardsPatchVariable","dashboardsPatchAllVariables","variables","DashboardsPatchAllVariables","DashboardsClearVariables","dashboardsSetEndTime","DashboardsSetEndTime","dashboardsSetPollInterval","pollInterval","DashboardsSetPollInterval","dashboardsSetTimespan","timespan","DashboardsSetTimespan","dashboardsVariableOptionsLoaded","newOptions","DashboardsVariableOptionsLoaded","alertingLoading","AlertingSetData","loaded","loadError","alertingLoaded","alertingErrored","alertingSetRules","AlertingSetRules","toggleGraphs","ToggleGraphs","queryBrowserDeleteAllQueries","QueryBrowserDeleteAllQueries","queryBrowserDeleteAllSeries","QueryBrowserDeleteAllSeries","queryBrowserPatchQuery","index","QueryBrowserPatchQuery","queryBrowserRunQueries","QueryBrowserRunQueries","queryBrowserSetMetrics","QueryBrowserSetMetrics","queryBrowserSetTimespan","QueryBrowserSetTimespan","queryBrowserToggleAllSeries","QueryBrowserToggleAllSeries","queryBrowserToggleSeries","QueryBrowserToggleSeries","setAlertCount","alertCount","SetAlertCount","ConfigurationModel","color","KnativeServingModel","RevisionModel","DomainMappingModel","EventingSubscriptionModel","EventingBrokerModel","EventingTriggerModel","CamelIntegrationModel","KafkaModel","KafkaTopicModel","CamelKameletBindingModel","CamelKameletModel","KafkaSinkModel","getReference","group","version","getReferenceForModel","model","getAPIVersionForModel","getGroupVersionKindForResource","resource","apiVersionSplit","apiVersionSplitLen","Error","undefined","getGroupVersionKindForModel","getGroupVersionKindForReference","reference","referenceSplit","transformGroupVersionKindToReference","CONST","freeze","PULL_SECRET_TYPE","PULL_SECRET_DATA","ANNOTATIONS","displayName","providerDisplayName","documentationURL","supportURL","KEYBOARD_SHORTCUTS","focusFilterInput","blurFilterInput","focusNamespaceDropdown","RESOURCE_NAME_TRUNCATE_LENGTH","ALL_NAMESPACES_KEY","ALL_APPLICATIONS_KEY","UNASSIGNED_APPLICATIONS_KEY","STORAGE_PREFIX","USERSETTINGS_PREFIX","NAMESPACE_USERSETTINGS_PREFIX","NAMESPACE_LOCAL_STORAGE_KEY","APPLICATION_USERSETTINGS_PREFIX","APPLICATION_LOCAL_STORAGE_KEY","LAST_NAMESPACE_NAME_USER_SETTINGS_KEY","LAST_NAMESPACE_NAME_LOCAL_STORAGE_KEY","API_DISCOVERY_RESOURCES_LOCAL_STORAGE_KEY","COMMUNITY_PROVIDERS_WARNING_LOCAL_STORAGE_KEY","COMMUNITY_PROVIDERS_WARNING_USERSETTINGS_KEY","PINNED_RESOURCES_LOCAL_STORAGE_KEY","COLUMN_MANAGEMENT_LOCAL_STORAGE_KEY","LOG_WRAP_LINES_USERSETTINGS_KEY","SHOW_YAML_EDITOR_TOOLTIPS_USER_SETTING_KEY","SHOW_YAML_EDITOR_TOOLTIPS_LOCAL_STORAGE_KEY","SHOW_FULL_LOG_USERSETTINGS_KEY","KUBE_ADMIN_USERNAMES","RH_OPERATOR_SUPPORT_POLICY_LINK","OPERATOR_HUB_LABEL","FLAGS","CONFIG_STORAGE_CONSOLE","COLUMN_MANAGEMENT_CONFIGMAP_KEY","ACM_LINK_ID","SYSTEM_NAMESPACES_PREFIX","SYSTEM_NAMESPACES","REQUESTER_FILTER","USER_TELEMETRY_ANALYTICS","CLUSTER_TELEMETRY_ANALYTICS","CLUSTER_VERSION_DEFAULT_UPSTREAM_SERVER_URL_PLACEHOLDER","GETTING_STARTED_USER_SETTINGS_KEY_ADD_PAGE","GETTING_STARTED_USER_SETTINGS_KEY_CLUSTER_DASHBOARD","PREFERRED_TELEMETRY_USER_SETTING_KEY","isModalOpen","document","body","classList","contains","configureCountModal","props","configureReplicaCountModal","configureJobParallelismModal","confirmModal","createNamespaceOrProjectModal","createNamespaceModal","createProjectModal","deleteNamespaceModal","errorModal","configureNamespacePullSecretModal","labelsModalLauncher","podSelectorModal","rollbackModal","configureUpdateStrategyModal","annotationsModalLauncher","deleteModal","clusterChannelModal","clusterMoreUpdatesModal","clusterUpdateModal","taintsModal","tolerationsModal","expandPVCModal","clonePVCModal","default","removeVolumeModal","configureClusterUpstreamModal","configureMachineAutoscalerModal","createAlertRoutingModal","createColumnManagementModal","addUsersModal","removeUserModal","restorePVCModal","managedResourceSaveModal","validateStatus","response","url","method","retry","ok","shouldLogout","next","pathname","logout","contentType","headers","indexOf","statusText","json","details","cause","causes","reason","initDefaults","credentials","appInternalFetch","options","attempt","op1","token","applyConsoleHeaders","allOptions","fetch","resp","createModal","getModalElement","containerElement","getElementById","result","Promise","resolve","stopPropagation","ModalWrapper","blocking","children","onClose","parentSelector","querySelector","contentLabel","isOpen","onRequestClose","overlayClassName","shouldCloseOnOverlayClick","createModalLauncher","Component","modalWrapper","modalClassName","cancel","handleClose","handleCancel","store","history","basename","ModalTitle","component","h1","onClick","ModalBody","ModalFooter","errorMessage","inProgress","infoMessage","ModalSubmitFooter","submitText","cancelText","submitDisabled","submitDanger","buttonAlignment","resetText","reset","cancelButton","variant","submitButton","isDisabled","resetButton","isInline","updateListFromWS","k8sObjects","UpdateListFromWS","Loaded","bulkAddToList","BulkAddToList","startWatchK8sObject","StartWatchK8sObject","startWatchK8sList","StartWatchK8sList","modifyObject","ModifyObject","stopWatchK8s","StopWatchK8s","errored","Errored","filterList","FilterList","partialObjectMetadataListHeader","Accept","partialObjectMetadataHeader","WS","POLLs","REF_COUNTS","stopK8sWatch","ws","destroy","poller","clearInterval","watchK8sList","k8skind","extraAction","partialMetadata","incrementallyLoad","continueToken","requestOptions","limit","continue","items","forEach","f","resourceVersion","pollAndWatch","log","setTimeout","timeout","onclose","event","code","ondestroy","timedOut","onbulkmessage","events","watchK8sObject","k8sType","watch","fieldSelector","o","err","setInterval","object","receivedResources","resources","ReceivedResources","getResourcesInFlight","GetResourcesInFlight","PropertyPath","pathArray","property","i","isLast","isActive","EditButton","testId","DetailsItem","defaultValue","editAsGroup","hideEmpty","labelClassName","onEdit","canEdit","valueClassName","hide","popoverContent","editable","headerContent","bodyContent","footerContent","maxWidth","isFilled","OperatorSourceModel","CatalogSourceModel","PackageManifestModel","ClusterServiceVersionModel","legacyPluralURL","InstallPlanModel","SubscriptionModel","OperatorGroupModel","OperatorHubModel","FLAG_KNATIVE_SERVING_CONFIGURATION","FLAG_KNATIVE_SERVING","FLAG_KNATIVE_EVENTING","FLAG_KNATIVE_SERVING_REVISION","FLAG_KNATIVE_SERVING_ROUTE","FLAG_KNATIVE_SERVING_SERVICE","KNATIVE_SERVING_LABEL","PRIVATE_KNATIVE_SERVING_LABEL","KNATIVE_SERVING_APIGROUP","KNATIVE_EVENTING_APIGROUP","KNATIVE_EVENT_MESSAGE_APIGROUP","KNATIVE_EVENT_SOURCE_APIGROUP","CAMEL_APIGROUP","STRIMZI_KAFKA_APIGROUP","EVENT_SOURCE_ICON","CAMEL_KAMELET_ICON","CAMEL_SOURCE_INTEGRATION","FLAG_KNATIVE_EVENTING_BROKER","FLAG_KNATIVE_EVENTING_CHANNEL","FLAG_CAMEL_KAMELETS","CAMEL_K_PROVIDER_ANNOTATION","CAMEL_K_TYPE_LABEL","KNATIVE_MINSCALE_ANNOTATION","KNATIVE_MAXSCALE_ANNOTATION","KNATIVE_CONCURRENCYTARGET_ANNOTATION","KNATIVE_CONCURRENCYUTILIZATION_ANNOTATION","KNATIVE_AUTOSCALEWINDOW_ANNOTATION","SERVERLESS_FUNCTION_LABEL_DEPRECATED","SERVERLESS_FUNCTION_LABEL","GLOBAL_OPERATOR_NS","CAMEL_K_OPERATOR_NS","EVENTING_KAFKA_CHANNEL_KIND","EVENTING_CHANNEL_KIND","EVENTING_IMC_KIND","EVENT_SOURCE_SINK_BINDING_KIND","EVENT_SOURCE_KAFKA_KIND","EVENT_SOURCE_CAMEL_KIND","EVENT_SOURCE_API_SERVER_KIND","EVENT_SOURCE_CONTAINER_KIND","EVENT_SOURCE_PING_KIND","EVENT_SINK_KAFKA_KIND","FLAG_KNATIVE_EVENT_SOURCE_CATALOG_TYPE","FLAG_KNATIVE_EVENT_SINK_CATALOG_TYPE","EVENT_SOURCE_CATALOG_TYPE_ID","EVENT_SINK_CATALOG_TYPE_ID","FLAG_EVENT_SOURCE_PING","FLAG_KNATIVE_EVENTING_ENABLED","EVENT_SOURCE_ACTION_ID","EVENT_SINK_ACTION_ID","EVENTING_CHANNEL_ACTION_ID","EVENTING_BROKER_ACTION_ID","FUNCTIONS_GETTING_STARTED_SECTION_USER_SETTING_KEY","getFieldId","fieldName","fieldType","unknownKinds","Set","resourcePathFromModel","resourceListPathFromModel","resourcePath","has","add","resourceObjPath","ResourceLink","inline","groupVersionKind","linkTo","nameSuffix","hideIcon","dataTest","truncate","kindReference","classes","to","NodeLink","CAN_LIST_NODE","flags","Box","LoadError","canRetry","reload","bind","Loading","LoadingInline","LoadingBox","EmptyBox","MsgBox","detail","AccessDenied","src","Data","NoDataEmptyMsg","EmptyMsg","unfilteredData","StatusBox","skeleton","dataProps","Intl","ListFormat","style","format","CLOUD_SHELL_LABEL","CLOUD_SHELL_CREATOR_LABEL","CLOUD_SHELL_RESTRICTED_ANNOTATION","CLOUD_SHELL_STOPPED_BY_ANNOTATION","CLOUD_SHELL_PROTECTED_NAMESPACE","createCloudShellResourceName","CLOUD_SHELL_PHASE","v1alpha1DevworkspaceComponent","plugin","devWorkspaceComponent","image","kubernetes","components","container","env","newCloudShellWorkSpace","workspaceNamespace","operatorNamespace","spec","started","routingClass","template","startWorkspace","workspace","workspaceModel","op","initTerminal","workspaceName","payload","kubeconfig","post","sendActivityTick","checkTerminalAvailable","getCloudShellCR","getTerminalInstalledNamespace","AppCatalog","ClusterServiceVersionPhase","CSVConditionReason","InstallPlanApproval","InstallModeType","SubscriptionState","ClusterServiceVersionStatus","InstallPlanPhase","CatalogQueryParams","CatalogSortOrder","InventoryStatusGroup","HealthState","GridPosition","LIMIT_STATE","K8sResourceConditionStatus","maxClockSkewMS","lang","timeFormatter","DateTimeFormat","hour","minute","timeFormatterWithSeconds","second","dateFormatter","month","day","year","dateFormatterNoYear","dateTimeFormatter","langArg","dateTimeFormatterWithSeconds","utcDateTimeFormatter","timeZone","timeZoneName","relativeTimeFormatter","RelativeTimeFormat","getDuration","ms","seconds","Math","floor","minutes","hours","days","fromNow","dateTime","now","Date","d","getTime","justNow","omitSuffix","count","isValid","valueOf","PROMETHEUS_TENANCY_BASE_PATH","prometheusTenancyBaseURL","ALERTMANAGER_TENANCY_BASE_PATH","alertManagerBaseURL","alertmanagerUserWorkloadBaseURL","DEFAULT_PROMETHEUS_SAMPLES","DEFAULT_PROMETHEUS_TIMESPAN","Area","c","Bar","Stack","CursorVoronoiContainer","referenceForGroupVersionKind","BareMetalHostModel","NodeMaintenanceModel","NodeMaintenanceKubevirtBetaModel","ProvisioningModel","NodeMaintenanceKubevirtAlphaModel","CephClusterModel","telemetryEvents","getClusterProperties","clusterProperties","clusterId","telemetry","CLUSTER_ID","clusterType","CLUSTER_TYPE","DEVSANDBOX","consoleVersion","organizationId","ORGANIZATION_ID","useTelemetry","currentUserPreferenceTelemetryValue","ALLOW","STATE","OPTIN","eventType","listener","DISABLED","DENY","OPTOUT","QuickStartModel","PodDisruptionBudgetModel","EndPointSliceModel","h","units","w","formatPrometheusDuration","remaining","str","factor","unit","n","parsePrometheusDuration","parseInt","ignored","legalNamePattern","basePathPattern","namespacedPrefixes","stripBasePath","getNamespace","x","getURLSearchParams","all","params","URLSearchParams","entries","ExternalLink","href","text","additionalClassName","dataTestID","rel","ExternalLinkWithCopy","link","copied","setCopied","tooltipText","tooltipContent","content","trigger","exitDelay","onCopy","onMouseEnter","LinkifyExternal","defaults","flag","AUTH_ENABLED","authDisabled","MONITORING","baseCRDs","CLUSTER_AUTOSCALER","CONSOLE_LINK","CONSOLE_CLI_DOWNLOAD","CONSOLE_EXTERNAL_LOG_LINK","CONSOLE_NOTIFICATION","CONSOLE_YAML_SAMPLE","MACHINE_AUTOSCALER","MACHINE_CONFIG","MACHINE_HEALTH_CHECK","CLUSTER_API","PROMETHEUS","CRDs","addToCRDs","getExtensionsInUse","ff","added","removed","getModelRef","featureReducerName","featureReducer","action","SetFlag","set","ClearSSARFlags","withMutations","reduce","acc","curr","remove","models","nextState","getFlagsObject","featureState","toObject","flagPending","CatalogVisibilityState","catalogItemCompare","keyword","item","toLowerCase","tags","some","tag","cta","keywordCompare","filterString","getIconProps","iconImg","iconClass","class","setURLParams","URL","searchParams","toString","updateURLParams","paramName","Array","isArray","JSON","stringify","delete","getURLWithParams","getCatalogTypeCounts","catalogTypes","catalogTypeCounts","catalogType","matchedItems","customPropertyPresent","catalogItemDetails","proppertyName","applyCatalogItemMetadata","catalogItems","metadataProviderMap","metadataProviders","values","metadataProvider","badges","attributes","assign","attributeCount","keys","isCatalogTypeEnabled","developerCatalogTypes","parse","Enabled","enabled","Disabled","disabled","useGetAllDisabledSubCatalogs","catalogExtensionsArray","catalogTypeExtensions","disabledSubCatalogs","val","useIsDeveloperCatalogEnabled","sort","MARKDOWN_COPY_BUTTON_ID","MARKDOWN_EXECUTE_BUTTON_ID","MARKDOWN_SNIPPET_ID","getSearchParams","endpoint","samples","QUERY_RANGE","append","getRangeVectorSearchParams","getPrometheusURL","RULES","useBoolean","initialValue","setValue","stateToFlagsObject","desiredFlags","allFlags","connectToFlags","stateToProps","areStatePropsEqual","AsyncComponentError","AsyncComponent","retryCount","maxRetries","isAsyncMounted","b","this","loadComponent","reject","ComponentNotFound","setState","retryAfter","base","pow","LoadingComponent","forwardRef","rest","composeEnhancers","baseReducers","observe","dashboards","applyReduxExtensions","reducerExtensions","pluginReducers","scope","reducer","nextReducers","plugins","replaceReducer","subscriptionServiceInitialized","extensionSubscriptions","dynamicPluginListeners","onExtensionSubscriptionAdded","onDynamicPluginListenerAdded","subscribe","sub","subList","invokeListener","isSubscribed","splice","initSubscriptionService","pluginStore","reduxStore","getFlags","invokeExtensionListener","currentExtensions","currentFlags","extensionsInUse","typeGuards","tg","listenerLastArgs","getDynamicPluginInfo","lastExtensions","lastFlags","invokeAllExtensionListeners","nextExtensions","nextFlags","lastPluginEntries","invokeAllDynamicPluginListeners","nextPluginEntries","subscribeToExtensions","subscribeToDynamicPlugins","extensionDiffListener","prevExtensions","VolumeSource","emptyDir","hostPath","gitRepo","nfs","secret","gcePersistentDisk","awsElasticBlockStore","glusterfs","iscsi","configMap","projected","getVolumeType","volume","getVolumeLocation","vtype","typeID","repository","revision","volInfo","readOnly","genericFormatter","getRestartPolicyLabel","Always","OnFailure","Never","getRestartPolicy","podRestarts","initContainerStatuses","containerStatuses","terminated","exitCode","restartCount","podReadiness","ready","readyCount","totalContainers","podPhase","deletionTimestamp","initializing","phase","waiting","signal","hasRunning","running","podPhaseFilterReducer","isWindowsPod","tolerations","isContainerCrashLoopBackOff","containerName","containerStatus","find","USER_SETTING_CONFIGMAP_NAMESPACE","createConfigMap","updateConfigMap","deseralizeData","seralizeData","getAlertSeverity","getAlertMessage","getAlertDescription","getAlertSummary","summary","getAlertTime","activeAt","getAlertName","getQN","catalogSource","k8sBasePath","getGroupVersionKind","isGroupVersionKind","groupVersionFor","parseAPIVersion","parsed","exec","majorVersion","qualifier","minorVersion","apiVersionCompare","v1","v2","v1Parsed","v2Parsed","localeCompare","isBetaV1","getLatestVersionForCRD","versions","served","referenceForCRD","names","referenceForOwnerRef","ownerRef","referenceForExtensionModel","referenceFor","kindForReference","apiGroupForReference","apiVersionForReference","nameForModel","setFlag","retryFlagDetection","cb","handleError","res","detectShowOpenShiftStartGuide","canListNS","SHOW_OPENSHIFT_START_GUIDE","ssarChecks","CAN_CREATE_NS","resourceAttributes","verb","CAN_GET_NS","CAN_LIST_NS","after","CAN_LIST_PV","CAN_LIST_USERS","CAN_LIST_GROUPS","CAN_LIST_CRD","CAN_LIST_OPERATOR_GROUP","CAN_LIST_PACKAGE_MANIFEST","CAN_LIST_VSC","clearSSARFlags","check","detectOpenShift","OPENSHIFT","detectClusterVersion","clusterVersion","hasClusterVersion","CLUSTER_VERSION","detectCanCreateProject","CAN_CREATE_PROJECT","detectUser","userInfo","selfSubjectReview","newUserInfo","extra","uid","ssarCheckActions","fn","allowed","selfSubjectAccessReview","graphQLErrors","detectFeatures","detector","detect","featureFlagController","resolvedExtension","handler","LAST_PERSPECTIVE_USER_SETTINGS_KEY","LAST_PERSPECTIVE_LOCAL_STORAGE_KEY","HIDE_USER_WORKLOAD_NOTIFICATIONS_USER_SETTINGS_KEY","FLAG_DEVELOPER_PERSPECTIVE","ACM_PERSPECTIVE_ID","NoModelError","super","makeReduxID","k8sKind","qs","makeQuery","labelSelector","INTERNAL_REDUX_IMMUTABLE_TOARRAY_CACHE_SYMBOL","INTERNAL_REDUX_IMMUTABLE_TOJSON_CACHE_SYMBOL","getReduxData","immutableData","isList","toArray","toJSON","getIDAndDispatch","k8sModel","selector","BreadCrumbs","breadcrumbs","crumb","ActionButtons","actionButtons","actionButton","callback","PageHeading","kindObj","menuActions","buttonActions","customActionMenu","breadcrumbsFor","titleFunc","customData","badge","getResourceStatus","centerText","helpText","dataTestId","extraResources","resourceKeys","extraObjs","resourceTitle","hasButtonActions","hasMenuActions","hasData","showActions","resourceStatus","showHeading","showBreadcrumbs","alignItems","ownerReferences","additionalClassNames","actions","SectionHeading","required","SidebarSectionHeading","getK8sModel","k8s","k8sGroupVersionKind","useK8sModel","alwaysUseFallbackLocalStorage","userSettingsLocation","useUserSettings","sync","mounted","current","keyRef","defaultValueRef","settings","setSettingsUnsafe","setSettings","args","settingsRef","setLoadedUnsafe","setLoaded","isRequestPending","increaseRequest","decreaseRequest","counterRef","increment","decrement","useCounterRef","userUid","impersonateName","update","digest","hashNameOrKubeadmin","impersonate","fallbackLocalStorage","setFallbackLocalStorageUnsafe","setFallbackLocalStorage","isLocalStorage","lsData","setLsDataCallback","configMapResource","cfData","cfLoaded","cfLoadError","hasOwnProperty","previousSettings","newState","resultedSettings","staticModels","getK8sResourcePath","u","isLegacy","getK8sAPIPath","queryParams","resourceURL","requirementToString","requirement","operator","createEquals","toRequirements","requirements","matchLabels","matchExpressions","isOldFormat","me","selectorToString","k8sWatch","wsOptions","opts","wsOptionsUpdated","host","reconnect","jsonParse","bufferFlushInterval","bufferMax","encodedSelector","setPluginStore","modelKey","modelsToMap","isModelDefinition","k8sModels","namespacedResources","allModels","hasModel","pluginModels","md","merge","getNamespacedResources","pseudolocalizationEnabled","language","resolvedLoading","loading","init","use","languageToPseudo","wrapped","backend","loadPath","lng","startsWith","firstTransform","fallbackLng","load","debug","detection","caches","contextSeparator","getI18nNamespaces","defaultNS","nsSeparator","keySeparator","postProcess","interpolation","NumberFormat","escapeValue","react","useSuspense","wait","transSupportBasicHtmlNodes","saveMissing","missingKeyHandler","windowError","useActiveNamespace","setNamespace","GrayUnknownIcon","size","BlueSyncIcon","RedResourcesFullIcon","YellowResourcesAlmostFullIcon","BlueArrowCircleUpIcon","RESULTS_TYPE","isWatchActive","dashboardsReducer","ActivateWatch","activePath","active","hasIn","setIn","UpdateWatchTimeout","UpdateWatchInFlight","inFlight","StopWatch","clearTimeout","SetError","SetData","TableData","activeColumnIDs","role","columns","allColumns","scrollNode","ariaLabel","gridBreakPoint","none","onSelect","Row","rowData","mock","sortColumnIndex","sortDirection","navigate","columnShift","sortBy","setSortBy","direction","asc","windowWidth","setWindowWidth","innerWidth","colIDs","col","widthInPixels","column","columnIDs","columnIndex","isColumnVisible","applySort","sp","sortColumn","handleResize","sortOrder","desc","addEventListener","removeEventListener","onSort","preventDefault","renderVirtualizedTable","scrollContainer","scrollElement","height","isScrolling","registerChild","onChildScroll","scrollTop","disableHeight","width","cells","rows","fuzzyCaseInsensitive","exactMatch","tableFilters","isExactSearch","matchFn","selected","requester","needle","every","roleRef","subject","binding","userName","groupName","statuses","roles","roleList","elem","filters","pkg","defaultChannel","channels","ch","currentCSVDesc","phases","build","strategies","buildConfig","strategy","route","types","project","instance","machine","snapshot","disks","imageManifestVuln","vulnerability","imageVulnerability","csv","clusterServiceVersionDisplayName","getAllTableFilters","rowFilters","isExactMatch","rowFiltersToFilterFuncs","wssErrors","graphQLReady","wasCalled","subsClient","protocol","graphqlBaseURL","connectionParams","reconnectionAttempts","connectionCallback","setReady","onError","httpLink","uri","wsLink","client","cache","defaultOptions","fetchPolicy","mutate","watchQuery","fetchURL","fetchK8s","TOUR_LOCAL_STORAGE_KEY","TourActions","BAREMETAL_FLAG","NODE_MAINTENANCE_FLAG","NODE_MAINTENANCE_ENABLED_FLAG","BMO_ENABLED_FLAG","NODE_MAINTENANCE_KV_BETA_FLAG","NODE_MAINTENANCE_KV_ALPHA_FLAG","detectBaremetalPlatform","infra","detectBMOEnabled","useDetectNodeMaintenance","setFeatureFlag","AlertSource","ClusterUpdateStatus","clusterVersionReference","getAvailableClusterUpdates","cv","availableUpdates","getSortedAvailableUpdates","available","left","right","getNotRecommendedUpdateCondition","conditions","condition","getNotRecommendedUpdates","conditionalUpdates","getConditionalClusterUpdates","getSortedNotRecommendedUpdates","notRecommended","release","getNewerMinorVersionUpdate","currentVersion","currentVersionParsed","updateParsed","major","minor","isMinorVersionNewer","otherVersion","otherVersionParsed","getAvailableClusterChannels","desired","getDesiredClusterVersion","getClusterVersionChannel","channel","splitClusterVersionChannel","getSimilarClusterVersionChannels","currentPrefix","getNewerClusterVersionChannel","similarChannels","currentChannel","getLastCompletedUpdate","lastCompleted","getClusterVersionCondition","isProgressing","Progressing","True","updateFailing","Failing","hasAvailableUpdates","hasNotRecommendedUpdates","getClusterUpdateStatus","Invalid","invalid","ReleaseAccepted","False","releaseNotAccepted","ReleaseNotAccepted","UpdatingAndFailing","Updating","RetrievedUpdates","failedToRetrieveUpdates","ErrorRetrieving","UpdatesAvailable","UpToDate","getK8sGitVersion","k8sVersionResponse","getOpenShiftVersion","lastUpdate","getCurrentVersion","getReportBugLink","prerelease","productName","branding","showReleaseNotes","getReleaseNotesLink","getClusterID","getOCMLink","getConditionUpgradeableFalse","getNotUpgradeableResources","NodeTypes","NodeTypeNames","isMCPMaster","mcp","master","isMCPWorker","worker","isMCPPaused","paused","sortMCPsByCreationTimestamp","creationTimestamp","clusterIsUpToDateOrUpdateAvailable","getMCPsToPausePromises","machineConfigPools","NO_GROUPING","ALL_CATEGORY","OTHER_CATEGORY","matchSubcategories","category","subcategories","intersection","matchedSubcategories","subCategory","valuesIntersection","addItem","categorizedIds","itemId","categoryId","categorize","categories","itemCategorized","subcategory","findActiveCategory","activeId","activeCategory","hasActiveDescendant","isActiveTab","getFirstTime","firstTimestamp","eventTime","getLastTime","lastObservedTime","series","lastTimestamp","sortEvents","typeFilter","Actions","list","clear","recomputeRowHeights","secondary","sm","DROPDOWN","Inner","involvedObject","source","reportingComponent","tooltipMsg","isWarning","firstTime","lastTime","timestamp","sourceComponent","sourceHost","eventCount","simple","context","EventsList","setType","textFilter","setTextFilter","setSelected","eventTypes","normal","warning","clearSelection","onChange","selection","prev","updateItems","from","selectedKey","autoFocus","_event","categoryName","defaultIsOpen","collapsedText","numRemaining","expandedText","chip","removeResource","EventStream","NoEvents","NoMatchingEvents","allCount","ErrorLoadingEvents","EventStreamPage","noProjectsAvailable","resourceEventStream","setActive","sortedEvents","setSortedEvents","setError","setLoading","filteredEvents","filterEvents","webSocketID","watchURLOptions","webSocketOptions","messages","currentSortedEvents","topEvents","batch","onopen","evt","wasClean","onerror","unpause","pause","noMatches","sysEventStatus","statusBtnTxt","klass","messageCount","EventComponent","defaultProps","propTypes","isRequired","showTitle","words","involvedObjectRef","kindFilter","flt","word","textMatches","ResourceEventStream_","ResourcesEventStream","WrappedResourceEventStream","BuildPhase","createBuildRequest","subresource","req","startBuild","cloneBuild","getBuildNumber","buildNumber","MEMO","ResourceIcon","memoKey","kindStr","backgroundColor","iconLabel","rendered","ResourceName","getLastLanguage","localStorage","getItem","navigator","DEFAULT_GRAPH_SAMPLES","getActivePerspective","getAllVariables","boards","newBoardName","allVariables","templating","includeAll","datasource","isHidden","isLoading","HttpError","400","401","402","403","404","405","406","407","408","409","410","411","412","413","414","415","416","417","418","421","426","428","429","431","451","500","501","502","503","504","505","506","510","511","TimeoutError","IncompleteDataError","RetryError","useAccessReview2","useAccessReview","useMultipleAccessReviews","multipleResourceAttributes","allowedArr","setAllowedArr","promises","updatedAllowedArr","RequireCreatePermission","asAccessReview","spin","iconOnly","noTooltip","getName","getUID","getDeletetionTimestamp","getOwnerReferences","getLabels","getAnnotations","activePlugins","dynamicPluginNames","allPluginNames","consolePlugins","disabledPlugins","disabledPluginNames","pluginName","getEnabledDynamicPluginNames","i18nNamespaces","isPositioned","allItems","s1","s2","insertBefore","insertAfter","before","itemDependsOnItem","findIndexForItem","insertBeforeIndex","currentItem","findIndex","findInsertBeforeIndex","newIndex","findInsertAfterIndex","insertItem","currentItems","insertPositionedItems","insertItems","sortedItems","positionedItems","getSortedNavExtensions","navItems","stripScopeFromPath","navItemHrefIsActive","scopelessLocation","scopelessHref","locationSegments","segment","navItemResourceIsActive","scopelessPath","firstSegment","isTopLevelNavItem","section","stopWatch","setData","activateWatch","updateWatchTimeout","updateWatchInFlight","getQueryKey","getPrometheusQueryResponse","prometheusResults","queryKey","fetchPeriodically","getURL","watchPrometheusQuery","QUERY","watchURL","k8sURL","stopWatchPrometheusQuery","stopWatchURL","activeNavSectionId","showOperandsInAllNamespaces","activeApplication","createProjectMessage","level","overview","selectedDetailsTab","selectedUID","selectedGroup","GROUP_BY_APPLICATION","groupOptions","filterValue","user","utilizationDuration","deprecatedOperator","package","mergeIn","SetCreateProjectMessage","SetClusterID","SelectOverviewItem","DismissOverviewDetails","UpdateOverviewResources","newResources","UpdateOverviewSelectedGroup","UpdateOverviewLabels","UpdateOverviewFilterValue","createProjectMessageStateToProps","userStateToProps","getActiveApplication","InventoryItemLoading","InventoryItemTitle","InventoryItemBody","InventoryItemStatus","useUserSettingsCompatibility","storageKey","removeItem","podStatus","isReady","containers","numReady","numContainersReadyFilter","getPodStatus","Terminating","warnings","Running","isContainerFailedFilter","Failed","isContainerLoopingFilter","CrashLoopBackOff","podWarnings","Unknown","NotReady","calculateRadius","radius","podStatusStrokeWidth","podStatusInset","podStatusOuterRadius","podStatusInnerRadius","decoratorRadius","checkPodEditAccess","resourceKind","isKnativeServing","configRes","isIdled","deploymentConfig","podDataInProgress","dc","isRollingOut","complete","recreate","rolling","getPodData","podRCData","currentDeploymentphase","currentPods","pods","previousPods","previous","inProgressDeploymentData","completedDeploymentData","rollingUpdate","ScalingUp","CREATE_NAMESPACE_KEY","newNamespaceValidationSchema","when","is","matches","advancedOptionsValidationSchema","shape","cloudShellSetupValidationSchema","newNamespace","advancedOptions","getCloudShellTimeout","MONITORING_DASHBOARDS_DEFAULT_TIMESPAN","MONITORING_DASHBOARDS_VARIABLE_ALL_OPTION_KEY","connectToModel","kindsInFlight","connectToPlural","modelRef","adapterFunc","knownArgs","arg","k8sGet","requestInit","k8sGetResource","k8sCreate","k8sCreateResource","k8sUpdate","put","k8sUpdateResource","k8sPatch","patches","k8sPatchResource","k8sKill","jsonData","k8sDeleteResource","k8sList","raw","newVal","listURL","typedItems","k8sListResource","k8sListResourceItems","cloudShellReducerName","isCloudShellExpanded","isExpanded","isCloudShellActive","getCloudShellCommand","command","DEFAULT_HEIGHT","DEFAULT_TICK_COUNT","AreaChartStatus","chartStatusColors","AreaChart","formatDate","humanize","padding","tickCount","ariaChartLinkLabel","ariaChartTitle","xAxis","yAxis","chartStyle","byteDataType","showAllTooltip","mainDataName","theme","blue","containerRef","processedData","nonEmptyDataSets","dataSet","allZero","y","xTickFormat","tick","yTickFormat","string","domain","getLabel","prop","includeDate","datum","date","multiLine","legendData","childName","symbol","activateData","cursorDimension","mouseFollowTooltips","labelComponent","stack","voronoiDimension","ariaTitle","containerComponent","domainPadding","scale","tickFormat","dependentAxis","limitQuery","requestedQuery","prometheusPollProps","utilization","utilizationLoading","limitLoading","requested","requestedLoading","CustomError","enumerable","configurable","captureStackTrace","constructor","setPrototypeOf","prototype","ErrorWithCause","filterByAttributes","filteredByGroup","filtered","activeFilters","filterValues","filterByGroup","filterBySearchKeyword","searchKeyword","filterByCategory","determineAvailableFilters","initialFilters","filterGroups","getActiveFilters","attributeFilters","filterType","getFilterGroupCounts","newFilterCounts","filterGroup","getFilterSearchParam","groupFilter","activeValues","typeKey","concat","WORKLOAD_TYPES","MONITORABLE_KINDS","getResourcePausedAlert","getBuildAlerts","buildConfigs","buildAlerts","addAlert","buildPhase","bc","seenComplete","builds","getOwnedResources","controller","sortByRevision","replicators","getRevision","descending","leftVersion","rightVersion","leftName","rightName","getAnnotation","annotation","getDeploymentRevision","getDeploymentConfigVersion","getOwnerNameByKind","sortBuilds","leftBuildNumber","rightBuildNumber","leftCreationTime","getMilliseconds","byCreationTime","getDeploymentPhase","rc","podAlertKey","combinePodAlerts","waitingReason","getPodAlerts","getReplicationControllerAlerts","getIdledStatus","Idle","getRolloutStatus","currentRC","notFailedOrCancelled","cancelled","failed","isReplicationControllerVisible","new","pending","isDeploymentInProgressOrCompleted","getPodsForResource","getReplicationControllersForResource","replicationControllers","mostRecentRC","visibleReplicationControllers","sortedRCs","sortReplicationControllersByRevision","toReplicationControllerItem","toResourceItem","rs","isKnative","podData","AutoScaledTo0","getStatefulSetsResource","ss","statefulSets","ownedRS","getActiveStatefulSets","pss","getReplicaSetsForResource","deployment","replicaSets","sortReplicaSetsByRevision","currentRevision","getActiveReplicaSets","getJobsForCronJob","cronJobUid","jobs","job","getBuildsForResource","getBuildConfigsForResource","cronJob","currentNamespace","jobTemplate","targetImageNamespace","output","targetImageName","endsWith","getBuildConfigsForCronJob","nativeTriggers","triggers","annotatedTriggers","triggersJSON","getAnnotatedTriggers","resourceNameLabel","triggerFrom","imageChangeParams","triggerImageNamespace","triggerImageName","getRoutesForServices","services","routes","getServicesForResource","deploymentconfig","getPodTemplate","service","isStandaloneJob","owner","getOverviewItemForResource","utils","isMonitorable","monitoringAlerts","labelValues","getWorkloadMonitoringAlerts","hpas","overviewItems","util","createOverviewItemForType","owners","validPod","getResourceLimitsData","limitsData","cpu","memory","limits","limitUnit","request","requests","requestUnit","getResourceData","getLimitsDataFromResource","cpuLimit","cpuLimitUnit","memoryLimit","memoryLimitUnit","cpuRequest","cpuRequestUnit","memoryRequest","memoryRequestUnit","defaultRequestUnit","defaultLimitUnit","getVerticalPodAutoscalersForResource","vpas","vpa","targetRef","getReduxIdPayload","reduxId","getK8sDataById","EditorType","EditorToggle","handleChange","currentTarget","spaceItems","isChecked","Form","YAML","Operator","BadgeType","AlertStates","SilenceStates","AlertSeverity","RuleStates","PrometheusEndpoint","tourReducer","stepNumber","initialize","completedTour","completed","startTour","start","back","TourContext","TourContextProvider","Provider","getRequiredFlagsByTour","_","steps","getRequiredFlagsFromTour","requiredFlags","useTourStateForPerspective","tourLocalState","setTourLocalState","useTourValuesForContext","activePerspective","setPerspective","tour","selectorSteps","tourCompletionState","setTourCompletionState","tourState","tourDispatch","intro","unfilteredSteps","end","totalSteps","onComplete","isNumber","isFinite","sortResourceByValue","valueGetter","languages","compareOpts","numeric","ignorePunctuation","aValue","bValue","aName","bName","terminalAvailable","setTerminalAvailable","flagEnabled","setCloudShellCommand","SetCloudShellCommand","setCloudShellExpanded","SetCloudShellExpanded","toggleCloudShellExpanded","expanded","setCloudShellActive","SetCloudShellActive","quickSearch","handleCta","closeModal","fireTelemetryEvent","callbackProps","setUser","SetUser","beginImpersonate","BeginImpersonate","endImpersonate","EndImpersonate","setAdmissionWebhookWarning","SetAdmissionWebhookWarning","removeAdmissionWebhookWarning","RemoveAdmissionWebhookWarning","storeHandler","setStore","storeData","getStore","isTranslatableString","getTranslationKey","translateExtensionDeep","translationStringPredicate","translateExtension","SecretTypeAbstraction","SecretType","secretFormExplanation","typeAbstraction","generic","webhook","generateSecret","s4","random","substring","determineSecretType","stringData","dataKeys","tls","serviceAccountToken","dockercfg","dockerconfigjson","basicAuth","sshAuth","opaque","SecretFormWrapper","isCreate","modal","onCancel","existingSecret","defaultSecretType","toDefaultSecretType","secretTypeAbstraction","initialSecret","fixed","setSecret","setInProgress","setStringData","decode","base64StringData","setBase64StringData","disableForm","setDisableForm","onDataChanged","secretsData","onNameChanged","newSecret","save","onSave","renderBody","SubForm","secretFormFactory","htmlFor","onFormDisable","disable","secretType","abstraction","secretDisplayType","onSubmit","explanation","saveButtonText","getImageSecretKey","ImageSecretFormWithTranslation","parsedData","dataKey","authType","changeFormType","secretData","authTypes","dropDownClassName","CreateConfigSubform","UploadConfigSubform","onDisable","ImageSecretForm","ConfigEntryFormWithTranslation","propagateChange","onAddressChanged","address","onUsernameChanged","auth","password","onPasswordChanged","onEmailChanged","email","onBlurHandler","prevState","entry","onBlur","ConfigEntryForm","CreateConfigSubformWithTranslation","isDockerconfigjson","secretEntriesArray","imageSecretObjectToArray","hasDuplicate","imageSecretObject","imageSecretArray","newImageSecretEntry","decodedAuth","parsedAuth","imageSecretsObject","imageSecretArrayToObject","updatedEntry","entryIndex","updatedEntryData","propagateEntryChange","secretEntriesList","entryData","removeEntry","addEntry","UploadConfigSubformWithTranslation","configFile","parseError","changeData","onFileChange","updateState","fileData","DroppableFileInput","inputFileData","inputFieldHelpText","textareaFieldHelpText","WebHookSecretFormWithTranslation","WebHookSecretKey","changeWebHookSecretkey","generateWebHookSecret","WebHookSecretForm","SourceSecretFormWithTranslation","changeAuthenticationType","BasicAuthSubform","SSHAuthSubform","SourceSecretForm","BasicAuthSubformWithTranslation","SSHAuthSubformWithTranslation","GenericSecretFormWithTranslation","genericSecretObjectToArray","genericSecretObject","newGenericSecretEntry","isBinary","isBase64","genericSecretArray","entryID","updatedSecretEntriesArray","genericSecretArrayToObject","KeyValueEntryForm","GenericSecretForm","KeyValueEntryFormWithTranslation","onValueChange","onKeyChange","inputFileIsBinary","SecretLoadingWrapper","toTypeAbstraction","fixedKeys","CreateSecret","EditSecret","RadioInput","inputProps","inputElement","checked","subTitle","RadioGroup","currentValue","radios","nowStateToProps","Timestamp","mdate","timeDifference","timestampFor","eventIconStyle","eventSourceIconSVG","eventSinkIconSVG","channelIconSVG","serverlessFunctionSVG","gitIconElement","samplesIconElement","EventSinkIcon","alt","EventSourceIcon","ServerlessFunctionIcon","settleAllPromises","results","unwrapPromiseSettledResults","allSettled","dndContext","manager","dragDropManager","FLAG_WEB_TERMINAL","DEFAULT_NS_OPERATORS","FLAG_DEVWORKSPACE","FLAG_V1ALPHA2DEVWORKSPACE","ContainerSecurityFlag","Priority","vulnPriority","Defcon1","score","High","Medium","Low","Negligible","totalFor","defcon1Count","criticalCount","highCount","mediumCount","lowCount","negligibleCount","unknownCount","totalVulnFor","imageVulns","imageVuln","vulnPriorityByTitle","mapEntries","vulnPriorityDescription","priorityFor","severityTitle","AlertErrorState","errorText","full","titleText","headingLevel","AlertEmptyState","drawerToggle","getAlertActions","actionsExtensions","alertActions","Map","pollerTimeouts","pollers","refreshNotificationPollers","ConnectedNotificationDrawer","isDrawerExpanded","notificationStateToProps","toggleNotificationDrawer","connectToNotifications","isDesktop","onDrawerChange","showServiceLevelNotification","poll","dataHandler","notificationPoller","alertsResults","silences","launchModal","alertIds","alertActionExtensions","alertActionExtensionsMap","updateList","canUpgrade","updateData","newerChannel","newerChannelVersion","failedPlugins","actionPath","actionText","targetPath","getUpdateNotificationEntries","criticalAlerts","nonCriticalAlerts","criticalAlertLabelSelector","criticalAlertAcc","nonCriticalAlertAcc","matchesLabels","hasCriticalAlerts","hasNonCriticalAlerts","isAlertExpanded","toggleAlertExpanded","isNonCriticalAlertExpanded","toggleNonCriticalAlertExpanded","isClusterUpdateExpanded","toggleClusterUpdateExpanded","prevDrawerToggleState","emptyState","criticalAlertCategory","onExpandContents","alertAction","nonCriticalAlertCategory","recommendationsCategory","notificationEntries","getItemsAndRowCount","groupedItems","columnCount","accumulatedValues","currentKey","accItems","rowCount","accRowCount","accColumnCount","headerRows","accHeaderRow","currentKeyItems","currentKeyItemCount","ceil","numberOfCell","CellMeasurementContext","ImageManifestVulnModel","QUERY_PROPERTIES","INCONTEXT_ACTIONS_CONNECTS_TO","INCONTEXT_ACTIONS_SERVICE_BINDING","CONNECTOR_INCONTEXT_ACTIONS","SERVICE_BINDING_ENABLED","SAMPLE_APPLICATION_GROUP","PREFERRED_RESOURCE_TYPE_USER_SETTING_KEY","LAST_RESOURCE_TYPE_STORAGE_KEY","NAME_LABEL","INSTANCE_LABEL","RUNTIME_LABEL","FLAG_DEVELOPER_CATALOG","FLAG_OPERATOR_BACKED_SERVICE_CATALOG_TYPE","FLAG_SAMPLE_CATALOG_TYPE","OPERATOR_BACKED_SERVICE_CATALOG_TYPE_ID","SAMPLE_CATALOG_TYPE_ID","ADD_TO_PROJECT","FLAG_JAVA_IMAGE_STREAM_ENABLED","IMAGESTREAM_NAMESPACE","JAVA_IMAGESTREAM_NAME","FLAG_OPENSHIFT_DEPLOYMENTCONFIG","FLAG_OPENSHIFT_BUILDCONFIG","bestUnit","dataPoints","bestLevel","arr","maxUnit","point","unitIndex","processFrame","typeName","frameLevel","divisor","URL_POLL_DEFAULT_DELAY","useURLPoll","delay","dependencies","setResponse","safeFetch","finally","ErrorComponent","ErrorPage404","ErrorStateMessage","ErrorState","LoginErrorMessage","urlSearchParams","errorType","AuthenticationErrorPage","useDebounceCallback","debounceParams","leading","trailing","memDebounceParams","callbackRef","useK8sWatchResource","initResource","modelsLoaded","reduxID","resourceK8s","ServiceBindingModel","getK8sModels","modelFor","metadataExtensions","modelForGroupKind","groupVersionMap","preferredVersion","sortedVersions","useModelFinder","referenceForGroupVersionPlural","pluralsToModelMap","findModel","refPlural","CreateWithPermissions","createAccessReview","ListPageCreateLink","ListPageCreateButton","ListPageCreateDropdown","setOpen","position","toggle","onToggle","toggleIndicator","toggleVariant","dropdownItems","usedNamespace","GreenCheckCircleIcon","RedExclamationCircleIcon","YellowExclamationTriangleIcon","BlueInfoCircleIcon","FLAG_RHOAS","API_GROUP","API_VERSION","AccessTokenSecretName","ServiceAccountSecretName","ServicesRequestCRName","ServiceAccountCRName","cloudServicesIcon","operatorIcon","kafkaIcon","APITokenLengthMinimum","FLAG_MANAGED_SERVICES_CATALOG_TYPE","MANAGED_SERVICES_CATALOG_TYPE_ID","kubeAdminLogoutURL","loginErrorURL","loginSuccessURL","loginURL","logoutRedirect","logoutURL","LOGIN_ERROR_PATH","isLoginErrorPath","loginStateItem","loginState","clearLocalStorageKeys","authSvc","userID","atob","redirect","login","isKubeAdmin","setNext","logoutKubeAdmin","form","createElement","input","appendChild","submit","PageTitleContext","isCurrentUser","isSystemNamespace","option","startsWithNamespace","isNamespace","isOtherUser","requesterFilter","ME","USER","SYSTEM","getResources","startAPIDiscovery","_id","crdsOrEvents","useQueryParams","DefaultFallback","ErrorBoundary","unlisten","defaultState","hasError","errorInfo","componentStack","listen","FallbackComponent","useDeepCompareMemoize","strinfigy","useModal","defaultCatalogCategories","ONE_MINUTE","ONE_HOUR","ONE_DAY","supportedLocales","en","es","fr","ko","ja","LAST_LANGUAGE_LOCAL_STORAGE_KEY","USER_PREFERENCES_BASE_URL","componentForFieldType","dropdown","checkbox","custom","DevWorkspaceTemplateModel","WorkspaceModel","v1alpha1WorkspaceModel","eventSourceData","eventSourceModels","eventSourceChannels","getLabelPlural","fetchEventSourcesCrd","resolvedRes","accumulator","singular","crdLatestVersion","sourceModel","sourceIndex","useEventSourceModels","modelsData","setModelsData","getEventSourceModels","getChannelModels","getDynamicEventSourcesResourceList","optional","getDynamicEventSourcesWatchers","getDynamicEventSourceModel","resourceRef","getDynamicEventSourcesModelRefs","isDynamicEventResourceKind","isDynamicEventSourceKind","fetchChannelsCrd","allChannelModels","useChannelModels","getDynamicChannelResourceList","getDynamicEventingChannelWatchers","useChannelResourcesList","modelRefs","setModelRefs","getDynamicChannelModelRefs","getDynamicChannelModel","isEventingChannelResourceKind","common","factory","tableColumnClasses","columnClass","DetailsForKind","leftDetailsItemExtensions","rightDetailsItemExtensions","leftDetailsItems","rightDetailsItems","podSelector","showNodeSelector","TableRowForKind","getExtensionsActionsForKind","DefaultList","kinds","getAriaLabel","Header","sortField","transforms","virtualize","DefaultPage","ListComponent","canCreate","DefaultDetailsPage","pages","editYaml","Flags","DefaultCatalogSource","DefaultCatalogSourceDisplayName","DEFAULT_GLOBAL_OPERATOR_INSTALLATION_NAMESPACE","DEFAULT_SOURCE_NAMESPACE","GLOBAL_COPIED_CSV_NAMESPACE","INTERNAL_OBJECTS_ANNOTATION","NON_STANDALONE_ANNOTATION_VALUE","OPERATOR_NAMESPACE_ANNOTATION","OPERATOR_PLUGINS_ANNOTATION","OPERATOR_TYPE_ANNOTATION","OPERATOR_UNINSTALL_MESSAGE_ANNOTATION","GLOBAL_OPERATOR_NAMESPACES","containsNonPrintableCharacters","FileInputWithTranslation","onDataChange","onFileUpload","fileIsBinary","reader","FileReader","onload","readAsDataURL","fileName","readAsText","readFile","files","connectDropTarget","hideContents","isOver","canDrop","inputFileName","boxTarget","monitor","onDrop","FileInput","FileInputComponent","FILE","connect","dropTarget","DroppableFileInputWithTranslation","handleFileDrop","readAsBinaryString","consoleFetch","fetchPromise","appFetch","timeoutPromise","race","consoleFetchCommon","dataPromise","isPlainText","parseData","warningData","handleAdmissionWebhookWarning","consoleFetchJSON","consoleFetchText","consoleFetchSendJSON","useResolvedExtensions","resolvedExtensions","setResolvedExtensions","resolved","setResolved","errors","setErrors","disposed","fulfilledValues","rejectedReasons","NetworkAttachmentDefinitionModel","SriovNetworkNodePolicyModel","getNodeRoles","getNodeRole","getNodeRoleMatch","getNodeAddresses","getNodeMachineNameAndNamespace","getNodeMachineName","isNodeUnschedulable","isNodeReady","readyState","getNodeCPUCapacity","getNodeAllocatableMemory","isWindowsNode","getNodeUptime","lastTransitionTime","useQuickStartContext","requirementFromString","receiverTypes","pagerduty_configs","webhook_configs","email_configs","slack_configs","getAlertmanagerYAML","alertManagerYaml","yaml","getAlertmanagerConfig","parsedAlertmanagerYAML","config","patchAlertmanagerConfig","yamlString","getImpersonate","sdkCore","impersonateStateToProps","getUser","getAdmissionWebhookWarnings","admissionWebhookWarnings","ADMIN_RESOURCES","abbrBlacklist","kindToAbbr","abbrKind","toUpperCase","cacheResources","versionedResources","getCachedResources","resourcesJSON","cachedVersion","pluralizeKind","pluralized","getModelExtensionMetadata","tcb","translatedExtensions","groupVersionKindMetadata","groupKindMetadata","groupMetadata","groupVersion","pop","resourceSet","namespacedSet","allResources","safeResources","adminResources","groupVersionParts","singularName","verbs","shortNames","configResources","clusterOperatorConfigResources","bindingKind","flatten","ret","subjects","subjectIndex","rowKey","getKindLabel","kindLabel","decodeURIComponent","accessReview","Delete","btnText","executeFn","unshift","RoleBindingsTableHeader","BindingName","BindingKebab","RoleLink","RoleBindingsTableRow","BindingsList","bindingType","RoleBindingsPage","staticFilters","createPath","hideLabelFilter","hideNameLabelFilters","hideColumnManagement","RoleBinding","ClusterRoleBinding","hasCRBindings","filterGroupName","staticData","filteredData","onFilterChange","NsRoleDropdown","openshiftFlag","selectedKeyKind","placeholder","ClusterRoleDropdown","Section","BaseEditRoleBinding","existingData","subjectKind","subjectName","subjectRef","getSubject","setSubject","RoleDropdown","titleVerbAndKind","isSubjectDisabled","bindingKinds","subjectKinds","kindId","CreateRoleBinding","roleKind","roleName","clusterAllowed","getSubjectIndex","BindingLoadingWrapper","EditRoleBinding","CopyRoleBinding","getClusterVersionFlag","useClusterVersion","cvData","cvLoaded","cvLoadError","useOpenShiftVersion","openshiftVersion","setOpenShiftVersion","ModelBadge","isModelMetadata","Icon","popoverTitle","restProps","renderIcon","statusBody","ErrorStatus","InfoStatus","ProgressStatus","SuccessStatus","DurationKeys","DURATION_VALUES","OneHour","SixHours","TwentyFourHours","DEFAULT_DURATION_KEY","DEFAULT_DURATION","TOAST_TIMEOUT_LONG","TOAST_TIMEOUT_DEFAULT","NoResults","isProjects","onClear","Filter","filterText","filterRef","isProject","SystemSwitch","hasSystemNamespaces","NamespaceGroup","isFavorites","favorites","canFavorite","isFavorited","isSelected","Footer","canCreateNew","onCreateNew","NamespaceMenu","allNamespacesTitle","menuRef","setFilterText","favoritesUserSettingsKey","systemNamespacesSettingsKey","favoriteStorageKey","systemNamespaceKey","setFavorites","canList","optionsLoaded","optionItems","onSetFavorite","oldFavorites","systemNamespaces","setSystemNamespaces","isFavorite","isOptionShown","checkIsFavorite","containsFilterText","filteredOptions","filteredFavorites","onActionClick","itemID","isCurrentFavorite","activeItemId","isScrollable","maxMenuHeight","focus","shortCut","menuProps","menu","menuState","GettingStartedShowState","useGettingStartedShowState","SHOW","getBrandingDetails","logoImg","customLogoURL","customProductName","Masthead","isMastheadStacked","isNavOpen","onNavToggle","logoProps","display","onSidebarToggle","isSidebarOpen","riskIcons","low","moderate","important","critical","colorScale","legendColorScale","riskSorting","mapMetrics","metricName","mapConditions","cur","isError","isWaiting","errorUpload","Degraded","UploadDegraded","ResourceUtilizationQuery","podMetricsQueries","MEMORY","CPU","FILESYSTEM","NETWORK_IN","NETWORK_OUT","QUOTA_LIMIT","QUOTA_REQUEST","podControllerMetricsQueries","useResourceMetricsQueries","getPodControllerMetricsQueries","IDEAL_CELL_WIDTH","IDEAL_SPACE_BW_TILES","HEADER_FIXED_HEIGHT","OVERSCAN_ROW_COUNT","DEFAULT_CELL_HEIGHT","ESTIMATED_ROW_SIZE","eventSourceBreadcrumbsProvider","useEventSourceDetailPageBreadcrumbs","eventSourceModelsProviderForBreadcrumbs","getEventSourceModelsForBreadcrumbs","channelBreadcrumbsProvider","useChannelDetailPageBreadcrumbs","channelModelsProviderForBreadcrumbs","brokerBreadcrumbsProvider","useBrokerDetailPageBreadcrumbs","brokerModelProviderForBreadcrumbs","getBrokerModel","allParams","ResourceListPage_","resourceListPageExtensions","dynamicResourceListPageExtensions","missingType","componentLoader","ResourceListPage","ResourceDetailsPage_","detailsPageExtensions","dynamicResourceDetailsPageExtensions","decodedName","titleProviderValues","telemetryPrefix","titlePrefix","ResourceDetailsPage","ConditionTypes","Conditions","K8sResource","ClusterServiceVersion","getStatusLabel","ALLOW_SERVICE_BINDING_FLAG","clone","hidden","titleKey","messageKey","btnTextKey","cancelTextKey","BuildStrategyType","BuildLogLink","isPipeline","JenkinsPipeline","BuildNumberLink","BuildMetrics","podName","completionTimestamp","runTime","startTimestamp","max","areaProps","hasGutter","xl","lg","BinaryBytes","OpenShiftPipelines","pipelines","PipelineBuildStrategyAlert","BuildsDetails","logSnippet","triggeredBy","hasPipeline","buildConfigName","getStrategyType","Docker","Devfile","Custom","Source","getEnvPath","strategyType","EnvironmentPage","BuildEnvironmentComponent","envPath","rawEnvData","BuildsDetailsPage","prometheusIsAvailable","envEditor","logs","BuildsTableRow","columnID","BuildsList","BuildsTableHeader","allPhases","BuildsPage","useActivePerspective","OpenShiftGettingStarted","withStartGuide","WrappedComponent","createHistory","unused","removeBasePath","__replace__","__push__","getQueryArgument","setQueryArgument","setQueryArguments","newParams","removeQueryArgument","setOrRemoveQueryArgument","DropdownMixin","_onWindowClick","dropdownElement","dropdownList","nativeEvent","stopImmediatePropagation","actionItems","noSelection","newTitle","actionKey","show","DropDownRowWithTranslation","itemKey","onclick","hover","autocompleteFilter","isBookmarked","onBookmark","favoriteKey","onFavorite","contentString","suffix","favorite","DropDownRow","Dropdown_","onClick_","onKeyDown","onKeyDown_","changeTextFilter","applyTextFilter_","globalKeyDown","nodeName","ctrlKey","altKey","metaKey","shiftKey","componentWillUnmount","nextProps","UNSAFE_componentWillReceiveProps","autocompleteText","prevProps","keyboardHoverKey","newKey","ai","actionTitle","autocompletePlaceholder","buttonClassName","menuClassName","describedBy","bookmarks","spacerBefore","headerBefore","bookMarkRows","maxHeight","autoCapitalize","renderActionItem","Dropdown","userSettingsPrefix","favoriteUserSettingsKey","bookmarkUserSettingsKey","bookmarkStorageKey","setFavoriteKey","setBookmarks","oldBookmarks","enableBookmarks","autoSelect","ActionsMenuDropdown","ActionsMenu","isVisible","setVisible","containerLabel","ContainerDropdown","initContainers","firstInitContainer","order","firstContainer","getSpacer","initContainer","kebabOptionsToMenu","subs","menuOptions","pathKey","subMenu","KebabItem_","onEscape","isAllowed","keyCode","Escape","labelKind","KebabItemAccessReview","KebabSubMenu","open","nodeRef","subMenuRef","referenceCb","subMenuCbRef","onMouseLeave","relatedTarget","placement","closeOnEsc","closeOnOutsideClick","focusTrapOptions","clickOutsideDeactivates","fallbackFocus","tabIndex","KebabMenuItems","focusItem","KebabItem","tooltip","tooltipKey","KebabItems","kebabFactory","Edit","ModifyLabels","ModifyPodSelector","ModifyAnnotations","ModifyCount","ModifyTaints","ModifyTolerations","AddStorage","ExpandPVC","PVCSnapshot","ClonePVC","RestorePVC","readyToUse","kebabActionExtensions","getExtensionsKebabActionsForKind","actionsForKind","getKebabActionsForKind","kebabAction","ResourceKebab","terminatingTooltip","Kebab","divElement","onHover","onFocus","returnFocusOnDeactivate","validate","TYPES","space","decimalBytes","decimalBytesWithoutB","binaryBytes","binaryBytesWithoutB","SI","decimalBytesPerSec","packetsPerSec","getType","convertBaseValueToUnits","unitArray","initialUnit","preferredUnit","sliceIndex","units_","getDefaultFractionDigits","formatValue","fractionDigits","maximumFractionDigits","locales","round","multiplier","useRound","converted","formattedValue","formatPercentage","humanizeBinaryBytesWithoutB","humanizeBinaryBytes","humanizeDecimalBytes","humanizeDecimalBytesPerSec","humanizePacketsPerSec","humanizeNumber","humanizeNumberSI","humanizeSeconds","humanizeCpuCores","humanizePercentage","dehumanize","defaultReturn","reverse","truncateStringAt","startingUnitIndex","currentUnitValue","convertValueWithUnitsToBaseValue","number","parseFloat","baseUnitedValidation","validateNumber","float","validCPUUnits","validateCPUUnit","validMemUnits","validTimeUnits","time","validateTimeUnit","validateMemUnit","convertToBaseValue","formatToFractionalDigits","digits","minimumFractionDigits","formatBytesAsMiB","bytes","formatBytesAsGiB","formatCores","cores","addResourcePage","page","modelParser","addDynamicResourcePage","baseDetailsPages","ConfigMapsDetailsPage","ContainersDetailsPage","DaemonSetsDetailsPage","DeploymentConfigsDetailsPage","DeploymentsDetailsPage","BuildConfigsDetailsPage","ImageStreamsDetailsPage","ImageStreamTagsDetailsPage","JobsDetailsPage","CronJobsDetailsPage","ProjectsDetailsPage","NamespacesDetailsPage","NetworkPoliciesDetailsPage","MachineAutoscalerDetailsPage","MachineConfigDetailsPage","MachineConfigPoolDetailsPage","MachineDetailsPage","MachineSetDetailsPage","MachineHealthCheckDetailsPage","PodsDetailsPage","ReplicaSetsDetailsPage","ReplicationControllersDetailsPage","SecretsDetailsPage","ServiceAccountsDetailsPage","ServicesDetailsPage","IngressesDetailsPage","RoutesDetailsPage","ClusterRolesDetailsPage","RolesDetailsPage","ClusterRoleBindingsDetailsPage","UserDetailsPage","GroupDetailsPage","AlertManagersDetailsPage","StatefulSetsDetailsPage","ResourceQuotasDetailsPage","AppliedClusterResourceQuotasDetailsPage","LimitRangeDetailsPage","HorizontalPodAutoscalersDetailsPage","PersistentVolumesDetailsPage","PersistentVolumeClaimsDetailsPage","StorageClassDetailsPage","TemplateInstanceDetailsPage","CustomResourceDefinitionsDetailsPage","ClusterOperatorDetailsPage","ClusterVersionDetailsPage","PodDisruptionBudgetDetailsPage","getResourceDetailsPages","pluginPages","dynamicPluginPages","baseListPages","ConfigMapsPage","DaemonSetsPage","DeploymentConfigsPage","DeploymentsPage","BuildConfigsPage","ImageStreamsPage","JobsPage","CronJobsPage","ProjectsPage","NamespacesPage","NetworkPoliciesPage","MultiNetworkPolicyListPage","MachineAutoscalerPage","MachineConfigPage","MachineConfigPoolPage","MachinePage","MachineHealthCheckPage","MachineSetPage","PodsPage","ReplicaSetsPage","ReplicationControllersPage","SecretsPage","ServiceAccountsPage","ServicesPage","IngressesPage","RoutesPage","RolesPage","UserPage","GroupPage","PrometheusInstancesPage","ServiceMonitorsPage","AlertManagersPage","StatefulSetsPage","ResourceQuotasPage","AppliedClusterResourceQuotasPage","LimitRangeListPage","HorizontalPodAutoscalersPage","PersistentVolumesPage","PersistentVolumeClaimsPage","StorageClassPage","TemplateInstancePage","CustomResourceDefinitionsPage","ClusterOperatorPage","PodDisruptionBudgetsPage","getResourceListPages","getLastNamespace","getBreadcrumbPath","customPlural","breadcrumbsForDetailsPage","FilterType","filterTypeMap","LABEL","NAME","FilterToolbar","columnLayout","nameFilterPlaceholder","nameFilterTitle","labelFilterPlaceholder","labelFilter","uniqueFilterName","reduxIDs","labelPath","rowSearchFilters","translatedNameFilterTitle","searchFiltersObject","searchFiltersState","changeSearchFiltersState","translateFilterType","filterDropdownItems","nameFilterQueryArgumentKey","labelFilterQueryArgumentKey","nameInputText","setNameInputText","labelInputText","setLabelInputText","setFilterType","generatedRowFilters","rowFilter","filtersNameMap","filterKeys","defaultSelections","filtersAcc","filtersNameMapAcc","filterKeysAcc","defaultSelectedAcc","defaultSelected","itemAcc","selectedRowFilters","onRowFilterSearchParamChange","rowFiltersInitialized","labelSelection","onLabelSelectionChange","labelSelectionInitialized","hideIfEmpty","inputId","isRead","applyFilters","applyTextFilter","filterName","searchRowFilters","searchFilter","deleteChip","chips","applyRowFilter","recognized","updateRowFilterSelected","selectedNew","applyLabelFilters","applyNameFilter","debounceApplyNameFilter","debounceApplyTextFilter","showSearchFilters","showSearchFiltersDropdown","clearAllFilters","clearFiltersButtonText","toggleIcon","breakpoint","_filter","deleteChipGroup","clearAllRowFilter","chipGroupCollapsedText","chipGroupExpandedText","placeholderText","_toggleEvent","selections","isCheckboxSelectionBadgeHidden","isGrouped","onSuggestionSelect","showSuggestions","textValue","setTextValue","fromRequirements","undefinedWhenEmpty","basic","selectorFromString","breadcrumbsForGlobalConfig","detailsPageKind","detailsPagePath","ItemRow","showAPIGroup","menuItems","GlobalConfigPage_","globalConfigs","setItems","oauthMenuItems","editYAMLMenuItem","resourceLink","viewAPIExplorerMenuItem","apiExplorerLink","responses","flatMap","visibleItems","danger","GlobalConfigPage","adjustedConfigResources","LocalVolumeDiscoveryResult","LocalVolumeSetModel","LocalVolumeModel","LocalVolumeDiscovery","useDynamicPluginInfo","forceRender","isMountedRef","unsubscribeRef","pluginInfoEntriesRef","allPluginsProcessedRef","trySubscribe","pluginInfoEntries","tryUnsubscribe","isSystemRole","roleColumnClasses","RolesTableRow","Details","changeFilter","ruleFilter","ruleObj","searchKeys","DetailsWithTranslation","bindingsColumnClasses","BindingsTableRow","BindingsListComponent","BindingsTableHeader","BindingsForRolePage","createButtonText","createProps","filterLabel","getBreadcrumbs","lastNamespace","nameKey","RolesList","roleType","createNS","PerspectiveContext","usePoll","savedCallback","ErrorMessage","InfoMessage","SuccessMessage","ButtonBar","successMessage","isLiveRegion","injectDisabled","useRefWidth","setWidth","setRef","newWidth","clientWidth","doesHpaMatch","workload","thisHPA","scaleTargetRef","useExtensions","extensionsInUseRef","latestTypeGuardsRef","sanitizeExtension","disallowed","augmentExtension","isExtensionInUse","PluginStore","staticPlugins","allowedDynamicPluginNames","disabledStaticPluginNames","loadedDynamicPlugins","failedDynamicPlugins","listeners","updateExtensions","staticPluginExtensions","dynamicPluginExtensions","manifest","processedExtensions","customProperties","disableStaticPlugins","invokeListeners","dynamicPlugins","errorCause","isDynamicPluginLoaded","isDynamicPluginFailed","isLoadedDynamicPluginInfo","isNotLoadedDynamicPluginInfo","getCSRFToken","cookie","getConsoleRequestHeaders","getInfrastructurePlatform","infrastructure","platform","getInfrastructureAPIURL","apiServerURL","isSingleNode","controlPlaneTopology","useFormikValidationFix","validateForm","memoizedValue","useSafeFetch","AbortController","abort","addSecretToWorkload","secretName","SecretTableRow","SecretDetails","SecretsList","sortFunc","secretTypeFilterReducer","createLink","secretTypeFilterValues","OwnerReferences","createMenuOptions","groupExtensions","topGroup","bottomGroup","submenus","part","partGroup","getMenuOptionType","isGroupMenu","submenu","SUB_MENU","GROUP_MENU","ATOMIC_MENU","addPubSubConnectionModal","PubSubModalLauncher","isAlertingRulesSource","isAlertingRuleChart","containerNode","setContainerNode","getContainer","PREFERRED_NAMESPACE_USER_SETTING_KEY","usePreferredNamespace","preferredNamespace","setPreferredNamespace","preferredNamespaceLoaded","formatNumber","decimals","isNaN","ValidationErrorType","ItemTypes","TextColumn","NavItemResource","dataAttributes","navLinkProps","resourceReference","useLocation","PREFERRED_LANGUAGE_USER_SETTING_KEY","usePreferredLanguage","setClusterID","setCreateProjectMessage","getJenkinsLogURL","BuildSummaryStatusIcon","statusClass","BuildPipelineLogLink","StagesNotStarted","BuildSummaryTimestamp","BuildPipelineSummary","BuildAnimation","JenkinsInputUrl","stage","buildUrl","BuildStageTimestamp","BuildStageName","BuildStage","startTimeMillis","BuildPipeline","jenkinsStatus","getJenkinsStatus","stages","getPluginID","devPerspectiveTourText","fullVersion","perspectiveSwitcherTourText","webTerminalGuidedTourText","searchTourText","finishTourText","consoleLinks","openshiftBlogLink","openshiftHelpBase","documentationBaseURL","getOperatorTopologyDataModel","getOperatorsComponentFactory","getDataModelReconciler","operatorsDataModelReconciler","getTopologyFilters","applyDisplayOptions","usePrometheusPoll","customDataSource","prometheusURLProps","CopyToClipboard","visibleValue","codeClassName","useUtilizationDuration","adjustDuration","endDate","startDate","updateEndDate","updateDuration","newDuration","updateSelectedKey","getClusterServiceVersionPlugins","getInternalObjects","isCatalogSourceTrusted","upgradeRequiresApproval","subscription","SubscriptionStateUpgradePending","nameFilter","filterData","filterTypes","useListPageFilter","setFilter","appendActiveNamespace","NamespaceRedirect","GraphEmpty","justifyContent","flexGrow","VirtualReference","rect","bottom","top","DEFAULT_POPPER_OPTIONS","popperOptions","popperRef","popperRefIn","zIndex","returnFocus","controlled","openProp","popperRefs","setOpenState","focusRef","onRequestCloseRef","newOpen","activeElement","HTMLElement","ownerDocument","onClickOutside","Node","modifiers","preventOverflow","boundariesElement","nodeRefCallback","textCollapsed","textExpanded","parseJSONAnnotation","annotationKey","showServiceLevel","TrialDaysLeft","trialDaysLeft","alertText","isPlain","useGetServiceLevel","clusterIDParam","loadingSecret","loadingServiceLevel","loadServiceLevel","setLoadingSecret","setLoadingServiceLevel","auths","Authorization","apiUrl","ocmResponse","levelSetting","support_level","expirationDate","eval_expiration_date","trialEnd","daysLeft","useLoadServiceLevel","ServiceLevelLoading","screenreaderText","ServiceLevel","ServiceLevelText","levelText","levels","Premium","Standard","Eval","useServiceLevelText","useServiceLevelTitle","useShowServiceLevelNotifications","ServiceLevelNotification","notificationStart","actionExternalLinkURL","contextMap","setContextMap","actionsMap","setActionsMap","setLoadError","memoizedContext","onContextChange","newContexId","newScope","prevContext","onActionsLoaded","actionsLoaded","contextId","onLoadError","Requirement","requirementAsString","requirementAsUrlEncodedString","Selector","isHorizontalNavTab","isTab","useSafetyFirst","initialState","newValue","large","InlineTechPreviewBadge","InlineDevPreviewBadge","usePrevious","deps","pfDependentAxisTickLabels","fontFamily","letterSpacing","fill","chart","axis","stroke","grid","tickLabels","independentAxis","ticks","strokeWidth","line","opacity","queryBrowserTheme","multiUnordered","NameValueEditorPair","EnvFromPair","EnvType","inject","safeProps","lastKind","isOwnedByOperator","customresourcedefinitions","owned","ownedGroup","isOwnedByCSV","matchOwnerAndCSV","csvs","findOwner","updateThemeClass","htmlTagElement","systemTheme","matchMedia","ThemeContext","ThemeProvider","documentElement","localTheme","themeLoaded","mqListener","darkThemeMq","useValue","onValueResolved","onValueError","API_SERVERS_UP","CONTROLLER_MANAGERS_UP","SCHEDULERS_UP","API_SERVER_REQUESTS_SUCCESS","Condition","PressureQueries","DISK_PRESSURE","MEM_PRESSURE","PID_PRESSURE","PREFERRED_PERSPECTIVE_USER_SETTING_KEY","usePreferredPerspective","preferredPerspective","setPreferredPerspective","preferredPerspectiveLoaded","deepForOwn","predicate","valueCallback","pathParts","visitValue","newPathParts","$$typeof","isPlainNonReactObject","arrayElement","indexKey","fetchK8sHealth","getK8sHealthState","k8sHealth","getControlPlaneComponentHealth","perc","getControlPlaneHealth","componentsHealth","worstStatus","withPriority","mostImportantState","worstStatuses","getWorstStatus","singleMasterMsg","getClusterOperatorStatusPriority","co","getClusterOperatorHealthStatus","clusterOperators","NamespaceContext","useValuesForNamespaceContext","urlNamespace","setLastNamespace","lastNamespaceLoaded","useProjects","updateNamespace","oldPath","newPath","resourcesLoaded","exports","Label","Labels","numLabels","DRAGGABLE_TYPE","ENV_ROW","ENV_FROM_ROW","getEditDecorator","getUrlDecorator","getBuildDecorator","getAlertsDecorator","edgesFromAnnotations","edges","listInstanceResources","instanceName","lists","instanceLabelSelector","updateItemAppConnectTo","connections","connectValue","oldValueIndex","existingTag","connectionTag","getReplacedTargetIndex","replacedTarget","replaceTargetName","replaceTargetKind","replaceValue","replaceTargetInstanceName","connection","createResourceConnection","connectTargetName","connectTargetKind","replacedTargetIndex","listsValue","removeResourceConnection","getSourceAndTargetForBinding","contextualSource","serviceBindingAvailable","linkingModelRefs","resourceName","fetchResource","doConnectsToBinding","doContextualBinding","logos","getIcons","getIcon","iconName","hasIcon","normalizeIconClass","getImageForIconClass","getImageStreamIcon","getTemplateIcon","ImageStreamIcon","iconSize","iconClassImg","getRouteHost","onlyAdmitted","oldestAdmittedIngress","oldestTransitionTime","ingress","admittedCondition","isWebRoute","getRouteWebURL","getRouteLabel","getSubdomain","RouteLinkAndCopy","RouteLocation","routeStatus","atLeastOneAdmitted","RouteStatus","RouteTableRow","TLSSettings","showKey","setShowKey","visibleKeyValue","certificate","caCertificate","termination","destinationCACertificate","showCustomRouteHelp","routerCanonicalHostname","RouteTargetRow","weight","alternateBackends","alternate","toFixed","calcTrafficPercentage","CustomRouteHelp","RouteIngressStatus","routerName","wildcardPolicy","RouteDetails","primaryIngressStatus","hostname","ingresses","RoutesList","defaultXMutator","defaultYMutator","getRangeVectorStats","xMutator","yMutator","getInstantVectorStats","mapLimitsRequests","utilizationData","limitData","strokeDasharray","fillOpacity","reqData","visibilityLabel","filteredAPIs","providedAPIs","internalObjects","filteredAndSorted","api","providedAPIsForCSV","allProvidedAPIs","apiservicedefinitions","providedAPIsForChannel","referenceForProvidedAPI","referenceForStepResource","defaultChannelFor","packageManifest","defaultChannelNameFor","supportedInstallModesFor","installModes","installModesFor","supported","iconFor","catalogSourceNamespace","currentCSV","providedAPIForReference","providedAPIForModel","exampleForModel","useInitializationResource","parseALMExamples","getManualSubscriptionsInNamespace","subscriptions","installPlanApproval","Manual","OperatorsWithManualApproval","NamespaceIncludesManualApproval","InstallPlanCSVNames","installPlan","clusterServiceVersionNames","CSVName","InstallPlanReview","showMetrics","screen","podColumnInfo","restarts","created","ipaddress","traffic","columnManagementID","getColumns","showNodes","additional","PodTableRow","PodStatus","numCores","podIP","ContainerLink","ContainerRunningSince","startedAt","ContainerTerminatedAt","finishedAt","ContainerTerminatedExitCode","ContainerTerminatedReason","ContainerLastState","containerLastState","podContainerClassNames","ContainerRow","cstatus","cstate","lastState","PodContainerTable","heading","getNetworkName","network_name","PodMetrics","PodStatusPopover","unschedulableCondition","containerStatusStateWaiting","cs","footerLinks","headerTitle","PodDetailsList","moreThanOnePodIPs","podIPs","moreThanOneHostIPs","hostIPs","activeDeadlineSeconds","ip","hostIP","imagePullSecrets","imagePullSecret","PodResourceSummary","nodeSelector","showTolerations","sum","PodEnvironmentComponent","PodExecLoader","initialContainer","PodExec","terminal","PodList","showNamespaceOverride","activeColumns","userSettingsLoaded","getFilters","tableColumns","updateMetrics","fetchPodMetrics","selectedColumns","getMostImportantStatuses","operatorStatuses","mostImportantStatus","getOperatorsStatus","operators","getOperatorStatus","operatorsByStatus","getOperatorsHealthState","healthStatuses","detailMessage","sortedStatuses","groupedStatuses","statusKeys","finalCount","pluralize","includeCount","detailsPage","ResourceSummary","customPathName","showPodSelector","showAnnotations","showLabelEditor","canUpdateResource","tolerationsPath","canUpdate","ResourcePodCount","RuntimeClass","UpstreamConfigDetailsItem","upstream","isKnativeDeployment","getKsResource","ksResource","getKnativeServingRevisions","revisions","revisionResource","ownerUid","getRevisions","getKnativeServingConfigurations","configurations","getKnativeServingRoutes","ksroutes","getKnativeServingDomainMapping","domainMappings","domainmappings","domainMappingResource","domainMapping","getDomainMapping","getKnativeServingServices","ksservices","knativeServingResourcesRevision","knativeServingResourcesConfigurations","k8sServices","knativeServingResourcesServices","knativeKafkaSinks","knativeEventingResourcesBroker","kafkaBootStrapServerResourcesWatcher","kafkaTopicsResourcesWatcher","knativeCamelDomainMappingResourceWatchers","getTrafficByRevision","revName","trafficPercent","revisionName","tr","percent","urls","getSinkableResources","getKnativeServingResources","knativeServingResourcesRevisionWatchers","knativeServingResourcesConfigurationsWatchers","knativeServingResourcesRoutesWatchers","knativeServingResourcesServicesWatchers","getKnativeEventingResources","eventingsubscription","knativeEventingResourcesSubscriptionWatchers","knativeEventingBrokerResourceWatchers","knativeEventingTriggerResourceWatchers","getKnativeEventingKameletsResources","knativeCamelIntegrationsResourceWatchers","knativeCamelKameletBindingResourceWatchers","kameletGlobalNS","knativeCamelKameletResourceWatchers","expand","kindOf","TranslatedLabelList","LabelList","ExpandableAlert","setExpanded","alertContent","createBasicLookup","getKey","lookup","entity","createLookup","loadingList","getRandomChars","len","isValidUrl","recursiveGetSchemaAtPath","schema","getSchemaAtPath","toTitleCase","isModifiedEvent","startsWithSome","searchStrings","searchString","alphanumericCompare","sensitivity","translationForResourceKind","HelmRelease","labelForNodeKind","kindString","getTitleForNodeKind","useNotificationAlerts","overrideMatchLabels","hideUserWorkloadNotifications","filteredAlerts","setFilteredAlerts","alertLabelSelector","alertRuleLabelSelector","expectedConditionTypes","getComputedServiceBindingStatus","serviceBinding","CONNECTED","getFirstServiceBindingError","ActionItem","external","handleClick","translate","extraProps","Enter","isExternalLink","AccessReviewActionItem","disabledTooltip","statusProps","processReduxId","stuff","_filters","toJS","ConnectToState","reduxes","redux","worst","worstError","Boolean","k8sResults","Firehose","areStatesEqual","firehoses","discoveryComplete","resourcesChanged","doNotConnectToState","contextTypes","router","MaskedData","DownloadBinaryButton","rawBinary","rawBinaryLength","array","Uint8Array","ArrayBuffer","charCodeAt","blob","Blob","downloadBinary","ConfigMapBinaryData","dl","ConfigMapData","SecretValue","reveal","encoded","decodedValue","SecretData","setReveal","titleI18n","CheckBox","CheckBoxControls","allSelected","itemCount","selectedCount","onSelectAll","flex","align","storagePrefix","DOC_URL_OPENSHIFT_WHATS_NEW","DOC_URL_OPERATORFRAMEWORK_SDK","DOC_URL_PODDISRUPTIONBUDGET_POLICY","DOC_URL_PODMAN","DOC_URL_RED_HAT_MARKETPLACE","KUBE_DOCS","documentationURLs","applicationHealth","downstream","configuringMonitoring","networkPolicy","kube","postInstallationMachineConfigurationTasks","understandingUpgradeChannels","updateService","updateUsingCustomMachineConfigPools","usingInsights","usingRBAC","workingWithProjects","deprecatedDeploymentConfig","admissionWebhookWarning","isUpstream","isManaged","getDocumentationURL","docURLs","getNetworkPolicyDocURL","networkLink","PerspectiveVisibilityState","getPerspectiveVisitedKey","hasReviewAccess","hasAccess","requiredAccessReview","missingAccessReview","missing","requiredPromises","missingPromises","usePerspectives","perspectiveExtensions","setResults","perspectives","perspectiveExtension","visibility","ex","handleResults","oldResults","AccessReview","filteredExtensions","usePerspectiveExtension","useForceRender","badgeAlt","getImpersonateKey","newImpersonate","checkAccessInternal","impersonateKey","ssar","checkAccess","setAllowed","useAccessReviewAllowed","LabelSelector","emptySelectsAll","_conjuncts","_emptySelectsAll","_OPERATOR_MAP","In","NotIn","Exists","DoesNotExist","_REVERSE_OPERATOR_MAP","in","exists","addConjunct","expression","conjunct","_getIdForConjunct","_getStringForConjunct","isEmpty","found","keep","hasConjunct","findConjunctsMatching","inConjuncts","inConjunct","notInConjuncts","notInConjunct","conjunctString","useK8sWatchResources","initResources","allK8sModels","prevK8sModels","prevResources","k8sModelsRef","modelReference","requiredModels","ids","resourceModel","idAndDispatch","noModel","reduxIDKeys","resourceK8sSelectorCreator","oldK8s","newK8s","resourceK8sSelector","ExpandCollapse","toggleExpandCollapse","toggleTextExpanded","toggleTextCollapsed","useResizeObserver","targetElement","element","observer","ResizeObserver","disconnect","ByteDataTypes","ActionMenuVariant","useFlag","NumberSpinner","changeValueBy","min","onMinus","onPlus","minusBtnAriaLabel","minusBtnProps","plusBtnAriaLabel","plusBtnProps","pendingPhases","CSVPhasePending","CSVPhaseInstalling","CSVPhaseReplacing","CSVPhaseDeleting","subscriptionForCSV","installedCSV","getCSVStatus","statusPhase","CSVPhaseUnknown","CSVPhaseSucceeded","CSVPhaseFailed","getSubscriptionStatus","SubscriptionStateNone","SubscriptionStateUpgradeAvailable","SubscriptionStateAtLatest","isClusterGlobalConfig","isDetailsItem","isLeftDetailsItem","isRightDetailsItem","isFeatureFlag","isModelFeatureFlag","isFeatureFlagHookProvider","coreReducer","WSFactory","handlers","bulkmessage","flushCanceler","flushMessageBuffer","connectionAttempt","that","messageBuffer","createURL","WebSocket","triggerEvent","onmessage","msg","invokeHandlers","registerHandler","eventData","send","SDKReducers","hideHeader","shouldClose","shouldOpen","onHide","onShow","DASH","isKebabActions","isGuidedTour","isClusterExternallyManaged","useCanClusterUpgrade","hasPermissionsToUpdate","notExternallyManaged","brandingManagedUpdates","LINE_PATTERN","LineBuffer","maxSize","_buffer","_tail","_hasTruncated","_maxSize","lines","lineCount","trimEnd","lineSeparator","withHandlePromise","setErrorMessage","handlePromise","promise","onFulfill","errorMsg","PromiseComponent","useCombineRefs","refs","RulesList","Rule","Groups","apiGroups","Resources","nonResourceURLs","URLs","RuleKebab","ruleNumber","sorts","daemonsetNumScheduled","daemonset","dataSize","ingressValidHosts","instanceType","jobCompletionsSucceeded","succeeded","jobType","numReplicas","namespaceCPU","namespaceMemory","podCPU","podMemory","pvStorage","pv","capacity","storage","pvcStorage","getClusterOperatorStatus","getClusterOperatorVersion","getTemplateInstanceStatus","machinePhase","pvcUsed","volumeSnapshotSize","volumeSnapshotSource","snapshotLastRestore","restores","restoreTime","sortPackageManifestByDefaultChannelName","TableRow","trKey","showNamespace","TableWrapper","ariaRowCount","RowMemo","VirtualBody","getRowProps","onRowsRendered","cellMeasurementCache","fixedWidth","minHeight","keyMapper","rowIndex","autoHeight","deferredMeasurementCache","rowHeight","onScroll","overscanRowCount","rowRenderer","parent","rowArgs","rowProps","rowId","getActiveColumns","componentProps","Table","initFilters","initHeader","Rows","selectedResourcesForKind","defaultSortOrder","customSorts","propData","defaultSortFunc","isPinned","defaultSortField","currentSortField","currentSortFunc","currentSortOrder","cProps","getComponentProps","newSortBy","columnTitle","getPort","port","TLSCert","certs","IngressTableRow","hosts","hostsStr","getHosts","RulesHeader","RulesRow","pathType","serviceName","servicePort","RulesRows","paths","defaultBackend","IngressesList","WithScrollContainer","setScrollContainer","getParentScrollableElement","parentNode","nodeType","ELEMENT_NODE","overflow","getComputedStyle","useScrollContainer","BaseLabelsModal","descriptionKey","isPodSelector","messageVariables","setLabels","arrayify","watchedResource","watchedResourceLoaded","stale","setStale","objectify","l","LabelsModal","keywordFilter","compareFunction","keywords","orderExtensionBasedOnInsertBeforeAndAfter","useServicesWatcher","allServices","usePostFormSubmitAction","actionParams","actionTypes","actionPayload","parsedAction","useRelatedHPA","workloadAPI","workloadKind","workloadName","workloadNamespace","DropdownItem","ResourceDropdown","craftResourceKey","customResourceKey","resourceFilter","dataSelector","customKey","getResourceList","resourceList","getDropdownList","updateSelection","transformLabel","allSelectorItem","noneSelectorItem","showBadge","appendItems","unsortedList","containsMultipleNs","dataValue","sortedList","allSelectorKey","allSelectorTitle","noneSelectorKey","noneSelectorTitle","selectedItem","selectedActionItem","onLoad","WarningStatus","dataStatusID","statusLabel","cssClassName","baseProps","validated","touched","setFieldValue","setFieldTouched","fieldId","labelIcon","activeChild","activeChildren","staticChild","GroupTextType","podStatusIsNumeric","podStatusValue","ScaledTo0","innerRadius","outerRadius","standalone","showTooltip","titleComponent","subTitleComponent","updateOnEnd","setUpdateOnEnd","forceUpdate","prevVData","vData","updateVData","prevDataPoints","nextData","truncTitle","truncSubTitle","chartDonut","animate","onEnd","groupComponent","transform","allowTooltip","padAngle","tipContent","background","triggerRef","getPageY","pageY","touches","defaultHeight","defaultOpen","resizable","header","drawerRef","heightState","setHeightState","openState","lastObservedHeightRef","startRef","headerRef","setHeight","bb","getBoundingClientRect","useSize","minimumHeight","currentOpen","currentHeight","drawerHeight","forceOpen","newHeight","draggable","onDrag","onStart","offsetHeight","onStop","appear","classNames","toasts","setToasts","removeToast","toast","onRemove","addToast","counter","appendTo","isToast","onTimeout","actionClose","dismissible","actionLinks","dismiss","selectedCategory","onSelectCategory","activeTab","renderTabs","selectedCategoryID","toplevelCategory","numItems","tabClasses","shown","CATEGORY","restrictTabs","renderTile","renderCell","renderHeader","isItemsGrouped","CatalogToolbar","totalItems","groupings","activeGrouping","onGroupingChange","onSearchKeywordChange","onSortOrderChange","toolbarRef","inputRef","catalogSortItems","ASC","DESC","showGrouping","catalogGroupItems","typeDescriptions","marginLeft","typeCount","TYPE","filterGroupMap","hideSidebar","activeCategoryId","activeSearchKeyword","KEYWORD","GROUPING","SORT_ORDER","attributeFilterParam","filterGroupsShowAll","setFilterGroupsShowAll","filterGroupCounts","setFilterGroupCounts","setCatalogTypeCounts","catalogToolbarRef","itemsSorter","itemsToSort","clearFilters","preventScroll","handleFilterChange","updatedFilters","handleSearchKeywordChange","handleGroupingChange","grouping","handleSortOrderChange","handleShowAllToggle","showAll","updatedShowAll","catalogCategories","allCategory","otherCategory","filteredItems","filteredByCategoryItems","filteredBySearchItems","filteredByAttributes","filterCounts","typeCounts","showCategories","showFilters","showTypeSelector","showSidebar","onShowAllToggle","provider","vendor","isBindable","modalHeader","q","supportUrl","documentationUrl","notAvailable","providerLabel","createdAtLabel","supportLabel","documentationLabel","descriptions","catalogId","itemTypeExtensions","itemTypesResolved","typeMetadataExtensions","itemTypeMetadataResolved","catalogProviderExtensions","providersResolved","itemFilterExtensions","filtersResolved","metadataProviderExtensions","metadataProvidersResolved","metadataExts","em","typeLabel","typeBadges","isDescriptionReactElement","onShowItem","formattedString","lastIdx","lastLen","currentIdx","scrollIntoView","behavior","useLanguage","preferredLanguage","preferredLanguageLoaded","i18n","setResourceBundle","onLanguageChange","resourceBundle","getResourceBundle","processedBundle","preferredLanguageInStorage","on","changeLanguage","off","getProcessedResourceBundle","consoleBundle","pseudo","process","getInitialState","useValuesForQuickStartContext","activeQuickStartID","setActiveQuickStartID","activeQuickStartId","allQuickStartStates","setAllQuickStartStates","useAllQuickStartStates","inlineExecuteCommandShowdownExtension","multilineExecuteCommandShowdownExtension","startQuickStart","quickStartId","totalTasks","IN_PROGRESS","restartQuickStart","NOT_STARTED","nextStep","quickStart","taskNumber","updatedStatus","updatedTaskNumber","COMPLETE","markInitialStepVisited","INIT","VISITED","useLegacyHeaderColors","footer","markdown","renderExtension","docContext","rootSelector","setUtilsConfig","getUtilsConfig","useModelsLoaded","getContainerState","stateKey","getContainerStatus","initStatuses","identity","getContainerRestartCount","getPullPolicyLabel","IfNotPresent","imagePullPolicy","getPullPolicy","blacklistGroups","blacklistResources","ResourceListDropdown","groupToVersionMap","recentList","clearItems","setClearItems","recentSelected","setRecentSelected","selectedOptions","setSelectedOptions","recentSelectedList","sameGroupKind","preferred","toOrderedMap","groupBy","isDup","recentSearches","renderedOptions","newOpenState","inlineFilterPlaceholderText","onFilter","toLocaleLowerCase","hasInlineFilter","customBadgeText","toggleRef","handleMenuKeys","handleMenuClick","closest","popper","enableFlip","externalState","externalChangeHandler","localState","setLocalState","onExternalChange","ModalContext","ModalProvider","setComponent","setComponentProps","compProps","defaultPerPageOptions","LocalizedToggleTemplate","firstIndex","itemsTitle","lastIndex","perPage","perPageOptions","setPage","setPerPage","onPerPageSelect","firstRow","onSetPage","toggleTemplate","titles","itemsPerPage","perPageSuffix","toFirstPageAriaLabel","toPreviousPageAriaLabel","toLastPageAriaLabel","toNextPageAriaLabel","optionsToggleAriaLabel","currPageAriaLabel","paginationAriaLabel","ofWord","formLabel","helpTextInvalid","addLabel","disableAddRow","tooltipAddRow","onAdd","button","isAriaDisabled","DEFAULT_CHILDREN","mergeNewValue","otherProps","dndEnabled","idx","isReadOnly","arrayHelpers","rowValues","disableDeleteRow","tooltipDeleteRow","previewDropRef","dragRef","marginBottom","cursor","grow","plain","TooltipPlacement","Tooltip","tippyOptions","arrow","useCloudShellCommandDispatch","GroupMenuContent","ActionMenuContent","SubMenuContent","flyoutMenu","containsFlyout","sortedOptions","KEBAB","toggleTitle","onToggleClick","onToggleHover","isKebabVariant","toggleLabel","handleClickOutside","innerRef","firstElement","onMouseOver","pinnedResources","updatePinsFn","updatedPinnedResources","NavLink","linkProps","NavItemHref","prefixNamespaced","useNavExtensionsForPerspective","allPerspectives","allNavExtensions","isDefaultPerspective","isExtensionForCurrentPerspective","terminalTabs","setTerminalTabs","activeTabKey","setActiveTabKey","tickNamespace","setTickNamespace","tickWorkspace","setTickWorkspace","startTime","tickReq","handleTick","requestAnimationFrame","cancelAnimationFrame","getWorkspaceNamespace","getWorkspaceName","activeKey","isBox","terminalNumber","eventKey","tabs","removeCurrentTerminal","setWorkspaceName","setWorkspaceNamespace","newTerminalNumber","handleSubmit","handleReset","isSubmitting","isAdmin","submitError","submitLabel","disableSubmit","resetLabel","sticky","resolveURL","processURL","getDocumentOrigin","origin","baseAbsoluteURL","setIsOpen","setClosed","nextButtonText","backButtonText","showClose","showStepBadge","step","onNext","onBack","withoutSensitiveInformations","titleProductNameSuffix","getTelemetryTitle","getAttribute","safeJSToYAML","js","fallback","safeYAMLToJS","asyncYAMLToJS","ModalErrorContent","PrometheusGraphLink","canAccessMonitoring","queries","textDecoration","PrometheusGraph","getModel","NamespaceBarDropdowns","onNamespaceChange","activeNamespaceError","setActiveNamespaceError","newProject","NamespaceBar","hideProjects","editYamlComponent","EditYAML","viewYamlComponent","PodsComponentWithTranslation","PodsComponent","navFactory","machineConfigs","machines","workloads","NavBar","sliced","lastElement","defaultPage","baseURL","activePage","labelId","HorizontalNav","objReference","dynamicResourceNavTabExtensions","dynamicTabExtensions","navTabExtensions","pageProps","pagesFor","pageData","createRedirect","hideNav","noStatusBox","skeletonDetails","renderContent","HorizontalNavFacade","Activity","RecentEventsBodyContent","setPaused","moreLink","eventsData","newExpanded","lastEvents","asDefinitionList","PauseButton","togglePause","RecentEventsBody","OngoingActivityBody","resourceActivities","prometheusActivities","allActivities","NameValueEditor_","_append","_appendConfigMapOrSecret","_change","_move","_remove","updateParentData","nameValuePairs","nameValueId","configMapSecretKeyRef","onLastItemRemoved","Name","Value","dragIndex","hoverIndex","movedPair","addString","allowSorting","configMaps","secrets","addConfigMapSecret","toolTip","nameString","valueString","pairElems","pair","Index","PairElement","onMove","rowSourceId","disableReorder","alwaysAllowRemove","NameValueEditor","EnvFromEditor_","configMapSecretRef","ENV_FROM","Prefix","Resource","serviceAccounts","firstTitle","secondTitle","addButtonDisabled","addButtonLabel","EnvFromPairElement","EnvFromEditor","pairSource","beginDrag","itemTarget","hoverBoundingRect","hoverMiddleY","hoverClientY","getClientOffset","collectSourcePair","connectDragSource","dragSource","connectDragPreview","dragPreview","isDragging","collectTargetPair","PairElement_","_onRemove","_onChangeName","_onChangeValue","deleteIcon","dragButton","EnvFromPairElement_","_onChangePrefix","_onChangeResource","deleteButton","useActiveColumns","ComputedServiceBindingStatus","PodTraffic","tooltipFlag","allEndpoints","endpoints","receivingTraffic","endPoint","quickStarts","quickStartsLoaded","allowedQuickStarts","setAllowedQuickStarts","permissionsLoaded","setPermissionsLoaded","permissionChecks","handlePermissionCheck","hasPermission","filteredQuickStarts","quickstart","onPermissionCheck","SelectedSilencesContext","selectedSilences","setSelectedSilences","ruleURL","alertingRuleSource","sourceId","alertSource","silenceAlert","MonitoringResourceIcon","AlertStateIcon","getAlertStateKey","AlertState","SilenceState","Active","Expired","stateData","getStateKey","StateTimestamp","AlertStateDescription","silencedBy","SeverityIcon","Info","Severity","severityData","getSeverityKey","SeverityBadge","SeverityCounts","severities","StateCounts","states","PopoverField","AlertStateHelp","SeverityHelp","SourceHelp","isActionWithHref","queryBrowserURL","Graph","filterLabels","formatSeriesTitle","ruleDuration","defaultTimespan","GraphLink","tableSilenceClasses","SilenceMatchersList","SilenceTableRow","showCheckbox","createdBy","endsAt","firingAlerts","startsAt","onCheckboxChange","oldSet","newSet","SilenceDropdownKebab","SilenceTableRowWithCheckbox","alertMessageResources","statefulset","matchCount","haystack","regExpString","AlertMessage","messageParts","labelValue","tagCount","resourceNameCount","splitParts","HeaderAlertMessage","getSourceKey","SilencedByList","AlertsDetailsPage","isDevPerspective","hideGraphs","ruleAlerts","labelsMemoKey","runbookURL","runbook_url","alertsChartExtensions","alertsChart","AlertsChart","alertName","PrometheusTemplate","ActiveAlerts","AlertRulesDetailsPage","alertLabels","nameLabel","__name__","otherLabels","showLegend","ExpireSilenceModal","silenceID","isInProgress","setNotInProgress","small","SilenceDropdown","Toggle","setModalOpen","setModalClosed","editSilence","ActionsToggle","SilenceDropdownActions","SilencedAlertsList","SilencesDetailsPage","alertsLoaded","updatedAt","comment","tableAlertClasses","AlertTableRow","severityRowFilter","SilencesNotLoadedWarning","silencesLoadError","alertStateOrder","getAdditionalSources","itemSource","additionalSources","AlertsPage","alertAdditionalSources","allFilters","ruleHasAlertState","NotFiring","ruleAlertStateFilter","alertStateFilter","tableRuleClasses","RuleTableRow","RulesPage","ruleAdditionalSources","CreateSilenceButton","ExpireAllSilencesButton","silenceFiringAlertsOrder","silenceStateOrder","SelectAllCheckbox","activeSilences","isAllSelected","SilencesPage","nsMatcher","Tab","AlertingPage","rulesPath","PollerPages","customExtensions","alertsSource","alertsKey","rulesKey","PrometheusUIRedirect","MonitoringUI","LazyMenuRenderer","initActionLoader","setInitActionLoader","hideMenu","handleHover","keyKind","ListDropdownWithTranslation","dataFilter","currentState","keyChanged","keyKindChanged","ListDropdown_","ListDropdown","useProjectOrNamespaceModel","canCreateNs","canCreateProject","NsDropdown","setSelectedKey","resourceKindLabel","placeholderModel","setActivePerspective","LabelsModalComponent","useLabelsModal","launcher","AnnotationsModalComponent","useAnnotationsModal","NotificationTypes","NotificationIcon","success","NotificationAction","notificationType","notificationTypeString","cellMargin","cellWidth","celldefaultHeight","headerHeight","estimatedCellHeight","gridProps","securityHealthHandler","quayURLFor","vuln","SecurityBreakdownPopup","vulnsFor","highestSeverity","fixableVulns","fixableCount","getVulnerabilityCountText","totalCount","baseVulnListUrl","vulnDetailsUrl","marginRight","vulnImageCount","imageName","userPreferenceGroupExtensions","sortedUserPreferenceGroups","userPreferenceItemExtensions","userPreferenceItemResolved","sortedUserPreferenceItems","groupIdFromUrl","initialTabId","activeTabId","setActiveTabId","userPreferenceTabs","userPreferenceTabContents","populatedUserPreferenceGroups","tabContents","currGroup","tabContentId","tabContentRef","hint","isVertical","ServiceLocation","clusterIP","ports","portObj","nodePort","loadBalancer","externalName","ServiceTableRow","ServiceAddress","ServiceIPsRow","ips","note","ServiceType","externalIPs","ServicePortMapping","targetPort","ServicesList","useLastNamespace","NameValueEditorComponent","TagsModal","setTags","usedTags","AnnotationsModal","displayDurationInWords","stop","stopTime","durationInWords","DeleteModal","setIsChecked","isDeleteOtherResourcesChecked","setIsDeleteOtherResourcesChecked","setOwner","resourceOwner","deleteAllResources","listPath","redirectTo","intervalVariableRegExps","isIntervalVariable","re","evaluateTemplate","range","__range","__range_ms","__range_s","intervalMS","intervalMinutes","interval","replacement","FilterSelect","OptionComponent","onTypeaheadInputChanged","VariableOption","VariableDropdown","variable","setIsError","customDataSourceName","hasExtensions","prometheusProps","ext","getDataSource","dataSource","prometheusQuery","AllVariableDropdowns","keySeq","tagColors","Tag","DashboardDropdown","allTags","uniqueTags","selectItems","PollIntervalDropdown","refreshIntervalFromParams","TimeDropdowns","HeaderTop","QueryBrowserLink","getPanelClassModifier","panel","span","getPanelSpan","Card","wasEverVisible","dataSourceInfoLoading","setDataSourceInfoLoading","setCustomDataSource","targets","legendFormat","handleZoom","timeRange","panels","rawQueries","expr","panelClassModifier","isClickable","isSelectable","hasNoOffset","isStack","legend","yaxes","onZoomHandle","PanelsRow","row","showButton","toggleIsExpanded","collapse","fontSize","Board","board","setBoard","boardItems","changeBoard","newBoard","timeSpan","refreshInterval","boardName","ToggleGraph","SeriesButton","colors","colorIndex","isSeriesEmpty","disabledSeries","take","toggleSeries","QueryTable","isEnabled","lastRequestTime","toggleAllSeries","isDisabledSeriesEmpty","expiredSeries","buttonCell","resultType","allLabelKeys","rowMapper","valuesColIndex","tableRows","compact","pad","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","DatetimeTextInput","pattern","toISOString","NegativeMatcherHelp","SilenceForm","durations","defaultIsStartNow","defaultDuration","durationFromDefaults","setComment","setCreatedBy","setDuration","setEndsAt","setHours","isStartNow","setIsStartNow","setMatchers","setStartsAt","setMatcherField","newMatchers","displayText","saveStartsAt","saveEndsAt","startsAtDate","getEndsAtValue","matcher","removeMatcher","EditInfo","EditSilence","isExpired","CreateSilence","getKeys","keyMap","itemKeys","NameKeyDropdownPair","pairKey","nameTitle","placeholderString","isKeyRef","refProperty","cmItems","secretItems","saItems","keyTitle","cmRefProperty","secretRefProperty","serviceAccountRefProperty","firstConfigMap","firstSecret","serviceAccount","getHeaders","keyValuePair","ConfigMapSecretKeyRef","ConfigMapSecretRef","keyStringToComponent","fieldRef","fieldPath","secretKeyRef","configMapKeyRef","resourceFieldRef","configMapRef","secretRef","serviceAccountRef","ValueFromPair","onChangeVal","_onChangeVal","valueFromKey","componentInfo","ResourceList","hideTextFilter","SearchPage","selectedItems","setSelectedItems","collapsedKinds","setCollapsedKinds","setLabelFilter","labelFilterInput","setLabelFilterInput","typeaheadNameFilter","setTypeaheadNameFilter","setPinnedResources","pinnedResourcesLoaded","validTags","clearSelectedItems","clearNameFilter","clearLabelFilter","getChipText","light","collapseListedFiltersBreakpoint","newLabels","keepItem","endOfString","updatedLabels","updateLabelFilter","updateNameFilter","nameFilterInput","isCollapsed","kindView","newCollasped","toggleKindExpanded","getToggleText","pinToggle","doc","loc","definitionRefs","findOperation","definitions","oneQuery","operationName","newDoc","opRefs","allRefs","newRefs","refName","prevRefs","childRef","def","collectFragmentReferences","selectionSet","variableDefinitions","isClusterUpdateActivity","getClusterUpdateTimestamp","startedTime","checkNamespaceExists","useDetailsItemExtensionsForResource","typeGuard","columnMatches","modelMatches","aWeight","sortWeight","bWeight","ExtensionDetailsItem","isDataSource","isItemString","cellStyle","eventSourceModelrefs","getKebabActionsForWorkload","getOperatorWatchedResources","clusterServiceVersions","getServiceBindingWatchedResources","serviceBindingRequests","searchFilterValues","SearchFilterDropdown","parentClassName","createResourceExtension","CreateYAML","ConsoleNotifier_","notification","ConsoleNotifier","CLOUD_SHELL_NAMESPACE","CLOUD_SHELL_NAMESPACE_CONFIG_STORAGE_KEY","pluginMap","loadDynamicPlugin","existingPluginData","existingPluginID","registrationMethod","entryCallbackFired","loadScripts","scriptName","scriptID","getScriptElementID","scriptURL","script","async","head","registerPluginEntryCallback","loadPluginEntry","initSharedPluginModulesCallback","resolveEncodedCodeRefsCallback","pluginData","addDynamicPlugin","getPluginEntryCallback","loadAndEnablePlugin","adaptPluginManifest","releaseVersion","getAllowedDynamicPluginNames","setDynamicPluginEnabled","TYPE_WORKLOAD","TYPE_CONNECTS_TO","TYPE_AGGREGATE_EDGE","TYPE_SERVICE_BINDING","TYPE_APPLICATION_GROUP","TYPE_TRAFFIC_CONNECTOR","LAST_TOPOLOGY_VIEW_LOCAL_STORAGE_KEY","TOPOLOGY_LAYOUT_LOCAL_STORAGE_KEY","LAST_TOPOLOGY_OVERVIEW_OPEN_STORAGE_KEY","TOPOLOGY_VIEW_CONFIG_STORAGE_KEY","TOPOLOGY_LAYOUT_CONFIG_STORAGE_KEY","TOPOLOGY_SIDE_BAR_WIDTH_STORAGE_KEY","DEFAULT_GROUP_PAD","NODE_WIDTH","NODE_HEIGHT","NODE_PADDING","GROUP_WIDTH","GROUP_HEIGHT","GROUP_PADDING","CREATE_APPLICATION_KEY","UNASSIGNED_KEY","ALLOW_EXPORT_APP","EXPORT_CR_NAME","EXPORT_JOB_PREFIX","ROUTE_URL_ANNOTATION","ROUTE_DISABLED_ANNOTATION","PodDisruptionBudgetField","pdbResources","pdb","replicas","pdbDescription","anyContainerWithVolumeMounts","volumeRowColumnClasses","VolumesTableRows","mountPath","subPath","volumeDetail","podVolume","volumes","podVolumeIsReadOnly","VolumeKebab","rowVolumeData","VolumesTable","tableProps","volumeMounts","getRowVolumeData","StatusPopupSection","firstColumn","secondColumn","EventSourceConditionTypes","ChannelConditionTypes","TriggerConditionTypes","BrokerConditionTypes","SubscriptionConditionTypes","DomainMappingResponseAction","ServerlessBuildStrategyType","ServiceTypeValue","nodeStatus","CONSOLE_OPERATOR_CONFIG_NAME","CONTAINER_WAITING_STATE_ERROR_REASONS","DEPLOYMENT_CONFIG_LATEST_VERSION_ANNOTATION","DEPLOYMENT_PHASE_ANNOTATION","DEPLOYMENT_REVISION_ANNOTATION","METRICS_POLL_INTERVAL","TRIGGERS_ANNOTATION","DEPLOYMENT_STRATEGY","DEPLOYMENT_PHASE","usePromiseHandler","SyncMarkdownView","emptyMsg","contextTheme","markDownTheme","volumeSnapshotStatus","snapshotStatusFilters","serviceBindingModal","createServiceBindingModal","enableScaling","clickCount","setClickCount","isAccessScalingAllowed","handleScaling","operation","hpa","hpaControlledScaling","isScalingAllowed","enableAutoscaling","resourceObj","isBlock","targetNamespacesFor","operatorNamespaceFor","operatorGroupFor","NoOperatorGroupMsg","requireOperatorGroup","operatorGroup","supports","namespaces","supportedModes","InstallModeTypeOwnNamespace","InstallModeTypeAllNamespaces","InstallModeTypeSingleNamespace","InstallModeTypeMultiNamespace","isGlobal","subscriptionFor","allSubscriptions","allGroups","packageName","sourceNamespace","og","installedFor","providedAPIsForOperatorGroup","baseTemplates","getYAMLTemplates","extensionTemplates","yt","templateName","ShortcutCommand","isMac","click","ctrl","ctrlCmd","drag","keyName","rightClick","dragNdrop","useMaintenanceCapability","isPVCCreateProp","isPVCAlert","isPVCStatus","isPVCDelete","isYAMLTemplate","setTrafficDistributionModal","trafficModalLauncher","setSinkSourceModal","sinkModalLauncher","setSinkPubsubModal","sinkPubsubModalLauncher","deleteRevisionModal","deleteRevisionModalLauncher","editSinkUriModal","testServerlessFunctionModal","testFunctionModalLauncher","ServiceBindingDeprecationAlertForTopology","productDetails","ServiceBindingWarningForTopology","serviceBindings","serviceBindingsLoaded","triggerAction","ServiceBindingDeprecationAlert","ServiceBindingDeprecationAlertForModals","CloudServicesRequestModel","KafkaConnectionModel","CloudServiceAccountRequest","SWAGGER_LOCAL_STORAGE_KEY","getDefinitionKey","swaggerDefinitions","getSwaggerDefinitions","fetchSwagger","definitionFor","getSwaggerPath","allProperties","currentPath","followRef","nextPath","definition","$ref","getRef","getPropertyDescription","propertyPath","rootPath","nextProperty","findDefinition","getResourceDescription","getOperatorBackedServiceKindMap","installedOperators","kindMap","isOperatorBackedService","operatorBackedServiceKindMap","operatorResource","consolePluginModal","deleteResourceModal","PipelineModel","PipelineModelV1Beta1","PipelineRunModel","PipelineRunModelV1Beta1","TaskModel","TaskModelV1Beta1","TaskRunModel","TaskRunModelV1Beta1","CustomRunModelV1Beta1","PipelineResourceModel","ClusterTaskModel","ConditionModel","TriggerBindingModel","ClusterTriggerBindingModel","TriggerTemplateModel","EventListenerModel","RepositoryModel","TektonConfigModel","TektonHubModel","TektonResultModel","ExportModel","FieldLevelHelp","popoverHasAutoWidth","hasAutoWidth","AsyncCodeEditor","useSelectList","visibleRows","onRowSelected","selectedRows","setSelectedRows","uniqueUIDs","updateSelectedRows","usePrometheusGate","useEditorType","lastViewUserSettingKey","checkEditorTypeEnabled","lastViewedEditorType","setLastViewedEditorType","lastViewedEditorTypeLoaded","preferredEditorType","preferredEditorTypeLoaded","isEditorTypeEnabled","resourceLoaded","activeEditorType","setActiveEditorType","editorType","viewBox","verticalAlign","cx","cy","fillRule","clipRule","isCSRResource","getNodeCSRs","csrs","csr","usages","isCSRPending","getNodeClientCSRs","nodeCSRs","asn1","commonName","typesAndValues","valueBlock","originalName","grouped","getNodeServerCSR","areaTheme","area","barTheme","bar","textAnchor","suggestionBoxKeyHandler","HIDE","SuggestionLine","suggestion","suggestions","setSuggestions","visible","processed","labelParser","processedText","getPDBResource","ManagedByOperatorResourceLink","csvName","ownerGroupVersionKind","ownerIsCSV","ManagedByOperatorLink","DEFAULT_OPTIONS","truncateEnd","omission","minTruncateChars","truncateMiddle","startLength","endLength","shouldTruncate","VirtualizedTable","ListPageHeader","ListPageCreate","ListPageFilter","StatusPopupItem","Overview","OverviewGrid","InventoryItem","YAMLEditor","CodeEditor","ResourceYAMLEditor","AsyncResourceYAMLEditor","ResourceEventStream","ActionServiceProvider","ErrorBoundaryFallbackPage","QueryBrowser","useDeleteModal","AddEventSourceAction","contextSource","pageUrl","CONTEXT_SOURCE","APPLICATION","TRIGGER_ACTION_ID","addTrigger","AddTriggerAction","SUBSCRIPTION_ACTION_ID","addSubscription","AddSubscriptionAction","hideKnatifyAction","isWorkloadReady","cd","setKnatify","MakeServerless","InitialReceivers","AlertRouting","getIntegrationTypes","receiver","getRoutingLabelsByReceivers","parentLabels","parentMatchers","match_re","numberOfIncompleteReceivers","receivers","defaultReceiverName","defaultReceiver","criticalReceiver","numIncompleteReceivers","RoutingLabels","ReceiverTableRow","routingLabelsByReceivers","receiverRoutingLabels","receiverIntegrationTypes","integrationTypesLabel","isDefaultReceiver","receiverHasSimpleRoute","hasSimpleRoute","canUseEditForm","receiverConfig","numConfigs","hasSimpleReceiver","canDelete","Default","rte","receiverName","deleteReceiver","ReceiversTable","ReceiversEmptyState","Receivers","receiverFilter","setReceiverFilter","filterStr","numOfIncompleteReceivers","receiverString","AlertmanagerConfiguration","AlertmanagerConfigWrapper","AlertmanagerConfig","configPath","YAMLPath","CopyCodeModal","snippet","useCopyCodeModal","getMachineRole","getMachineInstanceType","getMachineRegion","getMachineZone","getMachineAWSPlacement","machineSet","providerSpec","getMachineNodeName","getMachineNode","nodes","getMachineAddresses","addresses","getMachinePhase","bindableServicesData","bindableServices","fetchBindableServices","bindableService","getBindableServicesList","HOST_STATUS_READY","HOST_STATUS_AVAILABLE","HOST_STATUS_UNMANAGED","HOST_STATUS_ERROR","HOST_STATUS_UNKNOWN","HOST_STATUS_EXTERNALLY_PROVISIONED","HOST_STATUS_PROVISIONED","HOST_STATUS_DEPROVISIONING","HOST_POWER_STATUS_POWERED_ON","HOST_POWER_STATUS_POWERED_OFF","HOST_POWER_STATUS_POWERING_OFF","HOST_POWER_STATUS_POWERING_ON","HOST_STATUS_TITLE_KEYS","HOST_STATUS_DESCRIPTION_KEYS","HOST_REGISTERING_STATES","HOST_PROVISIONING_STATES","HOST_ERROR_STATES","HOST_PROGRESS_STATES","HOST_SUCCESS_STATES","HOST_INFO_STATES","HOST_HARDWARE_ERROR_STATES","isActionProvider","isResourceActionProvider","isActionGroup","isActionFilter","MenuOptionType","isAddAction","isAddActionGroup","isDetailPageBreadCrumbs","isCatalogItemType","isCatalogItemTypeMetadata","isCatalogItemProvider","isCatalogItemFilter","isCatalogItemMetadataProvider","ClusterConfigurationFieldType","isClusterConfigurationGroup","isClusterConfigurationItem","isClusterOverviewInventoryItem","isClusterOverviewUtilizationItem","isClusterOverviewMultilineUtilizationItem","isOverviewDetailItem","isCustomOverviewDetailItem","isContextProvider","isCreateResource","isDashboardsTab","isDashboardsCard","isDashboardsOverviewHealthPrometheusSubsystem","isResolvedDashboardsOverviewHealthPrometheusSubsystem","isDashboardsOverviewHealthURLSubsystem","isResolvedDashboardsOverviewHealthURLSubsystem","isDashboardsOverviewHealthResourceSubsystem","isResolvedDashboardsOverviewHealthResourceSubsystem","isDashboardsOverviewHealthOperator","isResolvedDashboardsOverviewHealthOperator","isDashboardsInventoryItemGroup","isDashboardsOverviewInventoryItem","isDashboardsOverviewInventoryItemReplacement","isDashboardsProjectOverviewInventoryItem","isDashboardsOverviewResourceActivity","isDashboardsOverviewPrometheusActivity","isDashboardsOverviewHealthSubsystem","isFileUpload","isImportEnvironment","isHrefNavItem","isResourceNSNavItem","isResourceClusterNavItem","isResourceNavItem","isSeparator","isNavSection","isNavItem","isNavItemOrSeparator","isNavExtension","isAlertAction","isRoutePage","isStandaloneRoutePage","isResourceListPage","isResourceDetailsPage","isResourceTabPage","isPerspective","isProjectOverviewInventoryItem","isProjectOverviewUtilizationItem","isReduxReducer","ProvisionerType","isStorageClassProvisioner","isStorageProvider","isTelemetryListener","isDetailsTab","isDetailsTabSection","isDetailsResourceLink","isDetailsResourceAlert","isPodAdapter","isBuildAdapter","isNetworkAdapter","isTopologyComponentFactory","isTopologyCreateConnector","isTopologyDataModelFactory","isTopologyDisplayFilters","isTopologyDecoratorProvider","isTopologyRelationshipProvider","UserPreferenceFieldType","isUserPreferenceGroup","isUserPreferenceItem","isNodeStatus","storeContextPresent","initPlugins","apiDiscovery","AllPodStatus","podColor","Empty","Succeeded","isProjectDashboardInventoryItem","isCustomFeatureFlag","isOverviewTabSection","isPostFormSubmissionAction","getJobTypeAndCompletions","completions","parallelism","k8sPatchByName","k8sKillByName","k8sListPartialMetadata","k8sWaitForUpdate","checkCondition","timeoutInMs","watcher","waitForCondition","waitForTimeout","withExtensions","typeGuardMapper","HOC","extensionProps","propName","combinedProps","OperatorStatus","getStatusAndMessage","cannotUpdate","CannotUpdate","unavailable","Unavailable","degraded","progressing","Available","operatorVersion","ImagePullPolicy","MachineConfigPoolConditionType","ClusterVersionConditionType","wrapper","Wrapper","innerProps","getBadgeFromType","DEV","TECH","lineClamp","isContentClamped","setContentClamped","debouncedSetContentClamped","scroll","scrollHeight","offset","onResize","measureRef","KeyEventModes","textInputKeyHandler","FOCUS","useDocumentListener","keyEventMap","handleEvent","handleKeyEvents","blur","requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror","nativeAPI","useFullscreen","isFullscreen","setIsFullscreen","fullscreenRef","elementRef","ScrollDirection","useScrollDirection","scrollPosition","scrollDirection","setScrollDirection","handleScroll","clientHeight","prevScrollTop","currentScrollTop","scrolledToBottom","scrolledToTop","scrollingUp","scrollingDown","getScrollDirection","Shadows","useScrollShadows","shadows","setShadows","computeShadows","both","HelmChartRepositoryModel","ProjectHelmChartRepositoryModel","cleanSelectorStr","SelectorInput","isBasic","ref_","inputValue","isInputValid","isTagValid","changed","newTag","cleanNewTag","newTags","cleanTags","removeKeys","handleInputChange","spellCheck","addKeys","renderTag","getTagDisplayValue","isTruncated","addOnBlur","STREAM_PAUSED","STREAM_ACTIVE","LOG_SOURCE_RESTARTING","LOG_SOURCE_RUNNING","LOG_SOURCE_TERMINATED","LOG_SOURCE_WAITING","streamStatusMessages","getResourceLogURL","tailLines","follow","logType","HeaderBanner","headerText","FooterButton","setStatus","linesBehind","resumeText","showDebugAction","LogControls","toggleFullscreen","currentLogURL","toggleStreaming","podLogLinks","namespaceUID","toggleWrapLines","isWrapLines","changeLogType","hasPreviousLog","showLogTypeSelect","isShowFullLog","toggleShowFullLog","isLogTypeOpen","setLogTypeOpen","isMobile","isDropdownOpen","setIsDropdownOpen","onDropdownToggleClick","logTypes","renderPodLogLinks","namespaceFilter","namespaceRegExp","hrefTemplate","resourceUID","resourceNamespace","resourceNamespaceUID","podLabels","orientation","fullLog","wrapLines","download","fullscreen","select","single","logOption","logTypeSelect","minSearchChars","onOpenChange","shouldFocusToggleOnSelect","popperProps","ResourceLog","bufferSize","showFullLog","setShowFullLog","showFullLogCheckbox","setShowFullLogCheckbox","buffer","resourceLogRef","logViewerRef","externalLogLinkFlag","hasTruncated","setHasTruncated","setLines","setLinesBehind","totalLineCount","setTotalLineCount","setNamespaceUID","setPodLogLinks","setContent","setLogType","hasPreviousLogs","setPreviousLogs","previousResourceStatus","previousTotalLineCount","linkURL","setWrapLines","hasWrapAnnotation","wrapLinesCheckbox","setWrapLinesCheckbox","firstRender","timeoutIdRef","countRef","scrollToBottom","currentLinesBehind","startWebSocket","ingest","currentLineCount","getTail","getLines","getHasTruncated","podLogLinks_","logControls","currentStatus","isTextWrapped","toolbar","scrollOffsetToBottom","scrollUpdateWasRequested","initialIndexWidth","DetailsPage","pluginBreadcrumbs","setPluginBreadcrumbs","resourcePageExtensions","dynamicResourcePageExtensions","renderAsyncComponent","resolvedBreadcrumbExtension","breadCrumbsExtension","breadCrumbsResolved","dynamicBreadCrumbsExtension","dynamicBreadCrumbsResolved","getModels","useBreadCrumbsForDetailPage","onBreadcrumbsResolved","allPages","objResource","useBreadcrumbs","breadcrumbsProvider","urlMatch","customKind","ChartLegendTooltipContent","activePoints","center","dx","dy","flyoutHeight","flyoutWidth","ChartLegendTooltipLabel","legendComponent","themeColor","pointerLength","evaluateProp","legendProps","visibleLegendData","hasMainData","legendOffsetY","getX","_flyoutWidth","flyout","getY","_flyoutHeight","maxLegendDimensions","minLegendDimensions","tooltipLegendData","textAsLegendData","_title","Function","getTitleComponent","styles","applyDefaultStyle","customStyle","getStyle","ChartLegendTooltip","isCursorTooltip","mainDatum","uDatum","legendTooltipProps","getFlyoutHeight","sizeProps","getFlyoutWidth","tooltipComponent","showPointer","getTooltipComponent","useK8sModels","optionsLoadError","dropdownOpen","setDropdownOpen","lowerCaseFilterText","lastViewedOption","onCreateNamespace","isOpenShift","loadErrorDescription","loadErrorState","lastNamespaceOption","namespaceMenu","selectedValue","selectedLabel","menuHeight","useExactSearch","exactSearch","exactSearchLoaded","IDP_TYPES","basicauth","github","gitlab","google","htpasswd","keystone","ldap","oidconnect","requestheader","TextFilter","otherInputProps","ListPageWrapper","memoizedIds","FireMan","setReduxIDs","applyFilter","updateURL","runOrNavigate","itemName","ListPage","createHandler","skipAccessReview","_resources","MultiListPage","getFilteredRows","objects","allTableFilters","filteredObjects","useTableData","initStaticFilters","initRowFilters","initCustomData","initCustomSorts","initSorts","tableSelectorCreator","oldSortState","newSortState","sortSelector","sortsState","getSortValue","aPinned","spans","toExponential","formatPositiveValue","abs","valueFormatter","GraphEmptyState","SpanControls","defaultSpanText","hasReducedResolution","setIsValid","setText","debouncedOnChange","setSpan","newText","isDebounced","newSpan","newIsValid","isFill","truncateTitle","spaceOnLeft","spaceOnRight","isOnLeft","tooltipMaxWidth","largestPoints","_y1","total","TOOLTIP_MAX_ENTRIES","allSeries","allSeriesSorted","TOOLTIP_MAX_HEIGHT","getSeriesName","x1","x2","y1","y2","graphContainer","voronoiPadding","LegendContainer","nullComponent","getXDomain","fixedXDomain","tooltipSeriesNames","tooltipSeriesLabels","xDomain","setXDomain","findMin","findMax","minY","maxY","xAxisTickCount","xAxisTickShowSeconds","GroupComponent","ChartComponent","crossAxis","tickComponent","gutter","itemsPerRow","symbolSpacer","formatSeriesValues","defaultEmptyValue","newValues","ZoomableGraph","onZoom","isZooming","setIsZooming","setX1","setX2","onMouseMove","clientX","onMouseUp","xMin","xMax","zoomWidth","oldFrom","middle","onMouseDown","getMaxSamplesForSpan","defaultSamples","disableZoom","fixedEndTime","hideControls","showStackedControl","tickInterval","maxSamplesForSpan","isDatasetTooBig","setIsDatasetTooBig","graphData","setGraphData","setSamples","updating","setUpdating","isStacked","setIsStacked","canStack","queriesKey","allPromises","newResults","numDataPoints","newSamples","newGraphData","queryIndex","onSpanChange","isRangeVector","isGraphDataEmpty","TogglePlayWithTranslation","TogglePlay","cloudProviderID","providerID","cloudProviderNames","providerNames","usePreventDataLossLock","lock","onBeforeUnload","returnValue","setInFlight","filename","BuildStrategy","dockerfile","devfile","jenkinsfile","buildFromPath","buildFrom","outputTo","commitMessage","commitHash","commitAuthorName","pushSecret","resourceLimits","BuildHooks","postCommitArgs","postCommitCommand","postCommitScript","kubeAPIServerURL","TriggerTypes","webhookTriggerTypes","Bitbucket","Generic","GitHub","GitLab","getTriggerProperty","WebhookTriggers","canGetSecret","getTableColumnClasses","webhookSecrets","setWebhookSecrets","webhookTriggers","setWebhookTriggers","secretNames","setSecretNames","secretErrors","setSecretErrors","isLoaded","previousTriggers","newTriggers","newSecretNames","triggerProperty","webhookName","getWebhookURL","getClipboardButton","plainSecret","secretReference","webhookSecret","clipboard","writeText","webhookSecretValue","copyWebhookToClipboard","webhookURL","getSecretReference","clipboardButton","ScrollToTopOnMount","useScrollToTopOnMount","containerPort","ContainerTable","SimpleTab","SimpleTabNav_","onClickTab","selectedTab","tabProps","selectedTabData","SimpleTabNav","RequestSizeInput","defaultRequestSizeUnit","defaultRequestSizeValue","dropdownUnits","inputID","isInputDisabled","minValue","testID","parsedRequestSizeValue","setUnit","inputName","dropdownName","changeBy","newUnit","sizeUnit","togglePaused","newObj","WorkloadPausedAlert","metadataName","ListInput_","helpID","initialValues","missingValues","valueChanged","removeValue","addValue","ListInput","VolumeType","persistentVolumeClaim","claimName","skeletonTiles","skeletonCatalog","HintBlock","OperatorBackedOwnerReferences","ReleaseNotesLink","releaseNotesLink","NotificationDrawer","panelContent","hasNoPadding","useBuildConfigsWatcher","watchedResources","resourceWithLoadError","assureEndsWith","sentence","appendix","podKindString","isPendingPods","currentPodCount","desiredPodCount","getTitleAndSubtitle","isPending","titlePhrase","subTitlePhrase","longTitle","longSubtitle","podSubTitle","reversed","labelClasses","lineHeight","podRingLabel","ownerKind","titleData","podRingLabelData","failedPodCount","currValue","getFailedPods","currentNumberScheduled","desiredNumberScheduled","readyReplicas","usePodRingLabel","desiredPods","desiredReplicas","currentReplicas","hpaPodRingLabel","usePodScalingAccessStatus","isKnativeRevision","isPod","setEditable","setSinkSource","getPodsForDeploymentConfig","getPodsForDeployment","getPodsForStatefulSet","getPodsForDaemonSet","ds","getPodsForCronJob","getPodsDataForResource","getResourcesToWatchForPods","toggleIsOpen","intervalOptions","fetchAlerts","prometheusURL","externalAlertsFetch","resolvedExternalAlertsSources","extensionProperties","getAlertingRules","sourceIds","asValidationObject","validateDNS1123SubdomainValue","uppercaseMsg","startEndAlphanumbericMsg","shortMsg","longMsg","maxLength","TrivialError","Warn","startsWithAlphaNumeric","charAt","endsWithAlphaNumeric","dimensifyHeader","columnClasses","dimensifyRow","cephStorageProvisioners","objectStorageProvisioners","isCephProvisioner","scProvisioner","provisioner","isObjectSC","sc","getImageForCSVIcon","mediatype","base64data","getDefaultOperatorIcon","formatNamespacedRouteForResource","formatNamespacedRouteForHref","getLabelsAsString","sortMonitoringAlerts","getSeverityAlertType","getFiringAlerts","shouldHideMonitoringAlertDecorator","severityAlertType","isHelmResource","heritage","getTargetResource","defaultProjectAccessRoles","availableClusterRoles","samplePinnedResources","clusterRoleBindingSamples","targetResource","getResourceSidebarSamples","yamlSamplesList","yamlSamplesData","sample","allSamples","highlightText","img","lazyYaml","dump","unsubscribe","enabledTypes","snippets","MultiSelectDropdown","typeaheadMulti","cSelected","noResultsFoundText","XtermAddonFullscreen","nameRegex","nameValidationSchema","excludeEmptyString","characterCount","getPluginPatch","getPatchForRemovingPlugins","isPluginEnabled","useJobsForCronJobWatcher","setJobs","errorKey","resourceJobs","usePodsWatcher","setPodData","watchKind","watchNS","updateResults","updatedResources","updatedPods","debouncedUpdateResources","useReplicationControllersWatcher","useRoutesWatcher","watchedServices","allRoutes","servicesNames","useCsvWatchResource","csvResource","csvData","csvLoaded","csvError","useTabbedTableBreadcrumbsFor","navOption","subTab","customBreadcrumbName","customBreadcrumbURLRequired","customBreadCrumbDetailsPrefix","nsURL","usePinnedResources","getPins","defaultPins","customizedPins","pr","gvk","pins","setPins","newPins","prevPR","useIsMobile","setIsMobile","mobileResolutionMatch","updateIsMobile","addListener","removeListener","useBoundingClientRect","clientRect","setClientRect","observerCallback","useEventListener","isFullScreen","useCopyLoginCommands","requestTokenURL","setRequestTokenURL","externalLoginCommand","setExternalLoginCommand","authEnabled","newRequestTokenURL","newExternalLoginCommand","isFullWidth","dropdownWithSwitchMenuProps","switchMenuProps","getMachineSetInstanceType","vmSize","machineType","flavor","getRequester","getDescription","getRequestedPVCSize","onlyPvcSCs","scObj","scResourceLoadError","scResource","parameters","encrypted","handleDownload","cancelLabel","infoTitle","hideSubmit","showAlert","footerElementRef","shadowPosition","primary","marginTop","marginStyles","flexDirection","disablePaneBody","flexLayout","paddingBottom","fullWidth","envs","environmentVariables","nameValue","setNameValue","setConfigMaps","setSecrets","handleNameValuePairs","updatedNameValuePairs","valueFrom","formReloadCount","nsConfigMaps","nsSecrets","hasSelectedOption","placeholderOption","isPlaceholder","safeValue","emptyValues","emptyMessage","complexFields","fieldValue","totalFieldCount","fieldSpans","render","onDelete","setOutputAsIntegerFlag","unitName","unitOptions","fieldUnit","resize","SampleResource","showSamples","showShortcuts","showMiniMap","editorRef","sidebarOpen","setSidebarOpen","sampleResources","hasSidebarContent","templateExtensions","sanitizeYamlContent","yamlByExtension","toolbarLinks","sidebarLabel","toggleSidebar","itemList","loadingItems","recommended","showIfSingle","showFilter","showCount","emptyStateMessage","selectedError","selectedTouched","filteredList","setFilteredList","handleItemChange","filterSources","debounceFilterText","iconUrl","beforeInput","afterInput","groupTextType","TextArea","getTextColumnProps","colProps","uiSchema","formDescription","formContext","DynamicForm","formData","tagName","customUISchema","noActions","liveValidate","yamlContext","prune","noMargin","yamlData","yamlWarning","setYAMLWarning","sanitizeToCallback","setSanitizeToCallback","disabledFormAlert","setDisabledFormAlert","setEditorType","changeEditorType","newType","onChangeType","newYAML","skipInvalid","sanitizeTo","handleToggleToYAML","margin","editor","PREFERRED_CREATE_EDIT_METHOD_USER_SETTING_VALUE_LATEST","usePreferredCreateEditMethod","preferredCreateEditMethod","preferredCreateEditMethodLoaded","isCreatable","hasOnCreateOption","isInputValuePersisted","toggleOnSelection","hideClearButton","getLabelFromValue","setNewOptions","toggleId","typeAheadAriaLabel","onCreateOption","GettingStartedCard","titleColor","links","telemetryCallback","getLinkTitleClassNames","isControlled","componentClassName","QuickStartGettingStartedCard","featured","setActiveQuickStart","slicedQuickStarts","allQuickStarts","orderedQuickStarts","isFeatured","getStatus","featuredQuickStartsByName","quickStartName","orderQuickStarts","tasks","getQuickStartNameRef","useQuickStarts","filterDisabledQuickStarts","quickStartsError","groupedQuickStarts","groupQuickStartsByName","quickStartsByName","preferredCountry","sameLanguageWithoutCountry","sameLanguageWithAnyCountry","fallbackLanguageSameCountry","fallbackLanguageNoCountry","fallbackLanguageAnyCountry","quickStartLanguage","quickStartCountry","getBestMatch","GettingStartedExpandableGrid","titleTooltip","displaySize","toggleContent","HIDE_HEALTH_CHECK_ALERT_FOR","HEALTH_CHECK_CONFIGMAP_KEY","addHealthChecksRefs","hideHealthCheckAlertFor","setHideHealthCheckAlertFor","kindForCRDResource","canAddHealthChecks","containersName","healthCheckAdded","readinessProbe","livenessProbe","startupProbe","addHealthChecksLink","alertMessage","Popover","uniqueId","popover","PopoverPlacement","isDark","autofocus","setEnabled","previouslyEnabled","trusted","setSubmitError","setIsSubmitting","hpaName","hpaLabel","secondaryButtonAction","menuAction","actionName","selectedMenuItem","onSelection","interactive","highlightElement","hiddenElement","parentElement","queryArg","rowFilterReducer","textFilterReducer","resourceHeader","ResourceRow","filteredListItems","queryArgument","filteredText","ExecuteSnippet","showRunning","setShowRunning","textToExecute","executeTextId","innerText","setAttribute","removeAttribute","elements","querySelectorAll","showExecuteButton","elm","attributeValue","regex","subGroup","groupType","groupId","subgroup","quickSearchProviders","searchPlaceholder","viewContainer","allItemsLoaded","limitItemCount","disableKeyboardOpen","detailsRenderer","isLimitedList","searchCatalog","searchTerm","quickSearchProvider","viewAllLink","catalogLinkLabel","getCatalogURL","catalogItemTypes","typeDescription","item1","item2","viewAllLinks","allCatalogItemsLoaded","OverviewDetailItem","tableTags","MarkdownView","truncateContent","exactHeight","markup","converter","tables","openLinksInNewWindow","strikethrough","emoji","setOption","addExtension","makeHtml","allowedTags","allowedAttributes","div","pre","allowedSchemes","transformTags","markdownConvert","separator","InlineMarkdownView","IFrameMarkdownView","RenderExtension","markupRef","shouldRenderExtension","dangerouslySetInnerHTML","__html","frame","setFrame","frameHeight","setFrameHeight","contentDocument","updateDimensions","contentWindow","firstElementChild","filteredLinks","getElementsByTagName","contents","sandbox","srcDoc","border","categoriesString","developerCatalogCategories","categoriesArray","showAlreadyLoadedItemsAfter","catalogFilterExtensions","catalogBadgeProviderExtensions","extensionsResolved","extItemsMap","setExtItemsMap","extItemsErrorMap","setItemsErrorMap","setMetadataProviderMap","showAlreadyLoadedItems","timeIsUp","setTimeIsUp","useTimeout","enabledCatalogProviderExtensions","preCatalogItems","itemMap","fe","onMetadataValueResolved","catalogItemsMap","failedExtensions","failedCalls","totalCalls","catalogService","itemsMap","catalogExtensions","enableDetailsPanel","defaultTitle","defaultDescription","typeExtension","attribute","categoryParam","keywordParam","sortParam","crumbs","selectedId","SELECTED_ID","it","availableFilters","openDetailsPanel","closeDetailsPanel","catalogDescription","getCatalogTypeDescription","onVisibleItemChange","validChildren","child","validChild","isNameInVisibleItems","nodeMemory","used","nodeFS","nodeCPU","nodePods","nodeMachine","nodeInstanceType","nodeZone","nodeUptime","nodeReadiness","readiness","nodeRoles","sortWithCSRResource","getter","csrDefaultValue","snapshotSize","restoreSize","snapshotSource","persistentVolumeClaimName","volumeSnapshotContentName","withPostFormSubmissionCallback","postFormSubmissionCallback","withUserSettingsCompatibility","configStorageKey","localStoragekey","defaultvalue","userSettingState","setUserSettingState","withActivePerspective","getBindableServiceResources","BindableServicesModel","GitOpsServiceModel","NODE_STATUS_STARTING_MAINTENANCE","NODE_STATUS_UNDER_MAINTENANCE","NODE_STATUS_STOPPING_MAINTENANCE","NODE_STATUS_TITLE_KEYS","getNodeMaintenanceNodeName","nodeMaintenance","getNodeMaintenanceReason","getNodeMaintenancePhase","getNodeMaintenanceLastError","getNodeMaintenancePendingPods","getNodeMaintenanceProgressPercent","pendingPods","evictionPods","getNodeMaintenanceCreationTimestamp","findNodeMaintenance","nodeMaintenances","getHostOperationalStatus","getHostErrorType","getHostProvisioningState","getHostMachineName","getHostBMCAddress","getHostDisableCertificateVerification","getHostBootMACAddress","bootMACAddress","isHostOnline","getHostNICs","getHostStorage","getHostCPU","getHostRAMMiB","getHostErrorMessage","getHostDescription","isHostPoweredOn","getPoweroffAnnotation","isHostScheduledForRestart","hasRebootAnnotation","getHostPowerStatus","isOnline","isPoweredOn","poweroffAnnotation","getHostVendorInfo","getHostTotalStorageCapacity","disk","sizeBytes","getHostBios","getHostMachine","hasPowerManagement","ApplicationModel","useCreateResourceExtension","createResourceTypeGuard","extensionPage","GuidedTourMastheadTrigger","TabsComponent","variantStyle","light300","colorSchemeLight_300","Tabs","tabList","scrollTimeout","handleScrollButtons","disableLeftScrollButton","disableRightScrollButton","showScrollButtons","overflowOnLeft","firstChild","overflowOnRight","lastChild","scrollLeft","childrenArr","firstElementInView","lastElementOutOfView","scrollWidth","scrollRight","lastElementInView","firstElementOutOfView","shownKeys","defaultActiveKey","uncontrolledActiveKey","uncontrolledIsExpandedLocal","defaultIsExpanded","ouiaStateId","expandable","toggleAriaLabel","toggleText","mountOnEnter","isSecondary","leftScrollAriaLabel","rightScrollAriaLabel","ouiaId","ouiaSafe","unmountOnExit","usePageInsets","inset","filteredChildren","nav","localActiveKey","isExpandedLocal","toggleTabs","handleTabClick","vertical","box","scrollable","pageInsets","randomId","tabsToggle","tabsToggleButton","tabsToggleIcon","tabsScrollButton","tabsList","terminalNamespace","setTerminalNamespace","fetchError","setFetchError","namespaceRequest","useValuesForPerspectiveContext","lastPerspective","setLastPerspective","lastPerspectiveLoaded","existingPerspective","newPerspective","lastViewedLabel","selectOptions","currPerspective","nextPerspective","currPerspectiveName","nextPerspectiveName","setPreferredLanguage","isUsingDefault","setIsUsingDefault","checkboxLabel","ActivityItem","ActivityBody","AlertsBody","AlertItem","HealthItem","HealthBody","ResourceInventoryItem","DetailsBody","UtilizationItem","UtilizationBody","UtilizationDurationDropdown","VirtualizedGrid","LazyActionMenu","QuickStartsLoader","useDashboardResources","translationKeyMap","UID","translatableString","defineModels","updateResources","apiResourceData","coreResources","initApiDiscovery","storeInstance","useReduxStore","storeContext","setStoreContextPresent","moreRecent","metaA","metaB","removeFromList","qualifiedName","nextJS","deleteIn","equals","RESOURCES","newList","existingModel","newModel","findEntry","staticModel","updateIn","mergeDeep","currentJS","oldList","existingKeys","loadList","userSettingsKey","trueValue","falseValue","currentUserPreferenceValue","setCurrentUserPreferenceValue","currentUserPreferenceValueLoaded","checkedValue","useUserSettingsLocalStorage","session","valueInStorage","dataRef","storageUpdated","storageArea","configMapData","newData","previousData","dataToUpdate","StorageEvent","oldValue","dispatchEvent","CustomComponent","customComponentProps","dropdownOption","isCurrentUserPreferenceValuePresentInOptions","searchValue","searchLabel","namespaceProptype","componentName","RouteMetrics","namespaceRouteQuery","OverviewSpecialGroup","workloadResourceModels","getContainers","configureAddSecretToWorkloadModal","workloadOptions","setWorkloadOptions","workloadsByUID","setWorkloadsByUID","selectedWorkloadUID","setSelectedWorkloadUID","addAs","setAddAs","setPrefix","setMountPath","workloadsByUid","onAddAsChange","getPatches","envFrom","getEnvPatches","mount","existingVolumes","getVolumePatches","addAsEnvironment","addAsVolume","selectWorkloadPlaceholder","getValueForNamespace","syncRowFilterParams","syncSearchParams","labelFilters","searchFilters","searchFiltersValues","queryValue","setSearchFiltersState","flushSearchFiltersState","resourcesToOmit","toMatchWith","seen","enter","measurementCache","SysEvent","shouldAnimate","exit","EventStreamList","setList","clearAll","measure","onEntered","print","containersToStatuses","PodLogs","_selectContainer","currentContainer","currentContainerStatus","containerToLogSourceStatus","containerDropdown","getRowId","getRowTitle","getRowClassName","minAvailable","maxUnavailable","ResourceMetricsDashboardCard","ResourceMetricsDashboard","PipelineLogMessage","BuildLogs","prevStatus","New","Cancelled","Complete","buildPhaseToLogSourceStatus","onProviderValueResolved","providerGuard","filterGuard","resourceProviderGuard","providerExtensions","providerExtensionsResolved","filterExtensions","filterExtensionsResolved","resourceProviderExtensions","resourceProviderExtensionsResolved","allProviderExtensions","allProviderExtensionsResolved","flattenedActions","SYSTEM_ALERT_RULE_LABEL","barSpacing","barWidth","LabelComponent","noLink","colorMap","green","orange","purple","red","yellow","Body","postfix","postfixFontSize","prefixFontSize","valueFontSize","valueMaps","setIsLoading","filteredVMs","vm","valueMap","thresholds","fieldOptions","thresholdIndex","colorName","refId","xs","labelColumns","valueColumns","alias","sortedData","MIN_VALUE","num","timeSpanFromParams","endTimeFromParams","zeroPad","toISODateString","toISOTimeString","hourCycle","defaultFrom","fromDate","setFromDate","fromTime","setFromTime","toDate","setToDate","toTime","setToTime","hasNoBodyWrapper","spacer","is24Hour","useIsVisible","setIsVisible","setWasEverVisible","IntersectionObserver","isIntersecting","useFetchDashboards","setBoards","newBoards","dashboard","MonitorType","ServiceMonitorsWatchContext","ServicesWatchContext","PodMonitorsWatchContext","PodsWatchContext","PodMonitor","podMonitors","podMonitorsLoaded","podMonitorsLoadError","podsLoaded","podMonitor","scrapePool","namespaceSelector","matchNames","ServiceMonitor","monitors","monitorsLoaded","monitorsLoadError","servicesLoaded","Health","WatchErrorAlert","showError","hideError","scrapeUrl","isServiceMonitor","isPodMonitor","serviceMonitorsLoadError","lastScrape","lastError","tableClasses","lastScrapeDuration","btoa","List","TargetsUI","setTargets","servicesWatch","monitorsWatch","podsWatch","podMonitorsWatch","TARGETS","activeTargets","EditAlertmanagerYAML","create","genericYAML","AlertmanagerYAMLEditor","setErrorMsg","successMsg","setSuccessMsg","alertmanagerYAML","loadErrorMsg","AlertmanagerYAMLEditorWrapper","switchIsChecked","switchIsDisabled","switchLabel","switchLabelClassName","switchLabelIsReversed","switchLabelOff","switchOnChange","isReversed","labelOff","iKey","getSpans","trunc","remainder","DEFAULT_ROW_RENDERER","newProps","namePrefix","preview","drop","accept","collect","swap","accessReviewResources","accessReviews","accessReviewsLoading","descriptor","review","useForceUpdate","setTick","other","idealItemWidth","containerRole","columnWidth","cellRenderer","estimatedRowSize","columnCountEstimate","getRowHeight","flip","clicked","setClicked","elementToCheck","innerHeight","isInViewport","block","Tippy","popperInstance","medium","positionOffset","maxDimension","setCatalogItems","setCatalogTypes","isRndActive","setIsRndActive","setMaxHeight","setMinHeight","minWidth","setMinWidth","setSearchTerm","selectedItemId","setSelectedItemId","setSelectedItem","viewAll","setViewAll","modalSize","setModalSize","draggableBoundary","setDraggableBoundary","listCatalogItems","handleResizeStop","onSearch","searchInput","getIndexOfSelectedItem","onEnter","activeViewAllLink","selectPrevious","selectNext","onOutsideClick","modalBody","onDragStop","offsetWidth","bounds","onResizeStop","dragHandleClassName","enableResizing","bottomLeft","bottomRight","topLeft","topRight","getModalHeight","showNoResults","itemsLoaded","onListChange","spanRef","listItems","onSelectListItem","detailsContentRenderer","sortedActiveFilters","renderFilterGroup","filterGroupKeys","sortedFilterGroup","whiteSpace","renderFilterItem","itemsCount","setItemsCount","listHeight","selectedDataListItemId","onSelectDataListItem","isCompact","itemType","onDoubleClick","dataListCells","isIcon","paddingTop","wrapModifier","secondaryLabel","catalogLink","getSelector","getGuidedTour","FLAG_OPENSHIFT_GITOPS","getClusterInsightsStatus","cluster","metricsResponse","metricsError","operatorStatusResponse","operatorStatusError","operatorDisabled","issuesNumber","issueStr","getClusterInsightsComponentStatus","getIsKnativeResource","isKnativeResource","topologyPlugin","workloadKeys","getDataModel","getKnativeServingTopologyDataModel","isResourceDepicted","getKnativeEventingTopologyDataModel","getKnativeKameletsTopologyDataModel","getCSVPriorityStatus","subscriptionStatus","csvStatus","operatorHealth","getClusterServiceVersionsWithStatuses","grouppedOperators","defaultDecoratorsPlugin","quadrant","lowerRight","decorator","upperRight","lowerLeft","upperLeft","operatorsTopologyPlugin","getFactory","getCreateConnector","newQueryBrowserQuery","silenceFiringAlerts","ruleAlert","dev","admin","queryBrowser","queryBrowserPatchQueryHelper","notificationAlerts","silencesKey","isAlertFiring","QueryBrowserAddQuery","QueryBrowserDuplicateQuery","originQueryText","duplicate","QueryBrowserDeleteQuery","QueryBrowserDismissNamespaceAlert","QueryBrowserSetAllExpanded","QueryBrowserSetPollInterval","QueryBrowserToggleIsEnabled","RedirectComponent","Memoized","NamespaceFromURL","C","namespacedRoutes","DefaultPageRedirect","firstVisit","resolvedUrl","setResolvedUrl","visited","setVisited","visitedLoaded","landingPageURL","LazyDynamicRoute","LazyComponent","StatusProjectsRedirect","OverviewProjectsRedirect","AlertManagerRedirect","CronJobRedirect","HorizontalPodRedirect","routePageExtensions","dynamicRoutePages","allPluginsProcessed","pluginPageRoutes","inactivePluginPageRoutes","routePages","activeRoutes","inactiveRoutes","copiedProperties","exact","getPluginPageRoutes","contentRouter","DashboardsPage","APIExplorerPage","APIResourcePage","CommandLineToolsPage","InstantiateTemplatePage","ImportYamlPage","EditYAMLPage","CreateNetworkPolicy","RoutePage","CreatePVC","VolumeSnapshot","CreateReceiver","EditReceiver","AddGitHubPage","AddGitLabPage","AddGooglePage","AddHTPasswdPage","AddKeystonePage","AddLDAPPage","AddOpenIDIDPPage","AddBasicAuthPage","AddRequestHeaderPage","ClusterSettingsPage","StorageClassForm","PDBFormPage","DebugTerminalPage","GlobalNotifications","ImpersonateNotifier","kindTranslated","oAuthResourcePath","KubeAdminNotifier","TelemetryNotifier","setCurrentUserPreferenceTelemetryValue","userResponse","defaultHelpLinks","externalLink","MultiClusterToolbarGroup","FeedbackModalLocalized","reportBugLink","feedbackLocales","onShareFeedback","onOpenSupportCase","feedbackLocale","onJoinMailingList","feedbackImg","SystemStatusButton","statuspageData","MastheadToolbarContents","authEnabledFlag","consoleCLIDownloadFlag","quickstartFlag","CONSOLE_QUICKSTART","launchCopyLoginCommandModal","canAccessNS","isAppLauncherDropdownOpen","setIsAppLauncherDropdownOpen","isUserDropdownOpen","setIsUserDropdownOpen","isKebabDropdownOpen","setIsKebabDropdownOpen","isHelpDropdownOpen","setIsHelpDropdownOpen","statusPageData","setStatusPageData","showAboutModal","setshowAboutModal","isFeedbackModalOpen","setIsFeedbackModalOpen","userInactivityTimeout","getImportYAMLPath","onUserDropdownToggle","onUserDropdownSelect","onKebabDropdownToggle","onKebabDropdownSelect","onAboutModal","getAdditionalLinks","sectionSort","getLaunchActions","launcherItems","sections","isSection","sectionName","sortedSections","sectionItems","getSectionLauncherItems","getHelpActions","additionalHelpActions","helpActions","tourRef","helpLink","getAdditionalActions","externalProps","isExternal","renderApplicationItems","groupIndex","sectionAction","itemIndex","renderMenu","mobile","additionalUserActions","launchActions","userActions","userToggle","statuspageID","newStatusPageData","setLastConsoleActivityTimestamp","resetInactivityTimeout","logoutOpenShift","inactivityTimeout","onStorageChange","alertAccess","isFullHeight","isStatic","closeAboutModal","MastheadToolbar","clusterVersionFlag","consoleLinkFlag","paddingLeft","DynamicPlugins","sortedLoadedPlugins","AboutModalItems","kubernetesVersion","setKubernetesVersion","serviceLevelTitle","customIcon","AboutModal","customBranding","brandImageSrc","brandImageAlt","hasNoContentContainer","k8sVersion","filterTourBasedonPermissionAndFlag","stepFlags","access","primaryButton","secondaryButton","stepContent","primaryButtonCallback","secondaryButtonCallback","ClusterGroup","clusters","acmPerspectiveExtension","setSelection","onLocalClusterClick","onAllClustersClick","clusterMenu","menuToggle","useFeedbackLocal","reportBug","getSupport","bugReported","describeBug","describeBugUrgentCases","describeReportBug","directInfluence","enterFeedback","feedback","feedbackSent","helpUsImproveHCC","howIsConsoleExperience","joinMailingList","informDirectionDescription","informDirection","learnAboutResearchOpportunities","openSupportCase","problemProcessingRequest","redHatSupport","reportABug","responseSent","researchOpportunities","shareFeedback","shareYourFeedback","somethingWentWrong","submitFeedback","teamWillReviewBug","tellAboutExperience","thankYouForFeedback","thankYouForInterest","userResearchTeam","weNeverSharePersonalInformation","Navigation","onNavSelect","onPerspectiveSelected","PerspectiveDropdownItem","LazyIcon","isPerspectiveDropdownOpen","setPerspectiveDropdownOpen","togglePerspectiveOpen","acmLink","onPerspectiveSelect","perspectiveItems","perspectiveDropdownItems","validPinnedResources","setValidPinnedResources","isDragged","setIsDragged","validResources","orderedNavExtensions","topLevelNavExtensions","NavGroupWithDnd","onReorder","navResources","hasListItem","DraggableButton","RemoveButton","navItem","unPin","didDrop","startIndex","destIndex","reorder","getLabelForResourceRef","duplicates","previewRef","PluginNavItem","NavSection","navExtensions","getK8sModelForExtension","navExtensionIsActive","onExpand","expandedState","buttonProps","useNavExtensionsForSection","isExtensionForSection","getMastheadHeight","masthead","minimize","minimizeText","restoreText","minimized","CloudShellTerminal","namespaceLoadError","initData","setInitData","initError","setInitError","isAdminCheckLoading","workspacePhase","workspaceId","unrecoverableErrorFound","unmounted","defaultError","RUNNING","FAILED","STARTING","podname","shcommand","cmd","CloudShellExec","onActivate","wsOpen","setWsOpen","wsError","setWsError","wsReopening","setWsReopening","customResource","setCustomResource","onData","sessionId","cols","Height","Width","onCommand","usedClient","urlOpts","stdout","stdin","stderr","tty","wsOpts","websocket","currentTerminal","errMsg","onConnectionClosed","onDataReceived","stoppedByError","cr","stopReason","terminalOptions","cursorBlink","Terminal","terminalRef","term","fitAddon","loadAddon","resizeObserver","fit","dispose","write","loadAttachAddon","addOn","protectedNamespaceExists","namespaceExists","csTimeout","onReset","validationSchema","formikProps","setVisibleItems","TimeoutUnits","NamespaceSection","onDropdownChange","projectList","createNamespace","findWorkspace","isClusterAdmin","defaultNamespace","searching","setSearching","noNamespaceFound","setNoNamespaceFound","canListWorkspaces","loadingAccessReview","searchNamespaces","projects","projectName","workspaceList","TICK_INTERVAL","perspectiveParam","perspectiveIDs","getPerspectiveURLParam","Detector","detectors","detectedPerspective","defaultPerspective","detectionComplete","enablePerspective","setDetectors","resolveCount","resolvedDetectors","usePerspectiveDetection","FieldComponent","getUserPreferenceGroups","userPreferenceGroups","userPreferenceItems","initialUserPreferenceGroup","userPreferenceGroup","currUserPreferenceItem","userPreferenceGroupForCurrentItem","useLastPerspective","DetectLanguage","flagProvider","flagProviderResolved","nf","initConsolePlugins","registerFailedDynamicPlugin","isStandardPluginManifest","sharedScope","addModule","getModule","versionRange","eager","initSharedScope","initSharedPluginModules","EventItem","UnmetPluginDependenciesError","unmetDependencies","unsubListenerMap","cleanupListener","formatPluginNames","formatUnmetDependency","depName","requiredRange","resolvePluginDependencies","consolePluginAPIVersion","allowedPluginNames","semverOptions","includePrerelease","requiredPluginNames","unavailablePluginNames","promiseSettled","rejectPromise","unsubListener","loadedPlugins","failedPluginNames","fetchPluginManifest","manifestURL","validator","SchemaValidator","assertions","validDNSSubdomainName","validSemverString","validSemverRangeString","validatePluginManifestSchema","report","AdmissionWebhookWarningNotifications","toastContext","docURL","UtilizationAxis","fixLabelOverlap","newSelected","mapCardsToGrid","cards","keyPrefix","ignoreCardSpan","mainCards","leftCards","rightCards","smallGrid","mainGridCards","leftGridCards","rightGridCards","CriticalIcon","WarningIcon","getSeverityIcon","StatusItem","documentationLink","actionExtensions","actionObj","HealthItemIcon","popupTitle","popupClassname","popupBodyContent","popupKeepOnOutsideClick","noIcon","hideOnOutsideClick","defaultStatusGroupIcons","WARN","getStatusGroupIcons","groupStatusIcons","titlePlural","TitleComponent","ExpandedComponent","titleMessage","Status","groupID","dynamicGroupExtensions","statusGroupIcons","mergedExtensions","NOT_MAPPED","groupIcon","StatusLink","statusIDs","statusItems","ResourceTitleComponent","additionalResources","mapper","showLink","Title","top3Groups","groupIDs","groupStatuses","getTop3Groups","titleLabel","titlePluralLabel","lastTimeInSeries","getMaxDate","MultilineUtilizationItem","dataUnits","humanizeValue","TopConsumerPopovers","originalData","dataUnitsValue","latestData","amount","getCurrentData","maxDate","translatedData","currData","mapTranslatedData","TopConsumerPopover","trimSecondsXMutator","setSeconds","setLimitReqState","requestedData","humanMax","humanAvailable","currentUtilization","percentage","LimitIcon","humanLimit","limitState","requestedState","latestLimit","latestRequested","limitPercentage","reqPercentage","currentHumanized","ActivityProgress","progress","DeleteModalComponent","fuzzyLink","EnhancedProvider","ContextProvider","useValueHook","App","contextProviderExtensions","isLargeLayout","prevLocation","setPrevLocation","prevParams","setPrevParams","setIsMastheadStacked","setIsNavOpen","isDrawerInline","setIsDrawerInline","previousDesktopState","previousMobileState","previousDrawerInlineState","desktop","drawerInline","oldLocation","newLocation","titleTemplate","mainTabIndex","Event","sidebar","skipToContent","CaptureTelemetry","AppWithExtensions","reduxReducerExtensions","reducersResolved","AppRouter","standaloneRouteExtensions","debounceTime","setDebounceTime","titleOnLoad","setTitleOnLoad","telemetryTitle","fireUrlChangeEvent","nextPathname","nextSearch","PollConsoleUpdates","isToastOpen","setToastOpen","pluginsChanged","setPluginsChanged","pluginVersionsChanged","setPluginVersionsChanged","consoleChanged","setConsoleChanged","isFetchingPluginEndpoints","setIsFetchingPluginEndpoints","allPluginEndpointsReady","setAllPluginEndpointsReady","setUpdateData","updateError","setUpdateError","newPlugins","setNewPlugins","pluginManifestsData","setPluginManifestsData","pluginManifests","prevUpdateDataRef","prevPluginManifestsDataRef","prevUpdateData","prevPluginManifestsData","stateInitialized","pluginsAddedList","pluginsRemovedList","pluginsAdded","pluginsRemoved","pluginEndpointsReady","pluginManifestsVersionsChanged","previousManifest","consoleCommitChanged","consoleCommit","toastCallback","updateSwaggerInterval","onReady","lineno","colno","formattedMessage","onunhandledrejection","promiseRejectionEvent","loadTestFactor","serviceWorker","register","postMessage","topic","getRegistrations","registrations","reg","unregister","k8sResource","isActivity","getTimestamp","healthHandler","additionalResource","popupComponent","disallowedControlPlaneTopology","getNodeStatusGroups","getPodStatusGroups","getPVCStatusGroups","getOperatorsWithStatuses","operatorRowLoader","VolumeSnapshotPVCPage","ConsoleOperatorConfigDetailsPage","ImageManifestVulnPage","ImageManifestVulnDetailsPage","getBindableServicesTopologyDataModel","isServiceBindable","InsightsPopup","FLAG_KUBEVIRT","LSO_DEVICE_DISCOVERY","NodesDisksListPage","CreateLocalVolumeDiscovery","kvAlphaMaintenances","kvBetaMaintenances","maintenances","getBMNStatusGroups","getBMHStatusGroups","NetworkAttachmentDefinitionsPage","NetworkAttachmentDefinitionsDetailsPage","OPERATOR_LIFECYCLE_MANAGER","OperandDetailsPage","SubscriptionsPage","SubscriptionDetailsPage","ClusterServiceVersionsPage","PackageManifestsPage","ClusterServiceVersionDetailsPage","CreateSubscriptionYAML","OperatorHubPage","OperatorHubSubscribePage","OperatorHubDetailsPage","CatalogSourceDetailsPage","CreateCatalogSource","InstallPlanDetailsPage","InstallPlansPage","prometheusQueries","notificationAlertLabelSelectors","alertsLoadError","urlResults"],"mappings":"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3P,EAAuB,CAAE7pG,eAAch/E,kB,gBC/D9CvqE,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,yC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,oC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,0C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,wC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,2C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,sC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,0C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,0C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,wC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,4C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,wC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,yC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,yC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,+C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,oC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,wC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,wC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,oC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,0C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,wC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,2C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,sC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,wC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,sC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,sC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,mC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,wC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,yC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,wC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,8C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,wC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,0C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,0C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,wC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,sC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,+C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,sC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,4C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,0C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,4C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,8C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,qC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,wC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,oC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,qC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,2C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,8C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,uC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,wC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,yC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,sC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,sC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,sC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,+C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,+C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,0C,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,qC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,qC,gBCA3Ch6H,EAAOg6H,QAAU,IAA0B,sC,gBC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","file":"main-chunk-6f7f90975ad4a22011a7.min.js","sourcesContent":["export * from './line-buffer';\nexport * from './promise-component';\nexport * from './kebab';\nexport * from './selector';\nexport * from './selector-input';\nexport * from './label-list';\nexport * from './resource-icon';\nexport * from './resource-link';\nexport * from './resource-log';\nexport * from './timestamp';\nexport * from './horizontal-nav';\nexport * from './details-page';\nexport * from './inject';\nexport * from './disabled';\nexport * from './firehose';\nexport * from './dropdown';\nexport * from './status-box';\nexport * from './headings';\nexport * from './units';\nexport * from './toggle-play';\nexport * from './button-bar';\nexport * from './number-spinner';\nexport * from './cloud-provider';\nexport * from './documentation';\nexport * from './router';\nexport * from './router-hooks';\nexport * from './link';\nexport * from './alerts';\nexport * from './async';\nexport * from './download-button';\nexport * from './entitlements';\nexport * from './build-strategy';\nexport * from './copy-to-clipboard';\nexport * from './build-hooks';\nexport * from './webhooks';\nexport * from './scroll-to-top-on-mount';\nexport * from './container-table';\nexport * from './simple-tab-nav';\nexport * from './request-size-input';\nexport * from './k8s-watcher';\nexport * from './workload-pause';\nexport * from './list-dropdown';\nexport * from './list-input';\nexport * from './rbac';\nexport * from './poll-hook';\nexport * from './ref-width-hook';\nexport * from './safe-fetch-hook';\nexport * from './truncate-middle';\nexport * from './expand-collapse';\nexport * from './volume-type';\nexport * from './skeleton-catalog';\nexport * from './dom-utils';\nexport * from './hint-block';\nexport * from './owner-references';\nexport { default } from './operator-backed-owner-references';\nexport * from './field-level-help';\nexport * from './details-item';\nexport * from './types';\nexport * from './release-notes-link';\nexport * from './service-level';\n","export * from './job';\nexport * from './k8s';\nexport * from './pods';\nexport * from './resource';\nexport * from './get-resources';\nexport * from './k8s-models';\nexport * from './label-selector';\nexport * from './cluster-operator';\nexport * from './cluster-settings';\nexport * from './template';\nexport * from './swagger';\nexport * from './event';\nexport * from './types';\nexport * from './k8s-ref';\nexport {\n k8sGet,\n k8sCreate,\n k8sUpdate,\n k8sPatch,\n k8sKill,\n k8sList,\n getK8sResourcePath,\n resourceURL,\n} from '@console/dynamic-plugin-sdk/src/utils/k8s';\n","/* eslint-disable no-console */\n\nimport * as _ from 'lodash';\nimport {\n Extension,\n RemoteEntryModule,\n EncodedCodeRef,\n CodeRef,\n ResolvedCodeRefProperties,\n ExtensionProperties,\n UpdateExtensionProperties,\n} from '../types';\nimport { deepForOwn } from '../utils/object';\nimport { settleAllPromises } from '../utils/promise';\n\nconst codeRefSymbol = Symbol('CodeRef');\n\nexport const applyCodeRefSymbol = (ref: CodeRef) => {\n ref[codeRefSymbol] = true;\n return ref;\n};\n\nexport const isEncodedCodeRef = (obj): obj is EncodedCodeRef =>\n _.isPlainObject(obj) &&\n _.isEqual(Object.getOwnPropertyNames(obj), ['$codeRef']) &&\n typeof (obj as EncodedCodeRef).$codeRef === 'string';\n\nexport const isExecutableCodeRef = (obj): obj is CodeRef =>\n _.isFunction(obj) &&\n _.isEqual(Object.getOwnPropertySymbols(obj), [codeRefSymbol]) &&\n obj[codeRefSymbol] === true;\n\nconst codeRefErrorSymbol = Symbol('error');\nexport const isCodeRefError = (ref: CodeRef) => !!ref[codeRefErrorSymbol];\nexport const getCodeRefError = (ref: CodeRef) => ref[codeRefErrorSymbol];\nexport const setCodeRefError = (ref: CodeRef, e: any) => {\n ref[codeRefErrorSymbol] = e;\n return ref;\n};\n\n/**\n * Parse the `EncodedCodeRef` value into `[moduleName, exportName]` tuple.\n *\n * Returns an empty array if the value doesn't match the expected format.\n */\nexport const parseEncodedCodeRefValue = (value: string): [string, string] | [] => {\n const match = value.match(/^([^.]+)(?:\\.(.+)){0,1}$/);\n return match ? [match[1], match[2] || 'default'] : [];\n};\n\n/**\n * Returns the object referenced by the `EncodedCodeRef`.\n *\n * If an error occurs, calls `errorCallback` and returns `null`.\n *\n * _Does not throw errors by design._\n */\nexport const loadReferencedObject = async (\n ref: EncodedCodeRef,\n entryModule: RemoteEntryModule,\n pluginID: string,\n errorCallback: VoidFunction,\n): Promise => {\n const [moduleName, exportName] = parseEncodedCodeRefValue(ref.$codeRef);\n let requestedModule: {};\n\n if (!moduleName) {\n console.error(`Malformed code reference '${ref.$codeRef}' of plugin ${pluginID}`);\n errorCallback();\n return null;\n }\n\n try {\n const moduleFactory = await entryModule.get(moduleName);\n requestedModule = moduleFactory();\n } catch (error) {\n console.error(`Failed to load module '${moduleName}' of plugin ${pluginID}`, error);\n errorCallback();\n return null;\n }\n\n if (!requestedModule[exportName]) {\n console.error(`Missing module export '${moduleName}.${exportName}' of plugin ${pluginID}`);\n errorCallback();\n return null;\n }\n\n return requestedModule[exportName];\n};\n\n/**\n * Returns new `extensions` array, resolving `EncodedCodeRef` values into `CodeRef` functions.\n *\n * _Does not execute `CodeRef` functions to load the referenced objects._\n */\nexport const resolveEncodedCodeRefs = (\n extensions: Extension[],\n entryModule: RemoteEntryModule,\n pluginID: string,\n errorCallback: VoidFunction,\n): Extension[] =>\n _.cloneDeep(extensions).map((e) => {\n deepForOwn(e.properties, isEncodedCodeRef, (ref, key, obj) => {\n const loader = applyCodeRefSymbol(async () =>\n loadReferencedObject(ref, entryModule, pluginID, errorCallback),\n );\n obj[key] = Object.defineProperty(loader, 'name', { value: `${pluginID}-${ref.$codeRef}` });\n });\n\n return e;\n });\n\n/**\n * Returns an extension with its `CodeRef` properties replaced with referenced objects.\n */\nexport const resolveExtension = async <\n E extends Extension

,\n P = ExtensionProperties,\n R = UpdateExtensionProperties, P>\n>(\n extension: E,\n): Promise => {\n const valueResolutions: Promise[] = [];\n\n deepForOwn(extension.properties, isExecutableCodeRef, (ref, key, obj) => {\n if (isCodeRefError(ref)) {\n throw getCodeRefError(ref);\n }\n valueResolutions.push(\n ref()\n .then((resolvedValue) => {\n obj[key] = resolvedValue;\n\n if (_.isNil(resolvedValue)) {\n console.warn(`Code reference property '${key}' resolved to null or undefined`);\n }\n })\n .catch((e) => {\n setCodeRefError(ref, e ?? true);\n return e;\n }),\n );\n });\n\n await settleAllPromises(valueResolutions);\n\n return (extension as unknown) as R;\n};\n","import { K8sModel as K8sKind } from '@console/dynamic-plugin-sdk/src/api/common-types';\n\nexport const PrometheusModel: K8sKind = {\n kind: 'Prometheus',\n label: 'Prometheus',\n // t('public~Prometheus')\n labelKey: 'public~Prometheus',\n labelPlural: 'Prometheuses',\n // t('public~Prometheuses')\n labelPluralKey: 'public~Prometheuses',\n apiGroup: 'monitoring.coreos.com',\n apiVersion: 'v1',\n abbr: 'PI',\n namespaced: true,\n crd: true,\n plural: 'prometheuses',\n propagationPolicy: 'Foreground',\n};\n\nexport const ServiceMonitorModel: K8sKind = {\n kind: 'ServiceMonitor',\n label: 'ServiceMonitor',\n // t('public~ServiceMonitor')\n labelKey: 'public~ServiceMonitor',\n labelPlural: 'ServiceMonitors',\n // t('public~ServiceMonitors')\n labelPluralKey: 'public~ServiceMonitors',\n apiGroup: 'monitoring.coreos.com',\n apiVersion: 'v1',\n abbr: 'SM',\n namespaced: true,\n crd: true,\n plural: 'servicemonitors',\n propagationPolicy: 'Foreground',\n};\n\nexport const PodMonitorModel: K8sKind = {\n kind: 'PodMonitor',\n label: 'PodMonitor',\n // t('public~PodMonitor')\n labelKey: 'public~PodMonitor',\n labelPlural: 'PodMonitors',\n // t('public~PodMonitors')\n labelPluralKey: 'public~PodMonitors',\n apiGroup: 'monitoring.coreos.com',\n apiVersion: 'v1',\n abbr: 'PM',\n namespaced: true,\n crd: true,\n plural: 'podmonitors',\n propagationPolicy: 'Foreground',\n};\n\nexport const AlertmanagerModel: K8sKind = {\n kind: 'Alertmanager',\n label: 'Alertmanager',\n // t('public~Alertmanager')\n labelKey: 'public~Alertmanager',\n labelPlural: 'Alertmanagers',\n // t('public~Alertmanagers')\n labelPluralKey: 'public~Alertmanagers',\n apiGroup: 'monitoring.coreos.com',\n apiVersion: 'v1',\n abbr: 'AM',\n namespaced: true,\n crd: true,\n plural: 'alertmanagers',\n propagationPolicy: 'Foreground',\n};\n\nexport const ServiceModel: K8sKind = {\n apiVersion: 'v1',\n label: 'Service',\n // t('public~Service')\n labelKey: 'public~Service',\n plural: 'services',\n abbr: 'S',\n namespaced: true,\n kind: 'Service',\n id: 'service',\n labelPlural: 'Services',\n // t('public~Services')\n labelPluralKey: 'public~Services',\n};\n\nexport const PodModel: K8sKind = {\n apiVersion: 'v1',\n label: 'Pod',\n // t('public~Pod')\n labelKey: 'public~Pod',\n plural: 'pods',\n abbr: 'P',\n namespaced: true,\n kind: 'Pod',\n id: 'pod',\n labelPlural: 'Pods',\n // t('public~Pods')\n labelPluralKey: 'public~Pods',\n};\n\nexport const ContainerModel: K8sKind = {\n apiVersion: 'v1',\n label: 'Container',\n // t('public~Container')\n labelKey: 'public~Container',\n plural: 'containers',\n abbr: 'C',\n kind: 'Container',\n id: 'container',\n labelPlural: 'Containers',\n // t('public~Containers')\n labelPluralKey: 'public~Containers',\n};\n\nexport const DaemonSetModel: K8sKind = {\n label: 'DaemonSet',\n // t('public~DaemonSet')\n labelKey: 'public~DaemonSet',\n apiGroup: 'apps',\n plural: 'daemonsets',\n apiVersion: 'v1',\n abbr: 'DS',\n namespaced: true,\n propagationPolicy: 'Foreground',\n kind: 'DaemonSet',\n id: 'daemonset',\n labelPlural: 'DaemonSets',\n // t('public~DaemonSets')\n labelPluralKey: 'public~DaemonSets',\n};\n\nexport const ReplicationControllerModel: K8sKind = {\n apiVersion: 'v1',\n label: 'ReplicationController',\n // t('public~ReplicationController')\n labelKey: 'public~ReplicationController',\n plural: 'replicationcontrollers',\n abbr: 'RC',\n namespaced: true,\n propagationPolicy: 'Foreground',\n kind: 'ReplicationController',\n id: 'replicationcontroller',\n labelPlural: 'ReplicationControllers',\n // t('public~ReplicationControllers')\n labelPluralKey: 'public~ReplicationControllers',\n};\n\nexport const HorizontalPodAutoscalerModel: K8sKind = {\n label: 'HorizontalPodAutoscaler',\n // t('public~HorizontalPodAutoscaler')\n labelKey: 'public~HorizontalPodAutoscaler',\n plural: 'horizontalpodautoscalers',\n apiVersion: 'v2',\n apiGroup: 'autoscaling',\n abbr: 'HPA',\n namespaced: true,\n kind: 'HorizontalPodAutoscaler',\n id: 'horizontalpodautoscaler',\n labelPlural: 'HorizontalPodAutoscalers',\n // t('public~HorizontalPodAutoscalers')\n labelPluralKey: 'public~HorizontalPodAutoscalers',\n};\n\nexport const ServiceAccountModel: K8sKind = {\n apiVersion: 'v1',\n label: 'ServiceAccount',\n // t('public~ServiceAccount')\n labelKey: 'public~ServiceAccount',\n plural: 'serviceaccounts',\n abbr: 'SA',\n namespaced: true,\n kind: 'ServiceAccount',\n id: 'serviceaccount',\n labelPlural: 'ServiceAccounts',\n // t('public~ServiceAccounts')\n labelPluralKey: 'public~ServiceAccounts',\n};\n\nexport const ReplicaSetModel: K8sKind = {\n label: 'ReplicaSet',\n // t('public~ReplicaSet')\n labelKey: 'public~ReplicaSet',\n apiVersion: 'v1',\n apiGroup: 'apps',\n plural: 'replicasets',\n abbr: 'RS',\n namespaced: true,\n propagationPolicy: 'Foreground',\n kind: 'ReplicaSet',\n id: 'replicaset',\n labelPlural: 'ReplicaSets',\n // t('public~ReplicaSets')\n labelPluralKey: 'public~ReplicaSets',\n};\n\nexport const DeploymentModel: K8sKind = {\n label: 'Deployment',\n // t('public~Deployment')\n labelKey: 'public~Deployment',\n apiVersion: 'v1',\n apiGroup: 'apps',\n plural: 'deployments',\n abbr: 'D',\n namespaced: true,\n propagationPolicy: 'Foreground',\n kind: 'Deployment',\n id: 'deployment',\n labelPlural: 'Deployments',\n // t('public~Deployments')\n labelPluralKey: 'public~Deployments',\n};\n\nexport const DeploymentConfigModel: K8sKind = {\n label: 'DeploymentConfig',\n // t('public~DeploymentConfig')\n labelKey: 'public~DeploymentConfig',\n apiVersion: 'v1',\n apiGroup: 'apps.openshift.io',\n plural: 'deploymentconfigs',\n abbr: 'DC',\n namespaced: true,\n propagationPolicy: 'Foreground',\n kind: 'DeploymentConfig',\n id: 'deploymentconfig',\n labelPlural: 'DeploymentConfigs',\n // t('public~DeploymentConfigs')\n labelPluralKey: 'public~DeploymentConfigs',\n};\n\nexport const BuildConfigModel: K8sKind = {\n label: 'BuildConfig',\n // t('public~BuildConfig')\n labelKey: 'public~BuildConfig',\n apiVersion: 'v1',\n apiGroup: 'build.openshift.io',\n plural: 'buildconfigs',\n abbr: 'BC',\n namespaced: true,\n propagationPolicy: 'Foreground',\n kind: 'BuildConfig',\n id: 'buildconfig',\n labelPlural: 'BuildConfigs',\n // t('public~BuildConfigs')\n labelPluralKey: 'public~BuildConfigs',\n};\n\nexport const BuildModel: K8sKind = {\n label: 'Build',\n // t('public~Build')\n labelKey: 'public~Build',\n apiVersion: 'v1',\n apiGroup: 'build.openshift.io',\n plural: 'builds',\n abbr: 'B',\n namespaced: true,\n propagationPolicy: 'Foreground',\n kind: 'Build',\n id: 'build',\n labelPlural: 'Builds',\n // t('public~Builds')\n labelPluralKey: 'public~Builds',\n};\n\nexport const TemplateModel: K8sKind = {\n label: 'Template',\n // t('public~Template')\n labelKey: 'public~Template',\n apiVersion: 'v1',\n apiGroup: 'template.openshift.io',\n plural: 'templates',\n abbr: 'T',\n namespaced: true,\n propagationPolicy: 'Foreground',\n kind: 'Template',\n id: 'template',\n labelPlural: 'Templates',\n // t('public~Templates')\n labelPluralKey: 'public~Templates',\n};\n\nexport const TemplateInstanceModel: K8sKind = {\n label: 'Template Instance',\n apiVersion: 'v1',\n apiGroup: 'template.openshift.io',\n plural: 'templateinstances',\n abbr: 'TI',\n namespaced: true,\n kind: 'TemplateInstance',\n id: 'templateinstance',\n labelPlural: 'Template Instances',\n};\n\nexport const ImageStreamModel: K8sKind = {\n label: 'ImageStream',\n // t('public~ImageStream')\n labelKey: 'public~ImageStream',\n apiVersion: 'v1',\n apiGroup: 'image.openshift.io',\n plural: 'imagestreams',\n abbr: 'IS',\n namespaced: true,\n propagationPolicy: 'Foreground',\n kind: 'ImageStream',\n id: 'imagestream',\n labelPlural: 'ImageStreams',\n // t('public~ImageStreams')\n labelPluralKey: 'public~ImageStreams',\n};\n\nexport const ImageStreamTagModel: K8sKind = {\n label: 'ImageStreamTag',\n // t('public~ImageStreamTag')\n labelKey: 'public~ImageStreamTag',\n apiVersion: 'v1',\n apiGroup: 'image.openshift.io',\n plural: 'imagestreamtags',\n abbr: 'IST',\n namespaced: true,\n propagationPolicy: 'Foreground',\n kind: 'ImageStreamTag',\n id: 'imagestreamtag',\n labelPlural: 'ImageStreamTags',\n // t('public~ImageStreamTags')\n labelPluralKey: 'public~ImageStreamTags',\n};\n\nexport const ImageStreamImportsModel: K8sKind = {\n label: 'ImageStreamImport',\n // t('public~ImageStreamImport')\n labelKey: 'public~ImageStreamImport',\n apiVersion: 'v1',\n apiGroup: 'image.openshift.io',\n plural: 'imagestreamimports',\n abbr: 'ISI',\n namespaced: true,\n kind: 'ImageStreamImport',\n id: 'imagestreamimport',\n labelPlural: 'ImageStreamImports',\n // t('public~ImageStreamImports')\n labelPluralKey: 'ImageStreamImports',\n};\n\nexport const JobModel: K8sKind = {\n label: 'Job',\n // t('public~Job')\n labelKey: 'public~Job',\n apiVersion: 'v1',\n apiGroup: 'batch',\n plural: 'jobs',\n abbr: 'J',\n namespaced: true,\n propagationPolicy: 'Foreground',\n kind: 'Job',\n id: 'job',\n labelPlural: 'Jobs',\n // t('public~Jobs')\n labelPluralKey: 'public~Jobs',\n};\n\nexport const NodeModel: K8sKind = {\n apiVersion: 'v1',\n label: 'Node',\n // t('public~Node')\n labelKey: 'public~Node',\n plural: 'nodes',\n abbr: 'N',\n kind: 'Node',\n id: 'node',\n labelPlural: 'Nodes',\n // t('public~Nodes')\n labelPluralKey: 'public~Nodes',\n};\n\nexport const CertificateSigningRequestModel: K8sKind = {\n apiVersion: 'v1',\n apiGroup: 'certificates.k8s.io',\n label: 'CertificateSigningRequest',\n // t('public~CertificateSigningRequest')\n labelKey: 'public~CertificateSigningRequest',\n plural: 'certificatesigningrequests',\n abbr: 'CSR',\n kind: 'CertificateSigningRequest',\n id: 'certificateigningrequests',\n labelPlural: 'CertificateSigningRequests',\n // t('public~CertificateSigningRequests')\n labelPluralKey: 'public~CertificateSigningRequests',\n};\n\nexport const EventModel: K8sKind = {\n apiVersion: 'v1',\n label: 'Event',\n // t('public~Event')\n labelKey: 'public~Event',\n plural: 'events',\n abbr: 'E',\n namespaced: true,\n kind: 'Event',\n id: 'event',\n labelPlural: 'Events',\n // t('public~Events')\n labelPluralKey: 'public~Events',\n};\n\nexport const ComponentStatusModel: K8sKind = {\n apiVersion: 'v1',\n label: 'ComponentStatus',\n // t('public~ComponentStatus')\n labelKey: 'public~ComponentStatus',\n labelPlural: 'ComponentStatuses',\n // t('public~ComponentStatuses')\n labelPluralKey: 'public~ComponentStatuses',\n plural: 'componentstatuses',\n abbr: 'CS',\n kind: 'ComponentStatus',\n id: 'componentstatus',\n};\n\nexport const NamespaceModel: K8sKind = {\n apiVersion: 'v1',\n label: 'Namespace',\n // t('public~Namespace')\n labelKey: 'public~Namespace',\n plural: 'namespaces',\n abbr: 'NS',\n kind: 'Namespace',\n id: 'namespace',\n labelPlural: 'Namespaces',\n // t('public~Namespaces')\n labelPluralKey: 'public~Namespaces',\n};\n\nexport const ProjectModel: K8sKind = {\n apiVersion: 'v1',\n apiGroup: 'project.openshift.io',\n label: 'Project',\n // t('public~Project')\n labelKey: 'public~Project',\n plural: 'projects',\n abbr: 'PR',\n kind: 'Project',\n id: 'project',\n labelPlural: 'Projects',\n // t('public~Projects')\n labelPluralKey: 'public~Projects',\n};\n\nexport const ProjectRequestModel: K8sKind = {\n apiVersion: 'v1',\n apiGroup: 'project.openshift.io',\n label: 'ProjectRequest',\n // t('public~ProjectRequest')\n labelKey: 'public~ProjectRequest',\n plural: 'projectrequests',\n abbr: '',\n kind: 'ProjectRequest',\n id: 'projectrequest',\n labelPlural: 'ProjectRequests',\n // t('public~ProjectRequests')\n labelPluralKey: 'public~ProjectRequests',\n};\n\nexport const IngressModel: K8sKind = {\n label: 'Ingress',\n // t('public~Ingress')\n labelKey: 'public~Ingress',\n labelPlural: 'Ingresses',\n // t('public~Ingresses')\n labelPluralKey: 'public~Ingresses',\n apiGroup: 'networking.k8s.io',\n apiVersion: 'v1',\n plural: 'ingresses',\n abbr: 'I',\n namespaced: true,\n kind: 'Ingress',\n id: 'ingress',\n};\n\nexport const RouteModel: K8sKind = {\n label: 'Route',\n // t('public~Route')\n labelKey: 'public~Route',\n labelPlural: 'Routes',\n // t('public~Routes')\n labelPluralKey: 'public~Routes',\n apiGroup: 'route.openshift.io',\n apiVersion: 'v1',\n plural: 'routes',\n abbr: 'RT',\n namespaced: true,\n kind: 'Route',\n id: 'route',\n};\n\nexport const ConfigMapModel: K8sKind = {\n apiVersion: 'v1',\n label: 'ConfigMap',\n // t('public~ConfigMap')\n labelKey: 'public~ConfigMap',\n plural: 'configmaps',\n abbr: 'CM',\n namespaced: true,\n kind: 'ConfigMap',\n id: 'configmap',\n labelPlural: 'ConfigMaps',\n // t('public~ConfigMaps')\n labelPluralKey: 'public~ConfigMaps',\n};\n\nexport const SecretModel: K8sKind = {\n apiVersion: 'v1',\n label: 'Secret',\n // t('public~Secret')\n labelKey: 'public~Secret',\n plural: 'secrets',\n abbr: 'S',\n namespaced: true,\n kind: 'Secret',\n id: 'secret',\n labelPlural: 'Secrets',\n // t('public~Secrets')\n labelPluralKey: 'public~Secrets',\n};\n\nexport const ClusterRoleBindingModel: K8sKind = {\n label: 'ClusterRoleBinding',\n // t('public~ClusterRoleBinding')\n labelKey: 'public~ClusterRoleBinding',\n apiGroup: 'rbac.authorization.k8s.io',\n apiVersion: 'v1',\n plural: 'clusterrolebindings',\n abbr: 'CRB',\n kind: 'ClusterRoleBinding',\n id: 'clusterrolebinding',\n labelPlural: 'ClusterRoleBindings',\n // t('public~ClusterRoleBindings')\n labelPluralKey: 'public~ClusterRoleBindings',\n};\n\nexport const ClusterRoleModel: K8sKind = {\n label: 'ClusterRole',\n // t('public~ClusterRole')\n labelKey: 'public~ClusterRole',\n apiGroup: 'rbac.authorization.k8s.io',\n apiVersion: 'v1',\n plural: 'clusterroles',\n abbr: 'CR',\n kind: 'ClusterRole',\n id: 'clusterrole',\n labelPlural: 'ClusterRoles',\n // t('public~ClusterRoles')\n labelPluralKey: 'public~ClusterRoles',\n};\n\nexport const RoleBindingModel: K8sKind = {\n label: 'RoleBinding',\n // t('public~RoleBinding')\n labelKey: 'public~RoleBinding',\n apiGroup: 'rbac.authorization.k8s.io',\n apiVersion: 'v1',\n plural: 'rolebindings',\n abbr: 'RB',\n namespaced: true,\n kind: 'RoleBinding',\n id: 'rolebinding',\n labelPlural: 'RoleBindings',\n // t('public~RoleBindings')\n labelPluralKey: 'public~RoleBindings',\n};\n\nexport const RoleModel: K8sKind = {\n label: 'Role',\n // t('public~Role')\n labelKey: 'public~Role',\n apiGroup: 'rbac.authorization.k8s.io',\n apiVersion: 'v1',\n plural: 'roles',\n abbr: 'R',\n namespaced: true,\n kind: 'Role',\n id: 'role',\n labelPlural: 'Roles',\n // t('public~Roles')\n labelPluralKey: 'public~Roles',\n};\n\nexport const SelfSubjectAccessReviewModel: K8sKind = {\n label: 'SelfSubjectAccessReview',\n // t('public~SelfSubjectAccessReview')\n labelKey: 'public~SelfSubjectAccessReview',\n apiGroup: 'authorization.k8s.io',\n apiVersion: 'v1',\n plural: 'selfsubjectaccessreviews',\n abbr: 'SSAR',\n namespaced: true,\n kind: 'SelfSubjectAccessReview',\n id: 'selfsubjectaccessreview',\n labelPlural: 'SelfSubjectAccessReviews',\n // t('public~SelfSubjectAccessReviews')\n labelPluralKey: 'public~SelfSubjectAccessReviews',\n};\n\nexport const SelfSubjectReviewModel: K8sKind = {\n label: 'SelfSubjectReview',\n // t('public~SelfSubjectReview')\n labelKey: 'public~SelfSubjectReview',\n apiGroup: 'authorization.k8s.io',\n apiVersion: 'v1',\n plural: 'selfsubjectreviews',\n abbr: 'SSR',\n namespaced: true,\n kind: 'SelfSubjectReview',\n id: 'selfsubjectreview',\n labelPlural: 'SelfSubjectReviews',\n // t('public~SelfSubjectReviews')\n labelPluralKey: 'public~SelfSubjectReviews',\n};\n\nexport const ResourceAccessReviewsModel: K8sKind = {\n label: 'ResourceAccessReview',\n // t('public~ResourceAccessReview')\n labelKey: 'public~ResourceAccessReview',\n apiGroup: 'authorization.openshift.io',\n apiVersion: 'v1',\n plural: 'resourceaccessreviews',\n abbr: 'LRAR',\n namespaced: false,\n kind: 'ResourceAccessReview',\n id: 'resourceaccessreview',\n labelPlural: 'ResourceAccessReviews',\n // t('public~ResourceAccessReviews')\n labelPluralKey: 'public~ResourceAccessReviews',\n};\n\nexport const LocalResourceAccessReviewsModel: K8sKind = {\n label: 'LocalResourceAccessReview',\n // t('public~LocalResourceAccessReview')\n labelKey: 'public~LocalResourceAccessReview',\n apiGroup: 'authorization.openshift.io',\n apiVersion: 'v1',\n plural: 'localresourceaccessreviews',\n abbr: 'LRAR',\n namespaced: true,\n kind: 'LocalResourceAccessReview',\n id: 'localresourceaccessreview',\n labelPlural: 'LocalResourceAccessReviews',\n // t('public~LocalResourceAccessReviews')\n labelPluralKey: 'public~LocalResourceAccessReviews',\n};\n\nexport const PersistentVolumeModel: K8sKind = {\n label: 'PersistentVolume',\n // t('public~PersistentVolume')\n labelKey: 'public~PersistentVolume',\n apiVersion: 'v1',\n plural: 'persistentvolumes',\n abbr: 'PV',\n kind: 'PersistentVolume',\n id: 'persistentvolume',\n labelPlural: 'PersistentVolumes',\n // t('public~PersistentVolumes')\n labelPluralKey: 'public~PersistentVolumes',\n};\n\nexport const PersistentVolumeClaimModel: K8sKind = {\n label: 'PersistentVolumeClaim',\n // t('public~PersistentVolumeClaim')\n labelKey: 'public~PersistentVolumeClaim',\n apiVersion: 'v1',\n plural: 'persistentvolumeclaims',\n abbr: 'PVC',\n namespaced: true,\n kind: 'PersistentVolumeClaim',\n id: 'persistentvolumeclaim',\n labelPlural: 'PersistentVolumeClaims',\n // t('public~PersistentVolumeClaims')\n labelPluralKey: 'public~PersistentVolumeClaims',\n};\n\nexport const StatefulSetModel: K8sKind = {\n label: 'StatefulSet',\n // t('public~StatefulSet')\n labelKey: 'public~StatefulSet',\n apiGroup: 'apps',\n apiVersion: 'v1',\n plural: 'statefulsets',\n abbr: 'SS',\n namespaced: true,\n propagationPolicy: 'Foreground',\n kind: 'StatefulSet',\n id: 'statefulset',\n labelPlural: 'StatefulSets',\n // t('public~StatefulSets')\n labelPluralKey: 'public~StatefulSets',\n};\n\nexport const ResourceQuotaModel: K8sKind = {\n label: 'ResourceQuota',\n // t('public~ResourceQuota')\n labelKey: 'public~ResourceQuota',\n apiVersion: 'v1',\n plural: 'resourcequotas',\n abbr: 'RQ',\n namespaced: true,\n kind: 'ResourceQuota',\n id: 'resourcequota',\n labelPlural: 'ResourceQuotas',\n // t('public~ResourceQuotas')\n labelPluralKey: 'public~ResourceQuotas',\n};\n\nexport const ClusterResourceQuotaModel: K8sKind = {\n label: 'ClusterResourceQuota',\n // t('public~ClusterResourceQuota')\n labelKey: 'public~ClusterResourceQuota',\n apiGroup: 'quota.openshift.io',\n apiVersion: 'v1',\n plural: 'clusterresourcequotas',\n abbr: 'CRQ',\n namespaced: false,\n kind: 'ClusterResourceQuota',\n id: 'clusterresourcequota',\n labelPlural: 'ClusterResourceQuotas',\n // t('public~ClusterResourceQuotas')\n labelPluralKey: 'public~ClusterResourceQuotas',\n crd: true,\n};\n\nexport const AppliedClusterResourceQuotaModel: K8sKind = {\n label: 'AppliedClusterResourceQuota',\n // t('public~AppliedClusterResourceQuota')\n labelKey: 'public~AppliedClusterResourceQuota',\n apiGroup: 'quota.openshift.io',\n apiVersion: 'v1',\n plural: 'appliedclusterresourcequotas',\n abbr: 'ACRQ',\n namespaced: true,\n kind: 'AppliedClusterResourceQuota',\n id: 'appliedclusterresourcequota',\n labelPlural: 'AppliedClusterResourceQuotas',\n // t('public~AppliedClusterResourceQuotas')\n labelPluralKey: 'public~AppliedClusterResourceQuotas',\n crd: true,\n};\n\nexport const NetworkPolicyModel: K8sKind = {\n label: 'NetworkPolicy',\n // t('public~NetworkPolicy')\n labelKey: 'public~NetworkPolicy',\n labelPlural: 'NetworkPolicies',\n // t('public~NetworkPolicies')\n labelPluralKey: 'public~NetworkPolicies',\n apiVersion: 'v1',\n apiGroup: 'networking.k8s.io',\n plural: 'networkpolicies',\n abbr: 'NP',\n namespaced: true,\n kind: 'NetworkPolicy',\n id: 'networkpolicy',\n};\n\nexport const CustomResourceDefinitionModel: K8sKind = {\n label: 'CustomResourceDefinition',\n // t('public~CustomResourceDefinition')\n labelKey: 'public~CustomResourceDefinition',\n apiGroup: 'apiextensions.k8s.io',\n apiVersion: 'v1',\n abbr: 'CRD',\n namespaced: false,\n plural: 'customresourcedefinitions',\n kind: 'CustomResourceDefinition',\n id: 'customresourcedefinition',\n labelPlural: 'CustomResourceDefinitions',\n // t('public~CustomResourceDefinitions')\n labelPluralKey: 'public~CustomResourceDefinitions',\n};\n\nexport const CronJobModel: K8sKind = {\n label: 'CronJob',\n // t('public~CronJob')\n labelKey: 'public~CronJob',\n apiVersion: 'v1',\n apiGroup: 'batch',\n plural: 'cronjobs',\n abbr: 'CJ',\n namespaced: true,\n kind: 'CronJob',\n id: 'cronjob',\n labelPlural: 'CronJobs',\n // t('public~CronJobs')\n labelPluralKey: 'public~CronJobs',\n propagationPolicy: 'Foreground',\n};\n\nexport const StorageClassModel: K8sKind = {\n label: 'StorageClass',\n // t('public~StorageClass')\n labelKey: 'public~StorageClass',\n labelPlural: 'StorageClasses',\n // t('public~StorageClasses')\n labelPluralKey: 'public~StorageClasses',\n apiVersion: 'v1',\n apiGroup: 'storage.k8s.io',\n plural: 'storageclasses',\n abbr: 'SC',\n namespaced: false,\n kind: 'StorageClass',\n id: 'storageclass',\n};\n\nexport const LimitRangeModel: K8sKind = {\n label: 'LimitRange',\n // t('public~LimitRange')\n labelKey: 'public~LimitRange',\n apiVersion: 'v1',\n plural: 'limitranges',\n abbr: 'LR',\n namespaced: true,\n kind: 'LimitRange',\n id: 'limitrange',\n labelPlural: 'LimitRanges',\n // t('public~LimitRanges')\n labelPluralKey: 'public~LimitRanges',\n};\n\nexport const APIServiceModel: K8sKind = {\n label: 'APIService',\n // t('public~APIService')\n labelKey: 'public~APIService',\n labelPlural: 'APIServices',\n // t('public~APIServices')\n labelPluralKey: 'APIServices',\n apiVersion: 'v1',\n apiGroup: 'apiregistration.k8s.io',\n plural: 'apiservices',\n abbr: 'APIS',\n namespaced: false,\n kind: 'APIService',\n id: 'apiservice',\n crd: true,\n};\n\nexport const UserModel: K8sKind = {\n label: 'User',\n // t('public~User')\n labelKey: 'public~User',\n labelPlural: 'Users',\n // t('public~Users')\n labelPluralKey: 'public~Users',\n apiVersion: 'v1',\n apiGroup: 'user.openshift.io',\n plural: 'users',\n abbr: 'U',\n namespaced: false,\n kind: 'User',\n id: 'user',\n crd: true,\n};\n\nexport const GroupModel: K8sKind = {\n label: 'Group',\n // t('public~Group')\n labelKey: 'public~Group',\n labelPlural: 'Groups',\n // t('public~Groups')\n labelPluralKey: 'public~Groups',\n apiVersion: 'v1',\n apiGroup: 'user.openshift.io',\n plural: 'groups',\n abbr: 'G',\n namespaced: false,\n kind: 'Group',\n id: 'group',\n crd: true,\n};\n\n// Cluster API resources\n// https://github.com/openshift/cluster-api\nexport const MachineModel: K8sKind = {\n label: 'Machine',\n // t('public~Machine')\n labelKey: 'public~Machine',\n labelPlural: 'Machines',\n // t('public~Machines')\n labelPluralKey: 'public~Machines',\n apiVersion: 'v1beta1',\n apiGroup: 'machine.openshift.io',\n plural: 'machines',\n abbr: 'M',\n namespaced: true,\n kind: 'Machine',\n id: 'machine',\n crd: true,\n};\n\nexport const MachineSetModel: K8sKind = {\n label: 'MachineSet',\n // t('public~MachineSet')\n labelKey: 'public~MachineSet',\n labelPlural: 'MachineSets',\n // t('public~MachineSet')\n labelPluralKey: 'public~MachineSet',\n apiVersion: 'v1beta1',\n apiGroup: 'machine.openshift.io',\n plural: 'machinesets',\n abbr: 'MS',\n namespaced: true,\n kind: 'MachineSet',\n id: 'machineset',\n crd: true,\n};\n\nexport const MachineDeploymentModel: K8sKind = {\n label: 'MachineDeployment',\n // t('public~MachineDeployment')\n labelKey: 'public~MachineDeployment',\n labelPlural: 'MachineDeployments',\n // t('public~MachineDeployments')\n labelPluralKey: 'public~MachineDeployments',\n apiVersion: 'v1beta1',\n apiGroup: 'machine.openshift.io',\n plural: 'machinedeployments',\n abbr: 'MD',\n namespaced: true,\n kind: 'MachineDeployment',\n id: 'machinedeployment',\n crd: true,\n};\n\nexport const MachineConfigPoolModel: K8sKind = {\n label: 'MachineConfigPool',\n // t('public~MachineConfigPool')\n labelKey: 'public~MachineConfigPool',\n labelPlural: 'MachineConfigPools',\n // t('public~MachineConfigPools')\n labelPluralKey: 'public~MachineConfigPools',\n apiVersion: 'v1',\n apiGroup: 'machineconfiguration.openshift.io',\n plural: 'machineconfigpools',\n abbr: 'MCP',\n namespaced: false,\n kind: 'MachineConfigPool',\n id: 'machineconfigpool',\n crd: true,\n};\n\nexport const MachineConfigModel: K8sKind = {\n label: 'MachineConfig',\n // t('public~MachineConfig')\n labelKey: 'public~MachineConfig',\n labelPlural: 'MachineConfigs',\n // t('public~MachineConfigs')\n labelPluralKey: 'public~MachineConfigs',\n apiVersion: 'v1',\n apiGroup: 'machineconfiguration.openshift.io',\n plural: 'machineconfigs',\n abbr: 'MC',\n namespaced: false,\n kind: 'MachineConfig',\n id: 'machineconfigpool',\n crd: true,\n};\n\nexport const MachineAutoscalerModel: K8sKind = {\n label: 'MachineAutoscaler',\n // t('public~MachineAutoscaler')\n labelKey: 'public~MachineAutoscaler',\n labelPlural: 'MachineAutoscalers',\n // t('public~MachineAutoscalers')\n labelPluralKey: 'public~MachineAutoscalers',\n apiVersion: 'v1beta1',\n apiGroup: 'autoscaling.openshift.io',\n plural: 'machineautoscalers',\n abbr: 'MA',\n namespaced: true,\n kind: 'MachineAutoscaler',\n id: 'machineautoscaler',\n crd: true,\n};\n\nexport const MachineHealthCheckModel: K8sKind = {\n label: 'MachineHealthCheck',\n // t('public~MachineHealthCheck')\n labelKey: 'public~MachineHealthCheck',\n labelPlural: 'MachineHealthChecks',\n // t('public~MachineHealthChecks')\n labelPluralKey: 'public~MachineHealthChecks',\n apiVersion: 'v1beta1',\n apiGroup: 'machine.openshift.io',\n plural: 'machinehealthchecks',\n abbr: 'MHC',\n namespaced: true,\n kind: 'MachineHealthCheck',\n id: 'machinehealthcheck',\n crd: true,\n};\n\n// Openshift cluster resources\nexport const ClusterOperatorModel: K8sKind = {\n label: 'ClusterOperator',\n // t('public~ClusterOperator')\n labelKey: 'public~ClusterOperator',\n labelPlural: 'ClusterOperators',\n // t('public~ClusterOperators')\n labelPluralKey: 'public~ClusterOperators',\n apiVersion: 'v1',\n apiGroup: 'config.openshift.io',\n plural: 'clusteroperators',\n abbr: 'CO',\n namespaced: false,\n kind: 'ClusterOperator',\n id: 'clusteroperator',\n crd: true,\n};\n\nexport const ClusterVersionModel: K8sKind = {\n label: 'ClusterVersion',\n // t('public~ClusterVersion')\n labelKey: 'public~ClusterVersion',\n labelPlural: 'ClusterVersions',\n // t('public~ClusterVersions')\n labelPluralKey: 'public~ClusterVersions',\n apiVersion: 'v1',\n apiGroup: 'config.openshift.io',\n plural: 'clusterversions',\n abbr: 'CV',\n namespaced: false,\n kind: 'ClusterVersion',\n id: 'clusterversion',\n crd: true,\n};\n\nexport const CSIDriverModel: K8sKind = {\n label: 'CSIDriver',\n // t('public~CSIDriver')\n labelKey: 'public~CSIDriver',\n labelPlural: 'CSIDrivers',\n // t('public~CSIDrivers')\n labelPluralKey: 'public~CSIDrivers',\n apiVersion: 'v1',\n apiGroup: 'storage.k8s.io',\n plural: 'csidrivers',\n abbr: 'CSI',\n namespaced: false,\n kind: 'CSIDriver',\n id: 'csidriver',\n crd: true,\n};\n\nexport const ClusterAutoscalerModel: K8sKind = {\n label: 'ClusterAutoscaler',\n // t('public~ClusterAutoscaler')\n labelKey: 'public~ClusterAutoscaler',\n labelPlural: 'ClusterAutoscalers',\n // t('public~ClusterAutoscalers')\n labelPluralKey: 'public~ClusterAutoscalers',\n apiVersion: 'v1',\n apiGroup: 'autoscaling.openshift.io',\n plural: 'clusterautoscalers',\n abbr: 'CA',\n namespaced: false,\n kind: 'ClusterAutoscaler',\n id: 'clusterautoscaler',\n crd: true,\n};\n\n// OpenShift global configuration\nexport const OAuthModel: K8sKind = {\n label: 'OAuth',\n // t('public~OAuth')\n labelKey: 'public~OAuth',\n labelPlural: 'OAuths',\n // t('public~OAuths')\n labelPluralKey: 'public~OAuths',\n apiVersion: 'v1',\n apiGroup: 'config.openshift.io',\n plural: 'oauths',\n abbr: 'OA',\n namespaced: false,\n kind: 'OAuth',\n id: 'oauth',\n crd: true,\n};\n\nexport const InfrastructureModel: K8sKind = {\n label: 'Infrastructure',\n // t('public~Infrastructure')\n labelKey: 'public~Infrastructure',\n labelPlural: 'Infrastructures',\n // t('public~Infrastructures')\n labelPluralKey: 'public~Infrastructures',\n apiVersion: 'v1',\n apiGroup: 'config.openshift.io',\n plural: 'infrastructures',\n abbr: 'INF',\n namespaced: false,\n kind: 'Infrastructure',\n id: 'infrastructure',\n crd: true,\n};\n\nexport const NetworkOperatorConfigModel: K8sKind = {\n label: 'Network',\n labelPlural: 'Networks',\n apiVersion: 'v1',\n apiGroup: 'config.openshift.io',\n plural: 'networks',\n abbr: 'NO',\n namespaced: false,\n kind: 'Network',\n id: 'network',\n crd: true,\n};\n\nexport const ConsoleOperatorConfigModel: K8sKind = {\n label: 'Console',\n labelPlural: 'Consoles',\n apiVersion: 'v1',\n apiGroup: 'operator.openshift.io',\n plural: 'consoles',\n abbr: 'C',\n namespaced: false,\n kind: 'Console',\n id: 'console',\n crd: true,\n};\n\nexport const ConsoleLinkModel: K8sKind = {\n label: 'ConsoleLink',\n // t('public~ConsoleLink')\n labelKey: 'public~ConsoleLink',\n labelPlural: 'ConsoleLinks',\n // t('public~ConsoleLinks')\n labelPluralKey: 'public~ConsoleLinks',\n apiVersion: 'v1',\n apiGroup: 'console.openshift.io',\n plural: 'consolelinks',\n abbr: 'CL',\n namespaced: false,\n kind: 'ConsoleLink',\n id: 'consolelink',\n crd: true,\n};\n\nexport const ConsoleCLIDownloadModel: K8sKind = {\n label: 'ConsoleCLIDownload',\n // t('public~ConsoleCLIDownload')\n labelKey: 'public~ConsoleCLIDownload',\n labelPlural: 'ConsoleCLIDownloads',\n // t('public~ConsoleCLIDownloads')\n labelPluralKey: 'public~ConsoleCLIDownloads',\n apiVersion: 'v1',\n apiGroup: 'console.openshift.io',\n plural: 'consoleclidownloads',\n abbr: 'CCD',\n namespaced: false,\n kind: 'ConsoleCLIDownload',\n id: 'consoleclidownload',\n crd: true,\n};\n\nexport const ConsoleNotificationModel: K8sKind = {\n label: 'ConsoleNotification',\n // t('public~ConsoleNotification')\n labelKey: 'public~ConsoleNotification',\n labelPlural: 'ConsoleNotifications',\n // t('public~ConsoleNotifications')\n labelPluralKey: 'public~ConsoleNotifications',\n apiVersion: 'v1',\n apiGroup: 'console.openshift.io',\n plural: 'consolenotifications',\n abbr: 'CN',\n namespaced: false,\n kind: 'ConsoleNotification',\n id: 'consolenotification',\n crd: true,\n};\n\nexport const ConsoleExternalLogLinkModel: K8sKind = {\n label: 'ConsoleExternalLogLink',\n // t('public~ConsoleExternalLogLink')\n labelKey: 'public~ConsoleExternalLogLink',\n labelPlural: 'ConsoleExternalLogLinks',\n // t('public~ConsoleExternalLogLinks')\n labelPluralKey: 'public~ConsoleExternalLogLinks',\n apiVersion: 'v1',\n apiGroup: 'console.openshift.io',\n plural: 'consoleexternalloglinks',\n abbr: 'CELL',\n namespaced: false,\n kind: 'ConsoleExternalLogLink',\n id: 'consoleexternalloglink',\n crd: true,\n};\n\nexport const ConsoleYAMLSampleModel: K8sKind = {\n label: 'ConsoleYAMLSample',\n // t('public~ConsoleYAMLSample')\n labelKey: 'public~ConsoleYAMLSample',\n labelPlural: 'ConsoleYAMLSamples',\n // t('public~ConsoleYAMLSamples')\n labelPluralKey: 'public~ConsoleYAMLSamples',\n apiVersion: 'v1',\n apiGroup: 'console.openshift.io',\n plural: 'consoleyamlsamples',\n abbr: 'CYS',\n namespaced: false,\n kind: 'ConsoleYAMLSample',\n id: 'consoleyamlsample',\n crd: true,\n};\n\nexport const VolumeSnapshotModel: K8sKind = {\n label: 'VolumeSnapshot',\n // t('public~VolumeSnapshot')\n labelKey: 'public~VolumeSnapshot',\n apiVersion: 'v1',\n apiGroup: 'snapshot.storage.k8s.io',\n plural: 'volumesnapshots',\n abbr: 'VS',\n namespaced: true,\n kind: 'VolumeSnapshot',\n id: 'volumesnapshot',\n labelPlural: 'VolumeSnapshots',\n // t('public~VolumeSnapshots')\n labelPluralKey: 'public~VolumeSnapshots',\n crd: true,\n};\n\nexport const VolumeSnapshotClassModel: K8sKind = {\n label: 'VolumeSnapshotClass',\n // t('public~VolumeSnapshotClass')\n labelKey: 'public~VolumeSnapshotClass',\n apiVersion: 'v1',\n apiGroup: 'snapshot.storage.k8s.io',\n plural: 'volumesnapshotclasses',\n abbr: 'VSC',\n namespaced: false,\n kind: 'VolumeSnapshotClass',\n id: 'volumesnapshotclass',\n labelPlural: 'VolumeSnapshotClasses',\n // t('public~VolumeSnapshotClasses')\n labelPluralKey: 'public~VolumeSnapshotClasses',\n crd: true,\n};\n\nexport const VolumeSnapshotContentModel: K8sKind = {\n label: 'VolumeSnapshotContent',\n // t('public~VolumeSnapshotContent')\n labelKey: 'public~VolumeSnapshotContent',\n apiVersion: 'v1',\n apiGroup: 'snapshot.storage.k8s.io',\n plural: 'volumesnapshotcontents',\n abbr: 'VSC',\n namespaced: false,\n kind: 'VolumeSnapshotContent',\n id: 'volumesnapshotcontent',\n labelPlural: 'VolumeSnapshotContents',\n // t('public~VolumeSnapshotContents')\n labelPluralKey: 'public~VolumeSnapshotContents',\n crd: true,\n};\n\nexport const ConsolePluginModel: K8sKind = {\n label: 'ConsolePlugin',\n // t('public~ConsolePlugin')\n labelKey: 'public~ConsolePlugin',\n apiVersion: 'v1',\n apiGroup: 'console.openshift.io',\n plural: 'consoleplugins',\n abbr: 'CP',\n namespaced: false,\n kind: 'ConsolePlugin',\n id: 'consoleplugin',\n labelPlural: 'ConsolePlugins',\n // t('public~ConsolePlugins')\n labelPluralKey: 'public~ConsolePlugins',\n crd: true,\n};\n\nexport const CloudCredentialModel: K8sKind = {\n kind: 'CloudCredential',\n label: 'CloudCredential',\n labelPlural: 'CloudCredentials',\n apiGroup: 'operator.openshift.io',\n apiVersion: 'v1',\n abbr: 'CO',\n plural: 'cloudcredentials',\n};\n\nexport const AuthenticationModel: K8sKind = {\n kind: 'Authentication',\n label: 'Authentication',\n labelPlural: 'Authentications',\n apiGroup: 'config.openshift.io',\n apiVersion: 'v1',\n plural: 'authentications',\n abbr: 'AU',\n};\n\nexport const MultiNetworkPolicyModel: K8sKind = {\n abbr: 'MNP',\n apiGroup: 'k8s.cni.cncf.io',\n apiVersion: 'v1beta1',\n id: 'multinetworkpolicy',\n kind: 'MultiNetworkPolicy',\n label: 'multi-networkpolicy',\n // t('public~MultiNetworkPolicy')\n labelKey: 'public~MultiNetworkPolicy',\n labelPlural: 'MultiNetworkPolicies',\n // t('MultiNetworkPolicies')\n labelPluralKey: 'public~MultiNetworkPolicies',\n namespaced: true,\n plural: 'multi-networkpolicies',\n crd: true,\n};\n","/**\n * @file Entrypoint for the Console dynamic plugin SDK monorepo package.\n *\n * Not published to npmjs; all Console monorepo packages are marked as private.\n */\n\n// Plugin APIs and types\nexport * from './api/useResolvedExtensions';\nexport * from './api/common-types';\n\n// Extension types\nexport * from './extensions';\n\nexport * from './perspective';\n\n// App init context\nexport * from './app';\n","import '@console/internal/i18n.js';\n\nexport * from './components';\nexport * from './constants';\nexport * from './selectors';\nexport * from './types';\nexport * from './utils';\nexport * from './hooks';\nexport * from './sorts';\nexport * from './hoc';\n","export * from './pod';\nexport * from './resource';\nexport * from './common';\nexport * from './ui';\nexport * from './time';\nexport * from './duration';\n","export * from './details';\nexport * from './list-page';\nexport * from './modal';\nexport * from './table';\n","import * as React from 'react';\nimport { InProgressIcon } from '@patternfly/react-icons/dist/esm/icons/in-progress-icon';\nimport { TFunction } from 'i18next';\nimport { HealthState } from '@console/dynamic-plugin-sdk/src/extensions/console-types';\nimport {\n GreenCheckCircleIcon,\n RedExclamationCircleIcon,\n YellowExclamationTriangleIcon,\n BlueSyncIcon,\n GrayUnknownIcon,\n BlueArrowCircleUpIcon,\n} from '../../status/icons';\n\nexport { HealthState };\n\nexport const healthStateMessage = (state: keyof typeof HealthState, t: TFunction): string => {\n switch (state) {\n case HealthState.OK:\n return '';\n case HealthState.UNKNOWN:\n return t('console-shared~Unknown');\n case HealthState.PROGRESS:\n return t('console-shared~Pending');\n case HealthState.UPDATING:\n return t('console-shared~Updating');\n case HealthState.WARNING:\n return t('console-shared~Degraded');\n case HealthState.ERROR:\n return t('console-shared~Degraded');\n case HealthState.LOADING:\n return t('console-shared~Loading');\n case HealthState.UPGRADABLE:\n return t('console-shared~Upgrade available');\n case HealthState.NOT_AVAILABLE:\n return t('console-shared~Not available');\n default:\n return t('console-shared~Unknown');\n }\n};\n\nexport const healthStateMapping: { [key in HealthState]: HealthStateMappingValues } = {\n [HealthState.OK]: {\n priority: 0,\n health: HealthState.OK,\n icon: ,\n },\n [HealthState.UNKNOWN]: {\n priority: 1,\n health: HealthState.UNKNOWN,\n icon: ,\n },\n [HealthState.PROGRESS]: {\n priority: 2,\n health: HealthState.PROGRESS,\n icon: ,\n },\n [HealthState.UPDATING]: {\n priority: 3,\n health: HealthState.UPDATING,\n icon: ,\n },\n [HealthState.UPGRADABLE]: {\n priority: 4,\n health: HealthState.UPGRADABLE,\n icon: ,\n },\n [HealthState.WARNING]: {\n priority: 5,\n health: HealthState.WARNING,\n icon: ,\n },\n [HealthState.ERROR]: {\n priority: 6,\n health: HealthState.ERROR,\n icon: ,\n },\n [HealthState.LOADING]: {\n priority: 7,\n health: HealthState.LOADING,\n icon:

,\n },\n [HealthState.NOT_AVAILABLE]: {\n priority: 8,\n health: HealthState.NOT_AVAILABLE,\n icon: ,\n },\n};\n\nexport type HealthStateMappingValues = {\n icon: React.ReactNode;\n priority: number;\n health: HealthState;\n};\n","import { Base64 } from 'js-base64';\nimport { action, ActionType as Action } from 'typesafe-actions';\nimport * as _ from 'lodash-es';\n\n// FIXME(alecmerdler): Do not `import store`\nimport store from '../redux';\nimport { OverviewItem } from '@console/shared';\nimport {\n ALL_NAMESPACES_KEY,\n LAST_NAMESPACE_NAME_LOCAL_STORAGE_KEY,\n} from '@console/shared/src/constants';\nimport { K8sResourceKind, PodKind, NodeKind } from '../module/k8s';\nimport { allModels } from '../module/k8s/k8s-models';\nimport { detectFeatures, clearSSARFlags } from './features';\nimport { OverviewSpecialGroup } from '../components/overview/constants';\nimport { setClusterID, setCreateProjectMessage } from './common';\nimport { subsClient } from '../graphql/client';\nimport {\n beginImpersonate,\n endImpersonate,\n getUser,\n getImpersonate,\n} from '@console/dynamic-plugin-sdk';\nimport { DeprecatedOperatorWarning } from '@console/operator-lifecycle-manager/src/types';\n\nexport enum ActionType {\n DismissOverviewDetails = 'dismissOverviewDetails',\n SelectOverviewDetailsTab = 'selectOverviewDetailsTab',\n SelectOverviewItem = 'selectOverviewItem',\n SetActiveApplication = 'setActiveApplication',\n SetActiveNamespace = 'setActiveNamespace',\n SetCreateProjectMessage = 'setCreateProjectMessage',\n SetCurrentLocation = 'setCurrentLocation',\n SetServiceLevel = 'setServiceLevel',\n NotificationDrawerToggleExpanded = 'notificationDrawerExpanded',\n SetClusterID = 'setClusterID',\n SortList = 'sortList',\n UpdateOverviewMetrics = 'updateOverviewMetrics',\n UpdateOverviewResources = 'updateOverviewResources',\n UpdateOverviewSelectedGroup = 'updateOverviewSelectedGroup',\n UpdateOverviewLabels = 'updateOverviewLabels',\n UpdateOverviewFilterValue = 'updateOverviewFilterValue',\n UpdateTimestamps = 'updateTimestamps',\n SetPodMetrics = 'setPodMetrics',\n SetNamespaceMetrics = 'setNamespaceMetrics',\n SetNodeMetrics = 'setNodeMetrics',\n SetPVCMetrics = 'setPVCMetrics',\n SetUtilizationDuration = 'SetUtilizationDuration',\n SetUtilizationDurationSelectedKey = 'SetUtilizationDurationSelectedKey',\n SetUtilizationDurationEndTime = 'SetUtilizationDurationEndTime',\n SetShowOperandsInAllNamespaces = 'setShowOperandsInAllNamespaces',\n SetDeprecatedPackage = 'setDeprecatedPackage',\n SetDeprecatedChannel = 'setDeprecatedChannel',\n SetDeprecatedVersion = 'setDeprecatedVersion',\n}\n\ntype MetricValuesByName = {\n [name: string]: number;\n};\n\nexport type NamespaceMetrics = {\n cpu: MetricValuesByName;\n memory: MetricValuesByName;\n};\n\ntype MetricValuesByNamespace = {\n [namespace: string]: MetricValuesByName;\n};\n\nexport type PodMetrics = {\n cpu: MetricValuesByNamespace;\n memory: MetricValuesByNamespace;\n};\n\nexport type NodeMetrics = {\n cpu: MetricValuesByName;\n totalCPU: MetricValuesByName;\n pods: MetricValuesByName;\n usedMemory: MetricValuesByName;\n totalMemory: MetricValuesByName;\n usedStorage: MetricValuesByName;\n totalStorage: MetricValuesByName;\n};\n\nexport type PVCMetrics = {\n usedCapacity: MetricValuesByName;\n};\n\n// URL routes that can be namespaced\nlet namespacedResources;\n\nexport const getNamespacedResources = () => {\n if (!namespacedResources) {\n namespacedResources = new Set();\n allModels().forEach((v, k) => {\n if (!v.namespaced) {\n return;\n }\n if (v.crd) {\n namespacedResources.add(k);\n }\n if (!v.crd || v.legacyPluralURL) {\n namespacedResources.add(v.plural);\n }\n });\n }\n return namespacedResources;\n};\n\nexport const getActiveNamespace = (): string => store.getState().UI.get('activeNamespace');\nexport const getActiveUserName = (): string => getUser(store.getState())?.username;\n\nexport const getNamespaceMetric = (ns: K8sResourceKind, metric: string): number => {\n const metrics = store.getState().UI.getIn(['metrics', 'namespace']);\n return _.get(metrics, [metric, ns.metadata.name], 0);\n};\n\nexport const getPodMetric = (pod: PodKind, metric: string): number => {\n const metrics = store.getState().UI.getIn(['metrics', 'pod']);\n return metrics?.[metric]?.[pod.metadata.namespace]?.[pod.metadata.name] ?? 0;\n};\n\nexport const getNodeMetric = (node: NodeKind, metric: string): number => {\n const metrics = store.getState().UI.getIn(['metrics', 'node']);\n return metrics?.[metric]?.[node.metadata.name] ?? 0;\n};\n\nexport const getPVCMetric = (pvc: K8sResourceKind, metric: string): number => {\n const metrics = store.getState().UI.getIn(['metrics', 'pvc']);\n return metrics?.[metric]?.[pvc.metadata.namespace]?.[pvc.metadata.name] ?? 0;\n};\n\nexport const formatNamespaceRoute = (\n activeNamespace,\n originalPath,\n location?,\n forceList?: boolean,\n) => {\n let path = originalPath.substr(window.SERVER_FLAGS.basePath.length);\n\n let parts = path.split('/').filter((p) => p);\n const prefix = parts.shift();\n\n let previousNS;\n if (parts[0] === 'all-namespaces') {\n parts.shift();\n previousNS = ALL_NAMESPACES_KEY;\n } else if (parts[0] === 'ns') {\n parts.shift();\n previousNS = parts.shift();\n }\n\n if (!previousNS) {\n return originalPath;\n }\n\n if (\n (previousNS !== activeNamespace &&\n (parts[1] !== 'new' || activeNamespace !== ALL_NAMESPACES_KEY)) ||\n (activeNamespace === ALL_NAMESPACES_KEY && parts[1] === 'new') ||\n forceList\n ) {\n // a given resource will not exist when we switch namespaces, so pop off the tail end\n parts = parts.slice(0, 1);\n }\n\n const namespacePrefix =\n activeNamespace === ALL_NAMESPACES_KEY ? 'all-namespaces' : `ns/${activeNamespace}`;\n\n path = `/${prefix}/${namespacePrefix}`;\n if (parts.length) {\n path += `/${parts.join('/')}`;\n }\n\n if (location) {\n path += `${location.search}${location.hash}`;\n }\n\n return path;\n};\n\nexport const setCurrentLocation = (location: string) =>\n action(ActionType.SetCurrentLocation, { location });\n\nexport const setServiceLevel = (\n serviceLevel: string,\n daysRemaining: number = null,\n clusterID: string = '',\n trialDateEnd: string = null,\n hasSecretAccess: boolean = false,\n) =>\n action(ActionType.SetServiceLevel, {\n serviceLevel,\n daysRemaining,\n clusterID,\n trialDateEnd,\n hasSecretAccess,\n });\n\nexport const setActiveApplication = (application: string) => {\n return action(ActionType.SetActiveApplication, { application });\n};\n\nexport const setActiveNamespace = (namespace: string = '') => {\n namespace = namespace.trim();\n // make it noop when new active namespace is the same\n // otherwise users will get page refresh and cry about\n // broken direct links and bookmarks\n if (namespace !== getActiveNamespace()) {\n // save last namespace in session storage (persisted only for current browser tab). Used to remember/restore if\n // \"All Projects\" was selected when returning to the list view (typically from details view) via breadcrumb or\n // sidebar navigation\n sessionStorage.setItem(LAST_NAMESPACE_NAME_LOCAL_STORAGE_KEY, namespace);\n }\n\n return action(ActionType.SetActiveNamespace, { namespace });\n};\n\nexport const startImpersonate = (kind: string, name: string) => async (dispatch, getState) => {\n let textEncoder;\n try {\n textEncoder = new TextEncoder();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.info('Browser lacks TextEncoder. Falling back to polyfill.', e);\n }\n\n if (!textEncoder) {\n textEncoder = await import('text-encoding').then((module) => new module.TextEncoder('utf-8'));\n }\n\n const imp = getImpersonate(getState());\n if ((imp?.name && imp.name !== name) || (imp?.kind && imp.kind !== kind)) {\n // eslint-disable-next-line no-console\n console.warn(`Impersonate race detected: ${name} vs ${imp.name} / ${kind} ${imp.kind}`);\n return;\n }\n\n /**\n * Subprotocols are comma-separated, so commas aren't allowed. Also \"=\"\n * and \"/\" aren't allowed, so base64 but replace illegal chars.\n */\n let encodedName = textEncoder.encode(name);\n encodedName = Base64.encode(String.fromCharCode.apply(String, encodedName));\n encodedName = encodedName.replace(/=/g, '_').replace(/\\//g, '-');\n\n let subprotocols;\n if (kind === 'User') {\n subprotocols = [`Impersonate-User.${encodedName}`];\n }\n if (kind === 'Group') {\n subprotocols = [`Impersonate-Group.${encodedName}`];\n }\n\n dispatch(beginImpersonate(kind, name, subprotocols));\n subsClient.close(false, true);\n dispatch(clearSSARFlags());\n dispatch(detectFeatures());\n};\nexport const stopImpersonate = () => (dispatch) => {\n dispatch(endImpersonate());\n subsClient.close(false, true);\n dispatch(clearSSARFlags());\n dispatch(detectFeatures());\n};\nexport const sortList = (listId: string, field: string, func: string, orderBy: string) => {\n // const url = new URL(window.location.href);\n // const sp = new URLSearchParams(window.location.search);\n // sp.set('orderBy', orderBy);\n // sp.set('sortBy', column);\n // history.replace(`${url.pathname}?${sp.toString()}${url.hash}`);\n\n return action(ActionType.SortList, { listId, field, func, orderBy });\n};\nexport const selectOverviewItem = (uid: string) => action(ActionType.SelectOverviewItem, { uid });\nexport const selectOverviewDetailsTab = (tab: string) =>\n action(ActionType.SelectOverviewDetailsTab, { tab });\nexport const updateOverviewMetrics = (metrics: any) =>\n action(ActionType.UpdateOverviewMetrics, { metrics });\nexport const updateOverviewResources = (resources: OverviewItem[]) =>\n action(ActionType.UpdateOverviewResources, { resources });\nexport const updateTimestamps = (lastTick: number) =>\n action(ActionType.UpdateTimestamps, { lastTick });\nexport const dismissOverviewDetails = () => action(ActionType.DismissOverviewDetails);\nexport const updateOverviewSelectedGroup = (group: OverviewSpecialGroup | string) =>\n action(ActionType.UpdateOverviewSelectedGroup, { group });\nexport const updateOverviewLabels = (labels: string[]) =>\n action(ActionType.UpdateOverviewLabels, { labels });\nexport const updateOverviewFilterValue = (value: string) =>\n action(ActionType.UpdateOverviewFilterValue, { value });\nexport const notificationDrawerToggleExpanded = () =>\n action(ActionType.NotificationDrawerToggleExpanded);\nexport const setPodMetrics = (podMetrics: PodMetrics) =>\n action(ActionType.SetPodMetrics, { podMetrics });\nexport const setNamespaceMetrics = (namespaceMetrics: NamespaceMetrics) =>\n action(ActionType.SetNamespaceMetrics, { namespaceMetrics });\nexport const setNodeMetrics = (nodeMetrics: NodeMetrics) =>\n action(ActionType.SetNodeMetrics, { nodeMetrics });\nexport const setPVCMetrics = (pvcMetrics: PVCMetrics) =>\n action(ActionType.SetPVCMetrics, { pvcMetrics });\nexport const setUtilizationDuration = (duration) =>\n action(ActionType.SetUtilizationDuration, { duration });\nexport const setUtilizationDurationSelectedKey = (key) =>\n action(ActionType.SetUtilizationDurationSelectedKey, { key });\nexport const setUtilizationDurationEndTime = (endTime) =>\n action(ActionType.SetUtilizationDurationEndTime, { endTime });\n\nexport const setShowOperandsInAllNamespaces = (value: boolean) => {\n return action(ActionType.SetShowOperandsInAllNamespaces, { value });\n};\nexport const setDeprecatedPackage = (value: DeprecatedOperatorWarning) => {\n return action(ActionType.SetDeprecatedPackage, { value });\n};\nexport const setDeprecatedChannel = (value: DeprecatedOperatorWarning) => {\n return action(ActionType.SetDeprecatedChannel, { value });\n};\nexport const setDeprecatedVersion = (value: DeprecatedOperatorWarning) => {\n return action(ActionType.SetDeprecatedVersion, { value });\n};\n\n// TODO(alecmerdler): Implement all actions using `typesafe-actions` and add them to this export\nconst uiActions = {\n setCurrentLocation,\n setShowOperandsInAllNamespaces,\n setActiveApplication,\n setActiveNamespace,\n sortList,\n setCreateProjectMessage,\n setClusterID,\n selectOverviewItem,\n selectOverviewDetailsTab,\n setServiceLevel,\n updateOverviewMetrics,\n updateOverviewResources,\n updateTimestamps,\n dismissOverviewDetails,\n updateOverviewSelectedGroup,\n updateOverviewLabels,\n updateOverviewFilterValue,\n setPodMetrics,\n setNamespaceMetrics,\n setNodeMetrics,\n setPVCMetrics,\n notificationDrawerToggleExpanded,\n setUtilizationDuration,\n setUtilizationDurationSelectedKey,\n setUtilizationDurationEndTime,\n setDeprecatedPackage,\n setDeprecatedChannel,\n setDeprecatedVersion,\n};\n\nexport type UIAction = Action;\n","import fuzzy from 'fuzzysearch';\nimport * as _ from 'lodash-es';\nimport { murmur3 } from 'murmurhash-js';\nimport {\n Alert,\n AlertSeverity,\n AlertStates,\n PrometheusLabels,\n PrometheusRule,\n Rule,\n Silence,\n SilenceStates,\n PrometheusRulesResponse,\n} from '@console/dynamic-plugin-sdk';\n\nimport { AlertSource, MonitoringResource, Target } from './types';\n\nexport const PROMETHEUS_BASE_PATH = window.SERVER_FLAGS.prometheusBaseURL;\n\nexport const AlertResource: MonitoringResource = {\n kind: 'Alert',\n label: 'Alert',\n plural: '/monitoring/alerts',\n abbr: 'AL',\n};\n\nexport const RuleResource: MonitoringResource = {\n kind: 'AlertRule',\n label: 'Alerting Rule',\n plural: '/monitoring/alertrules',\n abbr: 'AR',\n};\n\nexport const SilenceResource: MonitoringResource = {\n kind: 'Silence',\n label: 'Silence',\n plural: '/monitoring/silences',\n abbr: 'SL',\n};\n\nexport const fuzzyCaseInsensitive = (a: string, b: string): boolean =>\n fuzzy(_.toLower(a), _.toLower(b));\n\nexport const labelsToParams = (labels: PrometheusLabels) =>\n _.map(labels, (v, k) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join('&');\n\nexport const alertURL = (alert: Alert, ruleID: string) =>\n `${AlertResource.plural}/${ruleID}?${labelsToParams(alert.labels)}`;\n\nexport const getAlertsAndRules = (\n data: PrometheusRulesResponse['data'],\n): { alerts: Alert[]; rules: Rule[] } => {\n // Flatten the rules data to make it easier to work with, discard non-alerting rules since those\n // are the only ones we will be using and add a unique ID to each rule.\n const groups = _.get(data, 'groups') as PrometheusRulesResponse['data']['groups'];\n const rules = _.flatMap(groups, (g) => {\n const addID = (r: PrometheusRule): Rule => {\n const key = [\n g.file,\n g.name,\n r.name,\n r.duration,\n r.query,\n ..._.map(r.labels, (k, v) => `${k}=${v}`),\n ].join(',');\n return { ...r, id: String(murmur3(key, 'monitoring-salt')) };\n };\n\n return _.filter(g.rules, { type: 'alerting' }).map(addID);\n });\n\n // Add `rule` object to each alert\n const alerts = _.flatMap(rules, (rule) => rule.alerts.map((a) => ({ rule, ...a })));\n\n return { alerts, rules };\n};\n\nexport const alertState = (a: Alert): AlertStates => a?.state;\n\nexport const silenceState = (s: Silence): SilenceStates => s?.status?.state;\n\nexport const silenceMatcherEqualitySymbol = (isEqual: boolean, isRegex: boolean): string => {\n if (isRegex) {\n return isEqual ? '=~' : '!~';\n }\n return isEqual ? '=' : '!=';\n};\n\nexport const alertDescription = (alert: Alert | Rule): string =>\n alert.annotations?.description || alert.annotations?.message || alert.labels?.alertname;\n\n// Determine if an Alert is silenced by a Silence (if all of the Silence's matchers match one of the\n// Alert's labels)\nexport const isSilenced = (alert: Alert, silence: Silence): boolean =>\n [AlertStates.Firing, AlertStates.Silenced].includes(alert.state) &&\n _.every(silence.matchers, (m) => {\n const alertValue = _.get(alert.labels, m.name, '');\n const isMatch = m.isRegex\n ? new RegExp(`^${m.value}$`).test(alertValue)\n : alertValue === m.value;\n return m.isEqual === false && alertValue ? !isMatch : isMatch;\n });\n\ntype ListOrder = (number | string)[];\n\n// Severity sort order is \"critical\" > \"warning\" > (anything else in A-Z order) > \"none\"\nexport const alertSeverityOrder = (alert: Alert | Rule): ListOrder => {\n const { severity } = alert.labels;\n const order: number =\n {\n [AlertSeverity.Critical]: 1,\n [AlertSeverity.Warning]: 2,\n [AlertSeverity.None]: 4,\n }[severity] ?? 3;\n return [order, severity];\n};\n\nexport const alertingRuleStateOrder = (rule: Rule): ListOrder => {\n const counts = _.countBy(rule.alerts, 'state');\n return [AlertStates.Firing, AlertStates.Pending, AlertStates.Silenced].map(\n (state) => Number.MAX_SAFE_INTEGER - (counts[state] ?? 0),\n );\n};\n\nexport const targetSource = (target: Target): AlertSource =>\n target.labels?.prometheus === 'openshift-monitoring/k8s'\n ? AlertSource.Platform\n : AlertSource.User;\n","import { action, ActionType as Action } from 'typesafe-actions';\n\nimport { Rule } from '@console/dynamic-plugin-sdk';\n\nexport enum ActionType {\n AlertingSetData = 'alertingSetData',\n AlertingSetRules = 'alertingSetRules',\n DashboardsPatchAllVariables = 'dashboardsPatchAllVariables',\n DashboardsPatchVariable = 'dashboardsPatchVariable',\n DashboardsClearVariables = 'dashboardsClearVariables',\n DashboardsSetEndTime = 'dashboardsSetEndTime',\n DashboardsSetPollInterval = 'dashboardsSetPollInterval',\n DashboardsSetTimespan = 'dashboardsSetTimespan',\n DashboardsVariableOptionsLoaded = 'dashboardsVariableOptionsLoaded',\n QueryBrowserAddQuery = 'queryBrowserAddQuery',\n QueryBrowserDuplicateQuery = 'queryBrowserDuplicateQuery',\n QueryBrowserDeleteAllQueries = 'queryBrowserDeleteAllQueries',\n QueryBrowserDeleteAllSeries = 'queryBrowserDeleteAllSeries',\n QueryBrowserDeleteQuery = 'queryBrowserDeleteQuery',\n QueryBrowserDismissNamespaceAlert = 'queryBrowserDismissNamespaceAlert',\n QueryBrowserPatchQuery = 'queryBrowserPatchQuery',\n QueryBrowserRunQueries = 'queryBrowserRunQueries',\n QueryBrowserSetAllExpanded = 'queryBrowserSetAllExpanded',\n QueryBrowserSetMetrics = 'queryBrowserSetMetrics',\n QueryBrowserSetPollInterval = 'queryBrowserSetPollInterval',\n QueryBrowserSetTimespan = 'queryBrowserSetTimespan',\n QueryBrowserToggleIsEnabled = 'queryBrowserToggleIsEnabled',\n QueryBrowserToggleSeries = 'queryBrowserToggleSeries',\n QueryBrowserToggleAllSeries = 'queryBrowserToggleAllSeries',\n SetAlertCount = 'SetAlertCount',\n ToggleGraphs = 'toggleGraphs',\n}\n\nexport const dashboardsPatchVariable = (key: string, patch: any, perspective: string) =>\n action(ActionType.DashboardsPatchVariable, { key, patch, perspective });\n\nexport const dashboardsPatchAllVariables = (variables: any, perspective: string) =>\n action(ActionType.DashboardsPatchAllVariables, { variables, perspective });\n\nexport const DashboardsClearVariables = (perspective: string) =>\n action(ActionType.DashboardsClearVariables, { perspective });\n\nexport const dashboardsSetEndTime = (endTime: number, perspective: string) =>\n action(ActionType.DashboardsSetEndTime, { endTime, perspective });\n\nexport const dashboardsSetPollInterval = (pollInterval: number, perspective: string) =>\n action(ActionType.DashboardsSetPollInterval, { pollInterval, perspective });\n\nexport const dashboardsSetTimespan = (timespan: number, perspective: string) =>\n action(ActionType.DashboardsSetTimespan, { timespan, perspective });\n\nexport const dashboardsVariableOptionsLoaded = (\n key: string,\n newOptions: string[],\n perspective: string,\n) => action(ActionType.DashboardsVariableOptionsLoaded, { key, newOptions, perspective });\n\nexport const alertingLoading = (\n key: 'alerts' | 'silences' | 'notificationAlerts' | 'devSilences',\n perspective = 'admin',\n) =>\n action(ActionType.AlertingSetData, {\n key,\n data: { loaded: false, loadError: null, data: null, perspective },\n });\n\nexport const alertingLoaded = (\n key: 'alerts' | 'silences' | 'notificationAlerts' | 'devAlerts' | 'devSilences',\n alerts: any,\n perspective = 'admin',\n) =>\n action(ActionType.AlertingSetData, {\n key,\n data: { loaded: true, loadError: null, data: alerts, perspective },\n });\n\nexport const alertingErrored = (\n key: 'alerts' | 'silences' | 'notificationAlerts' | 'devAlerts' | 'devSilences',\n loadError: Error,\n perspective = 'admin',\n) =>\n action(ActionType.AlertingSetData, {\n key,\n data: { loaded: true, loadError, data: null, perspective },\n });\n\nexport const alertingSetRules = (key: 'rules' | 'devRules', rules: Rule[], perspective = 'admin') =>\n action(ActionType.AlertingSetRules, { key, data: rules, perspective });\n\nexport const toggleGraphs = () => action(ActionType.ToggleGraphs);\n\nexport const queryBrowserAddQuery = () => action(ActionType.QueryBrowserAddQuery);\n\nexport const queryBrowserDuplicateQuery = (index: number) =>\n action(ActionType.QueryBrowserDuplicateQuery, { index });\n\nexport const queryBrowserDeleteAllQueries = () => action(ActionType.QueryBrowserDeleteAllQueries);\n\nexport const queryBrowserDeleteAllSeries = () => action(ActionType.QueryBrowserDeleteAllSeries);\n\nexport const queryBrowserDismissNamespaceAlert = () =>\n action(ActionType.QueryBrowserDismissNamespaceAlert);\n\nexport const queryBrowserDeleteQuery = (index: number) =>\n action(ActionType.QueryBrowserDeleteQuery, { index });\n\nexport const queryBrowserPatchQuery = (index: number, patch: { [key: string]: unknown }) =>\n action(ActionType.QueryBrowserPatchQuery, { index, patch });\n\nexport const queryBrowserRunQueries = () => action(ActionType.QueryBrowserRunQueries);\n\nexport const queryBrowserSetAllExpanded = (isExpanded: boolean) =>\n action(ActionType.QueryBrowserSetAllExpanded, { isExpanded });\n\nexport const queryBrowserSetMetrics = (metrics: string[]) =>\n action(ActionType.QueryBrowserSetMetrics, { metrics });\n\nexport const queryBrowserSetPollInterval = (pollInterval: number) =>\n action(ActionType.QueryBrowserSetPollInterval, { pollInterval });\n\nexport const queryBrowserSetTimespan = (timespan: number) =>\n action(ActionType.QueryBrowserSetTimespan, { timespan });\n\nexport const queryBrowserToggleAllSeries = (index: number) =>\n action(ActionType.QueryBrowserToggleAllSeries, { index });\n\nexport const queryBrowserToggleIsEnabled = (index: number) =>\n action(ActionType.QueryBrowserToggleIsEnabled, { index });\n\nexport const queryBrowserToggleSeries = (index: number, labels: { [key: string]: unknown }) =>\n action(ActionType.QueryBrowserToggleSeries, { index, labels });\n\nexport const setAlertCount = (alertCount) => action(ActionType.SetAlertCount, { alertCount });\n\nconst actions = {\n alertingErrored,\n alertingLoaded,\n alertingLoading,\n alertingSetRules,\n dashboardsPatchAllVariables,\n dashboardsPatchVariable,\n DashboardsClearVariables,\n dashboardsSetEndTime,\n dashboardsSetPollInterval,\n dashboardsSetTimespan,\n dashboardsVariableOptionsLoaded,\n queryBrowserAddQuery,\n queryBrowserDuplicateQuery,\n queryBrowserDeleteAllQueries,\n queryBrowserDeleteAllSeries,\n queryBrowserDeleteQuery,\n queryBrowserDismissNamespaceAlert,\n queryBrowserPatchQuery,\n queryBrowserRunQueries,\n queryBrowserSetAllExpanded,\n queryBrowserSetMetrics,\n queryBrowserSetPollInterval,\n queryBrowserSetTimespan,\n queryBrowserToggleAllSeries,\n queryBrowserToggleIsEnabled,\n queryBrowserToggleSeries,\n setAlertCount,\n toggleGraphs,\n};\n\nexport type ObserveAction = Action;\n","export * from './useCanClusterUpgrade';\nexport * from './formik-validation-fix';\nexport * from './deep-compare-memoize';\nexport * from './document-listener';\nexport * from './fullscreen';\nexport * from './scroll';\nexport * from './useScrollShadows';\nexport * from './plugins-overview-tab-section';\nexport * from './debounce';\nexport * from './select-list';\nexport * from './useBuildConfigsWatcher';\nexport * from './useJobsForCronJobWatcher';\nexport * from './usePodsWatcher';\nexport * from './useReplicationControllersWatcher';\nexport * from './useRoutesWatcher';\nexport * from './useServicesWatcher';\nexport * from './useQueryParams';\nexport * from './version';\nexport * from './csv-watch-hook';\nexport * from './useTabbedTableBreadcrumb';\nexport * from './post-form-submit-action';\nexport * from './flag';\nexport * from './useUserSettings';\nexport * from './useUserSettingsCompatibility';\nexport * from './hpa-hooks';\nexport * from './usePinnedResources';\nexport * from './perspective-utils';\nexport * from './useActiveNamespace';\nexport * from './useIsMobile';\nexport * from './useResizeObserver';\nexport * from './useBoundingClientRect';\nexport * from './useScrollContainer';\nexport * from './useEventListener';\nexport * from './useTelemetry';\nexport * from './useForceRender';\nexport * from './useUtilizationDuration';\nexport * from './usePrometheusGate';\nexport * from './useCopyCodeModal';\nexport * from './useCopyLoginCommands';\nexport * from './useQuickStartContext';\n","// TODO(vojtech): this index file can cause a lot of cycles, it's best to remove it\nexport * from './typings';\nexport * from './store';\n\n// React integrations\nexport * from './api/useExtensions';\nexport * from './api/withExtensions';\nexport * from './api/useDynamicPluginInfo';\n","import { chart_color_cyan_400 as knativeServingColor } from '@patternfly/react-tokens/dist/js/chart_color_cyan_400';\nimport { chart_color_red_300 as knativeEventingColor } from '@patternfly/react-tokens/dist/js/chart_color_red_300';\nimport { K8sKind } from '@console/internal/module/k8s';\nimport {\n KNATIVE_SERVING_APIGROUP,\n KNATIVE_EVENT_MESSAGE_APIGROUP,\n KNATIVE_EVENTING_APIGROUP,\n CAMEL_APIGROUP,\n STRIMZI_KAFKA_APIGROUP,\n} from './const';\n\nconst apiVersion = 'v1';\n\nexport const ConfigurationModel: K8sKind = {\n apiGroup: KNATIVE_SERVING_APIGROUP,\n apiVersion,\n kind: 'Configuration',\n plural: 'configurations',\n label: 'Configuration',\n // t('knative-plugin~Configuration')\n labelKey: 'knative-plugin~Configuration',\n labelPlural: 'Configurations',\n // t('knative-plugin~Configurations')\n labelPluralKey: 'knative-plugin~Configurations',\n id: 'configuration',\n abbr: 'CFG',\n namespaced: true,\n crd: true,\n color: knativeServingColor.value,\n};\n\nexport const KnativeServingModel: K8sKind = {\n apiGroup: 'operator.knative.dev',\n apiVersion: 'v1alpha1',\n kind: 'KnativeServing',\n label: 'KnativeServing',\n // t('knative-plugin~KnativeServing')\n labelKey: 'knative-plugin~KnativeServing',\n labelPlural: 'KnativeServings',\n // t('knative-plugin~KnativeServings')\n labelPluralKey: 'knative-plugin~KnativeServings',\n plural: 'knativeservings',\n id: 'knativeserving',\n abbr: 'KS',\n namespaced: true,\n crd: true,\n color: knativeServingColor.value,\n};\n\nexport const RevisionModel: K8sKind = {\n apiGroup: KNATIVE_SERVING_APIGROUP,\n apiVersion,\n kind: 'Revision',\n label: 'Revision',\n // t('knative-plugin~Revision')\n labelKey: 'knative-plugin~Revision',\n // t('knative-plugin~Revisions')\n labelPluralKey: 'knative-plugin~Revisions',\n labelPlural: 'Revisions',\n plural: 'revisions',\n id: 'revision',\n abbr: 'REV',\n namespaced: true,\n crd: true,\n color: knativeServingColor.value,\n};\n\nexport const RouteModel: K8sKind = {\n apiGroup: KNATIVE_SERVING_APIGROUP,\n apiVersion,\n kind: 'Route',\n label: 'Route',\n // t('knative-plugin~Route')\n labelKey: 'knative-plugin~Route',\n labelPlural: 'Routes',\n // t('knative-plugin~Routes')\n labelPluralKey: 'knative-plugin~Routes',\n plural: 'routes',\n id: 'route',\n abbr: 'RT',\n namespaced: true,\n crd: true,\n color: knativeServingColor.value,\n};\n\nexport const ServiceModel: K8sKind = {\n apiGroup: KNATIVE_SERVING_APIGROUP,\n apiVersion,\n kind: 'Service',\n label: 'Service',\n // t('knative-plugin~Service')\n labelKey: 'knative-plugin~Service',\n // t('knative-plugin~Services')\n labelPluralKey: 'knative-plugin~Services',\n labelPlural: 'Services',\n plural: 'services',\n id: 'service',\n abbr: 'KSVC',\n namespaced: true,\n crd: true,\n color: knativeServingColor.value,\n};\n\nexport const DomainMappingModel: K8sKind = {\n apiGroup: KNATIVE_SERVING_APIGROUP,\n apiVersion: 'v1beta1',\n kind: 'DomainMapping',\n label: 'DomainMapping',\n // t('knative-plugin~DomainMapping')\n labelKey: 'knative-plugin~DomainMapping',\n labelPlural: 'DomainMappings',\n // t('knative-plugin~DomainMappings')\n labelPluralKey: 'knative-plugin~DomainMappings',\n plural: 'domainmappings',\n id: 'DomainMapping',\n abbr: 'DM',\n namespaced: true,\n crd: true,\n color: knativeServingColor.value,\n};\n\nexport const EventingSubscriptionModel: K8sKind = {\n apiGroup: KNATIVE_EVENT_MESSAGE_APIGROUP,\n apiVersion,\n kind: 'Subscription',\n label: 'Subscription',\n // t('knative-plugin~Subscription')\n labelKey: 'knative-plugin~Subscription',\n labelPlural: 'Subscriptions',\n // t('knative-plugin~Subscriptions')\n labelPluralKey: 'knative-plugin~Subscriptions',\n plural: 'subscriptions',\n id: 'subscriptioneventing',\n abbr: 'S',\n namespaced: true,\n crd: true,\n color: knativeEventingColor.value,\n};\n\nexport const EventingBrokerModel: K8sKind = {\n apiGroup: KNATIVE_EVENTING_APIGROUP,\n apiVersion,\n kind: 'Broker',\n label: 'Broker',\n // t('knative-plugin~Broker')\n labelKey: 'knative-plugin~Broker',\n labelPlural: 'Brokers',\n // t('knative-plugin~Brokers')\n labelPluralKey: 'knative-plugin~Brokers',\n plural: 'brokers',\n id: 'broker',\n abbr: 'B',\n namespaced: true,\n crd: true,\n color: knativeEventingColor.value,\n};\n\nexport const EventingTriggerModel: K8sKind = {\n apiGroup: KNATIVE_EVENTING_APIGROUP,\n apiVersion,\n kind: 'Trigger',\n label: 'Trigger',\n // t('knative-plugin~Trigger')\n labelKey: 'knative-plugin~Trigger',\n labelPlural: 'Triggers',\n // t('knative-plugin~Triggers')\n labelPluralKey: 'knative-plugin~Triggers',\n plural: 'triggers',\n id: 'trigger',\n abbr: 'T',\n namespaced: true,\n crd: true,\n color: knativeEventingColor.value,\n};\n\nexport const CamelIntegrationModel: K8sKind = {\n apiGroup: CAMEL_APIGROUP,\n apiVersion,\n kind: 'Integration',\n label: 'Integration',\n // t('knative-plugin~Integration')\n labelKey: 'knative-plugin~Integration',\n labelPlural: 'Integrations',\n // t('knative-plugin~Integration')\n labelPluralKey: 'knative-plugin~Integrations',\n plural: 'integrations',\n id: 'integration',\n abbr: 'I',\n namespaced: true,\n crd: true,\n color: knativeEventingColor.value,\n};\n\nexport const KafkaModel: K8sKind = {\n apiGroup: STRIMZI_KAFKA_APIGROUP,\n apiVersion: 'v1beta2',\n kind: 'Kafka',\n label: 'Kafka',\n // t('knative-plugin~Kafka')\n labelKey: 'knative-plugin~Kafka',\n labelPlural: 'Kafkas',\n // t('knative-plugin~Kafkas')\n labelPluralKey: 'knative-plugin~Kafkas',\n plural: 'kafkas',\n id: 'kafka',\n abbr: 'K',\n namespaced: true,\n crd: true,\n color: knativeEventingColor.value,\n};\n\nexport const KafkaTopicModel: K8sKind = {\n apiGroup: STRIMZI_KAFKA_APIGROUP,\n apiVersion: 'v1beta2',\n kind: 'KafkaTopic',\n label: 'KafkaTopic',\n // t('knative-plugin~KafkaTopic')\n labelKey: 'knative-plugin~KafkaTopic',\n labelPlural: 'KafkaTopics',\n // t('knative-plugin~KafkaTopics')\n labelPluralKey: 'knative-plugin~KafkaTopics',\n plural: 'kafkatopics',\n id: 'kafkatopic',\n abbr: 'KT',\n namespaced: true,\n crd: true,\n color: knativeEventingColor.value,\n};\n\nexport const CamelKameletBindingModel: K8sKind = {\n apiGroup: CAMEL_APIGROUP,\n apiVersion: 'v1alpha1',\n kind: 'KameletBinding',\n label: 'KameletBinding',\n // t('knative-plugin~KameletBinding')\n labelKey: 'knative-plugin~KameletBinding',\n labelPlural: 'KameletBindings',\n // t('knative-plugin~KameletBindings')\n labelPluralKey: 'knative-plugin~KameletBindings',\n plural: 'kameletbindings',\n id: 'kameletbinding',\n abbr: 'KB',\n namespaced: true,\n crd: true,\n color: knativeEventingColor.value,\n};\n\nexport const CamelKameletModel: K8sKind = {\n apiGroup: CAMEL_APIGROUP,\n apiVersion: 'v1alpha1',\n kind: 'Kamelet',\n label: 'Kamelet',\n // t('knative-plugin~Kamelet')\n labelKey: 'knative-plugin~Kamelet',\n labelPlural: 'Kamelets',\n // t('knative-plugin~Kamelets')\n labelPluralKey: 'knative-plugin~Kamelets',\n plural: 'kamelets',\n id: 'kamelet',\n abbr: 'K',\n namespaced: true,\n crd: true,\n color: knativeEventingColor.value,\n};\n\nexport const KafkaSinkModel: K8sKind = {\n apiGroup: 'eventing.knative.dev',\n apiVersion: 'v1alpha1',\n kind: 'KafkaSink',\n label: 'KafkaSink',\n // t('knative-plugin~KafkaSink')\n labelKey: 'knative-plugin~KafkaSink',\n labelPlural: 'KafkaSinks',\n // t('knative-plugin~KafkaSinks')\n labelPluralKey: 'knative-plugin~KafkaSinks',\n plural: 'kafkasinks',\n id: 'kafkasink',\n abbr: 'KS',\n namespaced: true,\n crd: true,\n color: knativeEventingColor.value,\n};\n","/**\n * @file Entrypoint for the `@openshift-console/dynamic-plugin-sdk` package published to npmjs.\n *\n * Provides core APIs, types and utilities used by dynamic plugins at runtime.\n */\n\nexport * from './extensions';\nexport * from './api/core-api';\n","export * from './k8s-resource';\nexport * from './k8s-utils';\nexport * from './k8s-ref';\n","import { K8sModel } from '../../api/common-types';\nimport {\n GetAPIVersionForModel,\n GetGroupVersionKindForResource,\n GetGroupVersionKindForModel,\n} from '../../api/k8s-types';\nimport { K8sGroupVersionKind, K8sResourceKindReference } from '../../extensions/console-types';\n\n/**\n * @deprecated - This will become obsolete when we move away from K8sResourceKindReference to K8sGroupVersionKind\n * Provides a reference string that uniquely identifies the group, version, and kind of a k8s resource.\n * @param K8sGroupVersionKind Pass K8sGroupVersionKind which will have group, version, and kind of a k8s resource.\n * @param K8sGroupVersionKind.group Pass group of k8s resource or model.\n * @param K8sGroupVersionKind.version Pass version of k8s resource or model.\n * @param K8sGroupVersionKind.kind Pass kind of k8s resource or model.\n * @returns The reference for any k8s resource i.e `group~version~kind`.\n * If the group will not be present then \"core\" will be returned as part of the group in reference.\n */\nexport const getReference = ({\n group,\n version,\n kind,\n}: K8sGroupVersionKind): K8sResourceKindReference => [group || 'core', version, kind].join('~');\n\n/**\n * @deprecated - This will become obsolete when we move away from K8sResourceKindReference to K8sGroupVersionKind\n * @see getGroupVersionKindForModel\n * Provides a reference string that uniquely identifies the group, version, and kind of a k8s model.\n * @param model k8s model\n * @returns The reference for model i.e `group~version~kind`.\n */\nexport const getReferenceForModel = (model: K8sModel): K8sResourceKindReference =>\n getReference({ group: model.apiGroup, version: model.apiVersion, kind: model.kind });\n\n/**\n * Provides `apiVersion` for a Kubernetes model.\n * @param model Kubernetes model\n * @returns The apiVersion for the model i.e `group/version`.\n * */\nexport const getAPIVersionForModel: GetAPIVersionForModel = (model) =>\n !model?.apiGroup ? model.apiVersion : `${model.apiGroup}/${model.apiVersion}`;\n\n/**\n * Provides a group, version, and kind for a resource.\n * @param resource Kubernetes resource\n * @returns The group, version, kind for the provided resource.\n * If the resource does not have an API group, the group `core` is returned.\n * If the resource has an invalid apiVersion then it'll throw Error.\n * */\nexport const getGroupVersionKindForResource: GetGroupVersionKindForResource = (resource) => {\n const apiVersion = resource?.apiVersion;\n const kind = resource?.kind;\n const apiVersionSplit = apiVersion?.split('/');\n const apiVersionSplitLen = apiVersionSplit?.length;\n if (apiVersionSplitLen > 2) throw new Error('Provided resource has invalid apiVersion.');\n\n return !apiVersion || !kind\n ? undefined\n : {\n ...(apiVersionSplitLen === 2 && {\n group: apiVersionSplit[0],\n }),\n version: apiVersionSplitLen === 2 ? apiVersionSplit[1] : resource?.apiVersion,\n kind,\n };\n};\n\n/**\n * Provides a group, version, and kind for a k8s model.\n * @param model Kubernetes model\n * @returns The group, version, kind for the provided model.\n * If the model does not have an apiGroup, group `core` will be returned.\n * */\nexport const getGroupVersionKindForModel: GetGroupVersionKindForModel = ({\n apiGroup,\n apiVersion: version,\n kind,\n}) => ({\n ...(apiGroup && { group: apiGroup }),\n version,\n kind,\n});\n\n/**\n * @deprecated - This will become obsolete when we move away from K8sResourceKindReference to K8sGroupVersionKind\n * Provides a group, version, and kind for a reference.\n * @param reference reference for group, version, kind i.e `group~version~kind`.\n * @returns The group, version, kind for the provided reference.\n * If the group's value is \"core\" it denotes resource does not have an API group.\n * */\nexport const getGroupVersionKindForReference = (\n reference: K8sResourceKindReference,\n): K8sGroupVersionKind => {\n const referenceSplit = reference.split('~');\n if (referenceSplit.length > 3) throw new Error('Provided reference is invalid.');\n\n const [group, version, kind] = referenceSplit;\n return {\n group,\n version,\n kind,\n };\n};\n\n/**\n * @deprecated - This will become obsolete when we move away from K8sResourceKindReference to K8sGroupVersionKind\n * Provides a reference string that uniquely identifies the group, version, and kind of K8sGroupVersionKind.\n * @param kind kind can be of type K8sResourceKindReference or K8sGroupVersionKind\n * @returns The reference i.e `group~version~kind`.\n */\nexport const transformGroupVersionKindToReference = (\n kind: K8sResourceKindReference | K8sGroupVersionKind,\n): K8sResourceKindReference =>\n kind && typeof kind !== 'string' ? getReference(kind) : (kind as K8sResourceKindReference);\n","/* eslint-disable @typescript-eslint/naming-convention */\n\nexport const CONST = Object.freeze({\n // http://kubernetes.io/docs/user-guide/images/#bypassing-kubectl-create-secrets\n PULL_SECRET_TYPE: 'kubernetes.io/dockerconfigjson',\n PULL_SECRET_DATA: '.dockerconfigjson',\n});\n\nexport const ANNOTATIONS = Object.freeze({\n displayName: 'openshift.io/display-name',\n providerDisplayName: 'openshift.io/provider-display-name',\n documentationURL: 'openshift.io/documentation-url',\n supportURL: 'openshift.io/support-url',\n});\n\n// Common shortcuts than span pages.\nexport const KEYBOARD_SHORTCUTS = Object.freeze({\n focusFilterInput: '/',\n blurFilterInput: 'Escape',\n focusNamespaceDropdown: 'n',\n});\n\nexport const RESOURCE_NAME_TRUNCATE_LENGTH = 13;\n\n// Use a key for the \"all\" namespaces option that would be an invalid namespace name to avoid a potential clash\nexport const ALL_NAMESPACES_KEY = '#ALL_NS#';\n\n// Use a key for the \"all\" applications option that would be an invalid application name to avoid a potential clash\nexport const ALL_APPLICATIONS_KEY = '#ALL_APPS#';\nexport const UNASSIGNED_APPLICATIONS_KEY = '#UNASSIGNED_APP#';\n\n// Prefix our localStorage items to avoid conflicts if another app ever runs on the same domain.\nexport const STORAGE_PREFIX = 'bridge';\n\nexport const USERSETTINGS_PREFIX = 'console';\n\n// This localStorage key predates the storage prefix.\nexport const NAMESPACE_USERSETTINGS_PREFIX = `${USERSETTINGS_PREFIX}.namespace`;\nexport const NAMESPACE_LOCAL_STORAGE_KEY = 'dropdown-storage-namespaces';\nexport const APPLICATION_USERSETTINGS_PREFIX = `${USERSETTINGS_PREFIX}.applications`;\nexport const APPLICATION_LOCAL_STORAGE_KEY = 'dropdown-storage-applications';\nexport const LAST_NAMESPACE_NAME_USER_SETTINGS_KEY = `${USERSETTINGS_PREFIX}.lastNamespace`;\nexport const LAST_NAMESPACE_NAME_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/last-namespace-name`;\nexport const API_DISCOVERY_RESOURCES_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/api-discovery-resources`;\nexport const COMMUNITY_PROVIDERS_WARNING_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/community-providers-warning`;\nexport const COMMUNITY_PROVIDERS_WARNING_USERSETTINGS_KEY = `${USERSETTINGS_PREFIX}.communityProvidersWarning`;\nexport const PINNED_RESOURCES_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/pinned-resources`;\nexport const COLUMN_MANAGEMENT_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/table-columns`;\nexport const LOG_WRAP_LINES_USERSETTINGS_KEY = `${USERSETTINGS_PREFIX}.log.wrapLines`;\nexport const SHOW_YAML_EDITOR_TOOLTIPS_USER_SETTING_KEY = `${USERSETTINGS_PREFIX}.showYAMLEditorTooltips`;\nexport const SHOW_YAML_EDITOR_TOOLTIPS_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/showYAMLEditorTooltips`;\nexport const SHOW_FULL_LOG_USERSETTINGS_KEY = `${USERSETTINGS_PREFIX}.show.full.log`;\n// Bootstrap user for OpenShift 4.0 clusters (kube:admin)\nexport const KUBE_ADMIN_USERNAMES = ['kube:admin'];\n\nexport const RH_OPERATOR_SUPPORT_POLICY_LINK =\n 'https://access.redhat.com/third-party-software-support';\n\n// Package manifests for the OperatorHub use this label.\nexport const OPERATOR_HUB_LABEL = 'openshift-marketplace';\n\nexport enum FLAGS {\n AUTH_ENABLED = 'AUTH_ENABLED',\n PROMETHEUS = 'PROMETHEUS',\n OPENSHIFT = 'OPENSHIFT',\n MONITORING = 'MONITORING',\n CAN_CREATE_NS = 'CAN_CREATE_NS',\n CAN_GET_NS = 'CAN_GET_NS',\n CAN_LIST_NS = 'CAN_LIST_NS',\n CAN_LIST_NODE = 'CAN_LIST_NODE',\n CAN_LIST_PV = 'CAN_LIST_PV',\n CAN_LIST_CRD = 'CAN_LIST_CRD',\n CAN_LIST_USERS = 'CAN_LIST_USERS',\n CAN_LIST_GROUPS = 'CAN_LIST_GROUPS',\n CAN_LIST_OPERATOR_GROUP = 'CAN_LIST_OPERATOR_GROUP',\n CAN_LIST_PACKAGE_MANIFEST = 'CAN_LIST_PACKAGE_MANIFEST',\n CAN_CREATE_PROJECT = 'CAN_CREATE_PROJECT',\n CAN_LIST_VSC = 'CAN_LIST_VSC',\n CLUSTER_AUTOSCALER = 'CLUSTER_AUTOSCALER',\n SHOW_OPENSHIFT_START_GUIDE = 'SHOW_OPENSHIFT_START_GUIDE',\n CLUSTER_API = 'CLUSTER_API',\n CLUSTER_VERSION = 'CLUSTER_VERSION',\n MACHINE_CONFIG = 'MACHINE_CONFIG',\n MACHINE_AUTOSCALER = 'MACHINE_AUTOSCALER',\n MACHINE_HEALTH_CHECK = 'MACHINE_HEALTH_CHECK',\n CONSOLE_LINK = 'CONSOLE_LINK',\n CONSOLE_CLI_DOWNLOAD = 'CONSOLE_CLI_DOWNLOAD',\n CONSOLE_NOTIFICATION = 'CONSOLE_NOTIFICATION',\n CONSOLE_EXTERNAL_LOG_LINK = 'CONSOLE_EXTERNAL_LOG_LINK',\n CONSOLE_YAML_SAMPLE = 'CONSOLE_YAML_SAMPLE',\n CONSOLE_QUICKSTART = 'CONSOLE_QUICKSTART',\n}\n\nexport const CONFIG_STORAGE_CONSOLE = 'console';\nexport const COLUMN_MANAGEMENT_CONFIGMAP_KEY = `${CONFIG_STORAGE_CONSOLE}.tableColumns`;\nexport const ACM_LINK_ID = 'acm-console-link';\n\nexport const SYSTEM_NAMESPACES_PREFIX = ['kube-', 'openshift-', 'kubernetes-'];\nexport const SYSTEM_NAMESPACES = ['default', 'openshift'];\n\nexport enum REQUESTER_FILTER {\n ME = 'me',\n USER = 'user',\n SYSTEM = 'system',\n}\n\nexport enum USER_TELEMETRY_ANALYTICS {\n ALLOW = 'allow',\n DENY = 'deny',\n}\n\nexport enum CLUSTER_TELEMETRY_ANALYTICS {\n OPTIN = 'OPT-IN',\n OPTOUT = 'OPT-OUT',\n DISABLED = 'DISABLED',\n ENFORCE = 'ENFORCE',\n}\n\nexport const CLUSTER_VERSION_DEFAULT_UPSTREAM_SERVER_URL_PLACEHOLDER =\n 'https://api.openshift.com/api/upgrades_info/v1/graph';\n\nexport const GETTING_STARTED_USER_SETTINGS_KEY_ADD_PAGE =\n 'devconsole.addPage.gettingStarted.expanded';\nexport const GETTING_STARTED_USER_SETTINGS_KEY_CLUSTER_DASHBOARD =\n 'console.clusterDashboard.gettingStarted.expanded';\nexport const PREFERRED_TELEMETRY_USER_SETTING_KEY = 'telemetry.analytics';\n","// This module utilizes dynamic `import()` to enable lazy-loading for each modal instead of including them in the main bundle.\n\n// Helper to detect if a modal is open. This is used to disable autofocus in elements under a modal.\n// TODO: Improve focus and keybinding handling, see https://issues.redhat.com/browse/ODC-3554\nexport const isModalOpen = () => document.body.classList.contains('ReactModal__Body--open');\n\nexport const configureCountModal = (props) =>\n import('./configure-count-modal' /* webpackChunkName: \"configure-count-modal\" */).then((m) =>\n m.configureCountModal(props),\n );\n\nexport const configureReplicaCountModal = (props) =>\n import('./configure-count-modal' /* webpackChunkName: \"configure-count-modal\" */).then((m) =>\n m.configureReplicaCountModal(props),\n );\n\nexport const configureJobParallelismModal = (props) =>\n import('./configure-count-modal' /* webpackChunkName: \"configure-count-modal\" */).then((m) =>\n m.configureJobParallelismModal(props),\n );\n\nexport const confirmModal = (props) =>\n import('./confirm-modal' /* webpackChunkName: \"confirm-modal\" */).then((m) =>\n m.confirmModal(props),\n );\n\nexport const createNamespaceOrProjectModal = (props) =>\n import('./create-namespace-modal' /* webpackChunkName: \"create-namespace-modal\" */).then((m) =>\n m.createNamespaceOrProjectModal(props),\n );\n\nexport const createNamespaceModal = (props) =>\n import('./create-namespace-modal' /* webpackChunkName: \"create-namespace-modal\" */).then((m) =>\n m.createNamespaceModal(props),\n );\n\nexport const createProjectModal = (props) =>\n import('./create-namespace-modal' /* webpackChunkName: \"create-namespace-modal\" */).then((m) =>\n m.createProjectModal(props),\n );\n\nexport const deleteNamespaceModal = (props) =>\n import('./delete-namespace-modal' /* webpackChunkName: \"delete-namespace-modal\" */).then((m) =>\n m.deleteNamespaceModal(props),\n );\n\nexport const errorModal = (props) =>\n import('./error-modal' /* webpackChunkName: \"error-modal\" */).then((m) => m.errorModal(props));\n\nexport const configureNamespacePullSecretModal = (props) =>\n import(\n './configure-ns-pull-secret-modal' /* webpackChunkName: \"configure-ns-pull-secret-modal\" */\n ).then((m) => m.configureNamespacePullSecretModal(props));\n\nexport const labelsModalLauncher = (props) =>\n import('./labels-modal' /* webpackChunkName: \"labels-modal\" */).then((m) =>\n m.labelsModalLauncher(props),\n );\n\nexport const podSelectorModal = (props) =>\n import('./labels-modal' /* webpackChunkName: \"labels-modal\" */).then((m) =>\n m.podSelectorModal(props),\n );\n\nexport const rollbackModal = (props) =>\n import('./rollback-modal' /* webpackChunkName: \"rollback-modal\" */).then((m) =>\n m.rollbackModal(props),\n );\n\nexport const configureUpdateStrategyModal = (props) =>\n import(\n './configure-update-strategy-modal' /* webpackChunkName: \"configure-update-strategy-modal\" */\n ).then((m) => m.configureUpdateStrategyModal(props));\n\nexport const annotationsModalLauncher = (props) =>\n import('./tags' /* webpackChunkName: \"tags\" */).then((m) => m.annotationsModalLauncher(props));\n\nexport const deleteModal = (props) =>\n import('./delete-modal' /* webpackChunkName: \"delete-modal\" */).then((m) => m.deleteModal(props));\n\nexport const clusterChannelModal = (props) =>\n import('./cluster-channel-modal' /* webpackChunkName: \"cluster-channel-modal\" */).then((m) =>\n m.clusterChannelModal(props),\n );\n\nexport const clusterMoreUpdatesModal = (props) =>\n import(\n './cluster-more-updates-modal' /* webpackChunkName: \"cluster-more-updates-modal\" */\n ).then((m) => m.clusterMoreUpdatesModal(props));\n\nexport const clusterUpdateModal = (props) =>\n import('./cluster-update-modal' /* webpackChunkName: \"cluster-update-modal\" */).then((m) =>\n m.clusterUpdateModal(props),\n );\n\nexport const taintsModal = (props) =>\n import('./taints-modal' /* webpackChunkName: \"taints-modal\" */).then((m) => m.taintsModal(props));\n\nexport const tolerationsModal = (props) =>\n import('./tolerations-modal' /* webpackChunkName: \"tolerations-modal\" */).then((m) =>\n m.tolerationsModal(props),\n );\n\nexport const expandPVCModal = (props) =>\n import('./expand-pvc-modal' /* webpackChunkName: \"expand-pvc-modal\" */).then((m) =>\n m.expandPVCModal(props),\n );\n\nexport const clonePVCModal = (props) =>\n import(\n '@console/app/src/components/modals/clone/clone-pvc-modal' /* webpackChunkName: \"clone-pvc-modal\" */\n ).then((m) => m.default(props));\n\nexport const removeVolumeModal = (props) =>\n import('./remove-volume-modal' /* webpackChunkName: \"remove-volume-modal\" */).then((m) =>\n m.removeVolumeModal(props),\n );\n\nexport const configureClusterUpstreamModal = (props) =>\n import(\n './configure-cluster-upstream-modal' /* webpackChunkName: \"configure-cluster-upstream-modal\" */\n ).then((m) => m.configureClusterUpstreamModal(props));\n\nexport const configureMachineAutoscalerModal = (props) =>\n import(\n './configure-machine-autoscaler-modal' /* webpackChunkName: \"configure-machine-autoscaler-modal\" */\n ).then((m) => m.configureMachineAutoscalerModal(props));\n\nexport const createAlertRoutingModal = (props) =>\n import('./alert-routing-modal' /* webpackChunkName: \"alert-routing-modal\" */).then((m) =>\n m.createAlertRoutingModal(props),\n );\n\nexport const createColumnManagementModal = (props) =>\n import('./column-management-modal' /* webpackChunkName: \"column-management-modal\" */).then((m) =>\n m.createColumnManagementModal(props),\n );\n\nexport const addUsersModal = (props) =>\n import('./add-users-modal' /* webpackChunkName: \"add-users-modal\" */).then((m) =>\n m.addUsersModal(props),\n );\n\nexport const removeUserModal = (props) =>\n import('./remove-user-modal' /* webpackChunkName: \"remove-user-modal\" */).then((m) =>\n m.removeUserModal(props),\n );\n\nexport const restorePVCModal = (props) =>\n import(\n '@console/app/src/components/modals/restore-pvc/restore-pvc-modal' /* webpackChunkName: \"restore-pvc-modal\" */\n ).then((m) => m.default(props));\n\nexport const managedResourceSaveModal = (props) =>\n import(\n './managed-resource-save-modal' /* webpackChunkName: \"managed-resource-save-modal\" */\n ).then((m) => m.managedResourceSaveModal(props));\n","import * as _ from 'lodash';\nimport { HttpError, RetryError } from '@console/dynamic-plugin-sdk/src/utils/error/http-error';\nimport { authSvc } from './module/auth';\nimport { getCSRFToken } from '@console/dynamic-plugin-sdk/src/utils/fetch/console-fetch-utils';\n\nexport const applyConsoleHeaders = (url, options) => {\n const token = getCSRFToken();\n if (options.headers) {\n options.headers['X-CSRFToken'] = token;\n } else {\n options.headers = { 'X-CSRFToken': token };\n }\n\n // X-CSRFToken is used only for non-GET requests targeting bridge\n if (options.method === 'GET' || url.indexOf('://') >= 0) {\n delete options.headers['X-CSRFToken'];\n }\n return options;\n};\n\n// TODO: url can be url or path, but shouldLogout only handles paths\nexport const shouldLogout = (url: string): boolean => {\n const k8sRegex = new RegExp(`^${window.SERVER_FLAGS.basePath}api/kubernetes/`);\n // 401 from k8s. show logout screen\n if (k8sRegex.test(url)) {\n // Don't let 401s from proxied services log out users\n const proxyRegex = new RegExp(`^${window.SERVER_FLAGS.basePath}api/kubernetes/api/v1/proxy/`);\n if (proxyRegex.test(url)) {\n return false;\n }\n const serviceRegex = new RegExp(\n `^${window.SERVER_FLAGS.basePath}api/kubernetes/api/v1/namespaces/\\\\w+/services/\\\\w+/proxy/`,\n );\n if (serviceRegex.test(url)) {\n return false;\n }\n return true;\n }\n return false;\n};\n\nexport const validateStatus = async (\n response: Response,\n url: string,\n method: string,\n retry: boolean,\n) => {\n if (response.ok) {\n return response;\n }\n\n if (retry && response.status === 429) {\n throw new RetryError();\n }\n\n if (response.status === 401 && shouldLogout(url)) {\n const next = window.location.pathname + window.location.search + window.location.hash;\n authSvc.logout(next);\n }\n\n const contentType = response.headers.get('content-type');\n if (!contentType || contentType.indexOf('json') === -1) {\n throw new HttpError(response.statusText, response.status, response);\n }\n\n if (response.status === 403) {\n return response.json().then((json) => {\n throw new HttpError(\n json.message || 'Access denied due to cluster policy.',\n response.status,\n response,\n json,\n );\n });\n }\n\n return response.json().then((json) => {\n // retry 409 conflict errors due to ClustResourceQuota / ResourceQuota\n // https://bugzilla.redhat.com/show_bug.cgi?id=1920699\n if (\n retry &&\n method === 'POST' &&\n response.status === 409 &&\n ['resourcequotas', 'clusterresourcequotas'].includes(json.details?.kind)\n ) {\n throw new RetryError();\n }\n const cause = json.details?.causes?.[0];\n let reason;\n if (cause) {\n reason = `Error \"${cause.message}\" for field \"${cause.field}\".`;\n }\n if (!reason) {\n reason = json.message;\n }\n if (!reason) {\n reason = json.error;\n }\n if (!reason) {\n reason = response.statusText;\n }\n\n throw new HttpError(reason, response.status, response, json);\n });\n};\n\nconst initDefaults = {\n headers: {},\n credentials: 'same-origin',\n};\n\nexport const appInternalFetch = async (url: string, options: RequestInit): Promise => {\n let attempt = 0;\n let response: Response;\n let retry = true;\n\n const op1 = applyConsoleHeaders(url, options);\n const allOptions = _.defaultsDeep({}, initDefaults, op1);\n\n while (retry) {\n retry = false;\n attempt++;\n try {\n response = await fetch(url, allOptions).then((resp) =>\n validateStatus(resp, url, allOptions.method, attempt < 3),\n );\n } catch (e) {\n if (e instanceof RetryError) {\n retry = true;\n } else {\n // eslint-disable-next-line no-console\n console.warn(`consoleFetch failed for url ${url}`, e);\n throw e;\n }\n }\n }\n return response;\n};\n\nexport {\n consoleFetch as coFetch,\n consoleFetchJSON as coFetchJSON,\n consoleFetchText as coFetchText,\n getConsoleRequestHeaders,\n} from '@console/dynamic-plugin-sdk/src/utils/fetch';\n","import * as classNames from 'classnames';\nimport * as Modal from 'react-modal';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { Router } from 'react-router-dom';\nimport { CompatRouter } from 'react-router-dom-v5-compat';\nimport { useTranslation } from 'react-i18next';\nimport { ActionGroup, Button, Text, TextContent, TextVariants } from '@patternfly/react-core';\nimport CloseButton from '@console/shared/src/components/close-button';\nimport store from '../../redux';\nimport { ButtonBar } from '../utils/button-bar';\nimport { history } from '../utils/router';\n\nexport const createModal: CreateModal = (getModalElement) => {\n const containerElement = document.getElementById('modal-container');\n const result = new Promise((resolve) => {\n const closeModal = (e?: React.SyntheticEvent) => {\n if (e && e.stopPropagation) {\n e.stopPropagation();\n }\n ReactDOM.unmountComponentAtNode(containerElement);\n resolve();\n };\n Modal.setAppElement(document.getElementById('app-content'));\n containerElement && ReactDOM.render(getModalElement(closeModal), containerElement);\n });\n return { result };\n};\n\nexport const ModalWrapper: React.FC = ({\n blocking,\n className,\n children,\n onClose,\n}) => {\n const { t } = useTranslation();\n const parentSelector = React.useCallback(() => document.querySelector('#modal-container'), []);\n return (\n \n {children}\n \n );\n};\n\nexport const createModalLauncher: CreateModalLauncher = (Component, modalWrapper = true) => ({\n blocking,\n modalClassName,\n close,\n cancel,\n ...props\n}) => {\n const getModalContainer: GetModalContainer = (onClose) => {\n const handleClose = (e: React.SyntheticEvent) => {\n onClose?.(e);\n close?.();\n };\n const handleCancel = (e: React.SyntheticEvent) => {\n cancel?.();\n handleClose(e);\n };\n\n return (\n \n \n \n {modalWrapper ? (\n \n \n \n ) : (\n \n )}\n \n \n \n );\n };\n return createModal(getModalContainer);\n};\n\nexport const ModalTitle: React.FC = ({\n children,\n className = 'modal-header',\n close,\n}) => (\n
\n \n \n {children}\n {close && (\n {\n e.stopPropagation();\n close(e);\n }}\n />\n )}\n \n \n
\n);\n\nexport const ModalBody: React.FC = ({ children }) => (\n
\n
{children}
\n
\n);\n\nexport const ModalFooter: React.FC = ({\n message,\n errorMessage,\n inProgress,\n children,\n}) => {\n return (\n \n {children}\n \n );\n};\n\nexport const ModalSubmitFooter: React.FC = ({\n message,\n errorMessage,\n inProgress,\n cancel,\n submitText,\n cancelText,\n className,\n submitDisabled,\n submitDanger,\n buttonAlignment = 'right',\n resetText,\n reset,\n}) => {\n const { t } = useTranslation();\n const onCancelClick = (e) => {\n e.stopPropagation();\n cancel(e);\n };\n\n const onResetClick = (e) => {\n e.stopPropagation();\n reset(e);\n };\n\n const cancelButton = (\n \n {cancelText || t('public~Cancel')}\n \n );\n\n const submitButton = (\n \n {submitText || t('public~Submit')}\n \n );\n\n const resetButton = (\n \n );\n\n return (\n \n \n {buttonAlignment === 'left' ? (\n <>\n {submitButton}\n {reset && resetButton}\n {cancelButton}\n \n ) : (\n <>\n {reset && resetButton}\n {cancelButton}\n {submitButton}\n \n )}\n \n \n );\n};\n\nexport type ModalWrapperProps = {\n blocking?: boolean;\n className?: string;\n onClose?: (event?: React.SyntheticEvent) => void;\n};\n\nexport type GetModalContainer = (onClose: (e?: React.SyntheticEvent) => void) => React.ReactElement;\n\ntype CreateModal = (getModalContainer: GetModalContainer) => { result: Promise };\n\nexport type CreateModalLauncherProps = {\n blocking?: boolean;\n modalClassName?: string;\n};\n\nexport type ModalComponentProps = {\n cancel?: () => void;\n close?: () => void;\n};\n\nexport type ModalTitleProps = {\n className?: string;\n close?: (e: React.SyntheticEvent) => void;\n};\n\nexport type ModalBodyProps = {\n className?: string;\n};\n\nexport type ModalFooterProps = {\n message?: string;\n errorMessage?: React.ReactNode;\n inProgress: boolean;\n className?: string;\n};\n\nexport type ModalSubmitFooterProps = {\n message?: string;\n errorMessage?: string;\n inProgress: boolean;\n cancel: (e: React.SyntheticEvent) => void;\n cancelText?: React.ReactNode;\n className?: string;\n resetText?: React.ReactNode;\n reset?: (e: React.SyntheticEvent) => void;\n submitText: React.ReactNode;\n submitDisabled?: boolean;\n submitDanger?: boolean;\n buttonAlignment?: 'left' | 'right';\n};\n\nexport type CreateModalLauncher =

(\n C: React.ComponentType

,\n modalWrapper?: boolean,\n) => (props: P & CreateModalLauncherProps) => { result: Promise<{}> };\n","export { useK8sWatchResource } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks/useK8sWatchResource';\nexport { useK8sWatchResources } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks/useK8sWatchResources';\n","import * as _ from 'lodash';\nimport { ActionType as Action, action } from 'typesafe-actions';\nimport { DiscoveryResources, K8sModel } from '../../../api/common-types';\nimport { FilterValue, K8sResourceKind } from '../../../extensions/console-types';\nimport { getReferenceForModel } from '../../../utils/k8s/k8s-ref';\nimport { k8sList, k8sGet } from '../../../utils/k8s/k8s-resource';\nimport { k8sWatch } from '../../../utils/k8s/k8s-utils';\nimport { WSFactory } from '../../../utils/k8s/ws-factory';\nimport { getImpersonate } from '../../core/reducers/coreSelectors';\n\nexport enum ActionType {\n ReceivedResources = 'resources',\n GetResourcesInFlight = 'getResourcesInFlight',\n StartWatchK8sObject = 'startWatchK8sObject',\n StartWatchK8sList = 'startWatchK8sList',\n ModifyObject = 'modifyObject',\n StopWatchK8s = 'stopWatchK8s',\n\n Errored = 'errored',\n Loaded = 'loaded',\n BulkAddToList = 'bulkAddToList',\n UpdateListFromWS = 'updateListFromWS',\n FilterList = 'filterList',\n}\n\ntype K8sEvent = { type: 'ADDED' | 'DELETED' | 'MODIFIED'; object: K8sResourceKind };\n\nexport const updateListFromWS = (id: string, k8sObjects: K8sEvent[]) =>\n action(ActionType.UpdateListFromWS, { id, k8sObjects });\nexport const loaded = (id: string, k8sObjects: K8sResourceKind | K8sResourceKind[]) =>\n action(ActionType.Loaded, { id, k8sObjects });\n\nexport const bulkAddToList = (id: string, k8sObjects: K8sResourceKind[]) =>\n action(ActionType.BulkAddToList, { id, k8sObjects });\n\nexport const startWatchK8sObject = (id: string) => action(ActionType.StartWatchK8sObject, { id });\nexport const startWatchK8sList = (id: string, query: { [key: string]: string }) =>\n action(ActionType.StartWatchK8sList, { id, query });\nexport const modifyObject = (id: string, k8sObjects: K8sResourceKind) =>\n action(ActionType.ModifyObject, { id, k8sObjects });\nexport const stopWatchK8s = (id: string) => action(ActionType.StopWatchK8s, { id });\n\nexport const errored = (id: string, k8sObjects: any) =>\n action(ActionType.Errored, { id, k8sObjects });\nexport const filterList = (id: string, name: string, value: FilterValue) =>\n action(ActionType.FilterList, { id, name, value });\n\nexport const partialObjectMetadataListHeader = {\n Accept: 'application/json;as=PartialObjectMetadataList;v=v1;g=meta.k8s.io,application/json',\n};\n\nexport const partialObjectMetadataHeader = {\n Accept: 'application/json;as=PartialObjectMetadata;v=v1;g=meta.k8s.io,application/json',\n};\n\nconst WS: { [id: string]: WSFactory } = {};\nconst POLLs: { [id: string]: number } = {};\nconst REF_COUNTS: { [id: string]: number } = {};\n\nconst paginationLimit = 250;\n\nexport const stopK8sWatch = (id: string) => (dispatch) => {\n REF_COUNTS[id] -= 1;\n if (REF_COUNTS[id] > 0) {\n return _.noop;\n }\n\n const ws = WS[id];\n if (ws) {\n ws.destroy();\n delete WS[id];\n }\n const poller = POLLs[id];\n clearInterval(poller);\n delete POLLs[id];\n delete REF_COUNTS[id];\n return dispatch(stopWatchK8s(id));\n};\n\nexport const watchK8sList = (\n id: string,\n query: { [key: string]: string },\n k8skind: K8sModel,\n extraAction?,\n partialMetadata = false,\n) => (dispatch, getState) => {\n // Only one watch per unique list ID\n if (id in REF_COUNTS) {\n REF_COUNTS[id] += 1;\n return _.noop;\n }\n\n dispatch(startWatchK8sList(id, query));\n REF_COUNTS[id] = 1;\n\n const incrementallyLoad = async (continueToken = ''): Promise => {\n // the list may not still be around...\n if (!REF_COUNTS[id]) {\n // let .then handle the cleanup\n return null;\n }\n\n const requestOptions: RequestInit = partialMetadata\n ? {\n headers: partialObjectMetadataListHeader,\n }\n : {};\n\n const response = await k8sList(\n k8skind,\n {\n limit: paginationLimit,\n ...query,\n ...(continueToken ? { continue: continueToken } : {}),\n },\n true,\n requestOptions,\n );\n\n if (!REF_COUNTS[id]) {\n return null;\n }\n\n if (!continueToken) {\n [loaded, extraAction].forEach((f) => f && dispatch(f(id, response.items)));\n } else {\n dispatch(bulkAddToList(id, response.items));\n }\n\n if (response.metadata.continue) {\n return incrementallyLoad(response.metadata.continue);\n }\n return response.metadata.resourceVersion;\n };\n /**\n * Incrementally fetch list (XHR) using k8s pagination then use its resourceVersion to\n * start listening on a WS (?resourceVersion=$resourceVersion)\n * start the process over when:\n * 1. the WS closes abnormally\n * 2. the WS can not establish a connection within $TIMEOUT\n */\n const pollAndWatch = async () => {\n delete POLLs[id];\n\n try {\n const resourceVersion = await incrementallyLoad();\n // ensure this watch should still exist because pollAndWatch is recursiveish\n if (!REF_COUNTS[id]) {\n // eslint-disable-next-line no-console\n console.log(`stopped watching ${id} before finishing incremental loading.`);\n // call cleanup function out of abundance of caution...\n dispatch(stopK8sWatch(id));\n return;\n }\n\n if (WS[id]) {\n // eslint-disable-next-line no-console\n console.warn(`Attempted to create multiple websockets for ${id}.`);\n return;\n }\n\n if (!_.get(k8skind, 'verbs', ['watch']).includes('watch')) {\n // eslint-disable-next-line no-console\n console.warn(\n `${getReferenceForModel(k8skind)} does not support watching, falling back to polling.`,\n );\n if (!POLLs[id]) {\n POLLs[id] = window.setTimeout(pollAndWatch, 15 * 1000);\n }\n return;\n }\n\n const { subprotocols } = getImpersonate(getState()) || {};\n WS[id] = k8sWatch(\n k8skind,\n { ...query, resourceVersion },\n { subprotocols, timeout: 60 * 1000 },\n );\n } catch (e) {\n if (!REF_COUNTS[id]) {\n // eslint-disable-next-line no-console\n console.log(`stopped watching ${id} before finishing incremental loading with error ${e}!`);\n // call cleanup function out of abundance of caution...\n dispatch(stopK8sWatch(id));\n return;\n }\n\n dispatch(errored(id, e));\n\n if (!POLLs[id]) {\n POLLs[id] = window.setTimeout(pollAndWatch, 15 * 1000);\n }\n return;\n }\n\n WS[id]\n .onclose((event) => {\n // Close Frame Status Codes: https://tools.ietf.org/html/rfc6455#section-7.4.1\n if (event.code !== 1006) {\n return;\n }\n // eslint-disable-next-line no-console\n console.log('WS closed abnormally');\n const ws = WS[id];\n const timedOut = true;\n ws && ws.destroy(timedOut);\n })\n .ondestroy((timedOut) => {\n if (!timedOut) {\n return;\n }\n // If the WS is unsuccessful for timeout duration, assume it is less work\n // to update the entire list and then start the WS again\n\n // eslint-disable-next-line no-console\n console.log(`WS ${id} timed out - restarting polling`);\n delete WS[id];\n\n if (POLLs[id]) {\n return;\n }\n\n POLLs[id] = window.setTimeout(pollAndWatch, 15 * 1000);\n })\n .onbulkmessage((events) =>\n [updateListFromWS, extraAction].forEach((f) => f && dispatch(f(id, events))),\n );\n };\n return pollAndWatch();\n};\n\nexport const watchK8sObject = (\n id: string,\n name: string,\n namespace: string,\n query: { [key: string]: string },\n k8sType: K8sModel,\n partialMetadata = false,\n) => (dispatch, getState) => {\n if (id in REF_COUNTS) {\n REF_COUNTS[id] += 1;\n return _.noop;\n }\n const watch = dispatch(startWatchK8sObject(id));\n REF_COUNTS[id] = 1;\n\n if (query.name) {\n query.fieldSelector = `metadata.name=${query.name}`;\n delete query.name;\n }\n\n const requestOptions: RequestInit = partialMetadata\n ? {\n headers: partialObjectMetadataHeader,\n }\n : {};\n\n const poller = () => {\n k8sGet(k8sType, name, namespace, {}, requestOptions)\n .then(\n (o) => dispatch(modifyObject(id, o)),\n (e) => dispatch(errored(id, e)),\n )\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.log(err);\n });\n };\n POLLs[id] = window.setInterval(poller, 30 * 1000);\n poller();\n\n if (!_.get(k8sType, 'verbs', ['watch']).includes('watch')) {\n // eslint-disable-next-line no-console\n console.warn(`${getReferenceForModel(k8sType)} does not support watching`);\n return _.noop;\n }\n\n const { subprotocols } = getImpersonate(getState()) || {};\n\n WS[id] = k8sWatch(k8sType, query, { subprotocols }).onbulkmessage((events) =>\n events.forEach((e) => dispatch(modifyObject(id, e.object))),\n );\n return watch;\n};\n\nexport const receivedResources = (resources: DiscoveryResources) =>\n action(ActionType.ReceivedResources, { resources });\nexport const getResourcesInFlight = () => action(ActionType.GetResourcesInFlight);\n\nconst k8sActions = {\n startWatchK8sObject,\n startWatchK8sList,\n modifyObject,\n stopWatchK8s,\n errored,\n loaded,\n bulkAddToList,\n updateListFromWS,\n filterList,\n receivedResources,\n getResourcesInFlight,\n};\n\nexport type K8sAction = Action;\n","import * as React from 'react';\nimport * as _ from 'lodash-es';\nimport * as classnames from 'classnames';\nimport { PencilAltIcon } from '@patternfly/react-icons/dist/esm/icons/pencil-alt-icon';\nimport {\n Breadcrumb,\n BreadcrumbItem,\n Button,\n Popover,\n Split,\n SplitItem,\n} from '@patternfly/react-core';\nimport { useTranslation } from 'react-i18next';\n\nimport { getPropertyDescription, K8sResourceKind, referenceFor } from '../../module/k8s';\nimport { LinkifyExternal } from './link';\nimport { useK8sModel } from '@console/shared/src/hooks/useK8sModel';\n\nexport const PropertyPath: React.FC<{ kind: string; path: string | string[] }> = ({\n kind,\n path,\n}) => {\n const pathArray: string[] = _.toPath(path);\n return (\n \n {kind}\n {pathArray.map((property, i) => {\n const isLast = i === pathArray.length - 1;\n return (\n \n {property}\n \n );\n })}\n \n );\n};\n\nconst EditButton: React.SFC = (props) => {\n return (\n \n {props.children}\n \n \n );\n};\n\nexport const DetailsItem: React.FC = ({\n children,\n defaultValue = '-',\n description,\n editAsGroup,\n hideEmpty,\n label,\n labelClassName,\n obj,\n onEdit,\n canEdit = true,\n path,\n valueClassName,\n}) => {\n const { t } = useTranslation();\n const [model] = useK8sModel(obj ? referenceFor(obj) : '');\n const hide = hideEmpty && _.isEmpty(_.get(obj, path));\n const popoverContent: string = description ?? getPropertyDescription(model, path);\n const value: React.ReactNode = children || _.get(obj, path, defaultValue);\n const editable = onEdit && canEdit;\n return hide ? null : (\n <>\n \n \n \n {popoverContent || path ? (\n {label}

}\n {...(popoverContent && {\n bodyContent: (\n \n
{popoverContent}
\n
\n ),\n })}\n {...(path && { footerContent: })}\n maxWidth=\"30rem\"\n >\n \n \n ) : (\n label\n )}\n \n {editable && editAsGroup && (\n <>\n \n \n \n {t('public~Edit')}\n \n \n \n )}\n \n \n \n {editable && !editAsGroup ? (\n \n {value}\n \n ) : (\n value\n )}\n \n \n );\n};\n\nexport type DetailsItemProps = {\n canEdit?: boolean;\n defaultValue?: React.ReactNode;\n description?: string;\n editAsGroup?: boolean;\n hideEmpty?: boolean;\n label: string;\n labelClassName?: string;\n obj?: K8sResourceKind;\n onEdit?: (e: React.MouseEvent) => void;\n path?: string | string[];\n valueClassName?: string;\n};\n\ntype EditButtonProps = {\n onClick: (e: React.MouseEvent) => void;\n testId?: string;\n};\n\nDetailsItem.displayName = 'DetailsItem';\nPropertyPath.displayName = 'PropertyPath';\nEditButton.displayName = 'EditButton';\n","import { K8sKind } from '@console/internal/module/k8s';\n\nexport const OperatorSourceModel: K8sKind = {\n kind: 'OperatorSource',\n label: 'OperatorSource',\n // t('olm~OperatorSource')\n labelKey: 'olm~OperatorSource',\n labelPlural: 'OperatorSource',\n // t('olm~OperatorSource')\n labelPluralKey: 'olm~OperatorSource',\n apiGroup: 'operators.coreos.com',\n apiVersion: 'v1',\n abbr: 'OSRC',\n namespaced: true,\n crd: true,\n plural: 'operatorsources',\n};\n\nexport const CatalogSourceModel: K8sKind = {\n kind: 'CatalogSource',\n label: 'CatalogSource',\n // t('olm~CatalogSource')\n labelKey: 'olm~CatalogSource',\n labelPlural: 'CatalogSources',\n // t('olm~CatalogSources')\n labelPluralKey: 'olm~CatalogSources',\n apiGroup: 'operators.coreos.com',\n apiVersion: 'v1alpha1',\n abbr: 'CS',\n namespaced: true,\n crd: true,\n plural: 'catalogsources',\n};\n\nexport const PackageManifestModel: K8sKind = {\n kind: 'PackageManifest',\n label: 'PackageManifest',\n // t('olm~PackageManifest')\n labelKey: 'olm~PackageManifest',\n labelPlural: 'PackageManifests',\n // t('olm~PackageManifests')\n labelPluralKey: 'olm~PackageManifests',\n apiGroup: 'packages.operators.coreos.com',\n apiVersion: 'v1',\n abbr: 'PM',\n namespaced: true,\n crd: true,\n plural: 'packagemanifests',\n};\n\nexport const ClusterServiceVersionModel: K8sKind = {\n kind: 'ClusterServiceVersion',\n label: 'ClusterServiceVersion',\n // t('olm~ClusterServiceVersion')\n labelKey: 'olm~ClusterServiceVersion',\n labelPlural: 'ClusterServiceVersions',\n // t('olm~ClusterServiceVersions')\n labelPluralKey: 'olm~ClusterServiceVersions',\n apiGroup: 'operators.coreos.com',\n apiVersion: 'v1alpha1',\n abbr: 'CSV',\n namespaced: true,\n crd: true,\n plural: 'clusterserviceversions',\n propagationPolicy: 'Foreground',\n legacyPluralURL: true,\n};\n\nexport const InstallPlanModel: K8sKind = {\n kind: 'InstallPlan',\n label: 'InstallPlan',\n // t('olm~InstallPlan')\n labelKey: 'olm~InstallPlan',\n labelPlural: 'InstallPlans',\n // t('olm~InstallPlans')\n labelPluralKey: 'olm~InstallPlans',\n apiGroup: 'operators.coreos.com',\n apiVersion: 'v1alpha1',\n abbr: 'IP',\n namespaced: true,\n crd: true,\n plural: 'installplans',\n legacyPluralURL: true,\n};\n\nexport const SubscriptionModel: K8sKind = {\n kind: 'Subscription',\n label: 'Subscription',\n // t('olm~Subscription')\n labelKey: 'olm~Subscription',\n labelPlural: 'Subscriptions',\n // t('olm~Subscriptions')\n labelPluralKey: 'olm~Subscriptions',\n apiGroup: 'operators.coreos.com',\n apiVersion: 'v1alpha1',\n abbr: 'SUB',\n namespaced: true,\n crd: true,\n plural: 'subscriptions',\n legacyPluralURL: true,\n};\n\nexport const OperatorGroupModel: K8sKind = {\n kind: 'OperatorGroup',\n label: 'OperatorGroup',\n // t('olm~OperatorGroup')\n labelKey: 'olm~OperatorGroup',\n labelPlural: 'OperatorGroups',\n // t('olm~OperatorGroups')\n labelPluralKey: 'olm~OperatorGroups',\n apiGroup: 'operators.coreos.com',\n apiVersion: 'v1',\n abbr: 'OG',\n namespaced: true,\n crd: true,\n plural: 'operatorgroups',\n};\n\nexport const OperatorHubModel: K8sKind = {\n kind: 'OperatorHub',\n label: 'OperatorHub',\n // t('olm~OperatorHub')\n labelKey: 'olm~OperatorHub',\n labelPlural: 'OperatorHubs',\n // t('olm~OperatorHubs')\n labelPluralKey: 'olm~OperatorHubs',\n apiGroup: 'config.openshift.io',\n apiVersion: 'v1',\n abbr: 'OH',\n namespaced: false,\n crd: true,\n plural: 'operatorhubs',\n};\n","export const FLAG_KNATIVE_SERVING_CONFIGURATION = 'KNATIVE_SERVING_CONFIGURATION';\nexport const FLAG_KNATIVE_SERVING = 'KNATIVE_SERVING';\nexport const FLAG_KNATIVE_EVENTING = 'KNATIVE_EVENTING';\nexport const FLAG_KNATIVE_SERVING_REVISION = 'KNATIVE_SERVING_REVISION';\nexport const FLAG_KNATIVE_SERVING_ROUTE = 'KNATIVE_SERVING_ROUTE';\nexport const FLAG_KNATIVE_SERVING_SERVICE = 'KNATIVE_SERVING_SERVICE';\nexport const KNATIVE_SERVING_LABEL = 'serving.knative.dev/service';\nexport const PRIVATE_KNATIVE_SERVING_LABEL = 'networking.knative.dev/visibility';\nexport const KNATIVE_SERVING_APIGROUP = 'serving.knative.dev';\nexport const KNATIVE_EVENTING_APIGROUP = 'eventing.knative.dev';\nexport const KNATIVE_EVENT_MESSAGE_APIGROUP = 'messaging.knative.dev';\nexport const KNATIVE_EVENT_SOURCE_APIGROUP_DEP = 'sources.eventing.knative.dev';\nexport const KNATIVE_EVENT_SOURCE_APIGROUP = 'sources.knative.dev';\nexport const CAMEL_APIGROUP = 'camel.apache.org';\nexport const STRIMZI_KAFKA_APIGROUP = 'kafka.strimzi.io';\nexport const EVENT_SOURCE_ICON = 'console.openshift.io/icon';\nexport const CAMEL_KAMELET_ICON = `${CAMEL_APIGROUP}/kamelet.icon`;\nexport const CAMEL_SOURCE_INTEGRATION = `${CAMEL_APIGROUP}/integration`;\nexport const FLAG_KNATIVE_EVENTING_BROKER = 'FLAG_KNATIVE_EVENTING_BROKER';\nexport const FLAG_KNATIVE_EVENTING_CHANNEL = 'FLAG_KNATIVE_EVENTING_CHANNEL';\nexport const FLAG_CAMEL_KAMELETS = 'FLAG_CAMEL_KAMELETS';\nexport const CAMEL_K_PROVIDER_ANNOTATION = `${CAMEL_APIGROUP}/provider`;\nexport const CAMEL_K_TYPE_LABEL = `${CAMEL_APIGROUP}/kamelet.type`;\nexport const KNATIVE_AUTOSCALING_APIGROUP = 'autoscaling.knative.dev';\nexport const KNATIVE_MINSCALE_ANNOTATION = `${KNATIVE_AUTOSCALING_APIGROUP}/min-scale`;\nexport const KNATIVE_MAXSCALE_ANNOTATION = `${KNATIVE_AUTOSCALING_APIGROUP}/max-scale`;\nexport const KNATIVE_CONCURRENCYTARGET_ANNOTATION = `${KNATIVE_AUTOSCALING_APIGROUP}/target`;\nexport const KNATIVE_CONCURRENCYUTILIZATION_ANNOTATION = `${KNATIVE_AUTOSCALING_APIGROUP}/target-utilization-percentage`;\nexport const KNATIVE_AUTOSCALEWINDOW_ANNOTATION = `${KNATIVE_AUTOSCALING_APIGROUP}/window`;\nexport const SERVERLESS_FUNCTION_LABEL_DEPRECATED = 'boson.dev/function'; // TODO: remove deprecated label for serverless function\nexport const SERVERLESS_FUNCTION_LABEL = 'function.knative.dev';\nexport const GLOBAL_OPERATOR_NS = 'openshift-operators';\nexport const CAMEL_K_OPERATOR_NS = 'camel-k-operator';\nexport const EVENTING_KAFKA_CHANNEL_KIND = 'KafkaChannel';\nexport const EVENTING_CHANNEL_KIND = 'Channel';\nexport const EVENTING_IMC_KIND = 'InMemoryChannel';\nexport const EVENT_SOURCE_SINK_BINDING_KIND = 'SinkBinding';\nexport const EVENT_SOURCE_KAFKA_KIND = 'KafkaSource';\nexport const EVENT_SOURCE_CAMEL_KIND = 'CamelSource';\nexport const EVENT_SOURCE_API_SERVER_KIND = 'ApiServerSource';\nexport const EVENT_SOURCE_CONTAINER_KIND = 'ContainerSource';\nexport const EVENT_SOURCE_PING_KIND = 'PingSource';\nexport const EVENT_SOURCE_CRONJOB_KIND = 'CronJobSource';\nexport const EVENT_SINK_KAFKA_KIND = 'KafkaSink';\nexport const FLAG_KNATIVE_EVENT_SOURCE_CATALOG_TYPE = 'KNATIVE_EVENT_SOURCE_CATALOG_TYPE';\nexport const FLAG_KNATIVE_EVENT_SINK_CATALOG_TYPE = 'KNATIVE_EVENT_SINK_CATALOG_TYPE';\nexport const EVENT_SOURCE_CATALOG_TYPE_ID = 'EventSource';\nexport const EVENT_SINK_CATALOG_TYPE_ID = 'EventSink';\nexport const FLAG_EVENT_SOURCE_PING = 'FLAG_EVENT_SOURCE_PING';\nexport const FLAG_KNATIVE_EVENTING_ENABLED = 'FLAG_KNATIVE_EVENTING_ENABLED';\nexport const EVENT_SOURCE_ACTION_ID = 'knative-event-source';\nexport const EVENT_SINK_ACTION_ID = 'knative-event-sink';\nexport const EVENTING_CHANNEL_ACTION_ID = 'knative-eventing-channel';\nexport const EVENTING_BROKER_ACTION_ID = 'knative-eventing-broker';\nexport const FUNCTIONS_GETTING_STARTED_SECTION_USER_SETTING_KEY = 'functions.gettingStartedSection';\n","export const getFieldId = (fieldName: string, fieldType: string) => {\n return `form-${fieldType}-${fieldName?.replace(/\\./g, '-')}-field`;\n};\n","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport { Link } from 'react-router-dom-v5-compat';\nimport * as classNames from 'classnames';\n\nimport { FLAGS } from '@console/shared/src/constants';\nimport { ResourceLinkProps } from '@console/dynamic-plugin-sdk';\nimport { ResourceIcon } from './resource-icon';\nimport { K8sModel } from '@console/dynamic-plugin-sdk/src/api/common-types';\nimport { K8sResourceKindReference } from '@console/dynamic-plugin-sdk/src/extensions/console-types';\nimport { K8sResourceKind } from '../../module/k8s/types';\nimport { modelFor } from '../../module/k8s/k8s-models';\nimport { referenceForModel } from '../../module/k8s/k8s-ref';\nimport { connectToFlags } from '../../reducers/connectToFlags';\nimport { FlagsObject } from '../../reducers/features';\nimport { getReference } from '@console/dynamic-plugin-sdk/src/utils/k8s/k8s-ref';\n\nconst unknownKinds = new Set();\n\nexport const resourcePathFromModel = (model: K8sModel, name?: string, namespace?: string) => {\n const { plural, namespaced, crd } = model;\n\n let url = '/k8s/';\n\n if (!namespaced) {\n url += 'cluster/';\n }\n\n if (namespaced) {\n url += namespace ? `ns/${namespace}/` : 'all-namespaces/';\n }\n\n if (crd) {\n url += referenceForModel(model);\n } else if (plural) {\n url += plural;\n }\n\n if (name) {\n // Some resources have a name that needs to be encoded. For instance,\n // Users can have special characters in the name like `#`.\n url += `/${encodeURIComponent(name)}`;\n }\n\n return url;\n};\n\nexport const resourceListPathFromModel = (model: K8sModel, namespace?: string) =>\n resourcePathFromModel(model, null, namespace);\n\n/**\n * NOTE: This will not work for runtime-defined resources. Use a `connect`-ed component like `ResourceLink` instead.\n */\nexport const resourcePath = (kind: K8sResourceKindReference, name?: string, namespace?: string) => {\n const model = modelFor(kind);\n if (!model) {\n if (!unknownKinds.has(kind)) {\n unknownKinds.add(kind);\n // eslint-disable-next-line no-console\n console.error(`resourcePath: no model for \"${kind}\"`);\n }\n return;\n }\n\n return resourcePathFromModel(model, name, namespace);\n};\n\nexport const resourceObjPath = (obj: K8sResourceKind, kind: K8sResourceKindReference) =>\n resourcePath(kind, _.get(obj, 'metadata.name'), _.get(obj, 'metadata.namespace'));\n\nexport const ResourceLink: React.FC = ({\n className,\n displayName,\n inline = false,\n kind,\n groupVersionKind,\n linkTo = true,\n name,\n nameSuffix,\n namespace,\n hideIcon,\n title,\n children,\n dataTest,\n onClick,\n truncate,\n}) => {\n if (!kind && !groupVersionKind) {\n return null;\n }\n const kindReference = groupVersionKind ? getReference(groupVersionKind) : kind;\n const path = linkTo ? resourcePath(kindReference, name, namespace) : undefined;\n const value = displayName ? displayName : name;\n const classes = classNames('co-resource-item', className, {\n 'co-resource-item--inline': inline,\n 'co-resource-item--truncate': truncate,\n });\n\n return (\n \n {!hideIcon && }\n {path ? (\n \n {value}\n {nameSuffix}\n \n ) : (\n \n {value}\n {nameSuffix}\n \n )}\n {children}\n \n );\n};\n\nconst NodeLink_: React.FC = (props) => {\n const { name, flags } = props;\n if (!name) {\n return <>-;\n }\n return flags[FLAGS.CAN_LIST_NODE] ? (\n \n ) : (\n {name}\n );\n};\n\nexport const NodeLink = connectToFlags(FLAGS.CAN_LIST_NODE)(NodeLink_);\n\ntype NodeLinkProps = {\n name: string;\n flags: FlagsObject;\n};\n\nResourceLink.displayName = 'ResourceLink';\n","export * from './icons';\nexport * from './statuses';\nexport * from './Status';\n\nexport { default as SecondaryStatus } from './SecondaryStatus';\nexport { default as LinkStatus } from './LinkStatus';\nexport { default as NodeUnschedulableStatus } from './NodeUnschedulableStatus';\n","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport * as classNames from 'classnames';\nimport { Alert, Button } from '@patternfly/react-core';\nimport { useTranslation, Trans } from 'react-i18next';\nimport {\n IncompleteDataError,\n TimeoutError,\n} from '@console/dynamic-plugin-sdk/src/utils/error/http-error';\nimport * as restrictedSignImg from '../../imgs/restricted-sign.svg';\nimport { getLastLanguage } from '@console/app/src/components/user-preferences/language/getLastLanguage';\n\nexport const Box: React.FC = ({ children, className }) => (\n
{children}
\n);\n\nexport const LoadError: React.FC = ({\n label,\n className,\n message,\n canRetry = true,\n}) => {\n const { t } = useTranslation();\n return (\n \n
\n {_.isString(message)\n ? t('public~Error Loading {{label}}: {{message}}', {\n label,\n message,\n })\n : t('public~Error Loading {{label}}', { label })}\n
\n {canRetry && (\n
\n \n Please{' '}\n \n try again\n \n .\n \n
\n )}\n
\n );\n};\nLoadError.displayName = 'LoadError';\n\nexport const Loading: React.FC = ({ className }) => (\n \n
\n
\n
\n
\n);\nLoading.displayName = 'Loading';\n\nexport const LoadingInline: React.FC<{}> = () => ;\nLoadingInline.displayName = 'LoadingInline';\n\nexport const LoadingBox: React.FC = ({ className, message }) => (\n \n \n {message &&
{message}
}\n
\n);\nLoadingBox.displayName = 'LoadingBox';\n\nexport const EmptyBox: React.FC = ({ label }) => {\n const { t } = useTranslation();\n return (\n \n
\n {label ? t('public~No {{label}} found', { label }) : t('public~Not found')}\n
\n
\n );\n};\nEmptyBox.displayName = 'EmptyBox';\n\nexport const MsgBox: React.FC = ({ title, detail, className = '' }) => (\n \n {title && (\n
\n {title}\n
\n )}\n {detail && (\n
\n {detail}\n
\n )}\n
\n);\nMsgBox.displayName = 'MsgBox';\n\nexport const AccessDenied: React.FC = ({ message }) => {\n const { t } = useTranslation();\n return (\n
\n \n \n \n \n {_.isString(message) && (\n \n {message}\n \n )}\n
\n );\n};\nAccessDenied.displayName = 'AccessDenied';\n\nconst Data: React.FC = ({\n NoDataEmptyMsg,\n EmptyMsg,\n label,\n data,\n unfilteredData,\n children,\n}) => {\n if (NoDataEmptyMsg && _.isEmpty(unfilteredData)) {\n return (\n
\n {NoDataEmptyMsg ? : }\n
\n );\n }\n\n if (!data || _.isEmpty(data)) {\n return (\n
\n {EmptyMsg ? : }\n
\n );\n }\n return
{children}
;\n};\nData.displayName = 'Data';\n\nexport const StatusBox: React.FC = (props) => {\n const { loadError, loaded, skeleton, data, ...dataProps } = props;\n const { t } = useTranslation();\n\n if (loadError) {\n const status = _.get(loadError, 'response.status');\n if (status === 404) {\n return (\n
\n

\n {t('public~404: Not Found')}\n

\n
\n );\n }\n if (status === 403) {\n return ;\n }\n\n if (loadError instanceof IncompleteDataError && !_.isEmpty(data)) {\n return (\n \n \n {props.children}\n \n );\n }\n\n if (loaded && loadError instanceof TimeoutError) {\n return (\n \n
\n {t('public~Timed out fetching new data. The data below is stale.')}\n
\n {props.children}\n
\n );\n }\n\n return (\n \n );\n }\n\n if (!loaded) {\n return skeleton ? <>{skeleton} : ;\n }\n return ;\n};\nStatusBox.displayName = 'StatusBox';\n\ntype BoxProps = {\n children: React.ReactNode;\n className?: string;\n};\n\ntype LoadErrorProps = {\n label: string;\n className?: string;\n message?: string;\n canRetry?: boolean;\n};\n\ntype LoadingProps = {\n className?: string;\n};\n\ntype LoadingBoxProps = {\n className?: string;\n message?: string;\n};\n\ntype EmptyBoxProps = {\n label?: string;\n};\n\ntype MsgBoxProps = {\n title?: string;\n detail?: React.ReactNode;\n className?: string;\n};\n\ntype AccessDeniedProps = {\n message?: string;\n};\n\ntype DataProps = {\n NoDataEmptyMsg?: React.ComponentType;\n EmptyMsg?: React.ComponentType;\n label?: string;\n unfilteredData?: any;\n data?: any;\n children?: React.ReactNode;\n};\n\ntype StatusBoxProps = {\n label?: string;\n loadError?: any;\n loaded?: boolean;\n data?: any;\n unfilteredData?: any;\n skeleton?: React.ReactNode;\n NoDataEmptyMsg?: React.ComponentType;\n EmptyMsg?: React.ComponentType;\n children?: React.ReactNode;\n};\n","import { coFetchJSON, coFetch } from '@console/internal/co-fetch';\nimport { K8sResourceKind, k8sPatch, k8sGet, K8sKind, EnvVar } from '@console/internal/module/k8s';\nimport { getRandomChars } from '@console/shared';\nimport { v1alpha1WorkspaceModel, WorkspaceModel } from '../../../models';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\ntype v1alpha1Component = {\n plugin: {\n name?: string;\n id: string;\n };\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\ntype v1alpha2Component = {\n name: string;\n plugin: {\n kubernetes: {\n name: string;\n namespace?: string;\n };\n };\n};\n\ntype DevWorkspaceTemplateSpec = {\n components: v1alpha1Component[] | v1alpha2Component[];\n};\n\nexport type CloudShellResource = K8sResourceKind & {\n status?: v1alpha1CloudShellStatusResource | v1alpha2CloudShellStatusResource;\n spec?: {\n started?: boolean;\n routingClass?: string;\n template?: DevWorkspaceTemplateSpec;\n };\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\ntype v1alpha1CloudShellStatusResource = {\n phase: string;\n ideUrl: string;\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\ntype v1alpha2CloudShellStatusResource = {\n phase: string;\n mainUrl: string;\n};\n\ntype CloudShellContainerSpec = {\n env?: EnvVar[];\n image?: string;\n};\n\nexport type CloudShellComponent = {\n name: string;\n container: CloudShellContainerSpec;\n};\n\nexport type TerminalInitData = { pod: string; container: string; cmd: string[] };\n\nexport const CLOUD_SHELL_LABEL = 'console.openshift.io/terminal';\nexport const CLOUD_SHELL_CREATOR_LABEL = 'controller.devfile.io/creator';\nexport const CLOUD_SHELL_RESTRICTED_ANNOTATION = 'controller.devfile.io/restricted-access';\nexport const CLOUD_SHELL_STOPPED_BY_ANNOTATION = 'controller.devfile.io/stopped-by';\nexport const CLOUD_SHELL_SOURCE_ANNOTATION = 'controller.devfile.io/devworkspace-source';\nexport const CLOUD_SHELL_PROTECTED_NAMESPACE = 'openshift-terminal';\n\nexport const createCloudShellResourceName = () => `terminal-${getRandomChars(6)}`;\n\nexport enum CLOUD_SHELL_PHASE {\n STARTING = 'Starting',\n FAILED = 'Failed',\n RUNNING = 'Running',\n}\n\nconst v1alpha1DevworkspaceComponent = [\n {\n plugin: {\n name: 'web-terminal',\n id: 'redhat-developer/web-terminal/latest',\n },\n },\n];\n\nconst devWorkspaceComponent = (namespace: string, timeout?: string, image?: string) => [\n {\n name: 'web-terminal-tooling',\n plugin: {\n kubernetes: {\n name: 'web-terminal-tooling',\n namespace,\n },\n ...(image && {\n components: [\n {\n name: 'web-terminal-tooling',\n container: {\n image,\n },\n },\n ],\n }),\n },\n },\n {\n name: 'web-terminal-exec',\n plugin: {\n kubernetes: {\n name: 'web-terminal-exec',\n namespace,\n },\n ...(timeout && {\n components: [\n {\n name: 'web-terminal-exec',\n container: {\n env: [{ name: 'WEB_TERMINAL_IDLE_TIMEOUT', value: timeout }],\n },\n },\n ],\n }),\n },\n },\n];\n\nexport const newCloudShellWorkSpace = (\n name: string,\n workspaceNamespace: string,\n operatorNamespace: string,\n version: string,\n timeout?: string,\n image?: string,\n): CloudShellResource => ({\n apiVersion: `workspace.devfile.io/${version}`,\n kind: 'DevWorkspace',\n metadata: {\n name,\n namespace: workspaceNamespace,\n labels: {\n [CLOUD_SHELL_LABEL]: 'true',\n },\n annotations: {\n [CLOUD_SHELL_RESTRICTED_ANNOTATION]: 'true',\n [CLOUD_SHELL_SOURCE_ANNOTATION]: 'web-terminal',\n },\n },\n spec: {\n started: true,\n routingClass: 'web-terminal',\n template: {\n components:\n version === v1alpha1WorkspaceModel.apiVersion\n ? v1alpha1DevworkspaceComponent\n : devWorkspaceComponent(operatorNamespace, timeout, image),\n },\n },\n});\n\nexport const startWorkspace = (workspace: CloudShellResource) => {\n // Check the version so we know what workspace model to use for starting the workspace\n const groupVersion = workspace.apiVersion.split('/');\n const version = groupVersion[1];\n\n const workspaceModel =\n version === v1alpha1WorkspaceModel.apiVersion ? v1alpha1WorkspaceModel : WorkspaceModel;\n\n return k8sPatch(workspaceModel, workspace, [\n {\n path: '/spec/started',\n op: 'replace',\n value: true,\n },\n ]);\n};\n\nexport const initTerminal = (\n username: string,\n workspaceName: string,\n workspaceNamespace: string,\n): Promise => {\n const url = `/api/terminal/proxy/${workspaceNamespace}/${workspaceName}/exec/init`;\n const payload = {\n kubeconfig: {\n username,\n namespace: workspaceNamespace,\n },\n };\n return coFetchJSON.post(url, payload);\n};\n\nexport const sendActivityTick = (workspaceName: string, namespace: string): void => {\n coFetch(`/api/terminal/proxy/${namespace}/${workspaceName}/activity/tick`, {\n method: 'POST',\n }).catch((e) =>\n // eslint-disable-next-line no-console\n console.error(e),\n );\n};\n\nexport const checkTerminalAvailable = () => coFetch('/api/terminal/available');\n\nexport const getCloudShellCR = (workspaceModel: K8sKind, name: string, ns: string) => {\n return k8sGet(workspaceModel, name, ns);\n};\n\nexport const getTerminalInstalledNamespace = () => coFetch('/api/terminal/installedNamespace');\n","import {\n K8sResourceCommon,\n K8sResourceCondition,\n K8sResourceKind,\n ObjectReference,\n Selector,\n} from '@console/internal/module/k8s';\nimport { Descriptor } from './components/descriptors/types';\n\nexport enum AppCatalog {\n rhOperators = 'rh-operators',\n}\n\nexport enum ClusterServiceVersionPhase {\n CSVPhaseNone = '',\n CSVPhasePending = 'Pending',\n CSVPhaseInstallReady = 'InstallReady',\n CSVPhaseInstalling = 'Installing',\n CSVPhaseSucceeded = 'Succeeded',\n CSVPhaseFailed = 'Failed',\n CSVPhaseUnknown = 'Unknown',\n CSVPhaseReplacing = 'Replacing',\n CSVPhaseDeleting = 'Deleting',\n}\n\nexport enum CSVConditionReason {\n CSVReasonRequirementsUnknown = 'RequirementsUnknown',\n CSVReasonRequirementsNotMet = 'RequirementsNotMet',\n CSVReasonRequirementsMet = 'AllRequirementsMet',\n CSVReasonOwnerConflict = 'OwnerConflict',\n CSVReasonComponentFailed = 'InstallComponentFailed',\n CSVReasonInvalidStrategy = 'InvalidInstallStrategy',\n CSVReasonWaiting = 'InstallWaiting',\n CSVReasonInstallSuccessful = 'InstallSucceeded',\n CSVReasonInstallCheckFailed = 'InstallCheckFailed',\n CSVReasonComponentUnhealthy = 'ComponentUnhealthy',\n CSVReasonBeingReplaced = 'BeingReplaced',\n CSVReasonReplaced = 'Replaced',\n CSVReasonCopied = 'Copied',\n}\n\nexport enum InstallPlanApproval {\n Automatic = 'Automatic',\n Manual = 'Manual',\n}\n\nexport enum InstallModeType {\n InstallModeTypeOwnNamespace = 'OwnNamespace',\n InstallModeTypeSingleNamespace = 'SingleNamespace',\n InstallModeTypeMultiNamespace = 'MultiNamespace',\n InstallModeTypeAllNamespaces = 'AllNamespaces',\n}\n\nexport enum SubscriptionState {\n SubscriptionStateNone = '',\n SubscriptionStateFailed = 'UpgradeFailed',\n SubscriptionStateUpgradeAvailable = 'UpgradeAvailable',\n SubscriptionStateUpgradePending = 'UpgradePending',\n SubscriptionStateAtLatest = 'AtLatestKnown',\n}\n\nexport enum ClusterServiceVersionStatus {\n Failed = 'Failed',\n OK = 'OK',\n Pending = 'Pending',\n Unknown = 'Unknown',\n}\n\nexport type CRDDescription = {\n name: string;\n version: string;\n kind: string;\n displayName: string;\n description?: string;\n specDescriptors?: Descriptor[];\n statusDescriptors?: Descriptor[];\n resources?: {\n name?: string;\n version: string;\n kind: string;\n }[];\n};\n\nexport type APIServiceDefinition = {\n name: string;\n group: string;\n version: string;\n kind: string;\n deploymentName: string;\n containerPort: number;\n displayName: string;\n description?: string;\n specDescriptors?: Descriptor[];\n statusDescriptors?: Descriptor[];\n resources?: {\n name?: string;\n version: string;\n kind: string;\n }[];\n};\n\nexport type ProvidedAPI = CRDDescription | APIServiceDefinition;\n\nexport type RequirementStatus = {\n group: string;\n version: string;\n kind: string;\n name: string;\n status: string;\n uuid?: string;\n};\n\nexport type ClusterServiceVersionIcon = { base64data: string; mediatype: string };\n\nexport type ClusterServiceVersionKind = {\n apiVersion: 'operators.coreos.com/v1alpha1';\n kind: 'ClusterServiceVersion';\n spec: {\n install: {\n strategy: 'Deployment';\n spec?: {\n permissions: {\n serviceAccountName: string;\n rules: { apiGroups: string[]; resources: string[]; verbs: string[] }[];\n }[];\n deployments: { name: string; spec: any }[];\n };\n };\n customresourcedefinitions?: { owned?: CRDDescription[]; required?: CRDDescription[] };\n apiservicedefinitions?: { owned?: APIServiceDefinition[]; required?: APIServiceDefinition[] };\n replaces?: string;\n installModes?: { type: InstallModeType; supported: boolean }[];\n displayName?: string;\n description?: string;\n provider?: { name: string };\n version?: string;\n icon?: ClusterServiceVersionIcon[];\n };\n status?: {\n phase: ClusterServiceVersionPhase;\n reason: CSVConditionReason;\n message?: string;\n requirementStatus?: RequirementStatus[];\n };\n} & K8sResourceKind;\n\nexport type StepResource = {\n group: string;\n version: string;\n kind: string;\n name: string;\n manifest?: string;\n sourceName?: string;\n sourceNamespace?: string;\n};\n\nexport type Step = {\n resolving: string;\n resource: StepResource;\n status: 'Unknown' | 'NotPresent' | 'Present' | 'Created';\n};\n\nexport enum InstallPlanPhase {\n InstallPlanPhaseNone = '',\n InstallPlanPhasePlanning = 'Planning',\n InstallPlanPhaseRequiresApproval = 'RequiresApproval',\n InstallPlanPhaseInstalling = 'Installing',\n InstallPlanPhaseComplete = 'Complete',\n InstallPlanPhaseFailed = 'Failed',\n}\n\nexport type InstallPlanKind = {\n spec: {\n clusterServiceVersionNames: string[];\n approval: InstallPlanApproval;\n approved?: boolean;\n };\n status?: {\n phase: InstallPlanPhase;\n catalogSources: string[];\n plan: Step[];\n conditions?: K8sResourceCondition[];\n };\n} & K8sResourceCommon;\n\nexport type Env = {\n name: string;\n value: string;\n};\n\nexport type SubscriptionKind = {\n apiVersion: 'operators.coreos.com/v1alpha1';\n kind: 'Subscription';\n spec: {\n source: string;\n name: string;\n channel?: string;\n startingCSV?: string;\n sourceNamespace?: string;\n installPlanApproval?: InstallPlanApproval;\n config?: {\n env?: Env[];\n };\n };\n status?: {\n catalogHealth?: {\n catalogSourceRef?: ObjectReference;\n healthy?: boolean;\n lastUpdated?: string;\n }[];\n conditions?: K8sResourceCondition[];\n installedCSV?: string;\n installPlanRef?: ObjectReference;\n state?: SubscriptionState;\n lastUpdated?: string;\n currentCSV?: string;\n };\n} & K8sResourceCommon;\n\nexport type CatalogSourceKind = {\n apiVersion: 'operators.coreos.com/v1alpha1';\n kind: 'CatalogSource';\n spec: {\n name: string;\n sourceType: 'internal' | 'grpc' | 'configMap';\n configMap?: string;\n secrets?: string[];\n displayName?: string;\n description?: string;\n publisher?: string;\n icon?: { mediatype: string; data: string };\n updateStrategy?: { registryPoll: { interval: string } };\n };\n} & K8sResourceKind;\n\nexport type PackageManifestKind = {\n apiVersion: 'packages.operators.coreos.com/v1';\n kind: 'PackageManifest';\n spec: {};\n status: {\n catalogSource: string;\n catalogSourceNamespace: string;\n catalogSourceDisplayName: string;\n catalogSourcePublisher: string;\n provider: {\n name: string;\n };\n packageName: string;\n deprecation?: { message: string };\n channels: {\n name: string;\n currentCSV: string;\n deprecation?: { message: string };\n currentCSVDesc: {\n annotations?: any;\n description?: string;\n displayName: string;\n icon: { mediatype: string; base64data: string }[];\n keywords?: string[];\n version: string;\n provider: {\n name: string;\n };\n installModes: { type: InstallModeType; supported: boolean }[];\n customresourcedefinitions?: { owned?: CRDDescription[]; required?: CRDDescription[] };\n apiservicedefinitions?: {\n owned?: APIServiceDefinition[];\n required?: APIServiceDefinition[];\n };\n };\n entries?: {\n name: string;\n version: string;\n deprecation?: { message: string };\n }[];\n }[];\n defaultChannel: string;\n };\n} & K8sResourceKind;\n\nexport type OperatorGroupKind = {\n apiVersion: 'operators.coreos.com/v1';\n kind: 'OperatorGroup';\n spec?: {\n selector?: Selector;\n targetNamespaces?: string[];\n serviceAccount?: K8sResourceKind;\n };\n status?: {\n namespaces?: string[];\n lastUpdated: string;\n };\n} & K8sResourceKind;\n\nexport type DeprecatedOperatorWarning = {\n deprecation?: {\n message?: string;\n };\n};\n","import {\n CatalogItem,\n CatalogItemAttribute,\n CatalogItemType,\n} from '@console/dynamic-plugin-sdk/src/extensions';\nimport { ResolvedExtension } from '@console/dynamic-plugin-sdk/src/types';\n\nexport enum CatalogQueryParams {\n TYPE = 'catalogType',\n CATEGORY = 'category',\n KEYWORD = 'keyword',\n SORT_ORDER = 'sortOrder',\n GROUPING = 'grouping',\n SELECTED_ID = 'selectedId',\n}\n\nexport enum CatalogSortOrder {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport type CatalogFilterItem = {\n label?: string;\n value: string;\n active: boolean;\n};\n\nexport type CatalogFilter = { [key: string]: CatalogFilterItem };\n\nexport type CatalogFilters = Record;\n\nexport type CatalogFilterCounts = Record;\n\nexport type CatalogTypeCounts = Record;\n\nexport type CatalogStringMap = Record;\n\nexport type CatalogFilterGroupMap = { [key: string]: CatalogItemAttribute };\n\nexport type CatalogType = {\n label: string;\n value: string;\n description: string;\n};\n\nexport type CatalogCategory = {\n id: string;\n label: string;\n tags?: string[];\n subcategories?: CatalogSubcategory[];\n};\n\nexport type CatalogSubcategory = {\n id: string;\n label: string;\n tags?: string[];\n};\n\nexport type CatalogService = {\n type: string;\n items: CatalogItem[];\n itemsMap: { [type: string]: CatalogItem[] };\n loaded: boolean;\n loadError: any;\n searchCatalog: (query: string) => CatalogItem[];\n catalogExtensions: ResolvedExtension[];\n};\n","import * as React from 'react';\nimport { QuickStartContextValues } from '@patternfly/quickstarts';\nimport { ButtonProps } from '@patternfly/react-core';\nimport { ICell, OnSelect, SortByDirection, TableGridBreakpoint } from '@patternfly/react-table';\nimport { LocationDescriptor } from 'history';\nimport MonacoEditor from 'react-monaco-editor/lib/editor';\nimport {\n ExtensionK8sGroupKindModel,\n K8sModel,\n MatchLabels,\n PrometheusEndpoint,\n PrometheusLabels,\n PrometheusValue,\n ResolvedExtension,\n Selector,\n} from '../api/common-types';\nimport { Extension, ExtensionTypeGuard } from '../types';\nimport { CustomDataSource } from './dashboard-data-source';\n\nexport type OwnerReference = {\n name: string;\n kind: string;\n uid: string;\n apiVersion: string;\n controller?: boolean;\n blockOwnerDeletion?: boolean;\n};\n\nexport type ObjectReference = {\n kind?: string;\n namespace?: string;\n name?: string;\n uid?: string;\n apiVersion?: string;\n resourceVersion?: string;\n fieldPath?: string;\n};\n\nexport type ObjectMetadata = {\n annotations?: { [key: string]: string };\n clusterName?: string;\n creationTimestamp?: string;\n deletionGracePeriodSeconds?: number;\n deletionTimestamp?: string;\n finalizers?: string[];\n generateName?: string;\n generation?: number;\n labels?: { [key: string]: string };\n managedFields?: any[];\n name?: string;\n namespace?: string;\n ownerReferences?: OwnerReference[];\n resourceVersion?: string;\n uid?: string;\n};\n\n// Properties common to (almost) all Kubernetes resources.\nexport type K8sResourceCommon = {\n apiVersion?: string;\n kind?: string;\n metadata?: ObjectMetadata;\n};\n\nexport type K8sResourceKind = K8sResourceCommon & {\n spec?: {\n selector?: Selector | MatchLabels;\n [key: string]: any;\n };\n status?: { [key: string]: any };\n data?: { [key: string]: any };\n};\n\nexport type K8sVerb =\n | 'create'\n | 'get'\n | 'list'\n | 'update'\n | 'patch'\n | 'delete'\n | 'deletecollection'\n | 'watch'\n | 'impersonate';\n\nexport type AccessReviewResourceAttributes = {\n group?: string;\n resource?: string;\n subresource?: string;\n verb?: K8sVerb;\n name?: string;\n namespace?: string;\n};\n\n/**\n * @deprecated Use K8sGroupVersionKind type instead. Support for type K8sResourceKindReference will be removed in a future release.\n * @see K8sGroupVersionKind\n * GroupVersionKind unambiguously identifies a kind.\n * https://godoc.org/k8s.io/apimachinery/pkg/runtime/schema#GroupVersionKind\n * TODO: Change this to a regex-type if it ever becomes a thing (https://github.com/Microsoft/TypeScript/issues/6579)\n */\nexport type GroupVersionKind = string;\n\n/**\n * The canonical, unique identifier for a Kubernetes resource type.\n * Maintains backwards-compatibility with references using the `kind` string field.\n */\nexport type K8sResourceKindReference = string;\n\nexport type K8sGroupVersionKind = { group?: string; version: string; kind: string };\n\nenum InventoryStatusGroup {\n WARN = 'WARN',\n ERROR = 'ERROR',\n PROGRESS = 'PROGRESS',\n NOT_MAPPED = 'NOT_MAPPED',\n UNKNOWN = 'UNKNOWN',\n}\n\ntype StatusGroup = {\n [key in InventoryStatusGroup | string]: {\n filterType?: string;\n statusIDs: string[];\n count: number;\n };\n};\n\nexport type StatusGroupMapper<\n T extends K8sResourceCommon = K8sResourceCommon,\n R extends { [key: string]: K8sResourceCommon[] } = { [key: string]: K8sResourceCommon[] }\n> = (resources: T[], additionalResources?: R) => StatusGroup;\n\nexport enum HealthState {\n OK = 'OK',\n ERROR = 'ERROR',\n WARNING = 'WARNING',\n LOADING = 'LOADING',\n UNKNOWN = 'UNKNOWN',\n UPDATING = 'UPDATING',\n PROGRESS = 'PROGRESS',\n UPGRADABLE = 'UPGRADABLE',\n NOT_AVAILABLE = 'NOT_AVAILABLE',\n}\n\n// Only covers range and instant vector responses for now.\nexport type PrometheusResult = {\n metric: PrometheusLabels;\n values?: PrometheusValue[];\n value?: PrometheusValue;\n};\n\nexport type PrometheusData = {\n resultType: 'matrix' | 'vector' | 'scalar' | 'string';\n result: PrometheusResult[];\n};\n\nexport type PrometheusResponse = {\n status: string;\n data: PrometheusData;\n errorType?: string;\n error?: string;\n warnings?: string[];\n};\n\nexport type PrometheusPollProps = {\n /** Delay between polling requests */\n delay?: number;\n /** One of the well-defined Prometheus API endpoints */\n endpoint: PrometheusEndpoint;\n namespace?: string;\n /** Prometheus query, polling is skipped when empty or undefined */\n query?: string;\n /** A search parameter */\n timeout?: string;\n /** A vector-query search parameter */\n endTime?: number;\n /** A vector-query search parameter */\n samples?: number;\n /** A vector-query search parameter */\n timespan?: number;\n /** An object used to facilitate fetching from different data sources. */\n customDataSource?: CustomDataSource;\n};\n\nexport type UsePrometheusPoll = (\n props: PrometheusPollProps,\n) => [PrometheusResponse | undefined, boolean, unknown];\n\nexport type WatchK8sResource = {\n /** @deprecated Use groupVersionKind instead. The kind property will be removed in a future release. */\n kind?: K8sResourceKindReference;\n groupVersionKind?: K8sGroupVersionKind;\n name?: string;\n namespace?: string;\n isList?: boolean;\n selector?: Selector;\n namespaced?: boolean;\n limit?: number;\n fieldSelector?: string;\n optional?: boolean;\n partialMetadata?: boolean;\n};\n\nexport type ResourcesObject = { [key: string]: K8sResourceCommon | K8sResourceCommon[] };\n\nexport type WatchK8sResultsObject = {\n data: R;\n loaded: boolean;\n loadError: any;\n};\n\nexport type WatchK8sResults = {\n [k in keyof R]: WatchK8sResultsObject;\n};\n\nexport type WatchK8sResources = {\n [k in keyof R]: WatchK8sResource;\n};\n\nexport type WatchK8sResourcesGeneric = {\n [key: string]: {\n model?: ExtensionK8sGroupKindModel;\n opts?: Partial;\n };\n};\n\nexport type FirehoseResource = {\n kind: K8sResourceKindReference;\n name?: string;\n namespace?: string;\n isList?: boolean;\n selector?: Selector;\n prop: string;\n namespaced?: boolean;\n optional?: boolean;\n limit?: number;\n fieldSelector?: string;\n};\n\nexport type FirehoseResult<\n R extends K8sResourceCommon | K8sResourceCommon[] = K8sResourceCommon[]\n> = {\n loaded: boolean;\n loadError: string;\n optional?: boolean;\n data: R;\n kind?: string;\n};\n\nexport type FirehoseResourcesResult = {\n [key: string]: FirehoseResult;\n};\n\nexport type WatchK8sResult = [R, boolean, any];\n\nexport type UseK8sWatchResource = (\n initResource: WatchK8sResource | null,\n) => WatchK8sResult;\n\nexport type UseK8sWatchResources = (\n initResources: WatchK8sResources,\n) => WatchK8sResults;\n\nexport type UseResolvedExtensions = (\n ...typeGuards: ExtensionTypeGuard[]\n) => [ResolvedExtension[], boolean, any[]];\n\nexport type ConsoleFetch = (\n url: string,\n options?: RequestInit,\n timeout?: number,\n) => Promise;\n\nexport type ConsoleFetchJSON = {\n (url: string, method?: string, options?: RequestInit, timeout?: number): Promise;\n delete(url: string, json?: any, options?: RequestInit, timeout?: number): Promise;\n post(url: string, json: any, options?: RequestInit, timeout?: number): Promise;\n put(url: string, json: any, options?: RequestInit, timeout?: number): Promise;\n patch(url: string, json: any, options?: RequestInit, timeout?: number): Promise;\n};\n\nexport type ConsoleFetchText = (...args: Parameters) => Promise;\n\n/* Horizontal Nav Types */\nexport type NavPage = {\n href?: string;\n path?: string;\n name: string;\n component: React.ComponentType;\n};\n\nexport type HorizontalNavProps = {\n resource?: K8sResourceCommon;\n pages: NavPage[];\n};\n\nexport type TableColumn = ICell & {\n title: string;\n id: string;\n additional?: boolean;\n sort?: ((data: D[], sortDirection: SortByDirection) => D[]) | string;\n};\n\nexport type RowProps = {\n obj: D;\n rowData: R;\n activeColumnIDs: Set;\n};\n\nexport type VirtualizedTableProps = {\n data: D[];\n unfilteredData: D[];\n loaded: boolean;\n loadError: any;\n columns: TableColumn[];\n Row: React.ComponentType>;\n NoDataEmptyMsg?: React.ComponentType<{}>;\n EmptyMsg?: React.ComponentType<{}>;\n scrollNode?: () => HTMLElement;\n onSelect?: OnSelect;\n label?: string;\n 'aria-label'?: string;\n gridBreakPoint?: TableGridBreakpoint;\n rowData?: R;\n mock?: boolean;\n sortColumnIndex?: number;\n sortDirection?: SortByDirection;\n};\n\nexport type VirtualizedTableFC = (\n props: VirtualizedTableProps,\n) => JSX.Element;\n\nexport type TableDataProps = {\n id: string;\n activeColumnIDs: Set;\n className?: string;\n};\n\nexport type UseActiveColumns = ({\n columns,\n showNamespaceOverride,\n columnManagementID,\n}: {\n columns: TableColumn[];\n showNamespaceOverride: boolean;\n columnManagementID: string;\n}) => [TableColumn[], boolean];\n\nexport type ListPageHeaderProps = {\n title: string;\n helpText?: React.ReactNode;\n badge?: React.ReactNode;\n};\n\nexport type CreateWithPermissionsProps = {\n createAccessReview?: {\n groupVersionKind: K8sResourceKindReference | K8sGroupVersionKind;\n namespace?: string;\n };\n};\n\nexport type ListPageCreateProps = CreateWithPermissionsProps & {\n groupVersionKind: K8sResourceKindReference | K8sGroupVersionKind;\n};\n\nexport type ListPageCreateLinkProps = CreateWithPermissionsProps & {\n to: string;\n};\n\nexport type ListPageCreateButtonProps = CreateWithPermissionsProps & ButtonProps;\n\nexport type ListPageCreateDropdownProps = CreateWithPermissionsProps & {\n items: {\n [key: string]: React.ReactNode;\n };\n onClick: (item: string) => void;\n};\n\nexport type RowFilterItem = {\n id: string;\n title: string;\n hideIfEmpty?: string;\n};\n\nexport type FilterValue = {\n selected?: string[];\n all?: string[];\n};\n\ntype RowFilterBase = {\n filterGroupName: string;\n type: string;\n items: RowFilterItem[];\n filter: (input: FilterValue, obj: R) => boolean;\n defaultSelected?: string[];\n};\n\nexport type RowMatchFilter = RowFilterBase & {\n isMatch: (obj: R, id: string) => boolean;\n};\n\nexport type RowReducerFilter = RowFilterBase & {\n reducer: (obj: R) => React.ReactText;\n};\n\nexport type RowFilter = RowMatchFilter | RowReducerFilter;\n\nexport type RowSearchFilter = Omit, 'items' | 'defaultSelected'> & {\n placeholder?: string;\n};\n\nexport type AnyRowFilter = RowFilter | RowSearchFilter;\n\nexport type ColumnLayout = {\n id: string;\n columns: ManagedColumn[];\n selectedColumns: Set;\n showNamespaceOverride?: boolean;\n type: string;\n};\n\nexport type ManagedColumn = {\n id: string;\n title: string;\n additional?: boolean;\n};\n\nexport type OnFilterChange = (type: string, value: FilterValue) => void;\n\nexport type ListPageFilterProps = {\n data: D;\n loaded: boolean;\n rowFilters?: RowFilter[];\n labelFilter?: string;\n labelPath?: string;\n nameFilterTitle?: string;\n nameFilterPlaceholder?: string;\n labelFilterPlaceholder?: string;\n hideNameLabelFilters?: boolean;\n hideLabelFilter?: boolean;\n columnLayout?: ColumnLayout;\n onFilterChange: OnFilterChange;\n hideColumnManagement?: boolean;\n nameFilter?: string;\n rowSearchFilters?: RowSearchFilter[];\n};\n\nexport type UseListPageFilter = (\n data: D[],\n rowFilters?: AnyRowFilter[],\n staticFilters?: { [key: string]: FilterValue },\n) => [D[], D[], OnFilterChange];\n\nexport type ResourceLinkProps = {\n /** @deprecated Use groupVersionKind instead. The kind property will be removed in a future release. */\n kind?: K8sResourceKindReference;\n groupVersionKind?: K8sGroupVersionKind;\n className?: string;\n displayName?: string;\n inline?: boolean;\n linkTo?: boolean;\n name?: string;\n namespace?: string;\n hideIcon?: boolean;\n title?: string;\n dataTest?: string;\n onClick?: () => void;\n truncate?: boolean;\n nameSuffix?: React.ReactNode;\n children?: React.ReactNode;\n};\n\nexport type ResourceIconProps = {\n className?: string;\n /** @deprecated Use groupVersionKind instead. The kind property will be removed in a future release. */\n kind?: K8sResourceKindReference;\n groupVersionKind?: K8sGroupVersionKind;\n};\n\nexport type UseK8sModel = (\n // Use K8sGroupVersionKind type instead of K8sResourceKindReference. Support for type K8sResourceKindReference will be removed in a future release.\n groupVersionKind?: K8sResourceKindReference | K8sGroupVersionKind,\n) => [K8sModel, boolean];\nexport type UseK8sModels = () => [{ [key: string]: K8sModel }, boolean];\n\nexport type PerspectiveType = string;\n\nexport type UseActivePerspective = () => [\n PerspectiveType,\n React.Dispatch>,\n];\n\nexport type QueryParams = {\n watch?: string;\n labelSelector?: string;\n fieldSelector?: string;\n resourceVersion?: string;\n [key: string]: string;\n};\n\nexport type Patch = {\n op: string;\n path: string;\n value?: any;\n};\n\nexport type Cause = {\n field: string;\n message: string;\n reason: string;\n};\n\nexport type Status = {\n apiVersion: 'v1';\n kind: 'Status';\n details: {\n causes: Cause[];\n group: string;\n kind: string;\n };\n message: string;\n metadata: any;\n reason: string;\n status: string;\n};\n\nexport type StatusComponentProps = {\n title?: string;\n iconOnly?: boolean;\n noTooltip?: boolean;\n className?: string;\n popoverTitle?: string;\n};\n\nexport type OverviewProps = {\n className?: string;\n children: React.ReactNode;\n};\n\nexport enum GridPosition {\n MAIN = 'MAIN',\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n}\n\nexport type OverviewCardSpan = 4 | 6 | 12;\n\nexport type OverviewGridCard = {\n Card: React.ComponentType;\n span?: OverviewCardSpan;\n};\n\nexport type OverviewGridProps = {\n mainCards: OverviewGridCard[];\n leftCards?: OverviewGridCard[];\n rightCards?: OverviewGridCard[];\n};\n\nexport type InventoryItemTitleProps = {\n children: React.ReactNode;\n};\n\nexport type InventoryItemBodyProps = {\n error?: any;\n};\n\nexport type InventoryItemStatusProps = {\n count: number;\n icon: React.ReactNode;\n linkTo?: string;\n};\n\nexport type HumanizeResult = {\n string: string;\n value: number;\n unit: string;\n};\n\nexport type Humanize = (\n value: string | number,\n initialUnit?: string,\n preferredUnit?: string,\n) => HumanizeResult;\n\nexport enum LIMIT_STATE {\n 'ERROR' = 'ERROR',\n 'WARN' = 'WARN',\n 'OK' = 'OK',\n}\n\nexport type TopConsumerPopoverProps = {\n current: string;\n total?: string;\n available?: string;\n limit?: string;\n limitState?: LIMIT_STATE;\n requested?: string;\n requestedState?: LIMIT_STATE;\n};\n\nexport type QueryWithDescription = {\n query: string;\n desc: string;\n};\n\nexport type SelfSubjectAccessReviewKind = {\n apiVersion: string;\n kind: string;\n metadata?: ObjectMetadata;\n spec: {\n resourceAttributes?: AccessReviewResourceAttributes;\n };\n status?: {\n allowed: boolean;\n denied?: boolean;\n reason?: string;\n evaluationError?: string;\n };\n};\n\n// per https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#selfsubjectreview-v1-authentication-k8s-io\nexport type SelfSubjectReviewKind = {\n apiVersion: string;\n kind: string;\n metadata?: ObjectMetadata;\n status?: {\n userInfo?: UserInfo;\n };\n};\n\n// per https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#userinfo-v1-authentication-k8s-io\nexport type UserInfo = {\n uid?: string;\n username?: string;\n groups?: string[];\n extra?: object;\n};\n\nexport type CodeEditorProps = {\n value?: string;\n language?: string;\n options?: object;\n minHeight?: string | number;\n showShortcuts?: boolean;\n showMiniMap?: boolean;\n toolbarLinks?: React.ReactNodeArray;\n onChange?: (newValue, event) => void;\n onSave?: () => void;\n};\n\nexport type CodeEditorRef = {\n editor?: MonacoEditor['editor'];\n};\n\nexport type ResourceYAMLEditorProps = {\n initialResource: string | { [key: string]: any };\n header?: string;\n onSave?: (content: string) => void;\n readOnly?: boolean;\n create?: boolean;\n onChange?: (content: string) => void;\n hideHeader?: boolean;\n};\n\nexport type ResourceEventStreamProps = {\n resource: K8sResourceCommon;\n};\n\nexport type TimestampProps = {\n timestamp: string | number | Date;\n simple?: boolean;\n omitSuffix?: boolean;\n className?: string;\n};\n\nexport type NamespaceBarProps = {\n onNamespaceChange?: (namespace: string) => void;\n isDisabled?: boolean;\n children?: React.ReactNode;\n};\n\nexport type ErrorBoundaryFallbackProps = {\n errorMessage: string;\n componentStack: string;\n stack: string;\n title: string;\n};\n\nexport type FormatSeriesTitle = (labels: PrometheusLabels, i?: number) => string;\n\nexport type QueryBrowserProps = {\n customDataSource?: CustomDataSource;\n defaultSamples?: number;\n defaultTimespan?: number;\n disabledSeries?: PrometheusLabels[][];\n disableZoom?: boolean;\n filterLabels?: PrometheusLabels;\n fixedEndTime?: number;\n formatSeriesTitle?: FormatSeriesTitle;\n GraphLink?: React.ComponentType<{}>;\n hideControls?: boolean;\n isStack?: boolean;\n namespace?: string;\n onZoom?: (from: number, to: number) => void;\n pollInterval?: number;\n queries: string[];\n showLegend?: boolean;\n showStackedControl?: boolean;\n timespan?: number;\n units?: string;\n};\n\nexport type StorageClass = K8sResourceCommon & {\n provisioner: string;\n parameters: object;\n reclaimPolicy?: string;\n volumeBindingMode?: string;\n allowVolumeExpansion?: boolean;\n};\n\nexport type UseAnnotationsModal = (resource: K8sResourceCommon) => () => void;\n\nexport type UseDeleteModal = (\n resource: K8sResourceCommon,\n redirectTo?: LocationDescriptor,\n message?: JSX.Element,\n btnText?: React.ReactNode,\n deleteAllResources?: () => Promise,\n) => () => void;\n\nexport type UseLabelsModal = (resource: K8sResourceCommon) => () => void;\n\nexport type UseValuesForNamespaceContext = () => {\n namespace: string;\n setNamespace: (ns: string) => void;\n loaded: boolean;\n};\n\nexport type UseActiveNamespace = () => [string, (ns: string) => void];\n\nexport type UseUserSettings = (\n key: string,\n defaultValue?: T,\n sync?: boolean,\n) => [T, React.Dispatch>, boolean];\n\nexport type UseQuickStartContext = () => QuickStartContextValues;\n\nexport type TaintEffect = '' | 'NoSchedule' | 'PreferNoSchedule' | 'NoExecute';\n\nexport type Taint = {\n key: string;\n value: string;\n effect: TaintEffect;\n};\n\nexport enum K8sResourceConditionStatus {\n True = 'True',\n False = 'False',\n Unknown = 'Unknown',\n}\n\nexport type K8sResourceCondition = {\n type: string;\n status: keyof typeof K8sResourceConditionStatus;\n lastTransitionTime?: string;\n reason?: string;\n message?: string;\n};\n\nexport type NodeCondition = {\n lastHeartbeatTime?: string;\n} & K8sResourceCondition;\n\nexport type NodeKind = {\n spec: {\n taints?: Taint[];\n unschedulable?: boolean;\n };\n status?: {\n capacity?: {\n [key: string]: string;\n };\n conditions?: NodeCondition[];\n images?: {\n names: string[];\n sizeBytes?: number;\n }[];\n phase?: string;\n nodeInfo?: {\n operatingSystem: string;\n };\n };\n} & K8sResourceCommon;\n\nexport type CertificateSigningRequestKind = {\n spec: {\n groups: string[];\n request: string;\n usages: string[];\n username: string;\n uid: string;\n };\n status?: {\n conditions: {\n type: string;\n [key: string]: string;\n }[];\n };\n} & K8sResourceCommon;\n\nexport type NodeCertificateSigningRequestKind = CertificateSigningRequestKind & {\n metadata: K8sResourceCommon['metadata'] & { originalName: string };\n};\n","import * as _ from 'lodash-es';\nimport i18n from 'i18next';\nimport { getLastLanguage } from '@console/app/src/components/user-preferences/language/getLastLanguage';\n\n// The maximum allowed clock skew in milliseconds where we show a date as \"Just now\" even if it is from the future.\nexport const maxClockSkewMS = -60000;\nconst lang = getLastLanguage();\n\n// https://tc39.es/ecma402/#datetimeformat-objects\nexport const timeFormatter = new Intl.DateTimeFormat(lang, {\n hour: 'numeric',\n minute: 'numeric',\n});\n\nexport const timeFormatterWithSeconds = new Intl.DateTimeFormat(lang, {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n});\n\nexport const dateFormatter = new Intl.DateTimeFormat(lang, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n});\n\nexport const dateFormatterNoYear = new Intl.DateTimeFormat(lang, {\n month: 'short',\n day: 'numeric',\n});\n\nexport const dateTimeFormatter = (langArg?: string) =>\n new Intl.DateTimeFormat(langArg ?? lang, {\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n year: 'numeric',\n });\n\nexport const dateTimeFormatterWithSeconds = new Intl.DateTimeFormat(lang, {\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n year: 'numeric',\n});\n\nexport const utcDateTimeFormatter = new Intl.DateTimeFormat(lang, {\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n year: 'numeric',\n timeZone: 'UTC',\n timeZoneName: 'short',\n});\n\nexport const relativeTimeFormatter = (langArg?: string) =>\n Intl.RelativeTimeFormat ? new Intl.RelativeTimeFormat(langArg ?? lang) : null;\n\nexport const getDuration = (ms: number) => {\n if (!ms || ms < 0) {\n ms = 0;\n }\n let seconds = Math.floor(ms / 1000);\n let minutes = Math.floor(seconds / 60);\n seconds = seconds % 60;\n let hours = Math.floor(minutes / 60);\n minutes = minutes % 60;\n const days = Math.floor(hours / 24);\n hours = hours % 24;\n return { days, hours, minutes, seconds };\n};\n\nexport const fromNow = (dateTime: string | Date, now?: Date, options?, langArg?: string) => {\n // Check for null. If dateTime is null, it returns incorrect date Jan 1 1970.\n if (!dateTime) {\n return '-';\n }\n\n if (!now) {\n now = new Date();\n }\n\n const d = new Date(dateTime);\n const ms = now.getTime() - d.getTime();\n const justNow = i18n.t('public~Just now');\n\n // If the event occurred less than one minute in the future, assume it's clock drift and show \"Just now.\"\n if (!options?.omitSuffix && ms < 60000 && ms > maxClockSkewMS) {\n return justNow;\n }\n\n // Do not attempt to handle other dates in the future.\n if (ms < 0) {\n return '-';\n }\n\n const { days, hours, minutes } = getDuration(ms);\n\n if (options?.omitSuffix) {\n if (days) {\n return i18n.t('public~{{count}} day', { count: days });\n }\n if (hours) {\n return i18n.t('public~{{count}} hour', { count: hours });\n }\n return i18n.t('public~{{count}} minute', { count: minutes });\n }\n\n // Fallback to normal date/time formatting if Intl.RelativeTimeFormat is not\n // available. This is the case for older Safari versions.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat#browser_compatibility\n if (!relativeTimeFormatter(langArg)) {\n return dateTimeFormatter().format(d);\n }\n\n if (!days && !hours && !minutes) {\n return justNow;\n }\n\n if (days) {\n return relativeTimeFormatter(langArg).format(-days, 'day');\n }\n\n if (hours) {\n return relativeTimeFormatter(langArg).format(-hours, 'hour');\n }\n\n return relativeTimeFormatter(langArg).format(-minutes, 'minute');\n};\n\nexport const isValid = (dateTime: Date) => dateTime instanceof Date && !_.isNaN(dateTime.valueOf());\n\nconst zeroPad = (number: number) => (number < 10 ? `0${number}` : number);\n\nexport const twentyFourHourTime = (date: Date, showSeconds?: boolean): string => {\n const hours = zeroPad(date.getHours() ?? 0);\n const minutes = `:${zeroPad(date.getMinutes() ?? 0)}`;\n const seconds = showSeconds ? `:${zeroPad(date.getSeconds() ?? 0)}` : '';\n return `${hours}${minutes}${seconds}`;\n};\n","import * as React from 'react';\nimport { createContainer } from '@patternfly/react-charts';\nimport { AsyncComponent } from '../utils/async';\nimport { ONE_HOUR } from '@console/shared/src/constants/time';\n\n// Constants\nexport const PROMETHEUS_BASE_PATH = window.SERVER_FLAGS.prometheusBaseURL;\nexport const PROMETHEUS_TENANCY_BASE_PATH = window.SERVER_FLAGS.prometheusTenancyBaseURL;\nexport const ALERTMANAGER_BASE_PATH = window.SERVER_FLAGS.alertManagerBaseURL;\nexport const ALERTMANAGER_USER_WORKLOAD_BASE_PATH =\n window.SERVER_FLAGS.alertmanagerUserWorkloadBaseURL;\nexport const ALERTMANAGER_TENANCY_BASE_PATH = 'api/alertmanager-tenancy'; // remove it once it get added to SERVER_FLAGS\nexport const DEFAULT_PROMETHEUS_SAMPLES = 60;\nexport const DEFAULT_PROMETHEUS_TIMESPAN = ONE_HOUR;\n// Components\nexport { errorStatus, Status } from './status';\nexport const Area = (props) => (\n import('./graph-loader').then((c) => c.Area)} {...props} />\n);\nexport const Bar = (props) => (\n import('./graph-loader').then((c) => c.Bar)} {...props} />\n);\nexport const Gauge = (props) => (\n import('./graph-loader').then((c) => c.Gauge)} {...props} />\n);\nexport const Stack = (props) => (\n import('./graph-loader').then((c) => c.Stack)} {...props} />\n);\n\nexport const CursorVoronoiContainer = createContainer('cursor', 'voronoi');\n\n// Types\nexport type DataPoint = {\n x?: X;\n y?: number;\n label?: string;\n metric?: { [key: string]: string };\n description?: string;\n symbol?: {\n type?: string;\n fill?: string;\n };\n};\n\nexport type PrometheusLabels = { [key: string]: string };\nexport type PrometheusValue = [number, string];\n\n// Only covers range and instant vector responses for now.\nexport type PrometheusResult = {\n metric: PrometheusLabels;\n values?: PrometheusValue[];\n value?: PrometheusValue;\n};\n\nexport type PrometheusData = {\n resultType: 'matrix' | 'vector' | 'scalar' | 'string';\n result: PrometheusResult[];\n};\n\nexport type PrometheusResponse = {\n status: string;\n data: PrometheusData;\n errorType?: string;\n error?: string;\n warnings?: string[];\n};\n\nexport type DomainPadding =\n | number\n | {\n x?: number | [number, number];\n y?: number | [number, number];\n };\n","import { getReference } from '@console/dynamic-plugin-sdk/src/utils/k8s';\n\n// TODO(alecmerdler): Replace all manual string building with this function\n/**\n * @deprecated - Use getReference if absolutely needed, otherwise pivot towards using K8sGroupVersionKind objects where possible\n */\nexport const referenceForGroupVersionKind = (group: string) => (version: string) => (\n kind: string,\n) => getReference({ group, version, kind });\n\nexport {\n getReferenceForModel as referenceForModel,\n getAPIVersionForModel as apiVersionForModel,\n} from '@console/dynamic-plugin-sdk/src/utils/k8s/k8s-ref';\n","import { K8sKind } from '@console/internal/module/k8s';\n\nexport const BareMetalHostModel: K8sKind = {\n label: 'Bare Metal Host',\n labelPlural: 'Bare Metal Hosts',\n apiVersion: 'v1alpha1',\n apiGroup: 'metal3.io',\n plural: 'baremetalhosts',\n abbr: 'BMH',\n namespaced: true,\n kind: 'BareMetalHost',\n id: 'baremetalhost',\n crd: true,\n};\n\nexport const NodeMaintenanceModel: K8sKind = {\n label: 'Node Maintenance',\n labelPlural: 'Node Maintenances',\n apiVersion: 'v1beta1',\n apiGroup: 'nodemaintenance.medik8s.io',\n plural: 'nodemaintenances',\n abbr: 'NM',\n namespaced: false,\n kind: 'NodeMaintenance',\n id: 'nodemaintenance',\n crd: true,\n};\n\nexport const NodeMaintenanceKubevirtBetaModel: K8sKind = {\n label: 'Node Maintenance',\n labelPlural: 'Node Maintenances',\n apiVersion: 'v1beta1',\n apiGroup: 'nodemaintenance.kubevirt.io',\n plural: 'nodemaintenances',\n abbr: 'NM',\n namespaced: false,\n kind: 'NodeMaintenance',\n id: 'nodemaintenance',\n crd: true,\n};\n\nexport const ProvisioningModel: K8sKind = {\n label: 'Provisioning',\n labelPlural: 'Provisionings',\n apiVersion: 'v1alpha1',\n apiGroup: 'metal3.io',\n plural: 'provisionings',\n abbr: 'P',\n namespaced: false,\n kind: 'Provisioning',\n id: 'provisioning',\n crd: true,\n};\n\nexport const NodeMaintenanceKubevirtAlphaModel: K8sKind = {\n label: 'Node Maintenance',\n labelPlural: 'Node Maintenances',\n apiVersion: 'v1alpha1',\n apiGroup: 'kubevirt.io',\n plural: 'nodemaintenances',\n abbr: 'NM',\n namespaced: false,\n kind: 'NodeMaintenance',\n id: 'nodemaintenance',\n crd: true,\n};\n\nexport const CephClusterModel: K8sKind = {\n label: 'Ceph Cluster',\n labelPlural: 'Ceph Clusters',\n apiVersion: 'v1',\n apiGroup: 'ceph.rook.io',\n plural: 'cephclusters',\n abbr: 'CC',\n namespaced: true,\n kind: 'CephCluster',\n id: 'cephcluster',\n crd: true,\n};\n","// Default ErrorBoundary usage\nexport { default as ErrorBoundary } from './error-boundary';\n\n// Packaged, easy to use, fallback options\nexport { default as ErrorBoundaryPage } from './fallbacks/ErrorBoundaryPage';\nexport { default as ErrorBoundaryInline } from './fallbacks/ErrorBoundaryInline';\n\n// Custom fallback options\nexport { default as withFallback } from './fallbacks/withFallback';\nexport { default as ErrorBoundaryFallbackPage } from './fallbacks/ErrorBoundaryFallbackPage';\nexport { default as ErrorBoundaryFallbackInline } from './fallbacks/ErrorBoundaryFallbackInline';\n","import * as React from 'react';\nimport {\n useResolvedExtensions,\n isTelemetryListener,\n TelemetryListener,\n TelemetryEventListener,\n} from '@console/dynamic-plugin-sdk';\nimport {\n CLUSTER_TELEMETRY_ANALYTICS,\n PREFERRED_TELEMETRY_USER_SETTING_KEY,\n USER_TELEMETRY_ANALYTICS,\n} from '../constants';\nimport { useUserSettings } from './useUserSettings';\n\nlet telemetryEvents: { eventType: string; event: Record }[] = [];\n\ninterface ClusterProperties {\n clusterId?: string;\n clusterType?: string;\n consoleVersion?: string;\n organizationId?: string;\n}\n\nexport const getClusterProperties = () => {\n const clusterProperties: ClusterProperties = {};\n clusterProperties.clusterId = window.SERVER_FLAGS?.telemetry?.CLUSTER_ID;\n clusterProperties.clusterType = window.SERVER_FLAGS?.telemetry?.CLUSTER_TYPE;\n if (\n window.SERVER_FLAGS?.telemetry?.CLUSTER_TYPE === 'OSD' &&\n window.SERVER_FLAGS?.telemetry?.DEVSANDBOX === 'true'\n ) {\n clusterProperties.clusterType = 'DEVSANDBOX';\n }\n clusterProperties.consoleVersion = window.SERVER_FLAGS?.consoleVersion;\n clusterProperties.organizationId = window.SERVER_FLAGS?.telemetry?.ORGANIZATION_ID;\n return clusterProperties;\n};\n\nlet clusterProperties = getClusterProperties();\n\nexport const updateClusterPropertiesFromTests = () => (clusterProperties = getClusterProperties());\n\nexport const useTelemetry = () => {\n // TODO use useDynamicPluginInfo() hook to tell whether all dynamic plugins have been processed\n // to avoid firing telemetry events multiple times whenever a dynamic plugin loads asynchronously\n\n const [currentUserPreferenceTelemetryValue] = useUserSettings(\n PREFERRED_TELEMETRY_USER_SETTING_KEY,\n null,\n true,\n );\n\n const [extensions] = useResolvedExtensions(isTelemetryListener);\n\n React.useEffect(() => {\n if (\n currentUserPreferenceTelemetryValue === USER_TELEMETRY_ANALYTICS.ALLOW &&\n window.SERVER_FLAGS.telemetry?.STATE === CLUSTER_TELEMETRY_ANALYTICS.OPTIN &&\n telemetryEvents.length > 0\n ) {\n telemetryEvents.forEach(({ eventType, event }) => {\n extensions.forEach((e) => e.properties.listener(eventType, event));\n });\n telemetryEvents = [];\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentUserPreferenceTelemetryValue]);\n\n return React.useCallback(\n (eventType, properties: Record) => {\n const event = {\n ...clusterProperties,\n ...properties,\n // This is required to ensure that the replayed events uses the right path.\n path: properties?.pathname,\n };\n if (\n window.SERVER_FLAGS.telemetry?.STATE === CLUSTER_TELEMETRY_ANALYTICS.DISABLED ||\n (currentUserPreferenceTelemetryValue === USER_TELEMETRY_ANALYTICS.DENY &&\n (window.SERVER_FLAGS.telemetry?.STATE === CLUSTER_TELEMETRY_ANALYTICS.OPTIN ||\n window.SERVER_FLAGS.telemetry?.STATE === CLUSTER_TELEMETRY_ANALYTICS.OPTOUT))\n ) {\n return;\n }\n if (\n !currentUserPreferenceTelemetryValue &&\n window.SERVER_FLAGS.telemetry?.STATE === CLUSTER_TELEMETRY_ANALYTICS.OPTIN\n ) {\n telemetryEvents.push({ eventType, event });\n if (telemetryEvents.length > 10) {\n telemetryEvents.shift(); // Remove the first element\n }\n return;\n }\n extensions.forEach((e) => e.properties.listener(eventType, event));\n },\n [extensions, currentUserPreferenceTelemetryValue],\n );\n};\n","export * from './grammar';\nexport * from './utils';\nexport * from './pod-utils';\nexport * from './pod-ring-utils';\nexport * from './pod-resource-utils';\nexport * from './resource-utils';\nexport * from './validation';\nexport * from './table-utils';\nexport * from './storage-utils';\nexport * from './useCombineRefs';\nexport * from './icon-utils';\nexport * from './namespace';\nexport * from './label-filter';\nexport * from './alert-utils';\nexport * from './operator-utils';\nexport * from './helm-utils';\nexport * from './hpa-utils';\nexport * from './sample-utils';\nexport * from './multiselectdropdown';\nexport * from './annotations';\nexport * from './xterm-addon-fullscreen';\nexport * from './yup-validations';\nexport * from './keyword-filter';\nexport * from './order-extensions';\nexport * from './console-plugin';\nexport * from './default-categories';\n","import { K8sKind } from '@console/internal/module/k8s';\n\nexport const QuickStartModel: K8sKind = {\n kind: 'ConsoleQuickStart',\n label: 'ConsoleQuickStart',\n labelPlural: 'ConsoleQuickStarts',\n apiGroup: 'console.openshift.io',\n apiVersion: 'v1',\n abbr: 'CQS',\n namespaced: false,\n crd: true,\n plural: 'consolequickstarts',\n propagationPolicy: 'Background',\n};\n\nexport const PodDisruptionBudgetModel: K8sKind = {\n label: 'PodDisruptionBudget',\n // t('console-app~PodDisruptionBudget')\n labelKey: 'console-app~PodDisruptionBudget',\n labelPlural: 'PodDisruptionBudgets',\n // t('console-app~PodDisruptionBudgets')\n labelPluralKey: 'console-app~PodDisruptionBudgets',\n plural: 'poddisruptionbudgets',\n apiVersion: 'v1',\n apiGroup: 'policy',\n abbr: 'PDB',\n namespaced: true,\n kind: 'PodDisruptionBudget',\n id: 'poddisruptionbudget',\n};\n\nexport const EndPointSliceModel: K8sKind = {\n kind: 'EndpointSlice',\n label: 'EndpointSlice',\n labelPlural: 'EndpointSlices',\n apiGroup: 'discovery.k8s.io',\n apiVersion: 'v1',\n abbr: 'EPS',\n namespaced: true,\n plural: 'endpointslices',\n};\n","import * as _ from 'lodash';\n\n// Conversions between units and milliseconds\nconst s = 1000;\nconst m = s * 60;\nconst h = m * 60;\nconst d = h * 24;\nconst w = d * 7;\nconst units = { w, d, h, m, s };\n\n/**\n * Converts a duration in milliseconds to a Prometheus time duration string like \"1h 10m\"\n * @param {number} ms - Time duration in milliseconds\n * @returns {string} The duration converted to a Prometheus time duration string\n * @example\n * ```\n * formatPrometheusDuration(65000) // Returns \"1m 5s\"\n * ```\n */\nexport const formatPrometheusDuration = (ms: number) => {\n if (!_.isFinite(ms) || ms < 0) {\n return '';\n }\n let remaining = ms;\n let str = '';\n _.each(units, (factor, unit) => {\n const n = Math.floor(remaining / factor);\n if (n > 0) {\n str += `${n}${unit} `;\n remaining -= n * factor;\n }\n });\n return _.trim(str);\n};\n\n/**\n * Converts a Prometheus time duration like \"1h 10m 23s\" to milliseconds\n * @param {string} duration - Prometheus time duration string\n * @returns {number} The duration converted to a Prometheus time duration string or 0 if the duration could not be parsed\n * @example\n * ```\n * parsePrometheusDuration(\"1m 5s\") // Returns 65000\n * ```\n */\nexport const parsePrometheusDuration = (duration: string): number => {\n try {\n const parts = duration\n .trim()\n .split(/\\s+/)\n .map((p) => p.match(/^(\\d+)([wdhms])$/));\n return _.sumBy(parts, (p) => parseInt(p[1], 10) * units[p[2]]);\n } catch (ignored) {\n // Invalid duration format\n return 0;\n }\n};\n","import * as React from 'react';\nimport * as classNames from 'classnames';\nimport Linkify from 'react-linkify';\nimport { useTranslation } from 'react-i18next';\nimport { CopyToClipboard as CTC } from 'react-copy-to-clipboard';\nimport { Tooltip } from '@patternfly/react-core';\nimport { CopyIcon } from '@patternfly/react-icons/dist/esm/icons/copy-icon';\nimport { ExternalLinkAltIcon } from '@patternfly/react-icons/dist/esm/icons/external-link-alt-icon';\nimport { ALL_NAMESPACES_KEY } from '@console/shared/src/constants';\n\n// Kubernetes \"dns-friendly\" names match\n// [a-z0-9]([-a-z0-9]*[a-z0-9])? and are 63 or fewer characters\n// long. This pattern checks the pattern but not the length.\n//\n// Don't capture anything in legalNamePattern, since it's used\n// in expressions like\n//\n// new RegExp(\"PREFIX\" + legalNamePattern.source + \"(SUFFIX)\")\n//\n// And it's ok for users to make assumptions about capturing groups.\n\nexport const legalNamePattern = /[a-z0-9](?:[-a-z0-9]*[a-z0-9])?/;\n\nconst basePathPattern = new RegExp(`^/?${window.SERVER_FLAGS.basePath}`);\n\nexport const namespacedPrefixes = [\n '/api-resource',\n '/k8s',\n '/operatorhub',\n '/operatormanagement',\n '/operators',\n '/details',\n '/search',\n '/status',\n];\n\nexport const stripBasePath = (path: string): string => path.replace(basePathPattern, '/');\n\nexport const getNamespace = (path: string): string => {\n path = stripBasePath(path);\n const split = path.split('/').filter((x) => x);\n\n if (split[1] === 'all-namespaces') {\n return ALL_NAMESPACES_KEY;\n }\n\n let ns: string;\n if (split[1] === 'cluster' && ['namespaces', 'projects'].includes(split[2]) && split[3]) {\n ns = split[3];\n } else if (split[1] === 'ns' && split[2]) {\n ns = split[2];\n } else {\n return;\n }\n\n const match = ns.match(legalNamePattern);\n return match && match.length > 0 && match[0];\n};\n\nexport const getURLSearchParams = () => {\n const all: any = {};\n const params = new URLSearchParams(window.location.search);\n\n for (const [k, v] of params.entries()) {\n all[k] = v;\n }\n\n return all;\n};\n\nexport const ExternalLink: React.FC = ({\n children,\n href,\n text,\n additionalClassName = '',\n dataTestID,\n stopPropagation,\n}) => (\n e.stopPropagation() } : {})}\n >\n {children || text}\n \n);\n\n// Opens link with copy-to-clipboard\n\nexport const ExternalLinkWithCopy: React.FC = ({\n link,\n text,\n additionalClassName,\n dataTestID,\n}) => {\n const [copied, setCopied] = React.useState(false);\n\n const { t } = useTranslation();\n const tooltipText = copied ? t('public~Copied to clipboard') : t('public~Copy to clipboard');\n const tooltipContent = [\n \n {tooltipText}\n ,\n ];\n\n return (\n
\n \n {text ?? link}\n \n  \n \n \n \n \n \n \n \n setCopied(true)}>\n setCopied(false)}\n className=\"co-external-link-with-copy__icon co-external-link-with-copy__copyicon\"\n >\n \n {t('public~Copy to clipboard')}\n \n \n \n \n
\n );\n};\n\n// Open links in a new window and set noopener/noreferrer.\nexport const LinkifyExternal: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n {children}\n);\nLinkifyExternal.displayName = 'LinkifyExternal';\n\ntype ExternalLinkProps = {\n href: string;\n text?: React.ReactNode;\n additionalClassName?: string;\n dataTestID?: string;\n stopPropagation?: boolean;\n};\n\ntype ExternalLinkWithCopyProps = {\n link: string;\n text?: string;\n dataTestID?: string;\n additionalClassName?: string;\n};\n","import { Map as ImmutableMap } from 'immutable';\nimport * as _ from 'lodash-es';\n\nimport { FLAGS } from '@console/shared/src/constants';\nimport { isModelFeatureFlag } from '@console/plugin-sdk/src/typings';\nimport {\n subscribeToExtensions,\n extensionDiffListener,\n} from '@console/plugin-sdk/src/api/pluginSubscriptionService';\nimport {\n ModelFeatureFlag as DynamicModelFeatureFlag,\n isModelFeatureFlag as isDynamicModelFeatureFlag,\n} from '@console/dynamic-plugin-sdk/src/extensions';\nimport {\n ClusterAutoscalerModel,\n ConsoleCLIDownloadModel,\n ConsoleExternalLogLinkModel,\n ConsoleLinkModel,\n ConsoleNotificationModel,\n ConsoleYAMLSampleModel,\n MachineAutoscalerModel,\n MachineConfigModel,\n MachineHealthCheckModel,\n MachineModel,\n PrometheusModel,\n} from '../models';\nimport { referenceForGroupVersionKind, referenceForModel } from '../module/k8s/k8s-ref';\nimport { RootState } from '../redux';\nimport { ActionType as K8sActionType } from '@console/dynamic-plugin-sdk/src/app/k8s/actions/k8s';\nimport { FeatureState } from '@console/dynamic-plugin-sdk/src/app/features';\nimport { FeatureAction, ActionType } from '../actions/features';\nimport { pluginStore } from '../plugins';\n\n// eslint-disable-next-line prettier/prettier\nexport type { FeatureState };\n\nexport const defaults = _.mapValues(FLAGS, (flag) => {\n switch (flag) {\n case FLAGS.AUTH_ENABLED:\n return !window.SERVER_FLAGS.authDisabled;\n case FLAGS.MONITORING:\n return (\n !!window.SERVER_FLAGS.prometheusBaseURL && !!window.SERVER_FLAGS.prometheusTenancyBaseURL\n );\n default:\n return undefined;\n }\n});\n\nexport const baseCRDs = {\n [referenceForModel(ClusterAutoscalerModel)]: FLAGS.CLUSTER_AUTOSCALER,\n [referenceForModel(ConsoleLinkModel)]: FLAGS.CONSOLE_LINK,\n [referenceForModel(ConsoleCLIDownloadModel)]: FLAGS.CONSOLE_CLI_DOWNLOAD,\n [referenceForModel(ConsoleExternalLogLinkModel)]: FLAGS.CONSOLE_EXTERNAL_LOG_LINK,\n [referenceForModel(ConsoleNotificationModel)]: FLAGS.CONSOLE_NOTIFICATION,\n [referenceForModel(ConsoleYAMLSampleModel)]: FLAGS.CONSOLE_YAML_SAMPLE,\n [referenceForModel(MachineAutoscalerModel)]: FLAGS.MACHINE_AUTOSCALER,\n [referenceForModel(MachineConfigModel)]: FLAGS.MACHINE_CONFIG,\n [referenceForModel(MachineHealthCheckModel)]: FLAGS.MACHINE_HEALTH_CHECK,\n [referenceForModel(MachineModel)]: FLAGS.CLUSTER_API,\n [referenceForModel(PrometheusModel)]: FLAGS.PROMETHEUS,\n};\n\nconst CRDs = { ...baseCRDs };\n\nconst addToCRDs = (ref: string, flag: string) => {\n if (!CRDs[ref]) {\n CRDs[ref] = flag as FLAGS;\n }\n};\n\npluginStore\n .getExtensionsInUse()\n .filter(isModelFeatureFlag)\n .forEach((ff) => {\n addToCRDs(referenceForModel(ff.properties.model), ff.properties.flag);\n });\n\nsubscribeToExtensions(\n extensionDiffListener((added, removed) => {\n const getModelRef = (e: DynamicModelFeatureFlag) => {\n const model = e.properties.model;\n return referenceForGroupVersionKind(model.group)(model.version)(model.kind);\n };\n\n added.forEach((e) => {\n addToCRDs(getModelRef(e), e.properties.flag);\n });\n\n removed.forEach((e) => {\n delete CRDs[getModelRef(e)];\n });\n\n // TODO(vojtech): change of 'CRDs' should trigger relevant detection logic\n }),\n isDynamicModelFeatureFlag,\n);\n\nexport const featureReducerName = 'FLAGS';\nexport const featureReducer = (state: FeatureState, action: FeatureAction): FeatureState => {\n if (!state) {\n return ImmutableMap(defaults);\n }\n\n switch (action.type) {\n case ActionType.SetFlag:\n return state.set(action.payload.flag, action.payload.value);\n\n case ActionType.ClearSSARFlags:\n return state.withMutations((s) =>\n action.payload.flags.reduce((acc, curr) => acc.remove(curr), s),\n );\n\n case K8sActionType.ReceivedResources:\n // Flip all flags to false to signify that we did not see them\n _.each(CRDs, (v) => (state = state.set(v, false)));\n\n return action.payload.resources.models\n .filter((model) => CRDs[referenceForModel(model)] !== undefined)\n .reduce((nextState, model) => {\n const flag = CRDs[referenceForModel(model)];\n // eslint-disable-next-line no-console\n console.log(`${flag} was detected.`);\n\n return nextState.set(flag, true);\n }, state);\n\n default:\n return state;\n }\n};\n\nexport const getFlagsObject = ({ [featureReducerName]: featureState }: RootState): FlagsObject =>\n featureState.toObject();\n\nexport type FlagsObject = { [key: string]: boolean };\n\n// Flag detection is not complete if the flag's value is `undefined`.\nexport const flagPending = (flag: boolean) => flag === undefined;\n","export { consoleFetch, consoleFetchJSON, consoleFetchText } from './console-fetch';\nexport { getConsoleRequestHeaders } from './console-fetch-utils';\n","import * as _ from 'lodash';\nimport {\n useResolvedExtensions,\n CatalogItemType,\n isCatalogItemType,\n} from '@console/dynamic-plugin-sdk';\nimport {\n CatalogItem,\n CatalogItemDetails,\n CatalogItemMetadataProviderFunction,\n} from '@console/dynamic-plugin-sdk/src/extensions';\nimport { normalizeIconClass } from '@console/internal/components/catalog/catalog-item-icon';\nimport { history } from '@console/internal/components/utils';\nimport * as catalogImg from '@console/internal/imgs/logos/catalog-icon.svg';\nimport { keywordFilter } from '../../../utils/keyword-filter';\nimport { CatalogType, CatalogTypeCounts } from './types';\n\nenum CatalogVisibilityState {\n Enabled = 'Enabled',\n Disabled = 'Disabled',\n}\n\nconst catalogItemCompare = (keyword: string, item: CatalogItem): boolean => {\n if (!item) {\n return false;\n }\n return (\n item.name.toLowerCase().includes(keyword) ||\n (typeof item.description === 'string' && item.description.toLowerCase().includes(keyword)) ||\n item.type.toLowerCase().includes(keyword) ||\n item.tags?.some((tag) => tag.includes(keyword)) ||\n item.cta?.label.toLowerCase().includes(keyword)\n );\n};\n\nexport const keywordCompare = (filterString: string, items: CatalogItem[]): CatalogItem[] => {\n return keywordFilter(filterString, items, catalogItemCompare);\n};\n\nexport const getIconProps = (item: CatalogItem) => {\n const { icon } = item;\n if (!icon) {\n return {};\n }\n if (icon.url) {\n return { iconImg: icon.url, iconClass: null };\n }\n if (icon.class) {\n return { iconImg: null, iconClass: normalizeIconClass(icon.class) };\n }\n if (icon.node) {\n return { iconImg: null, iconClass: null, icon: icon.node };\n }\n return { iconImg: catalogImg, iconClass: null };\n};\n\nexport const setURLParams = (params: URLSearchParams) => {\n const url = new URL(window.location.href);\n const searchParams = `?${params.toString()}${url.hash}`;\n\n history.replace(`${url.pathname}${searchParams}`);\n};\n\nexport const updateURLParams = (paramName: string, value: string | string[]) => {\n const params = new URLSearchParams(window.location.search);\n\n if (value) {\n params.set(paramName, Array.isArray(value) ? JSON.stringify(value) : value);\n } else {\n params.delete(paramName);\n }\n setURLParams(params);\n};\n\nexport const getURLWithParams = (paramName: string, value: string | string[]): string => {\n const params = new URLSearchParams(window.location.search);\n const url = new URL(window.location.href);\n\n if (value) {\n params.set(paramName, Array.isArray(value) ? JSON.stringify(value) : value);\n } else {\n params.delete(paramName);\n }\n\n const searchParams = `?${params.toString()}${url.hash}`;\n return `${url.pathname}${searchParams}`;\n};\n\nexport const getCatalogTypeCounts = (\n items: CatalogItem[],\n catalogTypes: CatalogType[],\n): CatalogTypeCounts => {\n const catalogTypeCounts = {};\n\n catalogTypes.forEach((catalogType) => {\n const matchedItems = items.filter((item) => item.type === catalogType.value);\n catalogTypeCounts[catalogType.value] = matchedItems.length;\n });\n\n return catalogTypeCounts;\n};\n\nexport const customPropertyPresent = (\n catalogItemDetails: CatalogItemDetails,\n proppertyName: string,\n): boolean => {\n return catalogItemDetails?.properties?.some((property) => property.label === proppertyName);\n};\n\nexport const applyCatalogItemMetadata = (\n catalogItems: CatalogItem[],\n metadataProviderMap: {\n [type: string]: { [id: string]: CatalogItemMetadataProviderFunction };\n },\n) =>\n catalogItems.map((item) => {\n const metadataProviders = Object.values(metadataProviderMap[item.type] ?? {});\n if (metadataProviders?.length) {\n const metadata = metadataProviders\n .map((metadataProvider) => metadataProvider(item))\n .filter((x) => x);\n\n const tags = _.flatten(metadata.map((m) => m.tags).filter((x) => x));\n const badges = _.flatten(metadata.map((m) => m.badges).filter((x) => x));\n const attributes = metadata.reduce(\n (acc, m) => Object.assign(acc, m.attributes),\n {} as CatalogItem['attributes'],\n );\n const attributeCount = Object.keys(attributes).length;\n if (tags.length > 0 || badges.length > 0 || attributeCount > 0) {\n return {\n ...item,\n tags: tags.length > 0 ? [...(item.tags ?? []), ...tags] : item.tags,\n badges: badges.length > 0 ? [...(item.badges ?? []), ...badges] : item.badges,\n attributes: attributeCount ? { ...item.attributes, ...attributes } : item.attributes,\n };\n }\n }\n return item;\n });\n\nexport const isCatalogTypeEnabled = (catalogType: string): boolean => {\n if (window.SERVER_FLAGS.developerCatalogTypes) {\n const developerCatalogTypes = JSON.parse(window.SERVER_FLAGS.developerCatalogTypes);\n if (\n developerCatalogTypes?.state === CatalogVisibilityState.Enabled &&\n developerCatalogTypes?.enabled?.length > 0\n ) {\n return developerCatalogTypes?.enabled.includes(catalogType);\n }\n if (developerCatalogTypes?.state === CatalogVisibilityState.Disabled) {\n if (developerCatalogTypes?.disabled?.length > 0) {\n return !developerCatalogTypes?.disabled.includes(catalogType);\n }\n return false;\n }\n }\n return true;\n};\n\nexport const useGetAllDisabledSubCatalogs = () => {\n const [catalogExtensionsArray] = useResolvedExtensions(isCatalogItemType);\n const catalogTypeExtensions = catalogExtensionsArray.map((type) => {\n return type.properties.type;\n });\n let disabledSubCatalogs = [];\n if (window.SERVER_FLAGS.developerCatalogTypes) {\n const developerCatalogTypes = JSON.parse(window.SERVER_FLAGS.developerCatalogTypes);\n if (\n developerCatalogTypes?.state === CatalogVisibilityState.Enabled &&\n developerCatalogTypes?.enabled?.length > 0\n ) {\n disabledSubCatalogs = catalogTypeExtensions.filter(\n (val) => !developerCatalogTypes?.enabled.includes(val),\n );\n return [disabledSubCatalogs];\n }\n if (developerCatalogTypes?.state === CatalogVisibilityState.Disabled) {\n if (developerCatalogTypes?.disabled?.length > 0) {\n return [developerCatalogTypes?.disabled, catalogTypeExtensions];\n }\n return [catalogTypeExtensions];\n }\n }\n return [disabledSubCatalogs];\n};\n\nexport const useIsDeveloperCatalogEnabled = (): boolean => {\n const [disabledSubCatalogs] = useGetAllDisabledSubCatalogs();\n const [catalogExtensionsArray] = useResolvedExtensions(isCatalogItemType);\n const catalogTypeExtensions = catalogExtensionsArray.map((type) => {\n return type.properties.type;\n });\n if (disabledSubCatalogs?.length === catalogTypeExtensions?.length) {\n return (\n JSON.stringify(disabledSubCatalogs.sort()) !== JSON.stringify(catalogTypeExtensions.sort())\n );\n }\n return true;\n};\n","export const MARKDOWN_COPY_BUTTON_ID = 'data-copy-for';\nexport const MARKDOWN_EXECUTE_BUTTON_ID = 'data-execute-for';\nexport const MARKDOWN_SNIPPET_ID = 'data-snippet-id';\n","import * as _ from 'lodash-es';\nimport {\n PROMETHEUS_BASE_PATH,\n PROMETHEUS_TENANCY_BASE_PATH,\n DEFAULT_PROMETHEUS_SAMPLES,\n DEFAULT_PROMETHEUS_TIMESPAN,\n} from './index';\nimport { PrometheusEndpoint } from '@console/dynamic-plugin-sdk/src/api/common-types';\nexport { PrometheusEndpoint };\n\n// Range vector queries require end, start, and step search params\nconst getRangeVectorSearchParams = (\n endTime: number = Date.now(),\n samples: number = DEFAULT_PROMETHEUS_SAMPLES,\n timespan: number = DEFAULT_PROMETHEUS_TIMESPAN,\n): URLSearchParams => {\n const params = new URLSearchParams();\n params.append('start', `${(endTime - timespan) / 1000}`);\n params.append('end', `${endTime / 1000}`);\n params.append('step', `${timespan / samples / 1000}`);\n return params;\n};\n\nconst getSearchParams = ({\n endpoint,\n endTime,\n timespan,\n samples,\n ...params\n}: PrometheusURLProps): URLSearchParams => {\n const searchParams =\n endpoint === PrometheusEndpoint.QUERY_RANGE\n ? getRangeVectorSearchParams(endTime, samples, timespan)\n : new URLSearchParams();\n _.each(params, (value, key) => value && searchParams.append(key, value.toString()));\n return searchParams;\n};\n\nexport const getPrometheusURL = (\n props: PrometheusURLProps,\n basePath: string = props.namespace ? PROMETHEUS_TENANCY_BASE_PATH : PROMETHEUS_BASE_PATH,\n): string => {\n if (props.endpoint !== PrometheusEndpoint.RULES && !props.query) {\n return '';\n }\n const params = getSearchParams(props);\n return `${basePath}/${props.endpoint}?${params.toString()}`;\n};\n\ntype PrometheusURLProps = {\n endpoint: PrometheusEndpoint;\n endTime?: number;\n namespace?: string;\n query?: string;\n samples?: number;\n timeout?: string;\n timespan?: number;\n};\n","import * as React from 'react';\n\nexport const useBoolean = (\n initialValue: boolean,\n): [boolean, () => void, () => void, () => void] => {\n const [value, setValue] = React.useState(initialValue);\n const toggle = React.useCallback(() => setValue((v) => !v), []);\n const setTrue = React.useCallback(() => setValue(true), []);\n const setFalse = React.useCallback(() => setValue(false), []);\n return [value, toggle, setTrue, setFalse];\n};\n","import { connect } from 'react-redux';\nimport * as _ from 'lodash-es';\nimport { FLAGS } from '@console/shared/src/constants';\nimport { RootState } from '../redux';\nimport { FeatureState, FlagsObject } from './features';\n\nexport const stateToFlagsObject = (state: FeatureState, desiredFlags: string[]): FlagsObject =>\n desiredFlags.reduce((allFlags, f) => ({ ...allFlags, [f]: state.get(f) }), {} as FlagsObject);\n\nconst stateToProps = (state: FeatureState, desiredFlags: string[]): WithFlagsProps => ({\n flags: stateToFlagsObject(state, desiredFlags),\n});\n\nexport type WithFlagsProps = {\n flags: FlagsObject;\n};\n\nexport type ConnectToFlags =

(\n ...flags: (FLAGS | string)[]\n) => (\n C: React.ComponentType

,\n) => React.ComponentType> & {\n WrappedComponent: React.ComponentType

;\n};\n\nexport const connectToFlags: ConnectToFlags = (...flags) =>\n connect((state: RootState) => stateToProps(state.FLAGS, flags), null, null, {\n areStatePropsEqual: _.isEqual,\n });\n","import * as React from 'react';\nimport * as _ from 'lodash-es';\n\nimport { LoadingBox } from './status-box';\n\n/**\n * FIXME: Comparing two functions is not the *best* solution, but we can handle false negatives.\n */\nconst sameLoader = (a: () => Promise) => (\n b: () => Promise,\n) => a?.name === b?.name && (a || 'a').toString() === (b || 'b').toString();\n\nenum AsyncComponentError {\n ComponentNotFound = 'COMPONENT_NOT_FOUND',\n}\n\nexport class AsyncComponent extends React.Component {\n state: AsyncComponentState = { Component: null, loader: null };\n props: AsyncComponentProps;\n\n private retryCount: number = 0;\n private maxRetries: number = 25;\n private isAsyncMounted: boolean = false;\n\n static getDerivedStateFromProps(props, state) {\n if (!sameLoader(props.loader)(state.loader)) {\n return { Component: null, loader: props.loader };\n }\n return null;\n }\n\n componentDidUpdate() {\n if (this.state.Component === null) {\n this.loadComponent();\n }\n }\n\n componentDidMount() {\n this.isAsyncMounted = true;\n if (this.state.Component === null) {\n this.loadComponent();\n }\n }\n\n componentWillUnmount() {\n this.isAsyncMounted = false;\n }\n\n private loadComponent() {\n this.state\n .loader()\n .then((Component) => {\n if (!Component) {\n return Promise.reject(AsyncComponentError.ComponentNotFound);\n }\n this.isAsyncMounted && this.setState({ Component });\n })\n .catch((error) => {\n if (error === AsyncComponentError.ComponentNotFound) {\n // eslint-disable-next-line no-console\n console.error('Component does not exist in module');\n } else {\n setTimeout(() => this.loadComponent(), this.retryAfter);\n }\n });\n }\n\n private get retryAfter(): number {\n this.retryCount++;\n const base = this.retryCount < this.maxRetries ? this.retryCount : this.maxRetries;\n return 100 * Math.pow(base, 2);\n }\n\n render() {\n const { Component } = this.state;\n const { LoadingComponent = LoadingBox, forwardRef } = this.props;\n const rest = _.omit(this.props, 'loader');\n return Component != null ? : ;\n }\n}\n\nexport type AsyncComponentProps = {\n loader: () => Promise;\n LoadingComponent?: React.ReactNode;\n} & any;\nexport type AsyncComponentState = {\n Component: React.ComponentType;\n loader: () => Promise;\n};\n","import { applyMiddleware, combineReducers, createStore, compose, ReducersMapObject } from 'redux';\nimport * as _ from 'lodash-es';\nimport thunk from 'redux-thunk';\nimport {\n ResolvedExtension,\n ReduxReducer,\n SDKReducers,\n SDKStoreState,\n} from '@console/dynamic-plugin-sdk';\nimport { FeatureSubStore } from '@console/dynamic-plugin-sdk/src/app/features';\nimport { featureReducer, featureReducerName } from './reducers/features';\nimport ObserveReducers, { ObserveState } from './reducers/observe';\nimport UIReducers, { UIState } from './reducers/ui';\nimport { dashboardsReducer, DashboardsState } from './reducers/dashboards';\n\nconst composeEnhancers =\n (process.env.NODE_ENV !== 'production' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || compose;\n\nexport type RootState = {\n observe: ObserveState;\n UI: UIState;\n dashboards: DashboardsState;\n plugins?: {\n [namespace: string]: any;\n };\n} & SDKStoreState &\n FeatureSubStore;\n\nconst baseReducers = Object.freeze({\n observe: ObserveReducers,\n UI: UIReducers,\n [featureReducerName]: featureReducer,\n dashboards: dashboardsReducer,\n ...SDKReducers,\n});\n\nconst store = createStore(\n combineReducers(baseReducers),\n {},\n composeEnhancers(applyMiddleware(thunk)),\n);\n\nexport const applyReduxExtensions = (reducerExtensions: ResolvedExtension[]) => {\n const pluginReducers: ReducersMapObject = {};\n\n reducerExtensions.forEach(({ properties: { scope, reducer } }) => {\n pluginReducers[scope] = reducer;\n });\n\n const nextReducers: ReducersMapObject = _.isEmpty(pluginReducers)\n ? baseReducers\n : { plugins: combineReducers(pluginReducers), ...baseReducers };\n\n store.replaceReducer(combineReducers(nextReducers));\n};\n\nif (process.env.NODE_ENV !== 'production') {\n // Expose Redux store for debugging\n window.store = store;\n}\n\nexport default store;\n","import * as _ from 'lodash';\nimport { Store } from 'redux';\nimport { RootState } from '@console/internal/redux';\nimport { isExtensionInUse, PluginStore, DynamicPluginInfo } from '../store';\nimport { Extension, ExtensionTypeGuard, LoadedExtension } from '../typings';\n\nlet subscriptionServiceInitialized = false;\n\nconst extensionSubscriptions: ExtensionSubscription[] = [];\nconst dynamicPluginListeners: DynamicPluginListener[] = [];\n\nlet onExtensionSubscriptionAdded: (sub: ExtensionSubscription) => void = _.noop;\nlet onDynamicPluginListenerAdded: (listener: DynamicPluginListener) => void = _.noop;\n\nconst subscribe = (sub: T, subList: T[], invokeListener: VoidFunction): VoidFunction => {\n let isSubscribed = true;\n\n subList.push(sub);\n invokeListener();\n\n return () => {\n if (isSubscribed) {\n isSubscribed = false;\n subList.splice(subList.indexOf(sub), 1);\n }\n };\n};\n\nexport const initSubscriptionService = (pluginStore: PluginStore, reduxStore: Store) => {\n if (subscriptionServiceInitialized) {\n throw new Error('Subscription service is already initialized');\n }\n\n subscriptionServiceInitialized = true;\n\n const getExtensionsInUse = () => pluginStore.getExtensionsInUse();\n const getFlags = () => reduxStore.getState().FLAGS;\n\n type FeatureFlags = ReturnType;\n\n const invokeExtensionListener = (\n sub: ExtensionSubscription,\n currentExtensions: Extension[],\n currentFlags: FeatureFlags,\n ) => {\n // Narrow extensions according to type guards\n const matchedExtensions = _.flatMap(sub.typeGuards.map((tg) => currentExtensions.filter(tg)));\n\n // Gate matched extensions by relevant feature flags\n const extensionsInUse = matchedExtensions.filter((e) =>\n isExtensionInUse(e, currentFlags.toObject()),\n );\n\n // Invoke listener only if the extension list has changed\n if (!_.isEqual(extensionsInUse, sub.listenerLastArgs)) {\n sub.listenerLastArgs = extensionsInUse;\n sub.listener(extensionsInUse);\n }\n };\n\n onExtensionSubscriptionAdded = (sub) => {\n invokeExtensionListener(sub, getExtensionsInUse(), getFlags());\n };\n\n onDynamicPluginListenerAdded = (listener) => {\n listener(pluginStore.getDynamicPluginInfo());\n };\n\n let lastExtensions: Extension[] = null;\n let lastFlags: FeatureFlags = null;\n\n const invokeAllExtensionListeners = () => {\n if (extensionSubscriptions.length === 0) {\n return;\n }\n\n const nextExtensions = getExtensionsInUse();\n const nextFlags = getFlags();\n\n if (_.isEqual(nextExtensions, lastExtensions) && nextFlags === lastFlags) {\n return;\n }\n\n lastExtensions = nextExtensions;\n lastFlags = nextFlags;\n\n extensionSubscriptions.forEach((sub) => {\n invokeExtensionListener(sub, nextExtensions, nextFlags);\n });\n };\n\n let lastPluginEntries: DynamicPluginInfo[] = null;\n\n const invokeAllDynamicPluginListeners = () => {\n if (dynamicPluginListeners.length === 0) {\n return;\n }\n\n const nextPluginEntries = pluginStore.getDynamicPluginInfo();\n\n if (_.isEqual(nextPluginEntries, lastPluginEntries)) {\n return;\n }\n\n lastPluginEntries = nextPluginEntries;\n\n dynamicPluginListeners.forEach((listener) => {\n listener(nextPluginEntries);\n });\n };\n\n // Subscribe to changes in Console plugins and Redux\n pluginStore.subscribe(invokeAllExtensionListeners);\n pluginStore.subscribe(invokeAllDynamicPluginListeners);\n reduxStore.subscribe(invokeAllExtensionListeners);\n\n // Invoke listeners registered prior to initializing subscription service\n invokeAllExtensionListeners();\n invokeAllDynamicPluginListeners();\n};\n\n/**\n * Subscription based mechanism for consuming Console extensions.\n *\n * Provided listener will be invoked immediately to allow processing existing extensions.\n * It will also be invoked whenever the computed list of extension instances changes.\n *\n * _Tip: need to access extensions in a React component?_\n * - **Yes**\n * - Functional components: use `useExtensions` hook.\n * - Class components: use `withExtensions` higher-order component.\n * - **No**\n * - Use `subscribeToExtensions` function.\n *\n * @param listener Listener invoked when the list of extension instances which are\n * currently in use, narrowed by the given type guard(s), changes.\n *\n * @param typeGuards Type guard(s) used to narrow the extension instances.\n *\n * @returns Function that unsubscribes the listener.\n */\nexport const subscribeToExtensions = (\n listener: ExtensionListener>,\n ...typeGuards: ExtensionTypeGuard[]\n) => {\n if (typeGuards.length === 0) {\n throw new Error('You must pass at least one type guard to subscribeToExtensions');\n }\n\n const sub: ExtensionSubscription = { listener, typeGuards };\n\n return subscribe(sub, extensionSubscriptions, () => {\n onExtensionSubscriptionAdded(sub);\n });\n};\n\n/**\n * Subscribe to changes related to processing Console dynamic plugins.\n *\n * @param listener Listener invoked when the runtime status of a dynamic plugin changes.\n *\n * @returns Function that unsubscribes the listener.\n */\nexport const subscribeToDynamicPlugins = (listener: DynamicPluginListener) => {\n return subscribe(listener, dynamicPluginListeners, () => {\n onDynamicPluginListenerAdded(listener);\n });\n};\n\n/**\n * `ExtensionListener` adapter that computes the difference between the calls.\n */\nexport const extensionDiffListener = (\n listener: (added: E[], removed: E[]) => void,\n): ExtensionListener => {\n let prevExtensions: E[] = [];\n\n return (nextExtensions: E[]) => {\n listener(\n _.difference(nextExtensions, prevExtensions),\n _.difference(prevExtensions, nextExtensions),\n );\n\n prevExtensions = nextExtensions;\n };\n};\n\ntype ExtensionListener = (extensions: E[]) => void;\n\ntype ExtensionSubscription = {\n listener: ExtensionListener;\n typeGuards: ExtensionTypeGuard[];\n listenerLastArgs?: E[];\n};\n\ntype DynamicPluginListener = (pluginInfoEntries: DynamicPluginInfo[]) => void;\n","import * as _ from 'lodash-es';\nimport i18next from 'i18next';\n\nimport { ContainerSpec, ContainerStatus, PodKind, Volume, VolumeMount } from './types';\n\nconst getRestartPolicy = (pod: PodKind) =>\n _.find(\n {\n Always: {\n // A unique id to identify the type, used as the value when communicating with the API.\n id: 'Always',\n // What is shown in the UI.\n label: i18next.t('public~Always restart'),\n // Description in the UI.\n description: i18next.t(\n 'public~If the container restarts for any reason, restart it. Useful for stateless services that may fail from time to time.',\n ),\n // Default selection for new pods.\n default: true,\n },\n OnFailure: {\n id: 'OnFailure',\n label: i18next.t('public~Restart on failure'),\n description: i18next.t(\n 'public~If the container exits with a non-zero status code, restart it.',\n ),\n },\n Never: {\n id: 'Never',\n label: i18next.t('public~Never restart'),\n description: i18next.t(\n 'public~Never restart the container. Useful for containers that exit when they have completed a specific job, like a data import daemon.',\n ),\n },\n },\n { id: _.get(pod, 'spec.restartPolicy') },\n );\n\nexport const VolumeSource = {\n emptyDir: {\n id: 'emptyDir',\n label: i18next.t('public~Container volume'),\n description: i18next.t(\"public~Temporary directory that shares a pod's lifetime.\"),\n },\n hostPath: {\n id: 'hostPath',\n label: i18next.t('public~Host directory'),\n description: i18next.t(\n 'public~Pre-existing host file or directory, generally for privileged system daemons or other agents tied to the host.',\n ),\n },\n gitRepo: {\n id: 'gitRepo',\n label: i18next.t('public~Git repo'),\n description: i18next.t('public~Git repository at a particular revision.'),\n },\n nfs: {\n id: 'nfs',\n label: i18next.t('public~NFS'),\n description: i18next.t('public~NFS volume that will be mounted in the host machine.'),\n },\n secret: {\n id: 'secret',\n label: i18next.t('public~Secret'),\n description: i18next.t('public~Secret to populate volume.'),\n },\n gcePersistentDisk: {\n id: 'gcePersistentDisk',\n label: i18next.t('public~GCE Persistent Disk'),\n description: i18next.t('public~GCE disk resource attached to the host machine on demand.'),\n },\n awsElasticBlockStore: {\n id: 'awsElasticBlockStore',\n label: i18next.t('public~AWS Elastic Block Store'),\n description: i18next.t('public~AWS disk resource attached to the host machine on demand.'),\n },\n glusterfs: {\n id: 'glusterfs',\n label: i18next.t('public~Gluster FS'),\n description: i18next.t('public~GlusterFS volume that will be mounted on the host machine.'),\n },\n iscsi: {\n id: 'iscsi',\n label: i18next.t('public~iSCSI'),\n description: i18next.t('public~iSCSI disk attached to host machine on demand'),\n },\n configMap: {\n id: 'configMap',\n label: i18next.t('public~ConfigMap'),\n description: i18next.t('public~ConfigMap to be consumed in volume.'),\n },\n projected: {\n id: 'projected',\n label: i18next.t('public~Projected'),\n description: i18next.t(\n 'public~A projected volume maps several existing volume sources into the same directory.',\n ),\n },\n};\n\nexport const getVolumeType = (volume: Volume) => {\n if (!volume) {\n return null;\n }\n return _.find(VolumeSource, function (v) {\n return !!volume[v.id];\n });\n};\n\nconst genericFormatter = (volInfo) => {\n const keys = Object.keys(volInfo).sort();\n const parts = keys.map(function (key) {\n if (key === 'readOnly') {\n return '';\n }\n return volInfo[key];\n });\n if (keys.indexOf('readOnly') !== -1) {\n parts.push(volInfo.readOnly ? 'ro' : 'rw');\n }\n return parts.join(' ') || null;\n};\n\nexport const getVolumeLocation = (volume: Volume) => {\n const vtype = getVolumeType(volume);\n if (!vtype) {\n return null;\n }\n\n const typeID = vtype.id;\n const info = volume[typeID];\n switch (typeID) {\n // Override any special formatting cases.\n case VolumeSource.gitRepo.id:\n return `${info.repository}:${info.revision}`;\n case VolumeSource.configMap.id:\n case VolumeSource.emptyDir.id:\n case VolumeSource.secret.id:\n case VolumeSource.projected.id:\n return null;\n // Defaults to space separated sorted keys.\n default:\n return genericFormatter(info);\n }\n};\n\nexport const getRestartPolicyLabel = (pod: PodKind) => _.get(getRestartPolicy(pod), 'label', '');\n\nexport type PodReadiness = string;\nexport type PodPhase = string;\n\nexport const getVolumeMountPermissions = (v: VolumeMount) => {\n if (!v) {\n return null;\n }\n\n return v.readOnly ? 'Read-only' : 'Read/Write';\n};\n\nexport const getVolumeMountsByPermissions = (pod: PodKind) => {\n if (!pod || !pod.spec || !pod.spec.volumes) {\n return [];\n }\n const m = {};\n\n const volumes = (pod.spec.volumes || []).reduce((p, v: Volume) => {\n p[v.name] = v;\n return p;\n }, {});\n\n _.forEach(pod.spec.containers, (c: ContainerSpec) => {\n _.forEach(c.volumeMounts, (v: VolumeMount) => {\n const k = `${v.name}_${v.readOnly ? 'ro' : 'rw'}`;\n const mount = { container: c.name, mountPath: v.mountPath, subPath: v.subPath };\n if (k in m) {\n return m[k].mounts.push(mount);\n }\n m[k] = { mounts: [mount], name: v.name, readOnly: !!v.readOnly, volume: volumes[v.name] };\n });\n });\n\n return _.values(m);\n};\n\nexport const podRestarts = (pod: PodKind): number => {\n if (!pod || !pod.status) {\n return 0;\n }\n const { initContainerStatuses = [], containerStatuses = [] } = pod.status;\n const isInitializing = initContainerStatuses.some(({ state }) => {\n return !state.terminated || state.terminated.exitCode !== 0;\n });\n const toCheck = isInitializing ? initContainerStatuses : containerStatuses;\n return toCheck.reduce(\n (restartCount, status: ContainerStatus) => restartCount + status.restartCount,\n 0,\n );\n};\n\nexport const podReadiness = (pod: PodKind): { readyCount: number; totalContainers: number } => {\n // Don't include init containers in readiness count. This is consistent with the CLI.\n const containerStatuses = pod?.status?.containerStatuses || [];\n return containerStatuses.reduce(\n (acc, { ready }: ContainerStatus) => {\n if (ready) {\n acc.readyCount = acc.readyCount + 1;\n }\n return acc;\n },\n { readyCount: 0, totalContainers: containerStatuses.length },\n );\n};\n\n// This logic is replicated from k8s (at this writing, Kubernetes 1.17)\n// (See https://github.com/kubernetes/kubernetes/blob/release-1.17/pkg/printers/internalversion/printers.go)\nexport const podPhase = (pod: PodKind): PodPhase => {\n if (!pod || !pod.status) {\n return '';\n }\n\n if (pod.metadata.deletionTimestamp) {\n return 'Terminating';\n }\n\n if (pod.status.reason === 'NodeLost') {\n return 'Unknown';\n }\n\n if (pod.status.reason === 'Evicted') {\n return 'Evicted';\n }\n\n let initializing = false;\n let phase = pod.status.phase || pod.status.reason;\n\n _.each(pod.status.initContainerStatuses, (container: ContainerStatus, i: number) => {\n const { terminated, waiting } = container.state;\n if (terminated && terminated.exitCode === 0) {\n return true;\n }\n\n initializing = true;\n if (terminated && terminated.reason) {\n phase = `Init:${terminated.reason}`;\n } else if (terminated && !terminated.reason) {\n phase = terminated.signal\n ? `Init:Signal:${terminated.signal}`\n : `Init:ExitCode:${terminated.exitCode}`;\n } else if (waiting && waiting.reason && waiting.reason !== 'PodInitializing') {\n phase = `Init:${waiting.reason}`;\n } else {\n phase = `Init:${i}/${pod.status.initContainerStatuses.length}`;\n }\n return false;\n });\n\n if (!initializing) {\n let hasRunning = false;\n const containerStatuses = pod.status.containerStatuses || [];\n for (let i = containerStatuses.length - 1; i >= 0; i--) {\n const {\n state: { running, terminated, waiting },\n ready,\n } = containerStatuses[i];\n if (terminated && terminated.reason) {\n phase = terminated.reason;\n } else if (waiting && waiting.reason) {\n phase = waiting.reason;\n } else if (waiting && !waiting.reason) {\n phase = terminated.signal\n ? `Signal:${terminated.signal}`\n : `ExitCode:${terminated.exitCode}`;\n } else if (running && ready) {\n hasRunning = true;\n }\n }\n\n // Change pod status back to \"Running\" if there is at least one container\n // still reporting as \"Running\" status.\n if (phase === 'Completed' && hasRunning) {\n phase = 'Running';\n }\n }\n\n return phase;\n};\n\nexport const podPhaseFilterReducer = (pod: PodKind): PodPhase => {\n const status = podPhase(pod);\n if (status === 'Terminating') {\n return status;\n }\n if (status.includes('CrashLoopBackOff')) {\n return 'CrashLoopBackOff';\n }\n return _.get(pod, 'status.phase', 'Unknown');\n};\n\nexport const isWindowsPod = (pod: PodKind): boolean => {\n return pod?.spec?.tolerations?.some((t) => t.key === 'os' && t.value === 'Windows');\n};\n\nexport const isContainerCrashLoopBackOff = (pod: PodKind, containerName: string): boolean => {\n const containerStatus = pod?.status?.containerStatuses?.find((c) => c.name === containerName);\n const waitingReason = containerStatus?.state?.waiting?.reason;\n return waitingReason === 'CrashLoopBackOff';\n};\n","import { coFetch } from '@console/internal/co-fetch';\nimport { ConfigMapModel } from '@console/internal/models';\nimport { ConfigMapKind, resourceURL } from '@console/internal/module/k8s';\n\nexport const USER_SETTING_CONFIGMAP_NAMESPACE = 'openshift-console-user-settings';\n\nexport const createConfigMap = async (): Promise => {\n try {\n const response = await coFetch('/api/console/user-settings', {\n method: 'POST',\n });\n return response.json();\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Could not create user settings ConfigMap', err);\n throw err;\n }\n};\n\nexport const updateConfigMap = async (\n configMap: ConfigMapKind,\n key: string,\n value: string,\n): Promise => {\n const url = resourceURL(ConfigMapModel, {\n ns: configMap.metadata.namespace,\n name: configMap.metadata.name,\n });\n const patch = {\n data: {\n [key]: value,\n },\n };\n // Use JSON Merge Patch instead of normal JSON Patch because JSON Patch calls\n // fail if there is no data defined.\n try {\n const response = await coFetch(url, {\n method: 'PATCH',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/merge-patch+json;charset=UTF-8',\n },\n body: JSON.stringify(patch),\n });\n return response.json();\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Could not update (patch) user settings ConfigMap', err);\n throw err;\n }\n};\n\nexport const deseralizeData = (data: string | null) => {\n if (typeof data !== 'string') {\n return data;\n }\n try {\n return JSON.parse(data);\n } catch {\n return data;\n }\n};\n\nexport const seralizeData = (data: T) => {\n if (typeof data === 'string') {\n return data;\n }\n return JSON.stringify(data);\n};\n","import { Alert } from '@console/dynamic-plugin-sdk';\n\nexport const getAlertSeverity = (alert: Alert) =>\n alert && alert.labels ? alert.labels.severity : null;\nexport const getAlertMessage = (alert: Alert) =>\n alert && alert.annotations ? alert.annotations.message : null;\nexport const getAlertDescription = (alert: Alert) =>\n alert && alert.annotations ? alert.annotations.description : null;\nexport const getAlertSummary = (alert: Alert) => alert?.annotations?.summary || null;\nexport const getAlertTime = (alert: Alert) => (alert ? alert.activeAt : null);\nexport const getAlertName = (alert: Alert) =>\n alert && alert.labels ? alert.labels.alertname : null;\n","import * as _ from 'lodash-es';\nimport { ExtensionK8sGroupModel } from '@console/dynamic-plugin-sdk/src/api/common-types';\nimport {\n CustomResourceDefinitionKind,\n GroupVersionKind,\n K8sKind,\n K8sResourceCommon,\n K8sResourceKind,\n K8sResourceKindReference,\n OwnerReference,\n modelFor,\n} from './index';\nimport { referenceForGroupVersionKind, referenceForModel } from './k8s-ref';\n\nexport * from './k8s-ref';\n\nexport const getQN: (obj: K8sResourceKind) => string = (obj) => {\n const { name, namespace } = obj.metadata;\n // Name + namespace is not unique for PackageManifest resources, so include the catalog source.\n // TODO: We should be able to remove this when the upstream OLM bug is fixed:\n // https://bugzilla.redhat.com/show_bug.cgi?id=1814822\n if (obj.apiVersion === 'packages.operators.coreos.com/v1' && obj.kind === 'PackageManifest') {\n return `(${obj.status?.catalogSource})-${name}`;\n }\n return (namespace ? `(${namespace})-` : '') + name;\n};\n\nexport const k8sBasePath = `${window.SERVER_FLAGS.basePath}api/kubernetes`;\n\nexport const getGroupVersionKind = (\n ref: GroupVersionKind | string,\n): [string, string, string] | undefined => {\n const parts = ref.split('~');\n if (parts.length !== 3) {\n return undefined;\n }\n return parts as [string, string, string];\n};\n\nexport const isGroupVersionKind = (ref: GroupVersionKind | string) => ref?.split('~').length === 3;\n\nexport const groupVersionFor = (apiVersion: string) => ({\n group: apiVersion.split('/').length === 2 ? apiVersion.split('/')[0] : 'core',\n version: apiVersion.split('/').length === 2 ? apiVersion.split('/')[1] : apiVersion,\n});\n\nconst parseAPIVersion = (version: string) => {\n const parsed = /^v(\\d+)(?:(alpha|beta)(\\d+))?$/.exec(version);\n return parsed\n ? { majorVersion: Number(parsed[1]), qualifier: parsed[2], minorVersion: Number(parsed[3]) }\n : null;\n};\n\nexport const apiVersionCompare = (v1: string, v2: string) => {\n const v1Parsed = parseAPIVersion(v1);\n const v2Parsed = parseAPIVersion(v2);\n\n // Check null parsed versions first\n if (!v1Parsed || !v2Parsed) {\n // If a value fails null check order it last\n if (v1Parsed) {\n return -1;\n }\n if (v2Parsed) {\n return 1;\n }\n return v1.localeCompare(v2);\n }\n // Then sort on major version with no qualifiers: v3 > v1\n if (\n v1Parsed.majorVersion !== v2Parsed.majorVersion &&\n !v1Parsed.qualifier &&\n !v2Parsed.qualifier\n ) {\n return v2Parsed.majorVersion - v1Parsed.majorVersion;\n }\n // Then sort on any version with no qualifier over a qualifier: v1 > v3alpha\n if (_.isEmpty(v1Parsed.qualifier) !== _.isEmpty(v2Parsed.qualifier)) {\n return v1Parsed.qualifier ? 1 : -1;\n }\n // Beta beats alpha: v1beta1 > v1alpha1\n const isBetaV1 = v1Parsed.qualifier === 'beta';\n const isBetaV2 = v2Parsed.qualifier === 'beta';\n if (isBetaV1 !== isBetaV2) {\n return isBetaV1 ? -1 : 1;\n }\n // Same qualifier, then numeric values win: v2beta2 > v1beta2\n if (v1Parsed.majorVersion !== v2Parsed.majorVersion) {\n return v2Parsed.majorVersion - v1Parsed.majorVersion;\n }\n // Finally compare minor version: v1beta2 > v1beta1\n return v2Parsed.minorVersion - v1Parsed.minorVersion;\n};\n\nexport const getLatestVersionForCRD = (crd: CustomResourceDefinitionKind) => {\n const sorted = crd.spec.versions\n ?.filter((version) => version.served)\n ?.map(({ name }) => name)\n ?.sort(apiVersionCompare);\n return sorted[0];\n};\n\nexport const referenceForCRD = (obj: CustomResourceDefinitionKind): GroupVersionKind =>\n referenceForGroupVersionKind(obj.spec.group)(getLatestVersionForCRD(obj))(obj.spec.names.kind);\n\nexport const referenceForOwnerRef = (ownerRef: OwnerReference): GroupVersionKind =>\n referenceForGroupVersionKind(groupVersionFor(ownerRef.apiVersion).group)(\n groupVersionFor(ownerRef.apiVersion).version,\n )(ownerRef.kind);\n\nexport const referenceForExtensionModel = (model: ExtensionK8sGroupModel): GroupVersionKind =>\n referenceForGroupVersionKind(model?.group || 'core')(model?.version)(model?.kind);\n\nexport const referenceFor = ({ kind, apiVersion }: K8sResourceCommon): GroupVersionKind => {\n if (!kind) {\n return '';\n }\n\n // `apiVersion` is optional in some k8s object references (for instance,\n // event `involvedObject`). The CLI resolves the version from API discovery.\n // Use `modelFor` to get the version from the model when missing.\n if (!apiVersion) {\n const m = modelFor(kind);\n return m ? referenceForModel(m) : '';\n }\n\n const { group, version } = groupVersionFor(apiVersion);\n return referenceForGroupVersionKind(group)(version)(kind);\n};\n\nexport const kindForReference = (ref: K8sResourceKindReference) =>\n isGroupVersionKind(ref) ? ref.split('~')[2] : ref;\n\nexport const apiGroupForReference = (ref: GroupVersionKind) => ref.split('~')[0];\n\nexport const versionForReference = (ref: GroupVersionKind) => ref.split('~')[1];\n\nexport const apiVersionForReference = (ref: GroupVersionKind) =>\n isGroupVersionKind(ref) ? `${ref.split('~')[0]}/${ref.split('~')[1]}` : ref;\n\nexport const nameForModel = (model: K8sKind) => [model.plural, model.apiGroup].join('.');\n","import { Dispatch } from 'react-redux';\nimport * as _ from 'lodash-es';\nimport { ActionType as Action, action } from 'typesafe-actions';\n\nimport { FLAGS } from '@console/shared/src/constants/common';\nimport { isCustomFeatureFlag, CustomFeatureFlag } from '@console/plugin-sdk/src/typings';\nimport {\n subscribeToExtensions,\n extensionDiffListener,\n} from '@console/plugin-sdk/src/api/pluginSubscriptionService';\nimport {\n FeatureFlag as DynamicFeatureFlag,\n isFeatureFlag as isDynamicFeatureFlag,\n SetFeatureFlag,\n} from '@console/dynamic-plugin-sdk/src/extensions/feature-flags';\nimport { setUser } from '@console/dynamic-plugin-sdk/src/app/core/actions/core';\nimport { resolveExtension } from '@console/dynamic-plugin-sdk/src/coderefs/coderef-resolver';\nimport store from '../redux';\nimport { GroupModel, UserModel, VolumeSnapshotContentModel } from '../models';\nimport { ClusterVersionKind } from '../module/k8s/types';\nimport { receivedResources } from '@console/dynamic-plugin-sdk/src/app/k8s/actions/k8s';\nimport { setClusterID, setCreateProjectMessage } from './common';\nimport client, { fetchURL } from '../graphql/client';\nimport { SSARQuery, SSRQuery } from './features.gql';\nimport {\n SSARQueryType,\n SSARQueryVariables,\n SSRQueryType,\n} from '../../@types/console/generated/graphql-schema';\nimport { UserInfo } from '@console/internal/module/k8s';\n\nexport enum ActionType {\n SetFlag = 'setFlag',\n ClearSSARFlags = 'clearSSARFlags',\n}\n\nexport const defaults = _.mapValues(FLAGS, (flag) =>\n flag === FLAGS.AUTH_ENABLED ? !window.SERVER_FLAGS.authDisabled : undefined,\n);\n\nexport const setFlag = (flag: FLAGS | string, value: boolean) =>\n action(ActionType.SetFlag, { flag, value });\n\nconst retryFlagDetection = (dispatch, cb) => {\n setTimeout(() => cb(dispatch), 15000);\n};\n\nexport const handleError = (res, flag, dispatch, cb) => {\n const status = res?.response?.status;\n if (_.includes([403, 502], status)) {\n dispatch(setFlag(flag, undefined));\n }\n if (!_.includes([401, 403, 500], status)) {\n retryFlagDetection(dispatch, cb);\n }\n};\n\nconst projectListPath = '/apis/project.openshift.io/v1/projects?limit=1';\nconst detectShowOpenShiftStartGuide = (dispatch, canListNS: boolean = false) => {\n // Skip the project check if we know the user can list all namespaces. This\n // avoids potentially listing thousands of projects more than once (projects\n // dropdown and flag check). Even though we only ask for one project, the\n // projects API currently doesn't support paging.\n //\n // TODO: Consider adding a global watch for projects / namespaces, which\n // could remove the need for this flag entirely. It would also prevent us\n // from re-listing projects when switching from a namespace-scoped resource\n // to a cluster-scoped resource and back.\n if (canListNS) {\n dispatch(setFlag(FLAGS.SHOW_OPENSHIFT_START_GUIDE, false));\n return;\n }\n\n fetchURL(projectListPath).then(\n (res) => dispatch(setFlag(FLAGS.SHOW_OPENSHIFT_START_GUIDE, _.isEmpty(res.items))),\n (err) =>\n err?.response?.status === 404\n ? dispatch(setFlag(FLAGS.SHOW_OPENSHIFT_START_GUIDE, false))\n : handleError(\n err,\n FLAGS.SHOW_OPENSHIFT_START_GUIDE,\n dispatch,\n detectShowOpenShiftStartGuide,\n ),\n );\n};\n\n// Check the user's access to some resources.\nconst ssarChecks = [\n {\n flag: FLAGS.CAN_CREATE_NS,\n resourceAttributes: { resource: 'namespaces', verb: 'get' },\n },\n {\n flag: FLAGS.CAN_GET_NS,\n resourceAttributes: { resource: 'namespaces', verb: 'get' },\n },\n {\n flag: FLAGS.CAN_LIST_NS,\n resourceAttributes: { resource: 'namespaces', verb: 'list' },\n after: detectShowOpenShiftStartGuide,\n },\n {\n flag: FLAGS.CAN_LIST_NODE,\n resourceAttributes: { resource: 'nodes', verb: 'list' },\n },\n {\n flag: FLAGS.CAN_LIST_PV,\n resourceAttributes: { resource: 'persistentvolumes', verb: 'list' },\n },\n {\n flag: FLAGS.CAN_LIST_USERS,\n resourceAttributes: {\n group: UserModel.apiGroup,\n resource: UserModel.plural,\n verb: 'list',\n },\n },\n {\n flag: FLAGS.CAN_LIST_GROUPS,\n resourceAttributes: {\n group: GroupModel.apiGroup,\n resource: GroupModel.plural,\n verb: 'list',\n },\n },\n {\n flag: FLAGS.CAN_LIST_CRD,\n resourceAttributes: {\n group: 'apiextensions.k8s.io',\n resource: 'customresourcedefinitions',\n verb: 'list',\n },\n },\n {\n // TODO: Move into OLM plugin\n flag: FLAGS.CAN_LIST_OPERATOR_GROUP,\n resourceAttributes: {\n group: 'operators.coreos.com',\n resource: 'operatorgroups',\n verb: 'list',\n },\n },\n {\n // TODO: Move into OLM plugin\n flag: FLAGS.CAN_LIST_PACKAGE_MANIFEST,\n resourceAttributes: {\n group: 'packages.operators.coreos.com',\n resource: 'packagemanifests',\n verb: 'list',\n },\n },\n // TODO: Move into Core Plugin\n {\n flag: FLAGS.CAN_LIST_VSC,\n resourceAttributes: {\n group: VolumeSnapshotContentModel.apiGroup,\n resource: VolumeSnapshotContentModel.plural,\n verb: 'list',\n },\n },\n];\n\nexport const clearSSARFlags = () =>\n action(ActionType.ClearSSARFlags, {\n flags: ssarChecks.map((check) => check.flag),\n });\n\nconst featureActions = { setFlag };\nconst clearFlags = { clearSSARFlags };\n\nexport type FeatureAction = Action<\n typeof featureActions | typeof receivedResources | typeof clearFlags\n>;\n\n// This config API contains the OpenShift Project, and other mandatory resources\nconst openshiftPath = '/apis/config.openshift.io/v1';\nconst detectOpenShift = (dispatch) =>\n fetchURL(openshiftPath).then(\n (res) => dispatch(setFlag(FLAGS.OPENSHIFT, _.size(res.resources) > 0)),\n (err) =>\n err?.response?.status === 404\n ? dispatch(setFlag(FLAGS.OPENSHIFT, false))\n : handleError(err, FLAGS.OPENSHIFT, dispatch, detectOpenShift),\n );\n\nconst clusterVersionPath = '/apis/config.openshift.io/v1/clusterversions/version';\nconst detectClusterVersion = (dispatch) =>\n fetchURL(clusterVersionPath).then(\n (clusterVersion) => {\n const hasClusterVersion = !_.isEmpty(clusterVersion);\n dispatch(setFlag(FLAGS.CLUSTER_VERSION, hasClusterVersion));\n dispatch(setClusterID(clusterVersion.spec.clusterID));\n },\n (err) => {\n if (_.includes([403, 404], err?.response?.status)) {\n dispatch(setFlag(FLAGS.CLUSTER_VERSION, false));\n } else {\n handleError(err, FLAGS.CLUSTER_VERSION, dispatch, detectClusterVersion);\n }\n },\n );\n\nconst projectRequestPath = '/apis/project.openshift.io/v1/projectrequests';\nconst detectCanCreateProject = (dispatch) =>\n fetchURL(projectRequestPath).then(\n (res) => dispatch(setFlag(FLAGS.CAN_CREATE_PROJECT, res.status === 'Success')),\n (err) => {\n const status = err?.response?.status;\n if (status === 403) {\n dispatch(setFlag(FLAGS.CAN_CREATE_PROJECT, false));\n dispatch(setCreateProjectMessage(_.get(err, 'json.details.causes[0].message')));\n } else if (!_.includes([400, 404, 500], status)) {\n retryFlagDetection(dispatch, detectCanCreateProject);\n }\n },\n );\n\nconst detectUser = (dispatch: Dispatch) =>\n client\n .query({\n query: SSRQuery,\n })\n .then(\n (res) => {\n const userInfo = res.data.selfSubjectReview.status.userInfo;\n const newUserInfo: UserInfo = {};\n if (userInfo.extra) {\n try {\n newUserInfo.extra = JSON.parse(userInfo.extra);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error parsing UserInfo JSON:', error);\n }\n }\n newUserInfo.groups = userInfo.groups;\n newUserInfo.uid = userInfo.uid;\n newUserInfo.username = userInfo.username;\n dispatch(setUser(newUserInfo));\n },\n (err) => {\n // eslint-disable-next-line no-console\n console.error('Error retrieving SelfSubjectReview: ', err);\n if (!_.includes([400, 404, 500], err?.response?.status)) {\n retryFlagDetection(dispatch, detectUser);\n }\n },\n );\n\nconst ssarCheckActions = ssarChecks.map(({ flag, resourceAttributes, after }) => {\n const fn = (dispatch: Dispatch) =>\n client\n .query({\n query: SSARQuery,\n variables: resourceAttributes,\n })\n .then(\n (res) => {\n const allowed: boolean = res.data.selfSubjectAccessReview.status.allowed;\n dispatch(setFlag(flag, allowed));\n if (after) {\n after(dispatch, allowed);\n }\n },\n (err) => handleError({ response: err.graphQLErrors[0]?.extensions }, flag, dispatch, fn),\n );\n return fn;\n});\n\nexport const detectFeatures = () => (dispatch: Dispatch) => {\n subscribeToExtensions(\n extensionDiffListener((added) =>\n added.forEach((detector) => detector.properties.detect(dispatch)),\n ),\n isCustomFeatureFlag,\n );\n [\n detectOpenShift,\n detectCanCreateProject,\n detectClusterVersion,\n detectUser,\n ...ssarCheckActions,\n ].forEach((detect) => detect(dispatch));\n};\n\nexport const featureFlagController: SetFeatureFlag = (flag, enabled) => {\n store.dispatch(setFlag(flag, enabled));\n};\n\nsubscribeToExtensions(\n extensionDiffListener((added) => {\n added.forEach((e) => {\n resolveExtension(e)\n .then((resolvedExtension) => {\n resolvedExtension.properties.handler(featureFlagController);\n })\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error('Resolve extension failed:', error);\n });\n });\n }),\n isDynamicFeatureFlag,\n);\n","export const LAST_PERSPECTIVE_USER_SETTINGS_KEY = 'console.lastPerspective';\nexport const LAST_PERSPECTIVE_LOCAL_STORAGE_KEY = `bridge/last-perspective`;\nexport const HIDE_USER_WORKLOAD_NOTIFICATIONS_USER_SETTINGS_KEY =\n 'console.hideUserWorkloadNotifications';\nexport const FLAG_DEVELOPER_PERSPECTIVE = 'DEVELOPER_PERSPECTIVE';\nexport const ACM_PERSPECTIVE_ID = 'acm';\nexport const ADMIN_PERSPECTIVE_ID = 'admin';\n","import * as _ from 'lodash';\nimport { K8sModel } from '../../../api/common-types';\nimport * as k8sActions from '../../../app/k8s/actions/k8s';\nimport { SDKStoreState } from '../../../app/redux-types';\nimport { WatchK8sResource } from '../../../extensions/console-types';\nimport { CustomError } from '../../error/custom-error';\nimport { getReferenceForModel } from '../k8s-ref';\nimport { GetIDAndDispatch, MakeQuery, Query } from './k8s-watch-types';\n\nexport class NoModelError extends CustomError {\n constructor() {\n super('Model does not exist');\n }\n}\n\nexport const makeReduxID = (k8sKind: K8sModel, query: Query) => {\n let qs = '';\n if (!_.isEmpty(query)) {\n qs = `---${JSON.stringify(query)}`;\n }\n\n return `${getReferenceForModel(k8sKind || ({} as K8sModel))}${qs}`;\n};\n\nexport const makeQuery: MakeQuery = (namespace, labelSelector, fieldSelector, name, limit) => {\n const query: Query = {};\n\n if (!_.isEmpty(labelSelector)) {\n query.labelSelector = labelSelector;\n }\n\n if (!_.isEmpty(namespace)) {\n query.ns = namespace;\n }\n\n if (!_.isEmpty(name)) {\n query.name = name;\n }\n\n if (fieldSelector) {\n query.fieldSelector = fieldSelector;\n }\n\n if (limit) {\n query.limit = limit;\n }\n return query;\n};\n\nexport const INTERNAL_REDUX_IMMUTABLE_TOARRAY_CACHE_SYMBOL = Symbol('_cachedToArrayResult');\nexport const INTERNAL_REDUX_IMMUTABLE_TOJSON_CACHE_SYMBOL = Symbol('_cachedToJSONResult');\n\nexport const getReduxData = (immutableData, resource: WatchK8sResource) => {\n if (!immutableData) {\n return null;\n }\n if (resource.isList && immutableData.toArray) {\n if (!immutableData[INTERNAL_REDUX_IMMUTABLE_TOARRAY_CACHE_SYMBOL]) {\n immutableData[INTERNAL_REDUX_IMMUTABLE_TOARRAY_CACHE_SYMBOL] = immutableData\n .toArray()\n .map((a) => {\n if (a.toJSON) {\n if (!a[INTERNAL_REDUX_IMMUTABLE_TOJSON_CACHE_SYMBOL]) {\n a[INTERNAL_REDUX_IMMUTABLE_TOJSON_CACHE_SYMBOL] = a.toJSON();\n }\n return a[INTERNAL_REDUX_IMMUTABLE_TOJSON_CACHE_SYMBOL];\n }\n return a;\n });\n }\n return immutableData[INTERNAL_REDUX_IMMUTABLE_TOARRAY_CACHE_SYMBOL];\n }\n if (immutableData.toJSON) {\n if (!immutableData[INTERNAL_REDUX_IMMUTABLE_TOJSON_CACHE_SYMBOL]) {\n immutableData[INTERNAL_REDUX_IMMUTABLE_TOJSON_CACHE_SYMBOL] = immutableData.toJSON();\n }\n return immutableData[INTERNAL_REDUX_IMMUTABLE_TOJSON_CACHE_SYMBOL];\n }\n return null;\n};\n\nexport const getIDAndDispatch: GetIDAndDispatch = (resource, k8sModel) => {\n if (!k8sModel || !resource) {\n return null;\n }\n const query = makeQuery(\n resource.namespace,\n resource.selector,\n resource.fieldSelector,\n resource.name,\n resource.limit,\n );\n const id = makeReduxID(k8sModel, query);\n const dispatch = resource.isList\n ? k8sActions.watchK8sList(id, query, k8sModel, null, resource.partialMetadata)\n : k8sActions.watchK8sObject(\n id,\n resource.name,\n resource.namespace,\n query,\n k8sModel,\n resource.partialMetadata,\n );\n return { id, dispatch };\n};\n","import * as React from 'react';\nimport * as classNames from 'classnames';\nimport * as _ from 'lodash-es';\nimport { Link } from 'react-router-dom-v5-compat';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore: FIXME missing exports due to out-of-sync @types/react-redux version\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport {\n Breadcrumb,\n BreadcrumbItem,\n Button,\n Split,\n SplitItem,\n Text,\n TextContent,\n TextVariants,\n} from '@patternfly/react-core';\nimport { ResourceStatus } from '@console/dynamic-plugin-sdk';\nimport { RootState } from '@console/internal/redux';\nimport {\n OverviewItem,\n Status,\n HealthChecksAlert,\n YellowExclamationTriangleIcon,\n useCsvWatchResource,\n} from '@console/shared';\nimport { getActiveNamespace } from '@console/internal/reducers/ui';\nimport {\n ActionsMenu,\n FirehoseResult,\n KebabAction,\n KebabOption,\n ResourceIcon,\n resourcePath,\n} from './index';\nimport { connectToModel } from '../../kinds';\nimport {\n K8sKind,\n K8sResourceKind,\n K8sResourceKindReference,\n referenceForModel,\n} from '../../module/k8s';\nimport { ManagedByOperatorLink } from './managed-by';\n\nexport const ResourceItemDeleting = () => {\n const { t } = useTranslation();\n return (\n \n {t('public~Deleting')}\n \n );\n};\n\nexport const BreadCrumbs: React.SFC = ({ breadcrumbs }) => (\n \n {breadcrumbs.map((crumb, i, { length }) => {\n const isLast = i === length - 1;\n\n return (\n \n {isLast ? (\n crumb.name\n ) : (\n \n {crumb.name}\n \n )}\n \n );\n })}\n \n);\n\nexport const ActionButtons: React.SFC = ({ actionButtons }) => (\n

\n {_.map(actionButtons, (actionButton, i) => {\n if (!_.isEmpty(actionButton)) {\n return (\n \n {actionButton.label}\n \n );\n }\n })}\n
\n);\n\nexport const PageHeading = connectToModel((props: PageHeadingProps) => {\n const {\n kind,\n kindObj,\n detail,\n title,\n menuActions,\n buttonActions,\n customActionMenu,\n link,\n obj,\n breadcrumbs,\n breadcrumbsFor,\n titleFunc,\n style,\n customData,\n badge,\n getResourceStatus = (resource: K8sResourceKind): string =>\n _.get(resource, ['status', 'phase'], null),\n className,\n centerText,\n helpText,\n 'data-test': dataTestId,\n } = props;\n const extraResources = _.reduce(\n props.resourceKeys,\n (extraObjs, key) => ({ ...extraObjs, [key]: _.get(props[key], 'data') }),\n {},\n );\n const data = _.get(obj, 'data');\n const resourceTitle = titleFunc && data ? titleFunc(data) : title;\n const hasButtonActions = !_.isEmpty(buttonActions);\n const hasMenuActions = _.isFunction(menuActions) || !_.isEmpty(menuActions);\n const hasData = !_.isEmpty(data);\n const showActions =\n (hasButtonActions || hasMenuActions || customActionMenu) &&\n hasData &&\n !_.get(data, 'metadata.deletionTimestamp');\n const resourceStatus = hasData && getResourceStatus ? getResourceStatus(data) : null;\n const showHeading = props.icon || kind || resourceTitle || resourceStatus || badge || showActions;\n const showBreadcrumbs = breadcrumbs || (breadcrumbsFor && !_.isEmpty(data));\n return (\n <>\n {showBreadcrumbs && (\n
\n \n \n \n \n {badge && (\n {{badge}}\n )}\n \n
\n )}\n \n {showHeading && (\n \n {props.icon ? (\n \n ) : (\n
\n {kind && }{' '}\n \n {resourceTitle}\n {data?.metadata?.namespace && data?.metadata?.ownerReferences?.length && (\n \n )}\n \n {resourceStatus && (\n \n \n \n )}\n
\n )}\n {!breadcrumbsFor && !breadcrumbs && badge && (\n {badge}\n )}\n {link &&
{link}
}\n {showActions && (\n
\n {hasButtonActions && (\n a(kindObj, data))} />\n )}\n {hasMenuActions && (\n a(kindObj, data, extraResources, customData))\n }\n />\n )}\n {_.isFunction(customActionMenu)\n ? customActionMenu(kindObj, data)\n : customActionMenu}\n
\n )}\n \n )}\n {helpText && (\n \n \n {helpText}\n \n \n )}\n {props.children}\n
\n \n );\n});\n\nexport const SectionHeading: React.SFC = ({\n text,\n children,\n style,\n required,\n id,\n}) => (\n

\n \n {text}\n \n {children}\n

\n);\n\nexport const SidebarSectionHeading: React.SFC = ({\n text,\n children,\n style,\n className,\n}) => (\n

\n {text}\n {children}\n

\n);\n\nexport const ResourceOverviewHeading: React.SFC = ({\n kindObj,\n actions,\n resources,\n}) => {\n const { obj: resource, ...otherResources } = resources;\n const ns = useSelector((state: RootState) => getActiveNamespace(state));\n const { csvData } = useCsvWatchResource(ns);\n const isDeleting = !!resource.metadata.deletionTimestamp;\n return (\n
\n

\n
\n \n \n {resource.metadata.name}\n \n {isDeleting && }\n
\n {!isDeleting && (\n
\n a(kindObj, resource, otherResources, { csvs: csvData }))}\n />\n
\n )}\n

\n \n
\n );\n};\n\nexport type ActionButtonsProps = {\n actionButtons: any[];\n};\n\nexport type BreadCrumbsProps = {\n breadcrumbs: { name: string; path: string }[];\n};\n\nexport type KebabOptionsCreator = (\n kindObj: K8sKind,\n data: K8sResourceKind,\n extraResources?: { [prop: string]: K8sResourceKind | K8sResourceKind[] },\n customData?: any,\n) => KebabOption[];\n\nexport type PageHeadingProps = {\n 'data-test'?: string;\n breadcrumbs?: { name: string; path: string }[];\n breadcrumbsFor?: (obj: K8sResourceKind) => { name: string; path: string }[];\n buttonActions?: any[];\n children?: React.ReactChildren;\n detail?: boolean;\n kind?: K8sResourceKindReference;\n kindObj?: K8sKind;\n menuActions?: Function[] | KebabOptionsCreator; // FIXME should be \"KebabAction[] |\" refactor pipeline-actions.tsx, etc.\n customActionMenu?:\n | React.ReactNode\n | ((kindObj: K8sKind, obj: K8sResourceKind) => React.ReactNode); // Renders a custom action menu.\n link?: React.ReactNode;\n obj?: FirehoseResult;\n resourceKeys?: string[];\n style?: object;\n title?: string | JSX.Element;\n titleFunc?: (obj: K8sResourceKind) => string | JSX.Element;\n customData?: any;\n badge?: React.ReactNode;\n icon?: React.ComponentType<{ obj?: K8sResourceKind }>;\n getResourceStatus?: (resource: K8sResourceKind) => string;\n className?: string;\n centerText?: boolean;\n helpText?: React.ReactNode;\n};\n\nexport type ResourceOverviewHeadingProps = {\n actions: KebabAction[];\n kindObj: K8sKind;\n resources?: OverviewItem;\n};\n\nexport type SectionHeadingProps = {\n children?: any;\n style?: any;\n text: string;\n required?: boolean;\n id?: string;\n};\n\nexport type SidebarSectionHeadingProps = {\n children?: any;\n style?: any;\n className?: string;\n text: string;\n};\n\nBreadCrumbs.displayName = 'BreadCrumbs';\nPageHeading.displayName = 'PageHeading';\nResourceOverviewHeading.displayName = 'ResourceOverviewHeading';\nSectionHeading.displayName = 'SectionHeading';\nSidebarSectionHeading.displayName = 'SidebarSectionHeading';\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore: FIXME missing exports due to out-of-sync @types/react-redux version\nimport { useSelector } from 'react-redux';\nimport { K8sModel } from '../../../api/common-types';\nimport {\n UseK8sModel,\n K8sResourceKindReference,\n K8sGroupVersionKind,\n} from '../../../extensions/console-types';\nimport { getGroupVersionKindForReference, transformGroupVersionKindToReference } from '../k8s-ref';\n\nexport const getK8sModel = (\n k8s,\n k8sGroupVersionKind?: K8sResourceKindReference | K8sGroupVersionKind,\n): K8sModel => {\n const kindReference = transformGroupVersionKindToReference(k8sGroupVersionKind);\n return kindReference\n ? k8s.getIn(['RESOURCES', 'models', kindReference]) ??\n k8s.getIn(['RESOURCES', 'models', getGroupVersionKindForReference(kindReference).kind])\n : undefined;\n};\n\n/**\n * Hook that retrieves the k8s model for provided K8sGroupVersionKind from redux.\n * @param groupVersionKind group, version, kind of k8s resource `K8sGroupVersionKind` is preferred alternatively can pass reference for group, version, kind which is deprecated i.e `group~version~kind` `K8sResourceKindReference`.\n * @returns An array with the first item as k8s model and second item as inFlight status\n * @example\n * ```ts\n * const Component: React.FC = () => {\n * const [model, inFlight] = useK8sModel({ group: 'app'; version: 'v1'; kind: 'Deployment' });\n * return ...\n * }\n * ```\n */\nexport const useK8sModel: UseK8sModel = (k8sGroupVersionKind) => [\n useSelector(({ k8s }) => getK8sModel(k8s, k8sGroupVersionKind)),\n useSelector(({ k8s }) => k8s.getIn(['RESOURCES', 'inFlight']) ?? false),\n];\n","import * as React from 'react';\nimport { createHash } from 'crypto-browserify';\n// FIXME upgrading redux types is causing many errors at this time\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useSelector } from 'react-redux';\nimport { UseUserSettings, getImpersonate, getUser } from '@console/dynamic-plugin-sdk';\nimport { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';\nimport { ConfigMapModel } from '@console/internal/models';\nimport { K8sResourceKind } from '@console/internal/module/k8s';\nimport { RootState } from '@console/internal/redux';\nimport {\n createConfigMap,\n deseralizeData,\n seralizeData,\n updateConfigMap,\n USER_SETTING_CONFIGMAP_NAMESPACE,\n} from '../utils/user-settings';\nimport { useUserSettingsLocalStorage } from './useUserSettingsLocalStorage';\n\nconst alwaysUseFallbackLocalStorage = window.SERVER_FLAGS.userSettingsLocation === 'localstorage';\nif (alwaysUseFallbackLocalStorage) {\n // eslint-disable-next-line no-console\n console.info('user-settings will be stored in localstorage instead of configmap.');\n}\n\nconst useCounterRef = (initialValue: number = 0): [boolean, () => void, () => void] => {\n const counterRef = React.useRef(initialValue);\n const increment = React.useCallback(() => {\n counterRef.current += 1;\n }, []);\n const decrement = React.useCallback(() => {\n counterRef.current -= 1;\n }, []);\n return [counterRef.current !== initialValue, increment, decrement];\n};\n\nexport const useUserSettings: UseUserSettings = (key, defaultValue, sync = false) => {\n // Mount status for safety state updates\n const mounted = React.useRef(true);\n React.useEffect(() => () => (mounted.current = false), []);\n\n // Keys and values\n const keyRef = React.useRef(key?.replace(/[^-._a-zA-Z0-9]/g, '_'));\n const defaultValueRef = React.useRef(defaultValue);\n\n // Settings\n const [settings, setSettingsUnsafe] = React.useState();\n const setSettings: typeof setSettingsUnsafe = React.useCallback(\n (...args) => mounted.current && setSettingsUnsafe(...args),\n [setSettingsUnsafe],\n );\n const settingsRef = React.useRef(settings);\n settingsRef.current = settings;\n\n // Loaded\n const [loaded, setLoadedUnsafe] = React.useState(false);\n const setLoaded: typeof setLoadedUnsafe = React.useCallback(\n (...args) => mounted.current && setLoadedUnsafe(...args),\n [setLoadedUnsafe],\n );\n\n // Request counter\n const [isRequestPending, increaseRequest, decreaseRequest] = useCounterRef();\n\n const hashNameOrKubeadmin = (name: string): string | null => {\n if (!name) {\n return null;\n }\n\n if (name === 'kube:admin') {\n return 'kubeadmin';\n }\n const hash = createHash('sha256');\n hash.update(name);\n return hash.digest('hex');\n };\n\n // User and impersonate\n const userUid = useSelector((state: RootState) => {\n const impersonateName = getImpersonate(state)?.name;\n if (impersonateName) {\n return impersonateName;\n }\n const uid = getUser(state)?.uid;\n if (uid) {\n return uid;\n }\n const username = hashNameOrKubeadmin(getUser(state)?.username);\n\n return username || '';\n });\n\n const impersonate: boolean = useSelector((state: RootState) => !!getImpersonate(state));\n\n // Fallback\n const [fallbackLocalStorage, setFallbackLocalStorageUnsafe] = React.useState(\n alwaysUseFallbackLocalStorage,\n );\n const setFallbackLocalStorage: typeof setFallbackLocalStorageUnsafe = React.useCallback(\n (...args) => mounted.current && setFallbackLocalStorageUnsafe(...args),\n [setFallbackLocalStorageUnsafe],\n );\n\n const isLocalStorage = fallbackLocalStorage || impersonate;\n const [lsData, setLsDataCallback] = useUserSettingsLocalStorage(\n alwaysUseFallbackLocalStorage && !impersonate\n ? 'console-user-settings'\n : `console-user-settings-${userUid}`,\n keyRef.current,\n defaultValueRef.current,\n isLocalStorage && sync,\n impersonate,\n );\n\n const configMapResource = React.useMemo(\n () =>\n isLocalStorage\n ? null\n : {\n kind: ConfigMapModel.kind,\n namespace: USER_SETTING_CONFIGMAP_NAMESPACE,\n isList: false,\n name: `user-settings-${userUid}`,\n },\n [userUid, isLocalStorage],\n );\n const [cfData, cfLoaded, cfLoadError] = useK8sWatchResource(configMapResource);\n\n React.useEffect(() => {\n if (isLocalStorage) {\n return;\n }\n if (\n // Expected load error (404 Not found) for kubeadmin or other admins,\n // who have access to the complete openshift-console-user-settings namespace.\n cfLoadError?.response?.status === 404 ||\n // Expected load error (403 Forbidden) for all other (restricted) users,\n // which have no access to non-existing ConfigMaps in openshift-console-user-settings namespace.\n cfLoadError?.response?.status === 403 ||\n (!cfData && cfLoaded)\n ) {\n (async () => {\n try {\n await createConfigMap();\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Could not create ConfigMap for user settings:', err);\n setFallbackLocalStorage(true);\n }\n })();\n } else if (\n /**\n * update settings if key is present in config map but data is not equal to settings\n */\n cfData &&\n cfLoaded &&\n cfData.data?.hasOwnProperty(keyRef.current) &&\n seralizeData(settings) !== cfData.data[keyRef.current]\n ) {\n setSettings(deseralizeData(cfData.data[keyRef.current]));\n setLoaded(true);\n } else if (\n /**\n * if key doesn't exist in config map send patch request to add the key with default value\n */\n defaultValueRef.current !== undefined &&\n cfData &&\n cfLoaded &&\n !cfData.data?.hasOwnProperty(keyRef.current)\n ) {\n // Trigger update also when unmounted\n increaseRequest();\n updateConfigMap(cfData, keyRef.current, seralizeData(defaultValueRef.current))\n .then(() => {\n decreaseRequest();\n })\n .catch(() => {\n decreaseRequest();\n });\n setSettings(defaultValueRef.current);\n setLoaded(true);\n } else if (cfLoaded && !cfLoadError) {\n setSettings(defaultValueRef.current);\n setLoaded(true);\n } else if (cfLoadError && cfLoadError.response?.status !== 404) {\n setFallbackLocalStorage(true);\n }\n // This effect should only be run on change of configmap data, status.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cfLoadError, cfLoaded, isLocalStorage]);\n\n const callback = React.useCallback>>(\n (action: React.SetStateAction) => {\n const previousSettings = settingsRef.current;\n const newState =\n typeof action === 'function' ? (action as (prevState: T) => T)(previousSettings) : action;\n setSettings(newState);\n if (cfLoaded) {\n increaseRequest();\n updateConfigMap(cfData, keyRef.current, seralizeData(newState))\n .then(() => {\n decreaseRequest();\n })\n .catch(() => {\n decreaseRequest();\n setSettings(previousSettings);\n });\n }\n },\n [cfData, cfLoaded, decreaseRequest, increaseRequest, setSettings],\n );\n\n const resultedSettings = React.useMemo(() => {\n if (sync && cfLoaded && cfData && !isRequestPending) {\n /**\n * If key is deleted from the config map then return default value\n */\n if (!cfData.data?.hasOwnProperty(keyRef.current) && settings !== undefined) {\n return defaultValueRef.current;\n }\n if (seralizeData(settingsRef.current) !== cfData?.data?.[keyRef.current]) {\n return deseralizeData(cfData?.data?.[keyRef.current]);\n }\n }\n return settings;\n }, [sync, isRequestPending, cfData, cfLoaded, settings]);\n settingsRef.current = resultedSettings;\n\n return isLocalStorage ? [lsData, setLsDataCallback, true] : [resultedSettings, callback, loaded];\n};\n","import { Map as ImmutableMap } from 'immutable';\nimport * as _ from 'lodash';\nimport {\n K8sModel,\n MatchExpression,\n MatchLabels,\n ModelDefinition,\n Selector,\n} from '../../api/common-types';\nimport { Options } from '../../api/internal-types';\nimport { QueryParams, K8sResourceKindReference } from '../../extensions/console-types';\nimport { Extension } from '../../types';\nimport { k8sBasePath } from './k8s';\nimport { getReferenceForModel } from './k8s-ref';\nimport { WSFactory, WSOptions } from './ws-factory';\n// eslint-disable-next-line\nconst staticModels = require('@console/internal/models');\n\nconst getK8sAPIPath = ({ apiGroup = 'core', apiVersion }: K8sModel): string => {\n const isLegacy = apiGroup === 'core' && apiVersion === 'v1';\n let p = isLegacy ? '/api/' : '/apis/';\n\n if (!isLegacy && apiGroup) {\n p += `${apiGroup}/`;\n }\n\n p += apiVersion;\n return p;\n};\n\nexport const getK8sResourcePath = (model: K8sModel, options: Options): string => {\n let u = getK8sAPIPath(model);\n\n if (options.ns) {\n u += `/namespaces/${options.ns}`;\n }\n u += `/${model.plural}`;\n if (options.name) {\n // Some resources like Users can have special characters in the name.\n u += `/${encodeURIComponent(options.name)}`;\n }\n if (options.path) {\n u += `/${options.path}`;\n }\n if (!_.isEmpty(options.queryParams)) {\n const q = _.map(options.queryParams, (v, k) => {\n return `${k}=${v}`;\n });\n u += `?${q.join('&')}`;\n }\n\n return u;\n};\n\nexport const resourceURL = (model: K8sModel, options: Options): string =>\n `${k8sBasePath}${getK8sResourcePath(model, options)}`;\n\nconst toArray = (value) => (Array.isArray(value) ? value : [value]);\n\nexport const requirementToString = (requirement: MatchExpression): string => {\n if (requirement.operator === 'Equals') {\n return `${requirement.key}=${requirement.values[0]}`;\n }\n\n if (requirement.operator === 'NotEquals') {\n return `${requirement.key}!=${requirement.values[0]}`;\n }\n\n if (requirement.operator === 'Exists') {\n return requirement.key;\n }\n\n if (requirement.operator === 'DoesNotExist') {\n return `!${requirement.key}`;\n }\n\n if (requirement.operator === 'In') {\n return `${requirement.key} in (${toArray(requirement.values).join(',')})`;\n }\n\n if (requirement.operator === 'NotIn') {\n return `${requirement.key} notin (${toArray(requirement.values).join(',')})`;\n }\n\n if (requirement.operator === 'GreaterThan') {\n return `${requirement.key} > ${requirement.values[0]}`;\n }\n\n if (requirement.operator === 'LessThan') {\n return `${requirement.key} < ${requirement.values[0]}`;\n }\n\n return '';\n};\n\nexport const createEquals = (key: string, value: string): MatchExpression => ({\n key,\n operator: 'Equals',\n values: [value],\n});\n\nconst isOldFormat = (selector: Selector | MatchLabels) =>\n !selector.matchLabels && !selector.matchExpressions;\n\nexport const toRequirements = (selector: Selector = {}): MatchExpression[] => {\n const requirements = [];\n const matchLabels = isOldFormat(selector) ? selector : selector.matchLabels;\n const { matchExpressions } = selector;\n\n Object.keys(matchLabels || {})\n .sort()\n .forEach((k) => {\n requirements.push(createEquals(k, matchLabels[k]));\n });\n\n (matchExpressions || []).forEach((me) => {\n requirements.push(me);\n });\n\n return requirements;\n};\n\nexport const selectorToString = (selector: Selector): string => {\n const requirements = toRequirements(selector);\n return requirements.map(requirementToString).join(',');\n};\n\nexport const k8sWatch = (\n kind: K8sModel,\n query: {\n labelSelector?: Selector;\n resourceVersion?: string;\n ns?: string;\n fieldSelector?: string;\n } = {},\n wsOptions: {\n [key: string]: any;\n } = {},\n) => {\n const queryParams: QueryParams = { watch: 'true' };\n const opts: {\n queryParams: QueryParams;\n ns?: string;\n } = { queryParams };\n const wsOptionsUpdated = Object.assign(\n {\n host: 'auto',\n reconnect: true,\n jsonParse: true,\n bufferFlushInterval: 500,\n bufferMax: 1000,\n },\n wsOptions,\n );\n\n const { labelSelector } = query;\n if (labelSelector) {\n const encodedSelector = encodeURIComponent(selectorToString(labelSelector));\n if (encodedSelector) {\n queryParams.labelSelector = encodedSelector;\n }\n }\n\n if (query.fieldSelector) {\n queryParams.fieldSelector = encodeURIComponent(query.fieldSelector);\n }\n\n if (query.ns) {\n opts.ns = query.ns;\n }\n\n if (query.resourceVersion) {\n queryParams.resourceVersion = encodeURIComponent(query.resourceVersion);\n }\n\n const path = resourceURL(kind, opts);\n wsOptionsUpdated.path = path;\n return new WSFactory(path, wsOptionsUpdated as WSOptions);\n};\n\ninterface PluginStore {\n getExtensionsInUse: () => Extension[];\n}\n\nlet pluginStore: PluginStore;\n\nexport const setPluginStore = (store: PluginStore): void => {\n pluginStore = store;\n};\n\nconst modelKey = (model: K8sModel): string => {\n // TODO: Use `referenceForModel` even for known API objects\n return model.crd ? getReferenceForModel(model) : model.kind;\n};\n\nexport const modelsToMap = (\n models: K8sModel[],\n): ImmutableMap => {\n return ImmutableMap().withMutations((map) => {\n models.forEach((model) => map.set(modelKey(model), model));\n });\n};\n\nexport const isModelDefinition = (e: Extension): e is ModelDefinition => {\n return e.type === 'ModelDefinition';\n};\n\n/**\n * Contains static resource definitions for Kubernetes objects.\n * Keys are of type `group:version:Kind`, but TypeScript doesn't support regex types (https://github.com/Microsoft/TypeScript/issues/6579).\n */\nlet k8sModels;\n\nconst getK8sModels = () => {\n if (!k8sModels) {\n // TODO this was migrated from console and is only used for the fallback API discovery and can likely be removed\n k8sModels = modelsToMap(_.values(staticModels));\n\n const hasModel = (model: K8sModel) => k8sModels.has(modelKey(model));\n\n k8sModels = k8sModels.withMutations((map) => {\n const pluginModels = _.flatMap(\n pluginStore\n .getExtensionsInUse()\n .filter(isModelDefinition)\n .map((md) => md.properties.models),\n );\n map.merge(modelsToMap(pluginModels.filter((model) => !hasModel(model))));\n });\n }\n return k8sModels;\n};\n\n// URL routes that can be namespaced\nlet namespacedResources;\n\n/**\n * Provides a synchronous way to acquire all statically-defined Kubernetes models.\n * NOTE: This will not work for CRDs defined at runtime, use `connectToModels` instead.\n */\nexport const allModels = getK8sModels;\n\nexport const getNamespacedResources = () => {\n if (!namespacedResources) {\n namespacedResources = new Set();\n allModels().forEach((v, k) => {\n if (!v.namespaced) {\n return;\n }\n if (v.crd) {\n namespacedResources.add(k);\n }\n if (!v.crd || v.legacyPluralURL) {\n namespacedResources.add(v.plural);\n }\n });\n }\n return namespacedResources;\n};\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport detector from 'i18next-browser-languagedetector';\nimport httpBackend from 'i18next-http-backend';\nimport Pseudo from 'i18next-pseudo';\nimport { transformNamespace } from 'i18next-v4-format-converter';\nimport { getLastLanguage } from '@console/app/src/components/user-preferences/language/getLastLanguage';\n\nimport { pluginStore } from './plugins';\nimport { dateTimeFormatter, fromNow } from './components/utils/datetime';\n\nconst params = new URLSearchParams(window.location.search);\nconst pseudolocalizationEnabled = params.get('pseudolocalization') === 'true';\nconst language = params.get('lng');\n\nlet resolvedLoading;\n\nexport const loading = new Promise((resolve) => {\n resolvedLoading = resolve;\n});\n\nexport const init = () => {\n i18n\n .use(\n new Pseudo({ enabled: pseudolocalizationEnabled, languageToPseudo: language, wrapped: true }),\n )\n // fetch json files\n // learn more: https://github.com/i18next/i18next-http-backend\n .use(httpBackend)\n // detect user language\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(detector)\n // pass the i18n instance to react-i18next.\n .use(initReactI18next)\n // init i18next\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n backend: {\n loadPath: '/locales/resource.json?lng={{lng}}&ns={{ns}}',\n parse: function (data, lng, ns) {\n const parsed = JSON.parse(data);\n // i18next-v4-format-converter functions differently for plurals in\n // 'en' compared to other languages. Therefore, two conversions are\n // needed: one in the correct language, then a second one in English\n // to catch the missing plural cases.\n if (ns?.startsWith('plugin__')) {\n const firstTransform = transformNamespace(lng, parsed);\n return transformNamespace('en', firstTransform);\n }\n return parsed;\n },\n },\n lng: getLastLanguage(),\n fallbackLng: 'en',\n load: 'languageOnly',\n debug: process.env.NODE_ENV === 'development',\n detection: { caches: [] },\n contextSeparator: '~',\n ns: [\n 'console-app',\n 'console-shared',\n 'console-telemetry-plugin',\n 'container-security',\n 'devconsole',\n 'git-service',\n 'gitops-plugin',\n 'helm-plugin',\n 'insights-plugin',\n 'knative-plugin',\n 'kubevirt-plugin',\n 'lso-plugin',\n 'metal3-plugin',\n 'notification-drawer',\n 'olm',\n 'pipelines-plugin',\n 'shipwright-plugin',\n 'public',\n 'rhoas-plugin',\n 'service-binding-plugin',\n 'topology',\n 'vsphere-plugin',\n 'webterminal-plugin',\n ...pluginStore.getI18nNamespaces(),\n ],\n defaultNS: 'public',\n nsSeparator: '~',\n keySeparator: false,\n postProcess: ['pseudo'],\n interpolation: {\n format: function (value, format, lng, options) {\n if (format === 'number') {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat#Browser_compatibility\n return new Intl.NumberFormat(lng).format(value);\n }\n if (value instanceof Date) {\n if (format === 'fromNow') {\n return fromNow(value, null, options);\n }\n return dateTimeFormatter.format(value);\n }\n return value;\n },\n escapeValue: false, // not needed for react as it escapes by default\n },\n react: {\n useSuspense: true,\n wait: true,\n transSupportBasicHtmlNodes: true, // allow
and simple html elements in translations\n },\n saveMissing: true,\n missingKeyHandler: function (lng, ns, key) {\n window.windowError = `Missing i18n key \"${key}\" in namespace \"${ns}\" and language \"${lng}.\"`;\n // eslint-disable-next-line no-console\n console.error(window.windowError);\n },\n })\n // Update loading promise and pass values and errors to the caller\n .then((value) => {\n resolvedLoading(true);\n return value;\n })\n .catch((error) => {\n resolvedLoading(false);\n throw error;\n });\n};\n\nif (process.env.NODE_ENV !== 'production') {\n // Expose i18next for debugging\n window.i18n = i18n;\n}\n\nexport default i18n;\n","import { useContext } from 'react';\nimport { NamespaceContext } from '@console/app/src/components/detect-namespace/namespace';\nimport { UseActiveNamespace } from '@console/dynamic-plugin-sdk/src/extensions/console-types';\n\nexport const useActiveNamespace: UseActiveNamespace = () => {\n const { namespace, setNamespace } = useContext(NamespaceContext);\n return [namespace, setNamespace];\n};\n","import * as React from 'react';\nimport { Icon } from '@patternfly/react-core';\nimport { ArrowCircleUpIcon } from '@patternfly/react-icons/dist/esm/icons/arrow-circle-up-icon';\nimport { ResourcesAlmostFullIcon } from '@patternfly/react-icons/dist/esm/icons/resources-almost-full-icon';\nimport { ResourcesFullIcon } from '@patternfly/react-icons/dist/esm/icons/resources-full-icon';\nimport { SyncAltIcon } from '@patternfly/react-icons/dist/esm/icons/sync-alt-icon';\nimport { UnknownIcon } from '@patternfly/react-icons/dist/esm/icons/unknown-icon';\nimport { ColoredIconProps } from '@console/dynamic-plugin-sdk';\n\nexport {\n GreenCheckCircleIcon,\n RedExclamationCircleIcon,\n YellowExclamationTriangleIcon,\n BlueInfoCircleIcon,\n} from '@console/dynamic-plugin-sdk';\n\nexport const GrayUnknownIcon: React.FC = ({ className, title, size }) => (\n \n \n \n);\n\nexport const BlueSyncIcon: React.FC = ({ className, title, size }) => (\n \n \n \n);\n\nexport const RedResourcesFullIcon: React.FC = ({ className, title, size }) => (\n \n \n \n);\n\nexport const YellowResourcesAlmostFullIcon: React.FC = ({\n className,\n title,\n size,\n}) => (\n \n \n \n);\n\nexport const BlueArrowCircleUpIcon: React.FC = ({ className, title, size }) => (\n \n \n \n);\n","import { ActionType, DashboardsAction } from '../actions/dashboards';\nimport { fromJS, Map as ImmutableMap } from 'immutable';\nimport { RequestMap } from '@console/dynamic-plugin-sdk/src/api/internal-types';\n\nexport enum RESULTS_TYPE {\n PROMETHEUS = 'PROMETHEUS',\n URL = 'URL',\n ALERTS = 'ALERTS',\n}\n\nexport const defaults = {\n [RESULTS_TYPE.PROMETHEUS]: fromJS({}),\n [RESULTS_TYPE.URL]: fromJS({}),\n};\n\nexport type DashboardsState = ImmutableMap>;\n\nexport const isWatchActive = (state: DashboardsState, type: string, key: string): boolean =>\n state.getIn([type, key, 'active']) > 0 || state.getIn([type, key, 'inFlight']);\n\nexport const dashboardsReducer = (\n state: DashboardsState,\n action: DashboardsAction,\n): DashboardsState => {\n if (!state) {\n return ImmutableMap(defaults);\n }\n switch (action.type) {\n case ActionType.ActivateWatch: {\n const activePath = [action.payload.type, action.payload.key, 'active'];\n const active = state.hasIn(activePath) ? state.getIn(activePath) : 0;\n return state.setIn(activePath, active + 1);\n }\n case ActionType.UpdateWatchTimeout:\n return state.setIn(\n [action.payload.type, action.payload.key, 'timeout'],\n action.payload.timeout,\n );\n case ActionType.UpdateWatchInFlight:\n return state.setIn(\n [action.payload.type, action.payload.key, 'inFlight'],\n action.payload.inFlight,\n );\n case ActionType.StopWatch: {\n const active = state.getIn([action.payload.type, action.payload.key, 'active']);\n const newState = state.setIn([action.payload.type, action.payload.key, 'active'], active - 1);\n if (active === 1) {\n clearTimeout(state.getIn([action.payload.type, action.payload.key, 'timeout']));\n }\n return newState;\n }\n case ActionType.SetError:\n return state.setIn(\n [action.payload.type, action.payload.key, 'loadError'],\n action.payload.error,\n );\n case ActionType.SetData:\n return state.withMutations((s) =>\n s\n .setIn([action.payload.type, action.payload.key, 'data'], action.payload.data)\n .setIn([action.payload.type, action.payload.key, 'loadError'], null),\n );\n default:\n return state;\n }\n};\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { TableGridBreakpoint, SortByDirection } from '@patternfly/react-table';\nimport {\n Table as PfTable,\n TableHeader as TableHeaderDeprecated,\n} from '@patternfly/react-table/deprecated';\nimport * as classNames from 'classnames';\nimport { AutoSizer, WindowScroller } from '@patternfly/react-virtualized-extension';\nimport { useNavigate } from 'react-router-dom-v5-compat';\nimport { VirtualizedTableFC, TableColumn, TableDataProps } from '@console/dynamic-plugin-sdk';\n\nimport VirtualizedTableBody from './VirtualizedTableBody';\nimport { StatusBox, WithScrollContainer, EmptyBox } from '../../utils';\nimport { sortResourceByValue } from './sort';\n\nconst BREAKPOINT_SM = 576;\nconst BREAKPOINT_MD = 768;\nconst BREAKPOINT_LG = 992;\nconst BREAKPOINT_XL = 1200;\nconst BREAKPOINT_XXL = 1400;\nconst MAX_COL_XS = 2;\nconst MAX_COL_SM = 4;\nconst MAX_COL_MD = 4;\nconst MAX_COL_LG = 6;\nconst MAX_COL_XL = 8;\n\nconst isColumnVisible = (\n widthInPixels: number,\n column: TableColumn,\n columnIDs: string[],\n): boolean => {\n if (column.id === '') {\n return true;\n }\n const columnIndex = columnIDs.indexOf(column.id);\n if (widthInPixels < BREAKPOINT_SM) {\n return columnIndex < MAX_COL_XS;\n }\n if (widthInPixels < BREAKPOINT_MD) {\n return columnIndex < MAX_COL_SM;\n }\n if (widthInPixels < BREAKPOINT_LG) {\n return columnIndex < MAX_COL_MD;\n }\n if (widthInPixels < BREAKPOINT_XL) {\n return columnIndex < MAX_COL_LG;\n }\n if (widthInPixels < BREAKPOINT_XXL) {\n return columnIndex < MAX_COL_XL;\n }\n return true;\n};\n\nexport const TableData: React.FC = ({ className, id, activeColumnIDs, children }) =>\n (activeColumnIDs.has(id) || id === '') && (\n \n {children}\n \n );\nTableData.displayName = 'TableData';\n\nconst VirtualizedTable: VirtualizedTableFC = ({\n data,\n loaded,\n loadError,\n columns: allColumns,\n NoDataEmptyMsg,\n EmptyMsg,\n scrollNode,\n label,\n 'aria-label': ariaLabel,\n gridBreakPoint = TableGridBreakpoint.none,\n onSelect,\n Row,\n rowData,\n unfilteredData,\n mock = false,\n sortColumnIndex,\n sortDirection,\n}) => {\n const navigate = useNavigate();\n const columnShift = onSelect ? 1 : 0; //shift indexes by 1 if select provided\n const [sortBy, setSortBy] = React.useState<{\n index: number;\n direction: SortByDirection;\n }>({ index: sortColumnIndex || columnShift, direction: sortDirection || SortByDirection.asc });\n\n const [windowWidth, setWindowWidth] = React.useState(window.innerWidth);\n\n const columns = React.useMemo(() => {\n const colIDs = allColumns.map((c) => c.id);\n return allColumns.filter((col) => isColumnVisible(windowWidth, col, colIDs));\n }, [windowWidth, allColumns]);\n\n const applySort = React.useCallback(\n (index, direction) => {\n const url = new URL(window.location.href);\n const sp = new URLSearchParams(window.location.search);\n\n const sortColumn = columns[index - columnShift];\n if (sortColumn) {\n sp.set('orderBy', direction);\n sp.set('sortBy', sortColumn.title);\n navigate(`${url.pathname}?${sp.toString()}${url.hash}`, { replace: true });\n setSortBy({\n index,\n direction,\n });\n }\n },\n [columnShift, columns, navigate],\n );\n\n data = React.useMemo(() => {\n const sortColumn = columns[sortBy.index - columnShift];\n if (!sortColumn.sort) {\n return data;\n } else if (typeof sortColumn.sort === 'string') {\n return data.sort(\n sortResourceByValue(sortBy.direction, (obj) => _.get(obj, sortColumn.sort as string, '')),\n );\n }\n return sortColumn.sort(data, sortBy.direction);\n }, [columnShift, columns, data, sortBy.direction, sortBy.index]);\n\n React.useEffect(() => {\n const handleResize = _.debounce(() => setWindowWidth(window.innerWidth), 100);\n\n const sp = new URLSearchParams(window.location.search);\n const columnIndex = _.findIndex(columns, { title: sp.get('sortBy') });\n\n if (columnIndex > -1) {\n const sortOrder =\n sp.get('orderBy') === SortByDirection.desc.valueOf()\n ? SortByDirection.desc\n : SortByDirection.asc;\n setSortBy({\n index: columnIndex + columnShift,\n direction: sortOrder,\n });\n }\n\n // re-render after resize\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const onSort = React.useCallback(\n (event, index, direction) => {\n event.preventDefault();\n applySort(index, direction);\n },\n [applySort],\n );\n\n const renderVirtualizedTable = (scrollContainer) => (\n \n {({ height, isScrolling, registerChild, onChildScroll, scrollTop }) => (\n \n {({ width }) => (\n
\n \n
\n )}\n
\n )}\n
\n );\n\n return (\n
\n {mock ? (\n \n ) : (\n }\n data={data}\n loaded={loaded}\n loadError={loadError}\n unfilteredData={unfilteredData}\n label={label}\n NoDataEmptyMsg={NoDataEmptyMsg}\n EmptyMsg={EmptyMsg}\n >\n \n \n \n \n {scrollNode ? (\n renderVirtualizedTable(scrollNode)\n ) : (\n {renderVirtualizedTable}\n )}\n
\n \n )}\n
\n );\n};\n\nexport default VirtualizedTable;\n","import * as _ from 'lodash-es';\nimport * as fuzzy from 'fuzzysearch';\nimport { nodeStatus, volumeSnapshotStatus } from '@console/app/src/status';\nimport { getNodeRoles, getLabelsAsString } from '@console/shared';\nimport { Alert, AnyRowFilter, FilterValue, Rule } from '@console/dynamic-plugin-sdk';\nimport { routeStatus } from '../routes';\nimport { secretTypeFilterReducer } from '../secret';\nimport { roleType } from '../RBAC';\nimport {\n K8sResourceKind,\n MachineKind,\n getClusterOperatorStatus,\n getTemplateInstanceStatus,\n VolumeSnapshotKind,\n CustomResourceDefinitionKind,\n} from '../../module/k8s';\nimport { alertDescription } from '../monitoring/utils';\n\nimport { Target } from '../monitoring/types';\nimport { requesterFilter } from '@console/shared/src/components/namespace';\n\nexport const fuzzyCaseInsensitive = (a: string, b: string): boolean =>\n fuzzy(_.toLower(a), _.toLower(b));\n\nexport const exactMatch = (a: string, b: string): boolean => !a || b?.includes(a);\n\nconst clusterServiceVersionDisplayName = (csv: K8sResourceKind): string =>\n csv?.spec?.displayName || csv?.metadata?.name;\n\n// TODO: Table filters are undocumented, stringly-typed, and non-obvious. We can change that.\nexport const tableFilters = (isExactSearch: boolean): FilterMap => {\n const matchFn: Function = isExactSearch ? exactMatch : fuzzyCaseInsensitive;\n return {\n name: (filter, obj) => matchFn(filter.selected?.[0], obj.metadata.name),\n\n 'catalog-source-name': (filter, obj) => matchFn(filter.selected?.[0], obj.name),\n requester: requesterFilter,\n\n 'resource-list-text': (filter, resource: Rule | Alert) => {\n if (matchFn(filter.selected?.[0], resource.labels?.alertname || (resource as Rule)?.name)) {\n return true;\n }\n\n // Search in alert description. Ignore case and whitespace, but don't use fuzzy since the\n // description can be long and will often match fuzzy searches that are not really relevant.\n const needle = _.toLower(filter.selected?.[0]?.replace(/\\s/g, ''));\n const haystack = _.toLower(alertDescription(resource)?.replace(/\\s/g, ''));\n return haystack.includes(needle);\n },\n\n alerts: (values, alert: Alert) => {\n if (!values.all) {\n return true;\n }\n const labels = getLabelsAsString(alert, 'labels');\n return !!values.all.every((v) => labels.includes(v));\n },\n\n 'observe-rules': (values, rule: Rule) => {\n if (!values.all) {\n return true;\n }\n const labels = getLabelsAsString(rule, 'labels');\n return !!values.all.every((v) => labels.includes(v));\n },\n\n 'observe-target-labels': (values, target: Target) =>\n !values.all || values.all.every((v) => getLabelsAsString(target, 'labels').includes(v)),\n\n // Filter role by role kind\n 'role-kind': (filter, role) =>\n filter.selected?.includes(roleType(role)) || filter.selected?.length === 0,\n\n // Filter role bindings by text match\n 'role-binding': (str, { metadata, roleRef, subject }) => {\n const isMatch = (val) => matchFn(str.selected?.[0], val);\n return [metadata.name, roleRef.name, subject.kind, subject.name].some(isMatch);\n },\n\n // Filter role bindings by roleRef name\n 'role-binding-roleRef-name': (name, binding) => binding.roleRef.name === name,\n\n // Filter role bindings by roleRef kind\n 'role-binding-roleRef-kind': (kind, binding) => binding.roleRef.kind === kind,\n\n // Filter role bindings by user name\n 'role-binding-user': (userName, { subject }) => subject.name === userName,\n\n // Filter role bindings by group name\n 'role-binding-group': (groupName, { subject }) => subject.name === groupName,\n\n labels: (values, obj) => {\n if (!values.all) {\n return true;\n }\n const labels = getLabelsAsString(obj);\n return !!values.all.every((v) => labels.includes(v));\n },\n\n 'node-status': (statuses, node) => {\n if (!statuses || !statuses.selected || !statuses.selected.length) {\n return true;\n }\n\n const status = nodeStatus(node);\n return statuses.selected.includes(status) || !_.includes(statuses.all, status);\n },\n\n 'node-role': (roles, node) => {\n if (!roles || !roles.selected || !roles.selected.length) {\n return true;\n }\n\n const roleList = getNodeRoles(node);\n return roles.selected.filter((elem) => roleList.includes(elem)).length > 0;\n },\n\n 'clusterserviceversion-resource-kind': (filters, resource) => {\n if (!filters || !filters.selected || !filters.selected.length) {\n return true;\n }\n return filters.selected.includes(resource.kind);\n },\n\n 'packagemanifest-name': (filter, pkg) =>\n matchFn(\n filter.selected?.[0],\n (pkg.status.defaultChannel\n ? pkg.status.channels.find((ch) => ch.name === pkg.status.defaultChannel)\n : pkg.status.channels[0]\n ).currentCSVDesc.displayName,\n ),\n\n 'build-status': (phases, build) => {\n if (!phases || !phases.selected || !phases.selected.length) {\n return true;\n }\n\n const phase = build.status.phase;\n return phases.selected.includes(phase) || !_.includes(phases.all, phase);\n },\n\n 'build-strategy': (strategies, buildConfig) => {\n if (!strategies || !strategies.selected || !strategies.selected.length) {\n return true;\n }\n\n const strategy = buildConfig.spec.strategy.type;\n return strategies.selected.includes(strategy) || !_.includes(strategies.all, strategy);\n },\n\n 'route-status': (statuses, route) => {\n if (!statuses || !statuses.selected || !statuses.selected.length) {\n return true;\n }\n\n const status = routeStatus(route);\n return statuses.selected.includes(status) || !_.includes(statuses.all, status);\n },\n\n 'secret-type': (types, secret) => {\n if (!types || !types.selected || !types.selected.length) {\n return true;\n }\n const type = secretTypeFilterReducer(secret);\n return types.selected.includes(type) || !_.includes(types.all, type);\n },\n\n 'project-name': (str, project: K8sResourceKind) => {\n const displayName = _.get(project, ['metadata', 'annotations', 'openshift.io/display-name']);\n return (\n matchFn(str.selected?.[0], project.metadata.name) || matchFn(str.selected?.[0], displayName)\n );\n },\n\n 'pvc-status': (phases, pvc) => {\n if (!phases || !phases.selected || !phases.selected.length) {\n return true;\n }\n\n const phase = pvc.status.phase;\n return phases.selected.includes(phase) || !_.includes(phases.all, phase);\n },\n\n 'cluster-operator-status': (statuses, operator) => {\n if (!statuses || !statuses.selected || !statuses.selected.length) {\n return true;\n }\n\n const status = getClusterOperatorStatus(operator);\n return statuses.selected.includes(status) || !_.includes(statuses.all, status);\n },\n\n 'template-instance-status': (statuses, instance) => {\n if (!statuses || !statuses.selected || !statuses.selected.length) {\n return true;\n }\n\n const status = getTemplateInstanceStatus(instance);\n return statuses.selected.includes(status) || !_.includes(statuses.all, status);\n },\n\n machine: (str, machine: MachineKind): boolean => {\n const node: string = _.get(machine, 'status.nodeRef.name');\n return (\n matchFn(str.selected?.[0], machine.metadata.name) ||\n (node && matchFn(str.selected?.[0], node))\n );\n },\n\n 'snapshot-status': (statuses, snapshot: VolumeSnapshotKind) => {\n if (!statuses || !statuses.selected || !statuses.selected.length) {\n return true;\n }\n\n const status = volumeSnapshotStatus(snapshot);\n return statuses.selected.includes(status) || !_.includes(statuses.all, status);\n },\n 'node-disk-name': (name, disks) => matchFn(name.selected?.[0], disks?.path),\n 'image-name': (str, imageManifestVuln) =>\n matchFn(str.selected?.[0], imageManifestVuln.spec.image),\n vulnerability: (str, imageVulnerability) =>\n matchFn(str.selected?.[0], imageVulnerability.vulnerability.name),\n\n // Filter cluster service version by displayName or name text match\n 'cluster-service-version': (str, csv) => {\n const value = clusterServiceVersionDisplayName(csv);\n return matchFn(str.selected?.[0], value);\n },\n 'custom-resource-definition-name': (str, crd: CustomResourceDefinitionKind) => {\n const displayName = _.get(crd, 'spec.names.kind');\n return (\n matchFn(str.selected?.[0], crd.metadata.name) || matchFn(str.selected?.[0], displayName)\n );\n },\n };\n};\nconst rowFiltersToFilterFuncs = (rowFilters: AnyRowFilter[]): FilterMap => {\n return (rowFilters || [])\n .filter((f) => f.type && _.isFunction(f.filter))\n .reduce((acc, f) => ({ ...acc, [f.type]: f.filter }), {} as FilterMap);\n};\n\nexport const getAllTableFilters = (\n rowFilters: AnyRowFilter[],\n isExactMatch?: boolean,\n): FilterMap => ({\n ...tableFilters(isExactMatch),\n ...rowFiltersToFilterFuncs(rowFilters),\n});\n\nexport type FilterMap = {\n [key: string]: (value: FilterValue, obj: any) => boolean;\n};\n","import { ApolloClient } from 'apollo-client';\nimport { HttpLink } from 'apollo-link-http';\nimport { SubscriptionClient } from 'subscriptions-transport-ws';\nimport { InMemoryCache } from 'apollo-cache-inmemory';\nimport { WebSocketLink } from 'apollo-link-ws';\nimport { split } from 'apollo-link';\n\nimport { getK8sResourcePath } from '@console/dynamic-plugin-sdk/src/utils/k8s/k8s-utils';\nimport { K8sKind, K8sResourceCommon } from '../module/k8s/types';\nimport { URLQuery } from './client.gql';\nimport { URLQueryType, URLQueryVariables } from '../../@types/console/generated/graphql-schema';\nimport { getConsoleRequestHeaders, coFetch } from '../co-fetch';\n\nlet wssErrors = 0;\n\nclass GraphQLReady {\n private callback: VoidFunction;\n private ready: boolean;\n private wasCalled: boolean;\n\n setReady() {\n this.ready = true;\n if (!this.wasCalled && this.callback) {\n this.wasCalled = true;\n this.callback();\n }\n }\n\n onReady(cb: VoidFunction) {\n this.callback = cb;\n if (this.ready && !this.wasCalled) {\n this.wasCalled = true;\n this.callback();\n }\n }\n}\n\nexport const graphQLReady = new GraphQLReady();\n\nexport const subsClient = new SubscriptionClient(\n `${location.protocol === 'https:' ? 'wss://' : 'ws://'}${location.host}${\n window.SERVER_FLAGS.graphqlBaseURL\n }`,\n {\n reconnect: true,\n connectionParams: getConsoleRequestHeaders,\n reconnectionAttempts: 5,\n connectionCallback: () => {\n graphQLReady.setReady();\n wssErrors = 0;\n },\n },\n);\n\nsubsClient.onError(() => {\n wssErrors++;\n if (wssErrors > 4) {\n graphQLReady.setReady();\n }\n});\n\nconst httpLink = new HttpLink({\n uri: window.SERVER_FLAGS.graphqlBaseURL,\n fetch: coFetch,\n});\n\nconst wsLink = new WebSocketLink(subsClient);\n\n// fallback to http connection if websocket connection was not successful\n// iOS does not allow wss with self signed certificate\nconst link = split(() => wssErrors > 4, httpLink, wsLink);\n\nconst client = new ApolloClient({\n link,\n cache: new InMemoryCache(),\n defaultOptions: {\n query: {\n fetchPolicy: 'network-only',\n },\n mutate: {\n fetchPolicy: 'network-only',\n },\n watchQuery: {\n fetchPolicy: 'network-only',\n },\n },\n});\n\nexport default client;\n\nexport const fetchURL = async (url: string): Promise => {\n try {\n const response = await client.query({\n query: URLQuery,\n variables: { url },\n });\n return JSON.parse(response.data.fetchURL);\n } catch (err) {\n return Promise.reject({ response: err.graphQLErrors[0]?.extensions });\n }\n};\n\nexport const fetchK8s = (\n kind: K8sKind,\n name?: string,\n ns?: string,\n path?: string,\n queryParams?: { [key: string]: string },\n): Promise => fetchURL(getK8sResourcePath(kind, { ns, name, path, queryParams }));\n","export const TOUR_LOCAL_STORAGE_KEY = 'getting-started-tour';\n\nexport enum TourActions {\n initialize = 'initialize',\n start = 'start',\n next = 'next',\n back = 'back',\n complete = 'complete',\n}\n","import { SetFeatureFlag } from '@console/dynamic-plugin-sdk';\nimport { setFlag, handleError } from '@console/internal/actions/features';\nimport { fetchK8s } from '@console/internal/graphql/client';\nimport { InfrastructureModel } from '@console/internal/models';\nimport { K8sResourceKind } from '@console/internal/module/k8s';\nimport { FeatureDetector } from '@console/plugin-sdk';\nimport { getInfrastructurePlatform } from '@console/shared/src/selectors/infrastructure';\nimport { useMaintenanceCapability } from './hooks/useMaintenanceCapability';\nimport { ProvisioningModel } from './models';\n\nexport const BAREMETAL_FLAG = 'BAREMETAL';\nexport const NODE_MAINTENANCE_FLAG = 'NODE_MAINTENANCE';\nexport const NODE_MAINTENANCE_ENABLED_FLAG = 'NODE_MAINTENANCE_ENABLED';\nexport const BMO_ENABLED_FLAG = 'BMO_ENABLED';\nexport const NODE_MAINTENANCE_KV_BETA_FLAG = 'NODE_MAINTENANCE_KV_BETA';\nexport const NODE_MAINTENANCE_KV_ALPHA_FLAG = 'NODE_MAINTENANCE_KV_ALPHA';\n\nexport const detectBaremetalPlatform: FeatureDetector = (dispatch) =>\n fetchK8s(InfrastructureModel, 'cluster').then(\n (infra) => dispatch(setFlag(BAREMETAL_FLAG, getInfrastructurePlatform(infra) === 'BareMetal')),\n (err) => {\n err?.response?.status === 404\n ? dispatch(setFlag(BAREMETAL_FLAG, false))\n : handleError(err, BAREMETAL_FLAG, dispatch, detectBaremetalPlatform);\n },\n );\n\nexport const detectBMOEnabled: FeatureDetector = (dispatch) =>\n fetchK8s(ProvisioningModel, 'provisioning-configuration').then(\n () => dispatch(setFlag(BMO_ENABLED_FLAG, true)),\n (err) => {\n err?.response?.status === 404\n ? dispatch(setFlag(BMO_ENABLED_FLAG, false))\n : handleError(err, BMO_ENABLED_FLAG, dispatch, detectBMOEnabled);\n },\n );\n\nexport const useDetectNodeMaintenance = (setFeatureFlag: SetFeatureFlag) => {\n const [model, loading] = useMaintenanceCapability();\n if (!loading) {\n setFeatureFlag(NODE_MAINTENANCE_ENABLED_FLAG, !!model);\n }\n};\n","export * from './components';\n","import { Alert, PrometheusLabels, Silence } from '@console/dynamic-plugin-sdk';\n\nexport const enum AlertSource {\n Platform = 'platform',\n User = 'user',\n}\n\nexport type MonitoringResource = {\n abbr: string;\n kind: string;\n label: string;\n plural: string;\n};\n\nexport type Silences = {\n data: Silence[];\n loaded: boolean;\n loadError?: string | Error;\n};\n\nexport type Alerts = {\n data: Alert[];\n loaded: boolean;\n loadError?: string | Error;\n};\n\nexport type PrometheusAPIError = {\n json: {\n error?: string;\n };\n message?: string;\n response: {\n status: number;\n };\n};\n\nexport type Target = {\n discoveredLabels: PrometheusLabels;\n globalUrl: string;\n health: 'up' | 'down';\n labels: PrometheusLabels;\n lastError: string;\n lastScrape: string;\n lastScrapeDuration: number;\n scrapePool: string;\n scrapeUrl: string;\n};\n","import * as _ from 'lodash-es';\nimport * as semver from 'semver';\nimport i18next from 'i18next';\n\nimport { ClusterVersionModel, MachineConfigPoolModel } from '../../models';\nimport { referenceForModel } from './k8s-ref';\nimport {\n ClusterVersionCondition,\n ClusterVersionConditionType,\n ClusterVersionKind,\n ConditionalUpdate,\n k8sPatch,\n K8sResourceCondition,\n K8sResourceConditionStatus,\n Release,\n UpdateHistory,\n} from '.';\nimport { MachineConfigPoolKind } from './types';\n\nexport enum ClusterUpdateStatus {\n UpToDate = 'Up to Date',\n UpdatesAvailable = 'Updates Available',\n Updating = 'Updating',\n Failing = 'Failing',\n UpdatingAndFailing = 'Updating and Failing',\n ErrorRetrieving = 'Error Retrieving',\n Invalid = 'Invalid Cluster Version',\n ReleaseNotAccepted = 'Release Not Accepted',\n}\n\nexport const clusterVersionReference = referenceForModel(ClusterVersionModel);\n\nconst getAvailableClusterUpdates = (cv: ClusterVersionKind): Release[] => {\n return cv?.status?.availableUpdates || [];\n};\n\nexport const getSortedAvailableUpdates = (cv: ClusterVersionKind): Release[] => {\n const available = getAvailableClusterUpdates(cv);\n try {\n return available.sort(({ version: left }, { version: right }) => semver.rcompare(left, right));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('error sorting available cluster updates', e);\n return available;\n }\n};\n\nconst getConditionalClusterUpdates = (cv: ClusterVersionKind): ConditionalUpdate[] => {\n return cv?.status?.conditionalUpdates || [];\n};\n\nexport const getNotRecommendedUpdateCondition = (\n conditions: K8sResourceCondition[],\n): K8sResourceCondition => {\n return conditions?.find(\n (condition) => condition.type === 'Recommended' && condition.status !== 'True',\n );\n};\n\nconst getNotRecommendedUpdates = (cv: ClusterVersionKind): ConditionalUpdate[] => {\n return getConditionalClusterUpdates(cv).filter((update) =>\n getNotRecommendedUpdateCondition(update.conditions),\n );\n};\n\nexport const getSortedNotRecommendedUpdates = (cv: ClusterVersionKind): ConditionalUpdate[] => {\n const notRecommended = getNotRecommendedUpdates(cv);\n try {\n return notRecommended.sort(({ release: { version: left } }, { release: { version: right } }) =>\n semver.rcompare(left, right),\n );\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('error sorting conditional cluster updates', e);\n return notRecommended;\n }\n};\n\nexport const getNewerMinorVersionUpdate = (currentVersion, availableUpdates) => {\n const currentVersionParsed = semver.parse(currentVersion);\n return availableUpdates?.find(\n // find the next minor version update, which there should never be more than one\n (update) => {\n const updateParsed = semver.parse(update.version);\n return semver.gt(\n semver.coerce(`${updateParsed.major}.${updateParsed.minor}`),\n semver.coerce(`${currentVersionParsed.major}.${currentVersionParsed.minor}`),\n );\n },\n );\n};\n\nexport const isMinorVersionNewer = (currentVersion, otherVersion) => {\n const currentVersionParsed = semver.parse(currentVersion);\n const otherVersionParsed = semver.parse(otherVersion);\n return semver.gt(\n semver.coerce(`${otherVersionParsed.major}.${otherVersionParsed.minor}`),\n semver.coerce(`${currentVersionParsed.major}.${currentVersionParsed.minor}`),\n );\n};\n\nexport const getAvailableClusterChannels = (cv) => {\n return cv?.status?.desired?.channels || [];\n};\n\nexport const getDesiredClusterVersion = (cv: ClusterVersionKind): string => {\n return _.get(cv, 'status.desired.version');\n};\n\nexport const getClusterVersionChannel = (cv: ClusterVersionKind): string => cv?.spec?.channel;\n\nexport const splitClusterVersionChannel = (channel: string) => {\n const parsed = /^(.+)-(\\d\\.\\d+)$/.exec(channel);\n return parsed ? { prefix: parsed[1], version: parsed[2] } : null;\n};\n\nexport const getSimilarClusterVersionChannels = (cv, currentPrefix) => {\n return getAvailableClusterChannels(cv).filter((channel: string) => {\n return currentPrefix && splitClusterVersionChannel(channel)?.prefix === currentPrefix;\n });\n};\n\nexport const getNewerClusterVersionChannel = (similarChannels, currentChannel) => {\n return similarChannels.find(\n // find the next minor version, which there should never be more than one\n (channel) => semver.gt(semver.coerce(channel).version, semver.coerce(currentChannel).version),\n );\n};\n\nexport const getLastCompletedUpdate = (cv: ClusterVersionKind): string => {\n const history: UpdateHistory[] = _.get(cv, 'status.history', []);\n const lastCompleted: UpdateHistory = history.find((update) => update.state === 'Completed');\n return lastCompleted && lastCompleted.version;\n};\n\nexport const getClusterVersionCondition = (\n cv: ClusterVersionKind,\n type: ClusterVersionConditionType,\n status: K8sResourceConditionStatus = undefined,\n): ClusterVersionCondition => {\n const conditions: ClusterVersionCondition[] = _.get(cv, 'status.conditions');\n if (status) {\n return _.find(conditions, { type, status });\n }\n return _.find(conditions, { type });\n};\n\nexport const isProgressing = (cv: ClusterVersionKind): boolean => {\n return !_.isEmpty(\n getClusterVersionCondition(\n cv,\n ClusterVersionConditionType.Progressing,\n K8sResourceConditionStatus.True,\n ),\n );\n};\n\nexport const invalid = (cv: ClusterVersionKind): boolean => {\n return !_.isEmpty(\n getClusterVersionCondition(\n cv,\n ClusterVersionConditionType.Invalid,\n K8sResourceConditionStatus.True,\n ),\n );\n};\n\nexport const releaseNotAccepted = (cv: ClusterVersionKind): boolean => {\n return !_.isEmpty(\n getClusterVersionCondition(\n cv,\n ClusterVersionConditionType.ReleaseAccepted,\n K8sResourceConditionStatus.False,\n ),\n );\n};\n\nexport const failedToRetrieveUpdates = (cv: ClusterVersionKind): boolean => {\n return !_.isEmpty(\n getClusterVersionCondition(\n cv,\n ClusterVersionConditionType.RetrievedUpdates,\n K8sResourceConditionStatus.False,\n ),\n );\n};\n\nexport const updateFailing = (cv: ClusterVersionKind): boolean => {\n return !_.isEmpty(\n getClusterVersionCondition(\n cv,\n ClusterVersionConditionType.Failing,\n K8sResourceConditionStatus.True,\n ),\n );\n};\n\nexport const hasAvailableUpdates = (cv: ClusterVersionKind): boolean => {\n return !_.isEmpty(getAvailableClusterUpdates(cv));\n};\n\nexport const hasNotRecommendedUpdates = (cv: ClusterVersionKind): boolean => {\n return !_.isEmpty(getNotRecommendedUpdates(cv));\n};\n\nexport const getClusterUpdateStatus = (cv: ClusterVersionKind): ClusterUpdateStatus => {\n if (invalid(cv)) {\n return ClusterUpdateStatus.Invalid;\n }\n\n if (releaseNotAccepted(cv)) {\n return ClusterUpdateStatus.ReleaseNotAccepted;\n }\n\n if (isProgressing(cv) && updateFailing(cv)) {\n return ClusterUpdateStatus.UpdatingAndFailing;\n }\n\n if (updateFailing(cv)) {\n return ClusterUpdateStatus.Failing;\n }\n\n if (isProgressing(cv)) {\n return ClusterUpdateStatus.Updating;\n }\n\n if (failedToRetrieveUpdates(cv)) {\n return ClusterUpdateStatus.ErrorRetrieving;\n }\n\n return hasAvailableUpdates(cv)\n ? ClusterUpdateStatus.UpdatesAvailable\n : ClusterUpdateStatus.UpToDate;\n};\n\nexport const getK8sGitVersion = (k8sVersionResponse): string =>\n _.get(k8sVersionResponse, 'gitVersion');\n\nexport const getOpenShiftVersion = (cv: ClusterVersionKind): string => {\n const lastUpdate: UpdateHistory = _.get(cv, 'status.history[0]');\n if (!lastUpdate) {\n return null;\n }\n return lastUpdate.state === 'Partial' ? `Updating to ${lastUpdate.version}` : lastUpdate.version;\n};\n\nexport const getCurrentVersion = (cv: ClusterVersionKind): string => {\n return _.get(cv, 'status.history[0].version') || _.get(cv, 'spec.desiredUpdate.version');\n};\n\nexport const getReportBugLink = (\n cv: ClusterVersionKind,\n): { label: string; description: string; href: string } => {\n const version: string = getCurrentVersion(cv);\n const parsed = semver.parse(version);\n if (!parsed) {\n return null;\n }\n\n const { major, minor, prerelease } = parsed;\n let productName;\n switch (window.SERVER_FLAGS.branding) {\n case 'openshift':\n case 'ocp':\n productName = 'OpenShift Container Platform';\n break;\n case 'online':\n productName = 'OpenShift Online';\n break;\n case 'dedicated':\n productName = 'OpenShift Dedicated';\n break;\n case 'azure':\n productName = 'Azure Red Hat OpenShift';\n break;\n case 'rosa':\n productName = 'Red Hat OpenShift Service on AWS';\n break;\n default:\n productName = 'OKD';\n }\n\n // Do not show a link for OKD until the new OKD Jira project is ready.\n if (productName === 'OKD') {\n return null;\n }\n\n // Show a support case link for supported versions and a Jira link for prerelease versions.\n return _.isEmpty(prerelease)\n ? {\n label: i18next.t('public~Open a support case'),\n description: i18next.t('public~Get help from Red Hat support.'),\n href: `https://access.redhat.com/support/cases/#/case/new?product=${encodeURIComponent(\n productName,\n )}&version=${major}.${minor}&clusterId=${cv.spec.clusterID}`,\n }\n : {\n label: i18next.t('public~Report a bug'),\n description: i18next.t('public~Report a bug to Red Hat'),\n // It is not currently possible to pre-populate `component`, etc. per https://jira.atlassian.com/browse/JRASERVER-23590\n href: `https://issues.redhat.com/secure/CreateIssue.jspa?pid=12332330&issuetype=1`,\n };\n};\n\nexport const showReleaseNotes = (): boolean => {\n return window.SERVER_FLAGS.branding === 'ocp';\n};\n\n// example link: https://access.redhat.com/documentation/en-us/openshift_container_platform/4.9/html/release_notes/ocp-4-9-release-notes#ocp-4-9-4\nexport const getReleaseNotesLink = (version: string): string => {\n if (!showReleaseNotes()) {\n return null;\n }\n\n const parsed = semver.parse(version);\n if (!parsed) {\n return null;\n }\n\n const { major, minor, patch, prerelease } = parsed;\n if (major !== 4 || !_.isEmpty(prerelease)) {\n return null;\n }\n\n return `https://access.redhat.com/documentation/en-us/openshift_container_platform/${major}.${minor}/html/release_notes/ocp-${major}-${minor}-release-notes#ocp-${major}-${minor}-${patch}`;\n};\n\nexport const getClusterName = (): string => window.SERVER_FLAGS.kubeAPIServerURL || null;\n\nexport const getClusterID = (cv: ClusterVersionKind): string => _.get(cv, 'spec.clusterID');\n\nexport const getOCMLink = (clusterID: string): string =>\n `https://console.redhat.com/openshift/details/${clusterID}`;\n\nexport const getConditionUpgradeableFalse = (resource) =>\n resource.status?.conditions?.find(\n (c) => c.type === 'Upgradeable' && c.status === K8sResourceConditionStatus.False,\n );\n\nexport const getNotUpgradeableResources = (resources) =>\n resources.filter((resource) => getConditionUpgradeableFalse(resource));\n\nexport enum NodeTypes {\n master = 'master',\n worker = 'worker',\n}\n\n/**\n * Intentionally not translated as they are capitalized versions\n * of the Node names for display purposes\n */\nexport enum NodeTypeNames {\n Master = 'Control plane',\n Worker = 'Worker',\n}\n\nexport const isMCPMaster = (mcp: MachineConfigPoolKind) => mcp.metadata.name === NodeTypes.master;\n\nexport const isMCPWorker = (mcp: MachineConfigPoolKind) => mcp.metadata.name === NodeTypes.worker;\n\nexport const isMCPPaused = (mcp: MachineConfigPoolKind) => mcp.spec?.paused;\n\nexport const sortMCPsByCreationTimestamp = (a: MachineConfigPoolKind, b: MachineConfigPoolKind) =>\n a.metadata.creationTimestamp.localeCompare(b.metadata.creationTimestamp);\n\nexport const clusterIsUpToDateOrUpdateAvailable = (status: ClusterUpdateStatus) =>\n status === ClusterUpdateStatus.UpToDate || status === ClusterUpdateStatus.UpdatesAvailable;\n\nexport const getMCPsToPausePromises = (\n machineConfigPools: MachineConfigPoolKind[],\n paused: boolean,\n) =>\n machineConfigPools.map((mcp) => {\n const patch = [{ op: 'add', path: '/spec/paused', value: paused }];\n return k8sPatch(MachineConfigPoolModel, mcp, patch);\n });\n","import * as _ from 'lodash';\nimport { CatalogItem } from '@console/dynamic-plugin-sdk/src/extensions';\nimport { CatalogCategory, CatalogSubcategory } from './types';\n\nexport const NO_GROUPING = 'none';\nexport const ALL_CATEGORY = 'all';\nexport const OTHER_CATEGORY = 'other';\n\nexport const matchSubcategories = (\n category: CatalogCategory,\n item: CatalogItem,\n): (CatalogCategory | CatalogSubcategory)[] => {\n if (!category.subcategories) {\n if (!category.tags) {\n return [];\n }\n\n const intersection = [category.tags, item.tags || []].reduce((a, b) =>\n a.filter((c) => b.includes(c)),\n );\n if (!_.isEmpty(intersection)) {\n return [category];\n }\n\n return [];\n }\n\n const matchedSubcategories: (CatalogCategory | CatalogSubcategory)[] = [];\n _.each(category.subcategories, (subCategory) => {\n const valuesIntersection = [subCategory.tags, item.tags || []].reduce((a, b) =>\n a.filter((c) => b.includes(c)),\n );\n if (!_.isEmpty(valuesIntersection)) {\n matchedSubcategories.push(subCategory, ...matchSubcategories(subCategory, item));\n }\n });\n\n return matchedSubcategories;\n};\n\n// categorize item id under sub and main categories\nexport const addItem = (\n categorizedIds: Record,\n itemId: string,\n categoryId: string,\n): void => {\n // Add the item to the category\n if (!categorizedIds[categoryId]) {\n categorizedIds[categoryId] = [itemId];\n } else if (!categorizedIds[categoryId].includes(itemId)) {\n categorizedIds[categoryId].push(itemId);\n }\n};\n\n/**\n * Creates an array of item Ids for each matching category and subcategory.\n * If no match, categorizes item id under 'Other' main category.\n */\nexport const categorize = (\n items: CatalogItem[],\n categories: CatalogCategory[],\n): Record => {\n const categorizedIds = {};\n\n // Categorize each item\n _.each(items, (item) => {\n let itemCategorized = false;\n\n addItem(categorizedIds, item.uid, ALL_CATEGORY); // add each item to all category\n\n _.each(categories, (category: CatalogCategory) => {\n const matchedSubcategories = matchSubcategories(category, item);\n _.each(matchedSubcategories, (subcategory) => {\n addItem(categorizedIds, item.uid, category.id);\n addItem(categorizedIds, item.uid, subcategory.id);\n itemCategorized = true;\n });\n });\n\n if (!itemCategorized) {\n addItem(categorizedIds, item.uid, OTHER_CATEGORY); // add to Other category\n }\n });\n\n return categorizedIds;\n};\n\nexport const findActiveCategory = (\n activeId: string,\n categories: CatalogCategory[],\n): CatalogCategory => {\n let activeCategory = null;\n _.each(categories, (category) => {\n if (activeCategory) {\n return;\n }\n\n if (category.id === activeId) {\n activeCategory = category;\n } else if (category.subcategories) {\n activeCategory = findActiveCategory(activeId, category.subcategories);\n }\n });\n return activeCategory;\n};\n\nexport const hasActiveDescendant = (activeId: string, category: CatalogCategory): boolean => {\n if (_.has(category.subcategories, activeId)) {\n return true;\n }\n\n return _.some(category.subcategories, (subcategory) =>\n hasActiveDescendant(activeId, subcategory),\n );\n};\n\nexport const isActiveTab = (activeId: string, category: CatalogCategory): boolean => {\n return _.has(category.subcategories, activeId);\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define, tsdoc/syntax */\nimport * as _ from 'lodash-es';\nimport * as React from 'react';\nimport * as classNames from 'classnames';\nimport * as PropTypes from 'prop-types';\nimport { Link, useParams } from 'react-router-dom-v5-compat';\nimport { Helmet } from 'react-helmet';\nimport { Button, ButtonSize, ButtonVariant, Chip, ChipGroup } from '@patternfly/react-core';\nimport { Trans, useTranslation } from 'react-i18next';\n\nimport { namespaceProptype } from '../propTypes';\nimport { ResourceListDropdown } from './resource-dropdown';\nimport { TextFilter } from './factory';\nimport {\n apiGroupForReference,\n isGroupVersionKind,\n kindForReference,\n referenceFor,\n watchURL,\n} from '../module/k8s';\nimport { withStartGuide } from './start-guide';\nimport { WSFactory } from '../module/ws-factory';\nimport { EventModel, NodeModel } from '../models';\nimport { connectToFlags } from '../reducers/connectToFlags';\nimport { FLAGS } from '@console/shared/src/constants';\nimport {\n Box,\n Dropdown,\n Loading,\n PageHeading,\n ResourceIcon,\n ResourceLink,\n resourcePathFromModel,\n Timestamp,\n TogglePlay,\n} from './utils';\nimport { EventStreamList } from './utils/event-stream';\nimport CloseButton from '@console/shared/src/components/close-button';\nimport { ActionMenu, ActionMenuVariant, ActionServiceProvider } from '@console/shared';\nimport ActionMenuItem from '@console/shared/src/components/actions/menu/ActionMenuItem';\n\nconst maxMessages = 500;\nconst flushInterval = 500;\n\n// We have to check different properties depending on whether events were\n// created with the core/v1 events API or the new events.k8s.io API.\nconst getFirstTime = (event) => event.firstTimestamp || event.eventTime;\nexport const getLastTime = (event) => {\n const lastObservedTime = event.series ? event.series.lastObservedTime : null;\n return event.lastTimestamp || lastObservedTime || event.eventTime;\n};\nexport const sortEvents = (events) => {\n return _.orderBy(events, [getLastTime, getFirstTime, 'name'], ['desc', 'desc', 'asc']);\n};\n\n// Predicate function to filter by event \"type\" (normal, warning, or all)\nexport const typeFilter = (eventType, event) => {\n if (eventType === 'all') {\n return true;\n }\n const { type = 'normal' } = event;\n return type.toLowerCase() === eventType;\n};\n\nconst kindFilter = (reference, { involvedObject }) => {\n if (!reference) {\n return true;\n }\n const kinds = reference.split(',');\n return kinds.some((ref) => {\n if (!isGroupVersionKind(ref)) {\n return involvedObject.kind === ref;\n }\n // Use `referenceFor` to resolve `apiVersion` when missing from `involvedObject`.\n // We need `apiVersion` to get the group.\n const involvedObjectRef = referenceFor(involvedObject);\n if (!involvedObjectRef) {\n return false;\n }\n // Only check the group and kind, not the API version, so that we catch\n // events for the same resource under a different API version.\n return (\n involvedObject.kind === kindForReference(ref) &&\n apiGroupForReference(involvedObjectRef) === apiGroupForReference(ref)\n );\n });\n};\n\nconst Actions = ({ actions, options, list, cache, index }) => {\n React.useEffect(() => {\n // Actions contents will render after the initial row height calculation,\n // so recompute the row height.\n cache.clear(index);\n list?.recomputeRowHeights(index);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n
\n {actions.length === 1 ? (\n (\n
\n );\n};\n\nconst Inner = connectToFlags(FLAGS.CAN_LIST_NODE)((props) => {\n const { t } = useTranslation();\n const { event, flags, list, cache, index } = props;\n const { involvedObject: obj, source, message, reason, series, reportingComponent } = event;\n\n const tooltipMsg = `${reason} (${obj.kind})`;\n const isWarning = typeFilter('warning', event);\n const firstTime = getFirstTime(event);\n const lastTime = getLastTime(event);\n const count = series ? series.count : event.count;\n\n // Events in v1beta1 apiVersion store the information about the reporting component\n // in the 'source.component' field. Events in v1 apiVersion are storing the information\n // in the `reportingComponent` field.\n // Unfortunatelly we cannot determine which field to use based on the apiVersion since\n // v1beta1 is internally converted to v1.\n const component = source.component ? source.component : reportingComponent;\n\n return (\n \n
\n \n
\n
\n
\n
\n
\n \n {obj.namespace && (\n \n )}\n {lastTime && }\n
\n
\n \n {component !== 'kubelet' &&\n t('public~Generated from {{ sourceComponent }}', {\n sourceComponent: component,\n })}\n {component === 'kubelet' && flags[FLAGS.CAN_LIST_NODE] && (\n \n Generated from {{ sourceComponent: component }} on{' '}\n \n {{ sourceHost: source.host }}\n \n \n )}\n {component === 'kubelet' &&\n !flags[FLAGS.CAN_LIST_NODE] &&\n t('public~Generated from {{ sourceComponent }} on {{ sourceHost }}', {\n sourceComponent: component,\n sourceHost: source.host,\n })}\n \n
\n {count > 1 && firstTime && (\n \n \n {{ eventCount: count }} times in the last{' '}\n \n \n \n )}\n {count > 1 && !firstTime && (\n \n \n {{ eventCount: count }} times\n \n \n )}\n \n {({ actions, options, loaded }) =>\n loaded &&\n actions.length > 0 && (\n \n )\n }\n \n
\n
\n
\n
{message}
\n
\n
\n );\n});\n\nexport const EventsList = (props) => {\n const { t } = useTranslation();\n const [type, setType] = React.useState('all');\n const [textFilter, setTextFilter] = React.useState('');\n const { ns } = useParams();\n const [selected, setSelected] = React.useState(new Set([]));\n const eventTypes = {\n all: t('public~All types'),\n normal: t('public~Normal'),\n warning: t('public~Warning'),\n };\n\n const toggleSelected = (selection) => {\n setSelected((prev) => {\n const updateItems = new Set(prev);\n updateItems.has(selection) ? updateItems.delete(selection) : updateItems.add(selection);\n return updateItems;\n });\n };\n\n const removeResource = (selection) => {\n setSelected((prev) => {\n const updateItems = new Set(prev);\n updateItems.delete(selection);\n return updateItems;\n });\n };\n\n const clearSelection = () => {\n setSelected(new Set());\n };\n\n return (\n <>\n \n
\n \n setType(v)}\n selectedKey={type}\n title={t('public~All types')}\n />\n setTextFilter(val || '')}\n />\n
\n
\n {selected.size > 0 && (\n \n {[...selected].map((chip) => {\n return (\n removeResource(chip)}>\n \n {kindForReference(chip)}\n \n );\n })}\n \n \n )}\n
\n
\n \n \n );\n};\n\nexport const NoEvents = () => {\n const { t } = useTranslation();\n return (\n \n
\n {t('public~No events')}\n
\n
\n );\n};\n\nexport const NoMatchingEvents = ({ allCount }) => {\n const { t } = useTranslation();\n return (\n \n
{t('public~No matching events')}
\n
\n {allCount >= maxMessages\n ? t('public~{{count}}+ event exist, but none match the current filter', {\n count: maxMessages,\n })\n : t('public~{{count}} event exist, but none match the current filter', {\n count: allCount,\n })}\n
\n
\n );\n};\n\nexport const ErrorLoadingEvents = () => {\n const { t } = useTranslation();\n return (\n \n
\n {t('public~Error loading events')}\n
\n
\n {t('public~An error occurred during event retrieval. Attempting to reconnect...')}\n
\n
\n );\n};\n\nexport const EventStreamPage = withStartGuide(({ noProjectsAvailable, ...rest }) => {\n const { t } = useTranslation();\n const title = t('public~Events');\n return (\n <>\n \n {title}\n \n \n \n );\n});\n\nconst EventStream = ({\n namespace,\n fieldSelector,\n mock,\n resourceEventStream,\n kind,\n type,\n filter,\n textFilter,\n}) => {\n const { t } = useTranslation();\n const [active, setActive] = React.useState(true);\n const [sortedEvents, setSortedEvents] = React.useState([]);\n const [error, setError] = React.useState(null);\n const [loading, setLoading] = React.useState(true);\n const ws = React.useRef(null);\n\n const filteredEvents = React.useMemo(() => {\n return filterEvents(sortedEvents, { kind, type, filter, textFilter }).slice(0, maxMessages);\n }, [sortedEvents, kind, type, filter, textFilter]);\n\n // Handle websocket setup and teardown when dependent props change\n React.useEffect(() => {\n ws.current?.destroy();\n if (!mock) {\n const webSocketID = `${namespace || 'all'}-sysevents`;\n const watchURLOptions = {\n ...(namespace ? { ns: namespace } : {}),\n ...(fieldSelector\n ? {\n queryParams: {\n fieldSelector: encodeURIComponent(fieldSelector),\n },\n }\n : {}),\n };\n const path = watchURL(EventModel, watchURLOptions);\n const webSocketOptions = {\n host: 'auto',\n reconnect: true,\n path,\n jsonParse: true,\n bufferFlushInterval: flushInterval,\n bufferMax: maxMessages,\n };\n\n ws.current = new WSFactory(webSocketID, webSocketOptions)\n .onbulkmessage((messages) => {\n // Make one update to state per batch of events.\n setSortedEvents((currentSortedEvents) => {\n const topEvents = currentSortedEvents.slice(0, maxMessages);\n const batch = messages.reduce((acc, { object, type: eventType }) => {\n const uid = object.metadata.uid;\n switch (eventType) {\n case 'ADDED':\n case 'MODIFIED':\n if (acc[uid] && acc[uid].count > object.count) {\n // We already have a more recent version of this message stored, so skip this one\n return acc;\n }\n return { ...acc, [uid]: object };\n case 'DELETED':\n return _.omit(acc, uid);\n default:\n // eslint-disable-next-line no-console\n console.error(`UNHANDLED EVENT: ${eventType}`);\n return acc;\n }\n }, _.keyBy(topEvents, 'metadata.uid'));\n return sortEvents(batch);\n });\n })\n .onopen(() => {\n setError(false);\n setLoading(false);\n })\n .onclose((evt) => {\n if (evt?.wasClean === false) {\n setError(evt.reason || t('public~Connection did not close cleanly.'));\n }\n })\n .onerror(() => {\n setError(true);\n });\n }\n return () => {\n ws.current?.destroy();\n };\n }, [namespace, fieldSelector, mock, t]);\n\n // Pause/unpause the websocket when the active state changes\n React.useEffect(() => {\n if (active) {\n ws.current?.unpause();\n } else {\n ws.current?.pause();\n }\n }, [active]);\n\n const toggleStream = () => {\n setActive((prev) => !prev);\n };\n\n const count = filteredEvents.length;\n const allCount = sortedEvents.length;\n const noEvents = allCount === 0;\n const noMatches = allCount > 0 && count === 0;\n let sysEventStatus, statusBtnTxt;\n\n if (noEvents || mock || (noMatches && resourceEventStream)) {\n sysEventStatus = ;\n }\n if (noMatches && !resourceEventStream) {\n sysEventStatus = ;\n }\n\n if (error) {\n statusBtnTxt = (\n \n {_.isString(error)\n ? t('public~Error connecting to event stream: { error }', {\n error,\n })\n : t('public~Error connecting to event stream')}\n \n );\n sysEventStatus = ;\n } else if (loading) {\n statusBtnTxt = {t('public~Loading events...')};\n sysEventStatus = ;\n } else if (active) {\n statusBtnTxt = {t('public~Streaming events...')};\n } else {\n statusBtnTxt = {t('public~Event stream is paused.')};\n }\n\n const klass = classNames('co-sysevent-stream__timeline', {\n 'co-sysevent-stream__timeline--empty': !allCount || !count,\n });\n const messageCount =\n count < maxMessages\n ? t('public~Showing {{count}} event', { count })\n : t('public~Showing most recent {{count}} event', { count });\n\n return (\n
\n
\n
\n
{statusBtnTxt}
\n
\n {messageCount}\n
\n
\n\n
\n \n
\n {t('public~Older events are not stored.')}\n
\n
\n {count > 0 && }\n {sysEventStatus}\n
\n
\n );\n};\n\nEventStream.defaultProps = {\n type: 'all',\n kind: '',\n mock: false,\n};\n\nEventStream.propTypes = {\n type: PropTypes.string,\n filter: PropTypes.array,\n kind: PropTypes.string.isRequired,\n mock: PropTypes.bool,\n namespace: namespaceProptype,\n showTitle: PropTypes.bool,\n textFilter: PropTypes.string,\n};\n\nconst filterEvents = (messages, { kind, type, filter, textFilter }) => {\n // Don't use `fuzzy` because it results in some surprising matches in long event messages.\n // Instead perform an exact substring match on each word in the text filter.\n const words = _.uniq(_.toLower(textFilter).match(/\\S+/g)).sort((a, b) => {\n // Sort the longest words first.\n return b.length - a.length;\n });\n\n const textMatches = (obj) => {\n if (_.isEmpty(words)) {\n return true;\n }\n const name = _.get(obj, 'involvedObject.name', '');\n const message = _.toLower(obj.message);\n return _.every(words, (word) => name.indexOf(word) !== -1 || message.indexOf(word) !== -1);\n };\n\n const f = (obj) => {\n if (type && !typeFilter(type, obj)) {\n return false;\n }\n if (kind && !kindFilter(kind, obj)) {\n return false;\n }\n if (filter && !filter.some((flt) => flt(obj.involvedObject, obj))) {\n return false;\n }\n if (!textMatches(obj)) {\n return false;\n }\n return true;\n };\n\n return _.filter(messages, f);\n};\n\nexport const ResourceEventStream_ = ({\n obj: {\n kind,\n metadata: { name, namespace, uid },\n },\n}) => (\n \n);\n\nexport { ResourceEventStream_ as ResourceEventStream };\n\nexport const ResourcesEventStream = ({ filters, namespace }) => (\n \n);\n\n/**\n * @typedef {import('@console/dynamic-plugin-sdk/src/extensions').ResourceEventStreamProps} ResourceEventStreamProps\n * @augments React.FC\n */\nexport const WrappedResourceEventStream = ({ resource }) => ;\n\nexport default ResourceEventStream_;\n","export { useFlag } from '@console/dynamic-plugin-sdk/src/utils/flags';\n","import * as _ from 'lodash-es';\n\nimport { BuildModel, BuildConfigModel } from '../../models';\nimport { k8sCreate } from './';\nimport { formatPrometheusDuration } from '@openshift-console/plugin-shared/src/datetime/prometheus';\n\nconst BUILD_NUMBER_ANNOTATION = 'openshift.io/build.number';\n\nexport enum BuildPhase {\n Cancelled = 'Cancelled',\n Complete = 'Complete',\n Error = 'Error',\n Failed = 'Failed',\n New = 'New',\n Pending = 'Pending',\n Running = 'Running',\n}\n\nconst createBuildRequest = (obj, model, subresource) => {\n const req = {\n kind: 'BuildRequest',\n apiVersion: 'build.openshift.io/v1',\n metadata: _.pick(obj.metadata, ['name', 'namespace']),\n };\n const opts = {\n name: obj.metadata.name,\n path: subresource,\n };\n return k8sCreate(model, req, opts);\n};\n\nexport const startBuild = (buildConfig) => {\n return createBuildRequest(buildConfig, BuildConfigModel, 'instantiate');\n};\n\nexport const cloneBuild = (build) => {\n return createBuildRequest(build, BuildModel, 'clone');\n};\n\nexport const isFinished = (build) => !!_.get(build, 'status.completionTimestamp');\n\n// Formats duration for finished builds.\nexport const formatBuildDuration = (build) => {\n if (!isFinished(build)) {\n return '';\n }\n\n const duration = _.get(build, 'status.duration');\n if (!_.isFinite(duration)) {\n return '';\n }\n\n // Duration in the build is returned as nanoseconds. Convert to milliseconds.\n const ms = Math.floor(duration / 1000 / 1000);\n return formatPrometheusDuration(ms);\n};\n\nexport const getBuildNumber = (build) => {\n const buildNumber = _.get(build, ['metadata', 'annotations', BUILD_NUMBER_ANNOTATION]);\n return !!buildNumber && parseInt(buildNumber, 10);\n};\n","import * as React from 'react';\nimport * as classNames from 'classnames';\nimport * as _ from 'lodash-es';\n\nimport { getReference } from '@console/dynamic-plugin-sdk/src/utils/k8s';\nimport { ResourceIconProps } from '@console/dynamic-plugin-sdk';\nimport { K8sResourceKindReference } from '../../module/k8s';\nimport { modelFor } from '../../module/k8s/k8s-models';\nimport { kindToAbbr } from '../../module/k8s/get-resources';\n\nconst MEMO = {};\n\nexport const ResourceIcon: React.SFC = ({\n className,\n groupVersionKind,\n kind,\n}) => {\n // if no kind or groupVersionKind, return null so an empty icon isn't rendered\n if (!kind && !groupVersionKind) {\n return null;\n }\n const kindReference = kind || getReference(groupVersionKind);\n const memoKey = className ? `${kindReference}/${className}` : kindReference;\n if (MEMO[memoKey]) {\n return MEMO[memoKey];\n }\n const kindObj = modelFor(kindReference);\n const kindStr = kindObj?.kind ?? kindReference;\n const backgroundColor = _.get(kindObj, 'color', undefined);\n const klass = classNames(`co-m-resource-icon co-m-resource-${kindStr.toLowerCase()}`, className);\n const iconLabel = (kindObj && kindObj.abbr) || kindToAbbr(kindStr);\n\n const rendered = (\n <>\n {kindStr}\n \n {iconLabel}\n \n \n );\n if (kindObj) {\n MEMO[memoKey] = rendered;\n }\n\n return rendered;\n};\n\nexport type ResourceNameProps = {\n kind: K8sResourceKindReference;\n name: string;\n};\n\nexport const ResourceName: React.SFC = (props) => (\n \n {' '}\n {props.name}\n \n);\n\nResourceName.displayName = 'ResourceName';\n","import { LAST_LANGUAGE_LOCAL_STORAGE_KEY } from './const';\n\nexport const getLastLanguage = (): string =>\n localStorage.getItem(LAST_LANGUAGE_LOCAL_STORAGE_KEY) ?? navigator.language;\n","import * as _ from 'lodash';\nimport { Map as ImmutableMap } from 'immutable';\nimport { Board, MONITORING_DASHBOARDS_VARIABLE_ALL_OPTION_KEY } from './types';\nimport { getQueryArgument } from '../../utils';\n\nexport const DEFAULT_GRAPH_SAMPLES = 60;\n\nexport const getActivePerspective = (namespace: string): string => (namespace ? 'dev' : 'admin');\n\nexport const getAllVariables = (boards: Board[], newBoardName: string, namespace: string) => {\n const data = _.find(boards, { name: newBoardName })?.data;\n\n const allVariables = {};\n _.each(data?.templating?.list, (v) => {\n if (v.type === 'query' || v.type === 'interval') {\n // Look for query param that is equal to the variable name\n let value = getQueryArgument(v.name);\n\n // Look for an option that should be selected by default\n if (value === null) {\n value = _.find(v.options, { selected: true })?.value;\n }\n\n // If no default option was found, default to \"All\" (if present)\n if (value === undefined && v.includeAll) {\n value = MONITORING_DASHBOARDS_VARIABLE_ALL_OPTION_KEY;\n }\n\n allVariables[v.name] = ImmutableMap({\n datasource: v.datasource,\n includeAll: !!v.includeAll,\n isHidden: namespace && v.name === 'namespace' ? true : v.hide !== 0,\n isLoading: namespace ? v.type === 'query' && !namespace : v.type === 'query',\n options: _.map(v.options, 'value'),\n query: v.type === 'query' ? v.query : undefined,\n value: namespace && v.name === 'namespace' ? namespace : value || v.options?.[0]?.value,\n });\n }\n });\n\n return allVariables;\n};\n","import { CustomError } from './custom-error';\n\n/**\n * Http error\n *\n * Usage: throw HttpError.fromCode(404)\n */\nexport class HttpError extends CustomError {\n protected static messages = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 402: 'Payment Required',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 406: 'Not Acceptable',\n 407: 'Proxy Authentication Required', // RFC 7235\n 408: 'Request Timeout',\n 409: 'Conflict',\n 410: 'Gone',\n 411: 'Length Required',\n 412: 'Precondition Failed', // RFC 7232\n 413: 'Payload Too Large', // RFC 7231\n 414: 'URI Too Long', // RFC 7231\n 415: 'Unsupported Media Type',\n 416: 'Range Not Satisfiable', // RFC 7233\n 417: 'Expectation Failed',\n 418: \"I'm a teapot\", // RFC 2324\n 421: 'Misdirected Request', // RFC 7540\n 426: 'Upgrade Required',\n 428: 'Precondition Required', // RFC 6585\n 429: 'Too Many Requests', // RFC 6585\n 431: 'Request Header Fields Too Large', // RFC 6585\n 451: 'Unavailable For Legal Reasons', // RFC 7725\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n 504: 'Gateway Timeout',\n 505: 'HTTP Version Not Supported',\n 506: 'Variant Also Negotiates', // RFC 2295\n 510: 'Not Extended', // RFC 2774\n 511: 'Network Authentication Required', // RFC 6585\n };\n\n public constructor(\n message: string,\n public code?: number,\n public response?: Response,\n public json?: any,\n ) {\n super(message);\n }\n\n public static fromCode(code: number) {\n return new HttpError(HttpError.messages[code], code);\n }\n}\n\nexport class TimeoutError extends CustomError {\n public constructor(public url: string, public ms: number) {\n super(`Call to ${url} timed out after ${ms}ms.`);\n }\n}\n\nexport class IncompleteDataError extends CustomError {\n public constructor(public labels: string[]) {\n super(`Could not fetch all data. This data are missing: ${labels.join(', ')}.`);\n }\n}\n\nexport class RetryError extends CustomError {}\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { getName, getNamespace } from '@console/shared/src/selectors/common';\nimport {\n checkAccess,\n impersonateStateToProps,\n ImpersonateKind,\n useAccessReviewAllowed,\n useAccessReview as useAccReview,\n} from '@console/dynamic-plugin-sdk';\nimport {\n AccessReviewResourceAttributes,\n K8sKind,\n K8sResourceKind,\n K8sVerb,\n} from '../../module/k8s';\n\nexport { checkAccess };\n\n/** @deprecated - Use useAccessReview from \\@console/dynamic-plugin-sdk instead. */\nexport const useAccessReview2 = (\n resourceAttributes: AccessReviewResourceAttributes,\n impersonate?: ImpersonateKind,\n) => useAccReview(resourceAttributes, impersonate);\n\n/** @deprecated - Use useAccessReview from \\@console/dynamic-plugin-sdk instead. */\nexport const useAccessReview = (\n resourceAttributes: AccessReviewResourceAttributes,\n impersonate?: ImpersonateKind,\n) => useAccessReviewAllowed(resourceAttributes, impersonate);\n\nexport const useMultipleAccessReviews = (\n multipleResourceAttributes: AccessReviewResourceAttributes[],\n impersonate?: ImpersonateKind,\n): [AccessReviewsResult[], boolean] => {\n const [loading, setLoading] = React.useState(true);\n const [allowedArr, setAllowedArr] = React.useState([]);\n\n React.useEffect(() => {\n const promises = multipleResourceAttributes.map((resourceAttributes) =>\n checkAccess(resourceAttributes, impersonate),\n );\n\n Promise.all(promises)\n .then((values) => {\n setLoading(false);\n const updatedAllowedArr = values.map((result) => ({\n resourceAttributes: result.spec.resourceAttributes,\n allowed: result.status.allowed,\n }));\n setAllowedArr(updatedAllowedArr);\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.warn('SelfSubjectAccessReview failed', e);\n setLoading(false);\n });\n }, [impersonate, multipleResourceAttributes]);\n\n return [allowedArr, loading];\n};\n\nconst RequireCreatePermission_: React.FC = ({\n model,\n namespace,\n impersonate,\n children,\n}) => {\n const isAllowed = useAccessReviewAllowed(\n {\n group: model?.apiGroup,\n resource: model?.plural,\n verb: 'create',\n namespace,\n },\n impersonate,\n );\n return isAllowed ? <>{children} : null;\n};\nexport const RequireCreatePermission = connect(impersonateStateToProps)(RequireCreatePermission_);\nRequireCreatePermission.displayName = 'RequireCreatePermission';\n\ntype RequireCreatePermissionProps = {\n model: K8sKind;\n namespace?: string;\n impersonate?: ImpersonateKind;\n children: React.ReactNode;\n};\n\ntype AccessReviewsResult = {\n resourceAttributes: AccessReviewResourceAttributes;\n allowed: boolean;\n};\n\nexport const asAccessReview = (\n kindObj: K8sKind,\n obj: K8sResourceKind,\n verb: K8sVerb,\n subresource?: string,\n): AccessReviewResourceAttributes => {\n if (!obj) {\n console.warn('review obj should not be null'); // eslint-disable-line no-console\n return null;\n }\n return {\n group: kindObj.apiGroup,\n resource: kindObj.plural,\n name: getName(obj),\n namespace: getNamespace(obj),\n verb,\n subresource,\n };\n};\n","import * as React from 'react';\nimport classNames from 'classnames';\nimport { StatusComponentProps } from '../../../extensions/console-types';\nimport { DASH } from '../../constants';\nimport CamelCaseWrap from '../utils/camel-case-wrap';\n\ntype StatusIconAndTextProps = StatusComponentProps & {\n icon?: React.ReactElement;\n spin?: boolean;\n};\n\n/**\n * Component for displaying a status icon and text\n * @param {string} [title] - (optional) status text\n * @param {boolean} [iconOnly] - (optional) if true, only displays icon\n * @param {boolean} [noTooltip] - (optional) if true, tooltip won't be displayed\n * @param {string} [className] - (optional) additional class name for the component\n * @param {React.ReactElement} [icon] - (optional) icon to be displayed\n * @param {boolean} [spin] - (optional) if true, icon rotates\n * @example\n * ```tsx\n * \n * ```\n */\nconst StatusIconAndText: React.FC = ({\n icon,\n title,\n spin,\n iconOnly,\n noTooltip,\n className,\n}) => {\n if (!title) {\n return <>{DASH};\n }\n\n return (\n \n {icon &&\n React.cloneElement(icon, {\n className: classNames(\n spin && 'fa-spin',\n icon.props.className,\n !iconOnly && 'co-icon-and-text__icon co-icon-flex-child',\n ),\n })}\n {!iconOnly && }\n \n );\n};\n\nexport default StatusIconAndText;\n","export { useK8sModel } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks';\n","export enum InventoryStatusGroup {\n WARN = 'WARN',\n ERROR = 'ERROR',\n PROGRESS = 'PROGRESS',\n NOT_MAPPED = 'NOT_MAPPED',\n UNKNOWN = 'UNKNOWN',\n}\n","import * as _ from 'lodash';\nimport { K8sResourceCommon } from '@console/internal/module/k8s';\n\nexport const hasLabel = (obj: K8sResourceCommon, label: string): boolean =>\n _.has(obj, ['metadata', 'labels', label]);\nexport const getName = (value: A) =>\n _.get(value, 'metadata.name') as K8sResourceCommon['metadata']['name'];\nexport const getNamespace = (value: A) =>\n _.get(value, 'metadata.namespace') as K8sResourceCommon['metadata']['namespace'];\nexport const getUID = (value: A) =>\n _.get(value, 'metadata.uid') as K8sResourceCommon['metadata']['uid'];\nexport const getDeletetionTimestamp = (value: A) =>\n _.get(value, 'metadata.deletionTimestamp') as K8sResourceCommon['metadata']['deletionTimestamp'];\nexport const getCreationTimestamp = (value: A) =>\n _.get(value, 'metadata.creationTimestamp') as K8sResourceCommon['metadata']['creationTimestamp'];\nexport const getAPIVersion = (value: A) =>\n _.get(value, 'apiVersion') as K8sResourceCommon['apiVersion'];\nexport const getKind = (value: A) =>\n _.get(value, 'kind') as K8sResourceCommon['kind'];\nexport const getOwnerReferences = (value: A) =>\n _.get(value, 'metadata.ownerReferences') as K8sResourceCommon['metadata']['ownerReferences'];\nexport const getLabels = (\n value: A,\n defaultValue?: K8sResourceCommon['metadata']['labels'],\n) => (_.has(value, 'metadata.labels') ? value.metadata.labels : defaultValue);\nexport const getLabel = (\n value: A,\n label: string,\n defaultValue?: string,\n) => (_.has(value, 'metadata.labels') ? value.metadata.labels[label] : defaultValue);\nexport const getAnnotations = (\n value: A,\n defaultValue?: K8sResourceCommon['metadata']['annotations'],\n) => (_.has(value, 'metadata.annotations') ? value.metadata.annotations : defaultValue);\n","import * as _ from 'lodash-es';\nimport { PluginStore } from '@console/plugin-sdk/src/store';\nimport { ActivePlugin } from '@console/plugin-sdk/src/typings';\nimport { getURLSearchParams } from './components/utils/link';\n\nconst getEnabledDynamicPluginNames = () => {\n const allPluginNames = window.SERVER_FLAGS.consolePlugins;\n const disabledPlugins = getURLSearchParams()['disable-plugins'];\n\n if (disabledPlugins === '') {\n return [];\n } else if (!disabledPlugins) {\n return allPluginNames;\n }\n\n const disabledPluginNames = _.compact(disabledPlugins.split(','));\n return allPluginNames.filter((pluginName) => !disabledPluginNames.includes(pluginName));\n};\n\nconst getI18nNamespaces = () => {\n return window.SERVER_FLAGS.i18nNamespaces;\n};\n\n// The '@console/active-plugins' module is generated during a webpack build,\n// so we use dynamic require() instead of the usual static import statement.\nconst activePlugins =\n process.env.NODE_ENV !== 'test'\n ? (require('@console/active-plugins').default as ActivePlugin[])\n : [];\n\nconst dynamicPluginNames = getEnabledDynamicPluginNames();\nconst i18nNamespaces = getI18nNamespaces();\n\nexport const pluginStore = new PluginStore(activePlugins, dynamicPluginNames, i18nNamespaces);\n\nif (process.env.NODE_ENV !== 'production') {\n // Expose Console plugin store for debugging\n window.pluginStore = pluginStore;\n}\n\nif (process.env.NODE_ENV !== 'test') {\n // eslint-disable-next-line no-console\n console.info(`Static plugins: [${activePlugins.map((p) => p.name).join(', ')}]`);\n // eslint-disable-next-line no-console\n console.info(`Dynamic plugins: [${dynamicPluginNames.join(', ')}]`);\n}\n","import { NavExtension, isNavSection, K8sModel } from '@console/dynamic-plugin-sdk';\nimport { LoadedExtension } from '@console/dynamic-plugin-sdk/src/types';\nimport { getReferenceForModel } from '@console/dynamic-plugin-sdk/src/utils/k8s';\nimport { stripBasePath } from '@console/internal/components/utils';\nimport { startsWithSome } from '@console/shared';\n\nconst toArray = (val) => (val ? (Array.isArray(val) ? val : [val]) : []);\n\nconst itemDependsOnItem = (s1: NavExtension, s2: NavExtension): boolean => {\n if (!s1.properties.insertBefore && !s1.properties.insertAfter) {\n return false;\n }\n const before = toArray(s1.properties.insertBefore);\n const after = toArray(s1.properties.insertAfter);\n return before.includes(s2.properties.id) || after.includes(s2.properties.id);\n};\n\nconst isPositioned = (item: NavExtension, allItems: NavExtension[]): boolean =>\n !!allItems.find((i) => itemDependsOnItem(item, i));\n\nconst findInsertBeforeIndex = (item: NavExtension, allItems: NavExtension[]): number => {\n return toArray(item.properties.insertBefore).reduce((index, currentItem) => {\n // take only the first index found\n if (index < 0) {\n return allItems.findIndex((i) => i.properties.id === currentItem);\n }\n return index;\n }, -1);\n};\n\nconst findInsertAfterIndex = (item: NavExtension, allItems: NavExtension[]): number => {\n return toArray(item.properties.insertAfter).reduce((index, currentItem) => {\n if (index < 0) {\n const newIndex = allItems.findIndex((i) => i.properties.id === currentItem);\n if (newIndex >= 0) {\n return newIndex + 1;\n }\n }\n return index;\n }, -1);\n};\n\nconst findIndexForItem = (item: NavExtension, allItems: NavExtension[]) => {\n const insertBeforeIndex = findInsertBeforeIndex(item, allItems);\n if (insertBeforeIndex >= 0) {\n return insertBeforeIndex;\n }\n return findInsertAfterIndex(item, allItems);\n};\n\nconst insertItem = (\n item: LoadedExtension,\n currentItems: LoadedExtension[],\n): void => {\n const index = findIndexForItem(item, currentItems);\n if (index >= 0) {\n currentItems.splice(index, 0, item);\n } else {\n currentItems.push(item);\n }\n};\n\nconst insertPositionedItems = (\n insertItems: LoadedExtension[],\n currentItems: LoadedExtension[],\n): void => {\n if (insertItems.length === 0) {\n return;\n }\n\n const sortedItems = insertItems.filter((item) => !isPositioned(item, insertItems));\n const positionedItems = insertItems.filter((item) => isPositioned(item, insertItems));\n\n if (sortedItems.length === 0) {\n // Circular dependencies\n positionedItems.forEach((i) => insertItem(i, currentItems));\n return;\n }\n\n sortedItems.forEach((i) => insertItem(i, currentItems));\n insertPositionedItems(positionedItems, currentItems);\n};\n\nexport const getSortedNavExtensions = (\n navItems: LoadedExtension[],\n): LoadedExtension[] => {\n const sortedItems = navItems.filter((item) => !isPositioned(item, navItems));\n const positionedItems = navItems.filter((item) => isPositioned(item, navItems));\n insertPositionedItems(positionedItems, sortedItems);\n return sortedItems;\n};\n\nexport const sortExtensionItems = (\n extensionItems: LoadedExtension[],\n): LoadedExtension[] => {\n // Mapped by item id\n const mappedIds = extensionItems.reduce((mem, i) => {\n mem[i.properties.id] = i;\n return mem;\n }, {});\n\n // determine all dependencies for a given id\n const dependencies = (id: string, currentDependencies: string[] = []): string[] => {\n if (currentDependencies.includes(id)) {\n return [];\n }\n const { insertBefore, insertAfter } = mappedIds[id].properties;\n const before = toArray(insertBefore);\n const after = toArray(insertAfter);\n const dependencyIds = [...before, ...after].filter(\n (i) => i !== id && !currentDependencies.includes(i),\n );\n return dependencyIds.reduce((acc, dependencyId) => {\n if (dependencyId) {\n // Add this dependency and its dependencies\n // eslint-disable-next-line no-param-reassign\n acc = [...acc, dependencyId, ...dependencies(dependencyId, [...acc, dependencyId])];\n }\n return acc;\n }, []);\n };\n\n const sortItems = (preSorted: NavExtension[], itemsToSort: NavExtension[]): NavExtension[] => {\n if (itemsToSort.length < 2) {\n preSorted.push(...itemsToSort);\n return;\n }\n\n let sortedItem = false;\n const remainingItems = [];\n itemsToSort.forEach((item) => {\n const deps = dependencies(item.properties.id);\n // If not dependant on any items to be sorted, ok to add it in\n if (!deps.find((id) => itemsToSort.find((i) => i.properties.id === id))) {\n sortedItem = true;\n preSorted.push(item);\n } else {\n // Still has a dependency\n remainingItems.push(item);\n }\n });\n\n if (remainingItems.length) {\n // If nothing changed, just add the remaining items\n if (!sortedItem) {\n preSorted.push(...remainingItems);\n return;\n }\n // Sort the remaining items\n sortItems(preSorted, remainingItems);\n }\n };\n\n const sortedItems = [];\n sortItems(sortedItems, extensionItems);\n\n return sortedItems;\n};\n\n// Strips '//k8s/cluster/', '//k8s/ns//', and\n// '//k8s/all-namespaces/' from the beginning a given path\nexport const stripScopeFromPath = (path: string) =>\n stripBasePath(path)?.replace(\n /^\\/?(?:k8s\\/cluster\\/|k8s\\/all-namespaces\\/|k8s\\/ns\\/[^/]*\\/)?(.*?)\\/?$/,\n '$1',\n );\n\nexport const navItemHrefIsActive = (\n location: string,\n href: string,\n startsWith?: string[],\n): boolean => {\n const scopelessLocation = stripScopeFromPath(location);\n const scopelessHref = stripScopeFromPath(href);\n const locationSegments = scopelessLocation.split('/');\n const hrefSegments = scopelessHref.split('/');\n const hrefMatch = hrefSegments.every((segment, i) => segment === locationSegments?.[i]);\n return hrefMatch || startsWithSome(scopelessLocation, ...(startsWith ?? []));\n};\n\nexport const navItemResourceIsActive = (\n location: string,\n k8sModel: K8sModel,\n startsWith?: string[],\n): boolean => {\n const scopelessPath = stripScopeFromPath(location);\n const [firstSegment] = scopelessPath.split('/');\n const resourceMatches =\n k8sModel &&\n firstSegment &&\n [getReferenceForModel(k8sModel), k8sModel.plural].includes(firstSegment);\n return resourceMatches || startsWithSome(scopelessPath, ...(startsWith ?? []));\n};\n\nexport const isTopLevelNavItem = (e: LoadedExtension) =>\n isNavSection(e) || !e.properties.section;\n","import { action, ActionType as Action } from 'typesafe-actions';\nimport { Dispatch } from 'react-redux';\n\nimport { coFetchJSON } from '../co-fetch';\nimport { k8sBasePath } from '../module/k8s/k8s';\nimport { isWatchActive, RESULTS_TYPE } from '../reducers/dashboards';\nimport { RootState } from '../redux';\nimport { getPrometheusURL, PrometheusEndpoint } from '../components/graphs/helpers';\nimport { PrometheusResponse } from '../components/graphs';\nimport { URL_POLL_DEFAULT_DELAY } from '../components/utils/url-poll-hook';\nimport { Fetch, RequestMap } from '@console/dynamic-plugin-sdk/src/api/internal-types';\n\nexport enum ActionType {\n StopWatch = 'stopWatch',\n SetData = 'setData',\n ActivateWatch = 'activateWatch',\n UpdateWatchTimeout = 'updateWatchTimeout',\n UpdateWatchInFlight = 'updateWatchInFlight',\n SetError = 'setError',\n}\n\nexport const stopWatch = (type: RESULTS_TYPE, key: string) =>\n action(ActionType.StopWatch, { type, key });\nexport const setData = (type: RESULTS_TYPE, key: string, data) =>\n action(ActionType.SetData, { type, key, data });\nexport const activateWatch = (type: RESULTS_TYPE, key: string) =>\n action(ActionType.ActivateWatch, { type, key });\nexport const updateWatchTimeout = (type: RESULTS_TYPE, key: string, timeout: NodeJS.Timer) =>\n action(ActionType.UpdateWatchTimeout, { type, key, timeout });\nexport const updateWatchInFlight = (type: RESULTS_TYPE, key: string, inFlight: boolean) =>\n action(ActionType.UpdateWatchInFlight, { type, key, inFlight });\nexport const setError = (type: RESULTS_TYPE, key: string, error) =>\n action(ActionType.SetError, { type, key, error });\n\nconst dashboardsActions = {\n stopWatch,\n setData,\n activateWatch,\n updateWatchTimeout,\n updateWatchInFlight,\n setError,\n};\n\nexport const getQueryKey = (query: string, timespan?: number): string =>\n timespan ? `${query}@${timespan}` : query;\n\nexport const getPrometheusQueryResponse = (\n prometheusResults: RequestMap,\n query: string,\n timespan?: number,\n): [PrometheusResponse, any] => {\n const queryKey = getQueryKey(query, timespan);\n const data = prometheusResults.getIn([queryKey, 'data']);\n const loadError = prometheusResults.getIn([queryKey, 'loadError']);\n return [data, loadError];\n};\n\nconst fetchPeriodically: FetchPeriodically = async (\n dispatch,\n type,\n key,\n getURL,\n getState,\n fetch,\n) => {\n if (!isWatchActive(getState().dashboards, type, key)) {\n return;\n }\n try {\n dispatch(updateWatchInFlight(type, key, true));\n const data = await fetch(getURL());\n dispatch(setData(type, key, data));\n dispatch(setError(type, key, null));\n } catch (error) {\n dispatch(setError(type, key, error));\n dispatch(setData(type, key, null));\n } finally {\n dispatch(updateWatchInFlight(type, key, false));\n const timeout = setTimeout(\n () => fetchPeriodically(dispatch, type, key, getURL, getState, fetch),\n URL_POLL_DEFAULT_DELAY,\n );\n dispatch(updateWatchTimeout(type, key, timeout));\n }\n};\n\nexport const watchPrometheusQuery: WatchPrometheusQueryAction = (query, namespace, timespan) => (\n dispatch,\n getState,\n) => {\n const queryKey = getQueryKey(query, timespan);\n const isActive = isWatchActive(getState().dashboards, RESULTS_TYPE.PROMETHEUS, queryKey);\n dispatch(activateWatch(RESULTS_TYPE.PROMETHEUS, queryKey));\n if (!isActive) {\n const prometheusBaseURL = namespace\n ? window.SERVER_FLAGS.prometheusTenancyBaseURL\n : window.SERVER_FLAGS.prometheusBaseURL;\n if (!prometheusBaseURL) {\n dispatch(\n setError(RESULTS_TYPE.PROMETHEUS, queryKey, new Error('Prometheus URL is not available')),\n );\n } else {\n const url = () =>\n getPrometheusURL({\n endpoint: timespan ? PrometheusEndpoint.QUERY_RANGE : PrometheusEndpoint.QUERY,\n namespace,\n query,\n timespan,\n });\n fetchPeriodically(dispatch, RESULTS_TYPE.PROMETHEUS, queryKey, url, getState, coFetchJSON);\n }\n }\n};\n\nexport const watchURL: WatchURLAction = (url, fetch = coFetchJSON) => (dispatch, getState) => {\n const isActive = isWatchActive(getState().dashboards, RESULTS_TYPE.URL, url);\n dispatch(activateWatch(RESULTS_TYPE.URL, url));\n if (!isActive) {\n const k8sURL = () => `${k8sBasePath}/${url}`;\n fetchPeriodically(dispatch, RESULTS_TYPE.URL, url, k8sURL, getState, fetch);\n }\n};\n\nexport const stopWatchPrometheusQuery: StopWatchPrometheusAction = (query, timespan) =>\n stopWatch(RESULTS_TYPE.PROMETHEUS, getQueryKey(query, timespan));\nexport const stopWatchURL = (url: string) => stopWatch(RESULTS_TYPE.URL, url);\n\ntype ThunkAction = (dispatch: Dispatch, getState: () => RootState) => void;\n\nexport type WatchURLAction = (url: string, fetch?: Fetch) => ThunkAction;\nexport type WatchPrometheusQueryAction = (\n query: string,\n namespace?: string,\n timespan?: number,\n) => ThunkAction;\nexport type StopWatchURLAction = (url: string) => void;\nexport type StopWatchPrometheusAction = (query: string, timespan?: number) => void;\n\ntype FetchPeriodically = (\n dispatch: Dispatch,\n type: RESULTS_TYPE,\n key: string,\n getURL: () => string,\n getState: () => RootState,\n fetch: Fetch,\n) => void;\n\nexport type DashboardsAction = Action;\n","import * as _ from 'lodash-es';\nimport { Map as ImmutableMap } from 'immutable';\n\nimport { ActionType, UIAction } from '../actions/ui';\nimport { ALL_APPLICATIONS_KEY, ALL_NAMESPACES_KEY } from '@console/shared/src/constants';\nimport { getNamespace } from '../components/utils/link';\nimport { OverviewSpecialGroup } from '../components/overview/constants';\nimport { RootState } from '../redux';\nimport { getUser } from '@console/dynamic-plugin-sdk';\n\nexport type UIState = ImmutableMap;\n\nexport default (state: UIState, action: UIAction): UIState => {\n if (!state) {\n const { pathname } = window.location;\n return ImmutableMap({\n activeNavSectionId: 'workloads',\n location: pathname,\n showOperandsInAllNamespaces: true,\n activeNamespace: ALL_NAMESPACES_KEY,\n activeApplication: ALL_APPLICATIONS_KEY,\n createProjectMessage: '',\n serviceLevel: ImmutableMap({\n level: '',\n daysRemaining: null,\n trialDateEnd: null,\n hasSecretAccess: false,\n clusterID: '',\n }),\n overview: ImmutableMap({\n metrics: {},\n resources: ImmutableMap({}),\n selectedDetailsTab: 'Resources',\n selectedUID: '',\n selectedGroup: OverviewSpecialGroup.GROUP_BY_APPLICATION,\n groupOptions: ImmutableMap(),\n filterValue: '',\n }),\n user: {},\n utilizationDuration: ImmutableMap({\n duration: null,\n endTime: null,\n selectedKey: null,\n }),\n deprecatedOperator: ImmutableMap({\n package: null,\n channel: null,\n version: null,\n }),\n });\n }\n\n switch (action.type) {\n case ActionType.SetActiveApplication:\n return state.set('activeApplication', action.payload.application);\n\n case ActionType.SetActiveNamespace:\n if (!action.payload.namespace) {\n // eslint-disable-next-line no-console\n console.warn('setActiveNamespace: Not setting to falsy!');\n return state;\n }\n\n return state\n .set('activeApplication', ALL_APPLICATIONS_KEY)\n .set('activeNamespace', action.payload.namespace);\n\n case ActionType.SetCurrentLocation: {\n state = state.set('location', action.payload.location);\n const ns = getNamespace(action.payload.location);\n if (_.isUndefined(ns)) {\n return state;\n }\n return state.set('activeNamespace', ns);\n }\n case ActionType.SetServiceLevel:\n return state.set('serviceLevel', {\n level: action.payload.serviceLevel,\n daysRemaining: action.payload.daysRemaining,\n clusterID: action.payload.clusterID,\n trialDateEnd: action.payload.trialDateEnd,\n hasSecretAccess: action.payload.hasSecretAccess,\n });\n\n case ActionType.SortList:\n return state.mergeIn(\n ['listSorts', action.payload.listId],\n _.pick(action.payload, ['field', 'func', 'orderBy']),\n );\n\n case ActionType.SetCreateProjectMessage:\n return state.set('createProjectMessage', action.payload.message);\n\n case ActionType.SetClusterID:\n return state.set('clusterID', action.payload.clusterID);\n\n case ActionType.NotificationDrawerToggleExpanded:\n return state.setIn(\n ['notifications', 'isExpanded'],\n !state.getIn(['notifications', 'isExpanded']),\n );\n\n case ActionType.SelectOverviewItem:\n return state.setIn(['overview', 'selectedUID'], action.payload.uid);\n\n case ActionType.SelectOverviewDetailsTab:\n return state.setIn(['overview', 'selectedDetailsTab'], action.payload.tab);\n\n case ActionType.DismissOverviewDetails:\n return state.mergeIn(['overview'], { selectedUID: '', selectedDetailsTab: '' });\n\n case ActionType.UpdateOverviewMetrics:\n return state.setIn(['overview', 'metrics'], action.payload.metrics);\n\n case ActionType.UpdateOverviewResources: {\n const newResources = ImmutableMap(_.keyBy(action.payload.resources, 'obj.metadata.uid'));\n return state.setIn(['overview', 'resources'], newResources);\n }\n\n case ActionType.UpdateOverviewSelectedGroup: {\n return state.setIn(['overview', 'selectedGroup'], action.payload.group);\n }\n\n case ActionType.UpdateOverviewLabels: {\n return state.setIn(['overview', 'labels'], action.payload.labels);\n }\n\n case ActionType.UpdateOverviewFilterValue: {\n return state.setIn(['overview', 'filterValue'], action.payload.value);\n }\n case ActionType.UpdateTimestamps:\n return state.set('lastTick', action.payload.lastTick);\n\n case ActionType.SetPodMetrics:\n return state.setIn(['metrics', 'pod'], action.payload.podMetrics);\n\n case ActionType.SetNamespaceMetrics:\n return state.setIn(['metrics', 'namespace'], action.payload.namespaceMetrics);\n case ActionType.SetNodeMetrics:\n return state.setIn(['metrics', 'node'], action.payload.nodeMetrics);\n case ActionType.SetPVCMetrics:\n return state.setIn(['metrics', 'pvc'], action.payload.pvcMetrics);\n case ActionType.SetUtilizationDuration:\n return state.setIn(['utilizationDuration', 'duration'], action.payload.duration);\n case ActionType.SetUtilizationDurationSelectedKey:\n return state.setIn(['utilizationDuration', 'selectedKey'], action.payload.key);\n case ActionType.SetUtilizationDurationEndTime:\n return state.setIn(['utilizationDuration', 'endTime'], action.payload.endTime);\n case ActionType.SetShowOperandsInAllNamespaces:\n return state.set('showOperandsInAllNamespaces', action.payload.value);\n case ActionType.SetDeprecatedPackage:\n return state.setIn(['deprecatedOperator', 'package'], action.payload.value);\n case ActionType.SetDeprecatedChannel:\n return state.setIn(['deprecatedOperator', 'channel'], action.payload.value);\n case ActionType.SetDeprecatedVersion:\n return state.setIn(['deprecatedOperator', 'version'], action.payload.value);\n default:\n break;\n }\n return state;\n};\n\nexport const createProjectMessageStateToProps = ({ UI }: RootState) => {\n return { createProjectMessage: UI.get('createProjectMessage') as string };\n};\n\nexport const userStateToProps = (state: RootState) => {\n return { user: getUser(state) };\n};\n\nexport const getActiveNamespace = ({ UI }: RootState): string => UI.get('activeNamespace');\n\nexport const getActiveApplication = ({ UI }: RootState): string => UI.get('activeApplication');\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom-v5-compat';\nimport {\n InventoryItemTitleProps,\n InventoryItemBodyProps,\n InventoryItemStatusProps,\n} from '@console/dynamic-plugin-sdk';\n\nconst InventoryItem: React.FC = ({ children }) => (\n
{children}
\n);\n\nexport const InventoryItemLoading: React.FC = () =>
;\n\nexport const InventoryItemTitle: React.FC = ({ children }) => (\n
{children}
\n);\n\nexport const InventoryItemBody: React.FC = ({ error, children }) => {\n const { t } = useTranslation();\n return (\n
\n {error ? (\n
\n {t('console-shared~Not available')}\n
\n ) : (\n children\n )}\n
\n );\n};\n\nexport const InventoryItemStatus: React.FC = ({\n count,\n icon,\n linkTo,\n}) => {\n const body = (\n <>\n {count}\n {icon}\n \n );\n return (\n
\n {linkTo ? {body} : body}\n
\n );\n};\n\nexport default InventoryItem;\n","export * from './actions';\nexport * from './add-actions';\nexport * from './alerts';\nexport * from './breadcrumbs';\nexport * from './catalog';\nexport * from './cluster-configuration';\nexport * from './cluster-overview';\nexport * from './cluster-settings';\nexport * from './console-types';\nexport * from './context-providers';\nexport * from './create-resource';\nexport * from './dashboard-types';\nexport * from './dashboards';\nexport * from './details-item';\nexport * from './feature-flags';\nexport * from './file-upload';\nexport * from './horizontal-nav-tabs';\nexport * from './import-environments';\nexport * from './navigation';\nexport * from './notification-alert';\nexport * from './pages';\nexport * from './perspectives';\nexport * from './project-overview';\nexport * from './pvc';\nexport * from './redux';\nexport * from './resource-metadata';\nexport * from './storage-class-provisioner';\nexport * from './storage-provider';\nexport * from './telemetry';\nexport * from './topology-details';\nexport * from './topology';\nexport * from './user-preferences';\nexport * from './yaml-templates';\nexport * from './node';\n","import * as React from 'react';\nimport { deseralizeData } from '../utils/user-settings';\nimport { useUserSettings } from './useUserSettings';\n\nexport const useUserSettingsCompatibility = (\n key: string,\n storageKey: string,\n defaultValue?: T,\n sync: boolean = false,\n): [T, React.Dispatch>, boolean] => {\n const [settings, setSettings, loaded] = useUserSettings(\n key,\n localStorage.getItem(storageKey) !== null\n ? deseralizeData(localStorage.getItem(storageKey))\n : defaultValue,\n sync,\n );\n\n React.useEffect(\n () => () => {\n if (loaded) {\n localStorage.removeItem(storageKey);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [loaded],\n );\n\n return [settings, setSettings, loaded];\n};\n","import * as _ from 'lodash';\nimport { ImpersonateKind } from '@console/dynamic-plugin-sdk';\nimport { checkAccess } from '@console/internal/components/utils/rbac';\nimport {\n K8sResourceKind,\n K8sKind,\n SelfSubjectAccessReviewKind,\n AccessReviewResourceAttributes,\n} from '@console/internal/module/k8s';\nimport { podColor, AllPodStatus, DEPLOYMENT_STRATEGY, DEPLOYMENT_PHASE } from '../constants';\nimport { PodControllerOverviewItem, DeploymentStrategy } from '../types';\nimport { ExtPodKind, PodRCData } from '../types/pod';\n\nexport const podStatus = Object.keys(podColor);\n\nconst isContainerFailedFilter = (containerStatus) => {\n return containerStatus.state.terminated && containerStatus.state.terminated.exitCode !== 0;\n};\n\nexport const isContainerLoopingFilter = (containerStatus) => {\n return (\n containerStatus.state.waiting && containerStatus.state.waiting.reason === 'CrashLoopBackOff'\n );\n};\n\nconst numContainersReadyFilter = (pod) => {\n const {\n status: { containerStatuses },\n } = pod;\n let numReady = 0;\n _.forEach(containerStatuses, (status) => {\n if (status.ready) {\n numReady++;\n }\n });\n return numReady;\n};\n\nconst isReady = (pod) => {\n const {\n spec: { containers },\n } = pod;\n const numReady = numContainersReadyFilter(pod);\n const total = _.size(containers);\n\n return numReady === total;\n};\n\nconst podWarnings = (pod) => {\n const {\n status: { phase, containerStatuses },\n } = pod;\n if (phase === AllPodStatus.Running && containerStatuses) {\n return _.map(containerStatuses, (containerStatus) => {\n if (!containerStatus.state) {\n return null;\n }\n\n if (isContainerFailedFilter(containerStatus)) {\n if (_.has(pod, ['metadata', 'deletionTimestamp'])) {\n return AllPodStatus.Failed;\n }\n return AllPodStatus.Warning;\n }\n if (isContainerLoopingFilter(containerStatus)) {\n return AllPodStatus.CrashLoopBackOff;\n }\n return null;\n }).filter((x) => x);\n }\n return null;\n};\n\nexport const getPodStatus = (pod) => {\n if (_.has(pod, ['metadata', 'deletionTimestamp'])) {\n return AllPodStatus.Terminating;\n }\n const warnings = podWarnings(pod);\n if (warnings !== null && warnings.length) {\n if (warnings.includes(AllPodStatus.CrashLoopBackOff)) {\n return AllPodStatus.CrashLoopBackOff;\n }\n if (warnings.includes(AllPodStatus.Failed)) {\n return AllPodStatus.Failed;\n }\n return AllPodStatus.Warning;\n }\n const phase = _.get(pod, ['status', 'phase'], AllPodStatus.Unknown);\n if (phase === AllPodStatus.Running && !isReady(pod)) {\n return AllPodStatus.NotReady;\n }\n return phase;\n};\n\nexport const calculateRadius = (size: number) => {\n const radius = size / 2;\n const podStatusStrokeWidth = (8 / 104) * size;\n const podStatusInset = (5 / 104) * size;\n const podStatusOuterRadius = radius - podStatusInset;\n const podStatusInnerRadius = podStatusOuterRadius - podStatusStrokeWidth;\n const decoratorRadius = radius * 0.25;\n\n return {\n radius,\n podStatusInnerRadius,\n podStatusOuterRadius,\n decoratorRadius,\n podStatusStrokeWidth,\n podStatusInset,\n };\n};\n\nexport const checkPodEditAccess = (\n resource: K8sResourceKind,\n resourceKind: K8sKind,\n impersonate: ImpersonateKind,\n subresource?: string,\n): Promise => {\n if (_.isEmpty(resource) || !resourceKind) {\n return Promise.resolve(null);\n }\n const { name, namespace } = resource.metadata;\n const resourceAttributes: AccessReviewResourceAttributes = {\n group: resourceKind.apiGroup,\n resource: resourceKind.plural,\n subresource,\n verb: 'patch',\n name,\n namespace,\n };\n return checkAccess(resourceAttributes, impersonate);\n};\n\n/**\n * check if config is knative serving resource.\n * @param configRes\n * @param properties\n */\nexport const isKnativeServing = (configRes: K8sResourceKind, properties: string): boolean => {\n const deploymentsLabels = _.get(configRes, properties) || {};\n return !!deploymentsLabels['serving.knative.dev/configuration'];\n};\n\n/**\n * check if the deployment/deploymentconfig is idled.\n * @param deploymentConfig\n */\nexport const isIdled = (deploymentConfig: K8sResourceKind): boolean => {\n return !!_.get(\n deploymentConfig,\n 'metadata.annotations[\"idling.alpha.openshift.io/idled-at\"]',\n false,\n );\n};\n\nconst getScalingUp = (dc: K8sResourceKind): ExtPodKind => {\n return {\n ..._.pick(dc, 'metadata'),\n status: {\n phase: AllPodStatus.ScalingUp,\n },\n };\n};\n\nexport const podDataInProgress = (\n dc: K8sResourceKind,\n current: PodControllerOverviewItem,\n isRollingOut: boolean,\n): boolean => {\n const strategy: DeploymentStrategy = dc?.spec?.strategy?.type;\n return (\n current?.phase !== DEPLOYMENT_PHASE.complete &&\n (strategy === DEPLOYMENT_STRATEGY.recreate || strategy === DEPLOYMENT_STRATEGY.rolling) &&\n isRollingOut\n );\n};\n\nexport const getPodData = (\n podRCData: PodRCData,\n): { inProgressDeploymentData: ExtPodKind[] | null; completedDeploymentData: ExtPodKind[] } => {\n const strategy: DeploymentStrategy = _.get(podRCData.obj, ['spec', 'strategy', 'type'], null);\n const currentDeploymentphase = podRCData.current && podRCData.current.phase;\n const currentPods = podRCData.current && podRCData.current.pods;\n const previousPods = podRCData.previous && podRCData.previous.pods;\n // DaemonSets and StatefulSets\n if (!strategy) return { inProgressDeploymentData: null, completedDeploymentData: podRCData.pods };\n\n // Scaling no. of pods\n if (currentDeploymentphase === DEPLOYMENT_PHASE.complete) {\n return { inProgressDeploymentData: null, completedDeploymentData: currentPods };\n }\n\n // Deploy - Rolling - Recreate\n if (\n (strategy === DEPLOYMENT_STRATEGY.recreate ||\n strategy === DEPLOYMENT_STRATEGY.rolling ||\n strategy === DEPLOYMENT_STRATEGY.rollingUpdate) &&\n podRCData.isRollingOut\n ) {\n return {\n inProgressDeploymentData: currentPods,\n completedDeploymentData: previousPods,\n };\n }\n // if build is not finished show `Scaling Up` on pod phase\n if (!podRCData.current && !podRCData.previous) {\n return {\n inProgressDeploymentData: null,\n completedDeploymentData: [getScalingUp(podRCData.obj)],\n };\n }\n return { inProgressDeploymentData: null, completedDeploymentData: podRCData.pods };\n};\n","import * as yup from 'yup';\n\ntype AdvancedOptions = {\n timeout?: {\n limit?: number;\n unit?: string;\n };\n image?: string;\n};\n\nexport type CloudShellSetupFormData = {\n namespace?: string;\n newNamespace?: string;\n createNamespace?: boolean;\n advancedOptions?: AdvancedOptions;\n};\n\nexport const CREATE_NAMESPACE_KEY = '#CREATE_NAMESPACE_KEY#';\nconst projectNameRegex = /^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/;\n\nexport const newNamespaceValidationSchema = yup.string().when('namespace', {\n is: CREATE_NAMESPACE_KEY,\n then: yup\n .string()\n .matches(\n projectNameRegex,\n \"Name must consist of lower case alphanumeric characters or '-' and must start and end with an alphanumeric character.\",\n )\n .required('Required'),\n});\n\nexport const advancedOptionsValidationSchema = yup.object().shape({\n image: yup.string(),\n});\n\nexport const cloudShellSetupValidationSchema = () =>\n yup.object().shape({\n namespace: yup.string().required('Required'),\n newNamespace: newNamespaceValidationSchema,\n advancedOptions: advancedOptionsValidationSchema,\n });\n\nexport const getCloudShellTimeout = (limit: number, unit: string): string | null =>\n unit && limit && limit > 0 ? `${limit}${unit}` : null;\n","export const MONITORING_DASHBOARDS_DEFAULT_TIMESPAN = 30 * 60 * 1000;\n\nexport const MONITORING_DASHBOARDS_VARIABLE_ALL_OPTION_KEY = 'ALL_OPTION_KEY';\n\nexport type ColumnStyle = {\n alias?: string;\n decimals?: number;\n unit?: string;\n pattern: string;\n type: string;\n};\n\ntype ValueMap = {\n op: string;\n text: string;\n value: string;\n};\n\ntype YAxis = {\n format: string;\n};\n\nexport type Panel = {\n breakpoint?: string;\n datasource?: DataSource;\n decimals?: number;\n format?: string;\n gridPos?: {\n h: number;\n w: number;\n x: number;\n y: number;\n };\n id: string;\n legend?: {\n show: boolean;\n };\n options?: {\n fieldOptions: {\n thresholds: {\n color?: string;\n value: number;\n }[];\n };\n };\n panels: Panel[];\n postfix?: string;\n postfixFontSize?: string;\n prefix?: string;\n prefixFontSize?: string;\n span: number;\n stack: boolean;\n styles?: ColumnStyle[];\n targets: Array<{\n expr: string;\n legendFormat?: string;\n refId: string;\n }>;\n title: string;\n transform?: string;\n type: string;\n units?: string;\n valueFontSize?: string;\n valueMaps?: ValueMap[];\n yaxes: YAxis[];\n};\n\nexport type TemplateVariable = {\n datasource: DataSource;\n hide: number;\n includeAll: boolean;\n name: string;\n options: { selected: boolean; value: string }[];\n query: string;\n type: string;\n};\n\nexport type Row = {\n collapse?: boolean;\n panels: Panel[];\n showTitle?: boolean;\n title?: string;\n};\n\nexport type Board = {\n data: {\n panels: Panel[];\n rows: Row[];\n templating: {\n list: TemplateVariable[];\n };\n tags: string[];\n title: string;\n };\n name: string;\n};\n\nexport type TimeDropdownsProps = {\n namespace?: string;\n};\n\nexport type DataSource = {\n name: string;\n type: string;\n};\n","import * as React from 'react';\nimport classNames from 'classnames';\nimport { OverviewProps } from '@console/dynamic-plugin-sdk';\nimport './dashboard.scss';\n\nconst Dashboard: React.FC = ({ className, children }) => (\n
\n {children}\n
\n);\n\nexport default Dashboard;\n","import { connect } from 'react-redux';\n\nimport {\n K8sKind,\n K8sResourceKindReference,\n GroupVersionKind,\n isGroupVersionKind,\n allModels,\n getGroupVersionKind,\n} from './module/k8s';\nimport { RootState } from './redux';\nimport { getK8sModel } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks/useK8sModel';\n\nexport const connectToModel = connect(\n ({ k8s }: RootState, props: { kind: K8sResourceKindReference } & any) => {\n const kind: string = props.kind || props.match?.params?.plural || props.params?.plural;\n return {\n kindObj: getK8sModel(k8s, kind),\n kindsInFlight: k8s.getIn(['RESOURCES', 'inFlight']),\n } as any;\n },\n);\n\ntype WithPluralProps = {\n kindObj?: K8sKind;\n modelRef?: K8sResourceKindReference;\n kindsInFlight?: boolean;\n};\n\nexport type ConnectToPlural =

(\n C: React.ComponentType

,\n) => React.ComponentType> & {\n WrappedComponent: React.ComponentType

;\n};\n\n/**\n * @deprecated TODO(alecmerdler): `plural` is not a unique lookup key, remove uses of this.\n * FIXME(alecmerdler): Not returning correctly typed `WrappedComponent`\n */\nexport const connectToPlural: ConnectToPlural = connect(\n (\n { k8s }: RootState,\n props: {\n plural?: GroupVersionKind | string;\n match?: any;\n params?: any;\n },\n ) => {\n const plural = props.plural || props.params?.plural || props.match?.params?.plural;\n const groupVersionKind = getGroupVersionKind(plural);\n\n let kindObj: K8sKind = null;\n if (groupVersionKind) {\n const [group, version, kind] = groupVersionKind;\n kindObj = allModels().find(\n (model) =>\n (model.apiGroup ?? 'core') === group &&\n model.apiVersion === version &&\n model.kind === kind,\n );\n\n if (!kindObj) {\n kindObj = getK8sModel(k8s, plural);\n }\n } else {\n kindObj = allModels().find(\n (model) => model.plural === plural && (!model.crd || model.legacyPluralURL),\n );\n }\n\n const modelRef = isGroupVersionKind(plural) ? plural : kindObj?.kind;\n\n return { kindObj, modelRef, kindsInFlight: k8s.getIn(['RESOURCES', 'inFlight']) };\n },\n);\n","import * as _ from 'lodash';\nimport { K8sModel } from '../../api/common-types';\nimport { Options } from '../../api/internal-types';\nimport { K8sResourceCommon, Patch, QueryParams } from '../../extensions/console-types';\nimport { consoleFetchJSON as coFetchJSON } from '../fetch';\nimport { selectorToString, resourceURL } from './k8s-utils';\n\ntype BaseOptions = {\n name?: string;\n ns?: string;\n path?: string;\n queryParams?: QueryParams;\n};\n\ntype AdapterFunc = (\n func: Function,\n knownArgs: string[],\n) => (options: D) => Promise;\n\n/**\n * An adapter function to call the underlying APIs with provided options.\n * @param func The function to be called.\n * @param knownArgs The list of arguments to be provided to underlying API in order.\n * @returns The function called with provided arguments.\n */\nconst adapterFunc: AdapterFunc = (func: Function, knownArgs: string[]) => {\n return (options) => {\n const args = knownArgs.map((arg) => {\n // forming opts to match underlying API signature if it's there in knownArgs\n if (arg === 'opts') {\n const { name, ns, path, queryParams } = options || {};\n return {\n ...(name && { name }),\n ...(ns && { ns }),\n ...(path && { path }),\n ...(queryParams && { queryParams }),\n };\n }\n return options[arg];\n });\n return func(...args);\n };\n};\n\n/**\n * @deprecated Use {@link k8sGetResource} instead. Support for k8sGet will be removed in a future release.\n * It fetches a resource from the cluster, based on the provided model, name, namespace.\n * If the name is provided it returns one resource else it returns all the resources matching the model.\n * @param model Kubernetes model\n * @param name The name of the resource, if not provided then it'll look for all the resources matching the model.\n * @param ns The namespace to look into, should not be specified for cluster-scoped resources.\n * @param opts The options to pass\n * @param requestInit The fetch init object to use. This can have request headers, method, redirect, etc.\n * See more at https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules_typedoc_node_modules_typescript_lib_lib_dom_d_.requestinit.html\n * @returns A promise that resolves to the response as JSON object with a resource if the name is provided\n * else it returns all the resouces matching the model. In case of failure, the promise gets rejected with HTTP error response.\n */\nexport const k8sGet = (\n model: K8sModel,\n name: string,\n ns?: string,\n opts?: Options,\n requestInit?: RequestInit,\n) => coFetchJSON(resourceURL(model, Object.assign({ ns, name }, opts)), 'GET', requestInit, null);\n\ntype OptionsGet = BaseOptions & {\n model: K8sModel;\n requestInit?: RequestInit;\n};\n\ntype K8sGetResource = (options: OptionsGet) => Promise;\n\n/**\n * It fetches a resource from the cluster, based on the provided options.\n * If the name is provided it returns resource, else it returns all the resources matching the model.\n * @param options Which are passed as key-value pairs in the map\n * @param options.model - Kubernetes model\n * @param options.name - The name of the resource, if not provided then it looks for all the resources matching the model.\n * @param options.ns - The namespace to look into, should not be specified for cluster-scoped resources.\n * @param options.path - Appends as subpath if provided\n * @param options.queryParams - The query parameters to be included in the URL.\n * @param options.requestInit - The fetch init object to use. This can have request headers, method, redirect, etc. See more https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules_typedoc_node_modules_typescript_lib_lib_dom_d_.requestinit.html\n * @returns A promise that resolves to the response as JSON object with a resource if the name is provided, else it returns all the resources matching the model. In case of failure, the promise gets rejected with HTTP error response.\n */\nexport const k8sGetResource: K8sGetResource = adapterFunc(k8sGet, [\n 'model',\n 'name',\n 'ns',\n 'opts',\n 'requestInit',\n]);\n\n/**\n * @deprecated Use {@link k8sCreateResource} instead. Support for k8sCreate will be removed in a future release.\n * It creates a resource in the cluster, based on the provided model and payload.\n * @param model Kubernetes model\n * @param data The payload for the resource to be created.\n * @param opts The options to pass.\n * @returns A promise that resolves to the response of the resource created.\n * In case of failure promise gets rejected with HTTP error response.\n */\nexport const k8sCreate = (\n model: K8sModel,\n data: R,\n opts: Options = {},\n) => {\n return coFetchJSON.post(\n resourceURL(model, Object.assign({ ns: data?.metadata?.namespace }, opts)),\n data,\n null,\n null,\n );\n};\n\ntype OptionsCreate = BaseOptions & {\n model: K8sModel;\n data: R;\n};\n\ntype K8sCreateResource = (options: OptionsCreate) => Promise;\n\n/**\n * It creates a resource in the cluster, based on the provided options.\n * @param options Which are passed as key-value pairs in the map\n * @param options.model - Kubernetes model\n * @param options.data - payload for the resource to be created\n * @param options.path - Appends as subpath if provided\n * @param options.queryParams - The query parameters to be included in the URL.\n * @returns A promise that resolves to the response of the resource created.\n * In case of failure, the promise gets rejected with HTTP error response.\n */\nexport const k8sCreateResource: K8sCreateResource = adapterFunc(k8sCreate, [\n 'model',\n 'data',\n 'opts',\n]);\n\n/**\n * @deprecated Use {@link k8sUpdateResource} instead. Support for k8sUpdate will be removed in a future release.\n * It updates the entire resource in the cluster, based on the provided model, data, name, namespace.\n * When a client needs to replace an existing resource entirely, they can use k8sUpdate.\n * Alternatively can use k8sPatch to perform the partial update.\n * @param model Kubernetes model\n * @param data payload for the resource to be updated.\n * @param ns namespace to look into, it should not be specified for cluster-scoped resources.\n * @param name resource name to be updated.\n * @param opts The options to pass\n * @returns A promise that resolves to the response of the resource updated.\n * In case of failure promise gets rejected with HTTP error response.\n */\nexport const k8sUpdate = (\n model: K8sModel,\n data: R,\n ns?: string,\n name?: string,\n opts?: Options,\n): Promise =>\n coFetchJSON.put(\n resourceURL(model, {\n ns: ns || data.metadata?.namespace,\n name: name || data.metadata?.name,\n ...opts,\n }),\n data,\n null,\n null,\n );\n\ntype OptionsUpdate = BaseOptions & {\n model: K8sModel;\n data: R;\n};\n\ntype K8sUpdateResource = (options: OptionsUpdate) => Promise;\n/**\n * It updates the entire resource in the cluster, based on the provided options.\n * When a client needs to replace an existing resource entirely, the client can use k8sUpdate.\n * Alternatively, the client can use k8sPatch to perform the partial update.\n * @param options which are passed as key-value pair in the map\n * @param options.model - Kubernetes model\n * @param options.data - payload for the Kubernetes resource to be updated\n * @param options.ns - namespace to look into, it should not be specified for cluster-scoped resources.\n * @param options.name - resource name to be updated.\n * @param options.path - appends as subpath if provided.\n * @param options.queryParams - The query parameters to be included in the URL.\n * @returns A promise that resolves to the response of the resource updated.\n * In case of failure promise gets rejected with HTTP error response.\n */\nexport const k8sUpdateResource: K8sUpdateResource = adapterFunc(k8sUpdate, [\n 'model',\n 'data',\n 'ns',\n 'name',\n 'opts',\n]);\n\n/**\n * @deprecated Use {@link k8sPatchResource} instead. Support for k8sPatch will be removed in a future release.\n * It patches any resource in the cluster, based on provided model, resource, data.\n * When a client needs to perform the partial update, they can use k8sPatch.\n * Alternatively can use k8sUpdate to replace an existing resource entirely.\n * See more https://datatracker.ietf.org/doc/html/rfc6902\n * @param model Kubernetes model\n * @param resource The resource to be patched\n * @param data Only the data to be patched on existing resource with the operation, path, and value\n * @param opts The options to pass\n * @returns A promise that resolves to the response of the resource patched.\n * In case of failure promise gets rejected with HTTP error response.\n */\nexport const k8sPatch = (\n model: K8sModel,\n resource: R,\n data: Patch[],\n opts: Options = {},\n) => {\n const patches = _.compact(data);\n\n if (_.isEmpty(patches)) {\n return Promise.resolve(resource);\n }\n\n return coFetchJSON.patch(\n resourceURL(\n model,\n Object.assign(\n {\n ns: resource.metadata.namespace,\n name: resource.metadata.name,\n },\n opts,\n ),\n ),\n patches,\n null,\n null,\n );\n};\n\ntype OptionsPatch = BaseOptions & {\n model: K8sModel;\n resource: R;\n data: Patch[];\n};\n\ntype K8sPatchResource = (options: OptionsPatch) => Promise;\n\n/**\n * It patches any resource in the cluster, based on the provided options.\n * When a client needs to perform the partial update, the client can use k8sPatch.\n * Alternatively, the client can use k8sUpdate to replace an existing resource entirely.\n * See more https://datatracker.ietf.org/doc/html/rfc6902\n * @param options Which are passed as key-value pairs in the map.\n * @param options.model - Kubernetes model\n * @param options.resource - The resource to be patched.\n * @param options.data - Only the data to be patched on existing resource with the operation, path, and value.\n * @param options.path - Appends as subpath if provided.\n * @param options.queryParams - The query parameters to be included in the URL.\n * @returns A promise that resolves to the response of the resource patched.\n * In case of failure promise gets rejected with HTTP error response.\n */\nexport const k8sPatchResource: K8sPatchResource = adapterFunc(k8sPatch, [\n 'model',\n 'resource',\n 'data',\n 'opts',\n]);\n\n/**\n * @deprecated Use {@link k8sDeleteResource} instead. Support for k8sKill will be removed in a future release.\n * It deletes resources from the cluster, based on the provided model, resource.\n * The garbage collection works based on 'Foreground' | 'Background', can be configured with propagationPolicy property in provided model or passed in json.\n * See more https://kubernetes.io/docs/concepts/architecture/garbage-collection/\n * @param model Kubernetes model\n * @param resource The resource to be deleted.\n * @param opts The Options to pass\n * @param requestInit The fetch init object to use. This can have request headers, method, redirect, etc.\n * See more https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules_typedoc_node_modules_typescript_lib_lib_dom_d_.requestinit.html\n * @param options.json - Can control garbage collection of resource explicitly if provided else will default to model's \"propagationPolicy\".\n * @example\n * { kind: 'DeleteOptions', apiVersion: 'v1', propagationPolicy }\n * @returns A promise that resolves to the response of kind Status.\n * In case of failure promise gets rejected with HTTP error response.\n */\nexport const k8sKill = (\n model: K8sModel,\n resource: R,\n opts: Options = {},\n requestInit: RequestInit = {},\n json: Record = null,\n) => {\n const { propagationPolicy } = model;\n const jsonData =\n json ?? (propagationPolicy && { kind: 'DeleteOptions', apiVersion: 'v1', propagationPolicy });\n return coFetchJSON.delete(\n resourceURL(\n model,\n Object.assign({ ns: resource.metadata.namespace, name: resource.metadata.name }, opts),\n ),\n jsonData,\n requestInit,\n null,\n );\n};\n\ntype OptionsDelete = BaseOptions & {\n model: K8sModel;\n resource: R;\n requestInit?: RequestInit;\n json?: Record;\n};\n\ntype K8sDeleteResource = (options: OptionsDelete) => Promise;\n\n/**\n * It deletes resources from the cluster, based on the provided model and resource.\n * The garbage collection works based on 'Foreground' | 'Background', can be configured with `propagationPolicy` property in provided model or passed in json.\n * @param options which are passed as key-value pair in the map.\n * @param options.model - Kubernetes model\n * @param options.resource - The resource to be deleted.\n * @param options.path - Appends as subpath if provided.\n * @param options.queryParams - The query parameters to be included in the URL.\n * @param options.requestInit - The fetch init object to use. This can have request headers, method, redirect, etc. See more https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules_typedoc_node_modules_typescript_lib_lib_dom_d_.requestinit.html\n * @param options.json - Can control garbage collection of resources explicitly if provided else will default to model's `propagationPolicy`.\n * @example\n * ```\n * { kind: 'DeleteOptions', apiVersion: 'v1', propagationPolicy }\n * ```\n * @returns A promise that resolves to the response of kind Status.\n * In case of failure promise gets rejected with HTTP error response.\n * */\nexport const k8sDeleteResource: K8sDeleteResource = adapterFunc(k8sKill, [\n 'model',\n 'resource',\n 'opts',\n 'requestInit',\n 'json',\n]);\n\n/**\n * @deprecated Use {@link k8sListResource} instead. Support for k8sList will be removed in a future release.\n * It lists the resources as an array in the cluster, based on the provided model, queryParams(label selector).\n * @param model Kubernetes model\n * @param queryParams The query parameters to be included in the URL and can pass label selector's as well with key \"labelSelector\".\n * @param raw If true then returns raw data i.e if the query is for Pod then resolved resources will not be in an array but a resource will be returned of kind PodList\n * and it will have a key \"item\" which will be an array of Pod kind.\n * @param requestInit The fetch init object to use. This can have request headers, method, redirect, etc.\n * See more https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules_typedoc_node_modules_typescript_lib_lib_dom_d_.requestinit.html\n * @returns A promise that resolves to the response with the resources in an array.\n * In case of failure promise gets rejected with HTTP error response.\n * */\nexport const k8sList = (\n model: K8sModel,\n queryParams: { [key: string]: any } = {},\n raw = false,\n requestInit: RequestInit = {},\n) => {\n const query = _.map(_.omit(queryParams, 'ns'), (v, k) => {\n let newVal;\n if (k === 'labelSelector') {\n newVal = selectorToString(v);\n }\n return `${encodeURIComponent(k)}=${encodeURIComponent(newVal ?? v)}`;\n }).join('&');\n\n const listURL = resourceURL(model, { ns: queryParams.ns });\n return coFetchJSON(`${listURL}?${query}`, 'GET', requestInit, null).then((result) => {\n const typedItems = result.items?.map((i) => ({\n kind: model.kind,\n apiVersion: result.apiVersion,\n ...i,\n }));\n return raw ? { ...result, items: typedItems } : typedItems;\n });\n};\n\ntype OptionsList = {\n model: K8sModel;\n queryParams: { [key: string]: any };\n requestInit?: RequestInit;\n};\n\ntype K8sListResource = (\n options: OptionsList,\n) => Promise;\n\n/**\n * It lists the resources as an array in the cluster, based on the provided options.\n * @param options Which are passed as key-value pairs in the map.\n * @param options.model - Kubernetes model\n * @param options.queryParams - The query parameters to be included in the URL. It can also pass label selectors by using the `labelSelector` key.\n * @param options.requestInit - The fetch init object to use. This can have request headers, method, redirect, and so forth. See more https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules_typedoc_node_modules_typescript_lib_lib_dom_d_.requestinit.html\n * @returns A promise that resolves to the response\n */\nexport const k8sListResource: K8sListResource = adapterFunc(k8sList, [\n 'model',\n 'queryParams',\n 'raw',\n 'requestInit',\n]);\n\n/**\n * Same interface as k8sListResource but returns the sub items.\n * @see K8sListResource\n */\nexport const k8sListResourceItems = (\n options: OptionsList,\n): Promise =>\n k8sListResource(options).then((response) => {\n if (Array.isArray(response)) {\n return response;\n }\n return response.items;\n });\n","import { RootState } from '@console/internal/redux';\n\nexport const cloudShellReducerName = 'cloudShell';\n\nexport const isCloudShellExpanded = (state: RootState): boolean =>\n !!state.plugins?.console?.[cloudShellReducerName]?.isExpanded;\n\nexport const isCloudShellActive = (state: RootState): boolean =>\n !!state.plugins?.console?.[cloudShellReducerName]?.isActive;\n\nexport const getCloudShellCommand = (state: RootState): string | null =>\n state.plugins?.console?.[cloudShellReducerName]?.command ?? null;\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport i18n from 'i18next';\nimport {\n Chart,\n ChartArea,\n ChartAxis,\n ChartThemeColor,\n ChartVoronoiContainer,\n getCustomTheme,\n ChartGroup,\n ChartAreaProps,\n} from '@patternfly/react-charts';\nimport { global_warning_color_100 as warningColor } from '@patternfly/react-tokens/dist/js/global_warning_color_100';\nimport { global_danger_color_100 as dangerColor } from '@patternfly/react-tokens/dist/js/global_danger_color_100';\nimport { processFrame, ByteDataTypes } from '@console/shared/src/graph-helper/data-utils';\nimport { timeFormatter } from '../utils/datetime';\nimport { humanizeNumber, useRefWidth, Humanize } from '../utils';\nimport { PrometheusEndpoint } from './helpers';\nimport { PrometheusGraph, PrometheusGraphLink } from './prometheus-graph';\nimport { usePrometheusPoll } from './prometheus-poll-hook';\nimport { areaTheme } from './themes';\nimport {\n DataPoint,\n CursorVoronoiContainer,\n DEFAULT_PROMETHEUS_SAMPLES,\n DEFAULT_PROMETHEUS_TIMESPAN,\n} from './';\nimport { mapLimitsRequests } from './utils';\nimport { GraphEmpty } from './graph-empty';\nimport { ChartLegendTooltip } from './tooltip';\n\nconst DEFAULT_HEIGHT = 180;\nconst DEFAULT_TICK_COUNT = 2;\n\nexport enum AreaChartStatus {\n ERROR = 'ERROR',\n WARNING = 'WARNING',\n}\n\nexport const chartStatusColors = {\n [AreaChartStatus.ERROR]: dangerColor.value,\n [AreaChartStatus.WARNING]: warningColor.value,\n};\n\n// @ts-ignore\nexport const AreaChart: React.FC = ({\n className,\n data = [],\n formatDate = timeFormatter.format,\n height = DEFAULT_HEIGHT,\n humanize = humanizeNumber,\n loading = true,\n padding,\n query,\n tickCount = DEFAULT_TICK_COUNT,\n title,\n ariaChartLinkLabel,\n ariaChartTitle,\n xAxis = true,\n yAxis = true,\n chartStyle,\n byteDataType = '',\n showAllTooltip,\n mainDataName,\n ...rest\n}) => {\n // Note: Victory incorrectly typed ThemeBaseProps.padding as number instead of PaddingProps\n // @ts-ignore\n const theme = getCustomTheme(ChartThemeColor.blue, areaTheme);\n const [containerRef, width] = useRefWidth();\n const { processedData, unit } = React.useMemo(() => {\n const nonEmptyDataSets = data.filter((dataSet) => dataSet?.length);\n if (byteDataType) {\n return processFrame(nonEmptyDataSets, byteDataType);\n }\n return { processedData: nonEmptyDataSets, unit: '' };\n }, [byteDataType, data]);\n\n // If every data point of every data set is 0, force y-domain to [0,1]\n const allZero = React.useMemo(\n () => _.every(processedData, (dataSet) => _.every(dataSet, ({ y }) => y === 0)),\n [processedData],\n );\n\n const xTickFormat = React.useCallback((tick) => formatDate(tick), [formatDate]);\n const yTickFormat = React.useCallback((tick) => `${humanize(tick, unit, unit).string}`, [\n humanize,\n unit,\n ]);\n\n const domain = React.useMemo(\n () => ({\n ...(allZero && { y: [0, 1] }),\n ...(rest.domain ?? {}),\n }),\n [allZero, rest.domain],\n );\n\n const getLabel = React.useCallback(\n (prop: { datum: DataPoint }, includeDate = true) => {\n const { x, y } = prop.datum;\n const value = humanize(y, unit, unit).string;\n const date = formatDate(x);\n return includeDate ? i18n.t('public~{{value}} at {{date}}', { value, date }) : value;\n },\n [humanize, unit, formatDate],\n );\n\n const multiLine = processedData?.length > 1;\n\n const container = React.useMemo(() => {\n if (multiLine) {\n const legendData = processedData.map((d) => ({\n childName: d[0].description,\n name: d[0].description,\n symbol: d[0].symbol,\n }));\n return (\n getLabel(props, false)}\n mouseFollowTooltips\n labelComponent={\n formatDate(d[0].x)}\n mainDataName={mainDataName}\n />\n }\n voronoiDimension=\"x\"\n />\n );\n }\n return ;\n }, [formatDate, getLabel, mainDataName, multiLine, processedData, showAllTooltip]);\n\n return (\n \n \n {processedData?.length ? (\n \n {xAxis && }\n {yAxis && }\n \n {processedData.map((datum, index) => (\n \n ))}\n \n \n ) : (\n \n )}\n \n \n );\n};\n\nexport const Area: React.FC = ({\n endTime = Date.now(),\n namespace,\n query,\n limitQuery,\n requestedQuery,\n samples = DEFAULT_PROMETHEUS_SAMPLES,\n timeout,\n timespan = DEFAULT_PROMETHEUS_TIMESPAN,\n ...rest\n}) => {\n const prometheusPollProps = {\n endpoint: PrometheusEndpoint.QUERY_RANGE,\n endTime,\n namespace,\n samples,\n timeout,\n timespan,\n };\n\n const [utilization, , utilizationLoading] = usePrometheusPoll({\n query,\n ...prometheusPollProps,\n });\n const [limit, , limitLoading] = usePrometheusPoll({\n query: limitQuery,\n ...prometheusPollProps,\n });\n const [requested, , requestedLoading] = usePrometheusPoll({\n query: requestedQuery,\n ...prometheusPollProps,\n });\n\n const loading = utilizationLoading && limitLoading && requestedLoading;\n const { data, chartStyle } = mapLimitsRequests(utilization, limit, requested);\n\n return (\n \n );\n};\n\nexport type AreaChartProps = {\n className?: string;\n domain?: ChartAreaProps['domain'];\n formatDate?: (date: Date, showSeconds?: boolean) => string;\n humanize?: Humanize;\n height?: number;\n loading?: boolean;\n query?: string | string[];\n theme?: any; // TODO figure out the best way to import VictoryThemeDefinition\n tickCount?: number;\n title?: string;\n ariaChartLinkLabel?: string;\n ariaChartTitle?: string;\n data?: DataPoint[][];\n xAxis?: boolean;\n yAxis?: boolean;\n padding?: object;\n chartStyle?: object[];\n byteDataType?: ByteDataTypes; //Use this to process the whole data frame at once\n showAllTooltip?: boolean;\n mainDataName?: string;\n};\n\ntype AreaProps = AreaChartProps & {\n endTime?: number;\n namespace?: string;\n query: string;\n samples?: number;\n timeout?: string;\n timespan?: number;\n byteDataType?: ByteDataTypes;\n limitQuery?: string;\n requestedQuery?: string;\n};\n","/**\n * Allows to easily extend a base class to create custom applicative errors.\n *\n * example:\n * ```\n * class HttpError extends CustomError {\n * \tpublic constructor(\n * \t\tpublic code: number,\n * \t\tmessage?: string,\n * \t) {\n * \t\tsuper(message)\n * \t}\n * }\n *\n * new HttpError(404, 'Not found')\n * ```\n */\nexport class CustomError extends Error {\n name: string;\n\n constructor(message?: string) {\n super(message);\n // set error name as constructor name, make it not enumerable to keep native Error behavior\n // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new.target#new.target_in_constructors\n Object.defineProperty(this, 'name', {\n value: new.target.name,\n enumerable: false,\n configurable: true,\n });\n // Use captureStackTrace when available to remove contructor from stack trace\n // Add message to the stack trace\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = new Error(message).stack;\n }\n // fix the extended error prototype chain\n // because typescript __extends implementation can't\n // see https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class ErrorWithCause extends CustomError {\n constructor(message: string, readonly cause?: unknown) {\n super(message);\n }\n}\n","import * as _ from 'lodash';\nimport { CatalogItem } from '@console/dynamic-plugin-sdk/src/extensions';\nimport { keywordCompare } from './catalog-utils';\nimport { CatalogFilter, CatalogFilterCounts, CatalogFilters } from './types';\n\nexport const filterByGroup = (\n items: CatalogItem[],\n filters: CatalogFilters,\n): Record => {\n // Filter items by each filter group\n return _.reduce(\n filters,\n (filtered, group, key) => {\n // Only apply active filters\n const activeFilters = _.filter(group, 'active');\n if (activeFilters.length) {\n const values = _.reduce(\n activeFilters,\n (filterValues, filter) => {\n filterValues.push(filter.value);\n return filterValues;\n },\n [],\n );\n\n filtered[key] = _.filter(items, (item) => {\n const filterValue = item[key] || item.attributes?.[key];\n if (Array.isArray(filterValue)) {\n return filterValue.some((f) => values.includes(f));\n }\n return values.includes(filterValue);\n });\n }\n\n return filtered;\n },\n {},\n );\n};\n\nexport const filterByAttributes = (\n items: CatalogItem[],\n filters: CatalogFilters,\n): CatalogItem[] => {\n if (_.isEmpty(filters)) {\n return items;\n }\n\n // Apply each filter property individually. Example:\n // filteredByGroup = {\n // provider: [/*array of items filtered by provider*/],\n // healthIndex: [/*array of items filtered by healthIndex*/],\n // };\n const filteredByGroup = filterByGroup(items, filters);\n\n // Intersection of individually applied filters is all filters\n // In the case no filters are active, returns items filteredByKeyword\n return [..._.values(filteredByGroup), items].reduce((a, b) => a.filter((c) => b.includes(c)));\n};\n\nexport const filterBySearchKeyword = (\n items: CatalogItem[],\n searchKeyword: string,\n): CatalogItem[] => {\n return keywordCompare(searchKeyword, items);\n};\n\nexport const filterByCategory = (\n items: CatalogItem[],\n categoryId: string,\n categorizedIds: Record,\n): CatalogItem[] => {\n return categoryId !== 'all'\n ? items.filter((item) => categorizedIds[categoryId]?.includes(item.uid))\n : items;\n};\n\nexport const determineAvailableFilters = (\n initialFilters: CatalogFilters,\n items: CatalogItem[],\n filterGroups: string[],\n): CatalogFilters => {\n const filters = _.cloneDeep(initialFilters);\n\n _.each(filterGroups, (field) => {\n _.each(items, (item) => {\n const value = item[field] || item.attributes?.[field];\n if (value) {\n _.set(filters, [field, value], {\n label: value,\n value,\n active: false,\n });\n }\n });\n });\n\n return filters;\n};\n\nexport const getActiveFilters = (attributeFilters, activeFilters): CatalogFilters => {\n _.forOwn(attributeFilters, (filterValues, filterType) => {\n // removing default and localstore filters if Filters are present over URL\n _.each(_.keys(activeFilters[filterType]), (key) =>\n _.set(activeFilters, [filterType, key, 'active'], false),\n );\n _.each(filterValues, (filterValue) => {\n _.set(activeFilters, [filterType, filterValue, 'active'], true);\n });\n });\n\n return activeFilters;\n};\n\nexport const getFilterGroupCounts = (\n items: CatalogItem[],\n activeFilters: CatalogFilters,\n filterGroups: string[],\n): CatalogFilterCounts => {\n const newFilterCounts = {};\n\n if (_.isEmpty(activeFilters)) {\n return newFilterCounts;\n }\n\n _.each(filterGroups, (filterGroup) => {\n _.each(_.keys(activeFilters[filterGroup]), (key) => {\n const filterValues = [activeFilters[filterGroup]?.[key]?.value];\n\n const matchedItems = _.filter(items, (item) => {\n const filterValue = item[filterGroup] || item.attributes?.[filterGroup];\n if (Array.isArray(filterValue)) {\n return filterValue.some((f) => filterValues.includes(f));\n }\n\n return filterValues.includes(filterValue);\n });\n\n _.set(newFilterCounts, [filterGroup, key], _.size(matchedItems));\n });\n });\n\n return newFilterCounts;\n};\n\nexport const getFilterSearchParam = (groupFilter: CatalogFilter): string => {\n const activeValues = _.reduce(\n _.keys(groupFilter),\n (result, typeKey) => {\n return groupFilter[typeKey].active ? result.concat(typeKey) : result;\n },\n [],\n );\n\n return _.isEmpty(activeValues) ? '' : JSON.stringify(activeValues);\n};\n","import * as _ from 'lodash';\nimport { Alert } from '@console/dynamic-plugin-sdk';\nimport { alertMessageResources } from '@console/internal/components/monitoring/alerting';\nimport { Alerts } from '@console/internal/components/monitoring/types';\nimport {\n ReplicationControllerModel,\n ReplicaSetModel,\n StatefulSetModel,\n JobModel,\n DeploymentConfigModel,\n} from '@console/internal/models';\nimport {\n K8sResourceKind,\n K8sResourceCommon,\n LabelSelector,\n PodKind,\n CronJobKind,\n PodTemplate,\n RouteKind,\n apiVersionForModel,\n K8sKind,\n JobKind,\n} from '@console/internal/module/k8s';\nimport { getBuildNumber } from '@console/internal/module/k8s/builds';\nimport {\n DEPLOYMENT_REVISION_ANNOTATION,\n DEPLOYMENT_CONFIG_LATEST_VERSION_ANNOTATION,\n TRIGGERS_ANNOTATION,\n DEPLOYMENT_PHASE_ANNOTATION,\n CONTAINER_WAITING_STATE_ERROR_REASONS,\n DEPLOYMENT_STRATEGY,\n DEPLOYMENT_PHASE,\n AllPodStatus,\n} from '../constants';\nimport {\n BuildConfigOverviewItem,\n OverviewItemAlerts,\n PodControllerOverviewItem,\n OverviewItem,\n ExtPodKind,\n LimitsData,\n} from '../types';\nimport { doesHpaMatch } from './hpa-utils';\nimport { isKnativeServing, isIdled } from './pod-utils';\n\nexport const WORKLOAD_TYPES = [\n 'deployments',\n 'deploymentConfigs',\n 'daemonSets',\n 'statefulSets',\n 'jobs',\n 'cronJobs',\n 'pods',\n];\n\nexport const MONITORABLE_KINDS = ['Deployment', 'DeploymentConfig', 'StatefulSet', 'DaemonSet'];\n\ntype ResourceItem = {\n [key: string]: K8sResourceKind[];\n};\n\nexport type ResourceUtil = (obj: K8sResourceKind, props: any) => ResourceItem | undefined;\n\nexport const getResourcePausedAlert = (resource: K8sResourceKind): OverviewItemAlerts => {\n if (!resource?.spec?.paused) {\n return {};\n }\n return {\n [`${resource.metadata.uid}--Paused`]: {\n severity: 'info',\n message: `${resource.metadata.name} is paused.`,\n },\n };\n};\n\nexport const getBuildAlerts = (buildConfigs: BuildConfigOverviewItem[]): OverviewItemAlerts => {\n const buildAlerts = {};\n const addAlert = (build: K8sResourceKind, buildPhase: string) =>\n _.set(buildAlerts, `${build.metadata.uid}--build${buildPhase}`, {\n severity: `build${buildPhase}`,\n message: _.get(build, ['status', 'message'], buildPhase),\n });\n\n _.each(buildConfigs, (bc) => {\n let seenComplete = false;\n // Requires builds to be sorted by most recent first.\n _.each(bc.builds, (build: K8sResourceKind) => {\n const buildPhase = _.get(build, ['status', 'phase']);\n switch (buildPhase) {\n case 'Complete':\n seenComplete = true;\n break;\n case 'Failed':\n case 'Error':\n if (!seenComplete) {\n // show failure/error\n addAlert(build, buildPhase);\n }\n break;\n case 'New':\n case 'Pending':\n case 'Running':\n // show new/pending/running\n addAlert(build, buildPhase);\n break;\n default:\n break;\n }\n });\n });\n\n return buildAlerts;\n};\n\nexport const getOwnedResources = (\n obj: K8sResourceKind,\n resources: T[],\n): T[] => {\n const uid = obj?.metadata?.uid;\n if (!uid) {\n return [];\n }\n return _.filter(resources, ({ metadata: { ownerReferences } }) => {\n return _.some(ownerReferences, {\n uid,\n controller: true,\n });\n });\n};\n\nconst sortByRevision = (\n replicators: K8sResourceKind[],\n getRevision: Function,\n descending: boolean = true,\n): K8sResourceKind[] => {\n const compare = (left, right) => {\n const leftVersion = getRevision(left);\n const rightVersion = getRevision(right);\n if (!_.isFinite(leftVersion) && !_.isFinite(rightVersion)) {\n const leftName = _.get(left, 'metadata.name', '');\n const rightName = _.get(right, 'metadata.name', '');\n if (descending) {\n return rightName.localeCompare(leftName);\n }\n return leftName.localeCompare(rightName);\n }\n\n if (!leftVersion) {\n return descending ? 1 : -1;\n }\n\n if (!rightVersion) {\n return descending ? -1 : 1;\n }\n\n if (descending) {\n return rightVersion - leftVersion;\n }\n\n return leftVersion - rightVersion;\n };\n\n return _.toArray(replicators).sort(compare);\n};\n\nconst getAnnotation = (obj: K8sResourceCommon, annotation: string): string => {\n return obj?.metadata?.annotations?.[annotation];\n};\n\nexport const getDeploymentRevision = (obj: K8sResourceCommon): number => {\n const revision = getAnnotation(obj, DEPLOYMENT_REVISION_ANNOTATION);\n return revision && parseInt(revision, 10);\n};\n\nexport const getDeploymentConfigVersion = (obj: K8sResourceCommon): number => {\n const version = getAnnotation(obj, DEPLOYMENT_CONFIG_LATEST_VERSION_ANNOTATION);\n return version && parseInt(version, 10);\n};\n\nexport const getOwnerNameByKind = (obj: K8sResourceCommon, kind: K8sKind): string => {\n return obj?.metadata?.ownerReferences?.find(\n (ref) =>\n ref.kind === kind.kind &&\n ((!kind.apiGroup && ref.apiVersion === 'v1') ||\n ref.apiVersion?.startsWith(`${kind.apiGroup}/`)),\n )?.name;\n};\n\nexport const sortReplicaSetsByRevision = (replicaSets: K8sResourceKind[]): K8sResourceKind[] => {\n return sortByRevision(replicaSets, getDeploymentRevision);\n};\n\nconst sortReplicationControllersByRevision = (\n replicationControllers: K8sResourceKind[],\n): K8sResourceKind[] => {\n return sortByRevision(replicationControllers, getDeploymentConfigVersion);\n};\n\nexport const sortBuilds = (builds: K8sResourceKind[]): K8sResourceKind[] => {\n const byCreationTime = (left, right) => {\n const leftCreationTime = new Date(_.get(left, 'metadata.creationTimestamp', Date.now()));\n const rightCreationTime = new Date(_.get(right, 'metadata.creationTimestamp', Date.now()));\n return rightCreationTime.getMilliseconds() - leftCreationTime.getMilliseconds();\n };\n\n const byBuildNumber = (left, right) => {\n const leftBuildNumber = getBuildNumber(left);\n const rightBuildNumber = getBuildNumber(right);\n if (!_.isFinite(leftBuildNumber) || !_.isFinite(rightBuildNumber)) {\n return byCreationTime(left, right);\n }\n return rightBuildNumber - leftBuildNumber;\n };\n\n return [...builds].sort(byBuildNumber);\n};\n\n// FIXME use parseJSONAnnotation helper\nconst getAnnotatedTriggers = (obj: K8sResourceKind) => {\n const triggersJSON = getAnnotation(obj, TRIGGERS_ANNOTATION) || '[]';\n try {\n return JSON.parse(triggersJSON);\n } catch (e) {\n /* eslint-disable-next-line no-console */\n console.error('Error parsing triggers annotation', e);\n return [];\n }\n};\n\nconst getDeploymentPhase = (rc: K8sResourceKind): DEPLOYMENT_PHASE =>\n _.get(rc, ['metadata', 'annotations', DEPLOYMENT_PHASE_ANNOTATION]);\n\n// Only show an alert once if multiple pods have the same error for the same owner.\nconst podAlertKey = (alert: any, pod: K8sResourceKind, containerName: string = 'all'): string => {\n const id = _.get(pod, 'metadata.ownerReferences[0].uid', pod.metadata.uid);\n return `${alert}--${id}--${containerName}`;\n};\n\nconst getPodAlerts = (pod: K8sResourceKind): OverviewItemAlerts => {\n const alerts = {};\n const statuses = [\n ..._.get(pod, 'status.initContainerStatuses', []),\n ..._.get(pod, 'status.containerStatuses', []),\n ];\n statuses.forEach((status) => {\n const { name, state } = status;\n const waitingReason = _.get(state, 'waiting.reason');\n if (CONTAINER_WAITING_STATE_ERROR_REASONS.includes(waitingReason)) {\n const key = podAlertKey(waitingReason, pod, name);\n const message = state.waiting.message || waitingReason;\n alerts[key] = { severity: 'error', message };\n }\n });\n\n _.get(pod, 'status.conditions', []).forEach((condition) => {\n const { type, status, reason, message } = condition;\n if (type === 'PodScheduled' && status === 'False' && reason === 'Unschedulable') {\n // eslint-disable-next-line\n const key = podAlertKey(reason, pod);\n alerts[key] = {\n severity: 'error',\n message: `${reason}: ${message}`,\n };\n }\n });\n\n return alerts;\n};\n\nconst combinePodAlerts = (pods: K8sResourceKind[]): OverviewItemAlerts =>\n _.reduce(\n pods,\n (acc, pod) => ({\n ...acc,\n ...getPodAlerts(pod),\n }),\n {},\n );\n\nexport const getReplicationControllerAlerts = (rc: K8sResourceKind): OverviewItemAlerts => {\n const phase = getDeploymentPhase(rc);\n const version = getDeploymentConfigVersion(rc);\n const name = getOwnerNameByKind(rc, DeploymentConfigModel);\n const label = _.isFinite(version) ? `${name} #${version}` : rc.metadata.name;\n const key = `${rc.metadata.uid}--Rollout${phase}`;\n switch (phase) {\n case 'Cancelled':\n return {\n [key]: {\n severity: 'info',\n message: `Rollout ${label} was cancelled.`,\n },\n };\n case 'Failed':\n return {\n [key]: {\n severity: 'error',\n message: `Rollout ${label} failed.`,\n },\n };\n default:\n return {};\n }\n};\n\nconst getAutoscaledPods = (rc: K8sResourceKind): ExtPodKind[] => {\n return [\n {\n ..._.pick(rc, 'metadata', 'status', 'spec'),\n status: { phase: AllPodStatus.AutoScaledTo0 },\n },\n ];\n};\n\nconst getIdledStatus = (\n rc: PodControllerOverviewItem,\n dc: K8sResourceKind,\n): PodControllerOverviewItem => {\n const { pods } = rc;\n if (pods && !pods.length && isIdled(dc)) {\n return {\n ...rc,\n // FIXME: This is not a PodKind.\n pods: [\n {\n ..._.pick(rc.obj, 'metadata', 'status', 'spec'),\n status: { phase: AllPodStatus.Idle },\n },\n ],\n };\n }\n return rc;\n};\n\nexport const getRolloutStatus = (\n dc: K8sResourceKind,\n current: PodControllerOverviewItem,\n previous: PodControllerOverviewItem,\n): boolean => {\n const strategy = dc?.spec?.strategy?.type;\n const phase = current && current.phase;\n const currentRC = current && current.obj;\n const notFailedOrCancelled =\n phase !== DEPLOYMENT_PHASE.cancelled && phase !== DEPLOYMENT_PHASE.failed;\n if (strategy === DEPLOYMENT_STRATEGY.recreate) {\n return (\n notFailedOrCancelled &&\n getDeploymentConfigVersion(currentRC) > 1 &&\n phase !== DEPLOYMENT_PHASE.complete\n );\n }\n return notFailedOrCancelled && previous && previous.pods.length > 0;\n};\n\nconst isDeploymentInProgressOrCompleted = (resource: K8sResourceKind): boolean => {\n return (\n [\n DEPLOYMENT_PHASE.new,\n DEPLOYMENT_PHASE.pending,\n DEPLOYMENT_PHASE.running,\n DEPLOYMENT_PHASE.complete,\n ].indexOf(getDeploymentPhase(resource)) > -1\n );\n};\n\nconst isReplicationControllerVisible = (resource: K8sResourceKind): boolean => {\n return !!_.get(resource, ['status', 'replicas'], isDeploymentInProgressOrCompleted(resource));\n};\n\nexport const getPodsForResource = (resource: K8sResourceKind, resources: any): PodKind[] => {\n const { pods } = resources;\n return getOwnedResources(resource, pods?.data);\n};\n\nexport const toReplicationControllerItem = (\n rc: K8sResourceKind,\n resources: any,\n): PodControllerOverviewItem => {\n const pods = getPodsForResource(rc, resources);\n const alerts = {\n ...combinePodAlerts(pods),\n ...getReplicationControllerAlerts(rc),\n };\n const phase = getDeploymentPhase(rc);\n const revision = getDeploymentConfigVersion(rc);\n const obj = {\n ...rc,\n apiVersion: apiVersionForModel(ReplicationControllerModel),\n kind: ReplicationControllerModel.kind,\n };\n return {\n alerts,\n obj,\n phase,\n pods,\n revision,\n };\n};\n\nexport const getReplicationControllersForResource = (\n resource: K8sResourceKind,\n resources: any,\n): {\n mostRecentRC: K8sResourceKind;\n visibleReplicationControllers: PodControllerOverviewItem[];\n} => {\n const { replicationControllers } = resources;\n if (!replicationControllers?.data?.length) {\n return {\n mostRecentRC: null,\n visibleReplicationControllers: [],\n };\n }\n const ownedRC = getOwnedResources(resource, replicationControllers.data);\n const sortedRCs = sortReplicationControllersByRevision(ownedRC);\n // get the most recent RCs included failed or canceled to show warnings\n const [mostRecentRC] = sortedRCs;\n // get the visible RCs except failed/canceled\n const visibleReplicationControllers = _.filter(sortedRCs, isReplicationControllerVisible);\n return {\n mostRecentRC,\n visibleReplicationControllers: visibleReplicationControllers.map((rc) =>\n getIdledStatus(toReplicationControllerItem(rc, resources), resource),\n ),\n };\n};\n\nconst toResourceItem = (\n rs: K8sResourceKind,\n model: K8sKind,\n resources: any,\n): PodControllerOverviewItem => {\n const obj = {\n ...rs,\n apiVersion: apiVersionForModel(model),\n kind: `${model.kind}`,\n };\n const isKnative = isKnativeServing(rs, 'metadata.labels');\n const podData = getPodsForResource(rs, resources);\n const pods = podData && !podData.length && isKnative ? getAutoscaledPods(rs) : podData;\n const alerts = combinePodAlerts(pods);\n return {\n alerts,\n obj,\n pods,\n revision: getDeploymentRevision(rs),\n };\n};\n\nconst getActiveStatefulSets = (ss: K8sResourceKind, resources: any): K8sResourceKind[] => {\n const { statefulSets } = resources;\n const ownedRS = _.filter(statefulSets?.data, (f) => f.metadata.name === ss?.metadata?.name);\n return _.filter(ownedRS, (rs) => _.get(rs, 'status.replicas'));\n};\n\nexport const getStatefulSetsResource = (\n ss: K8sResourceKind,\n resources: any,\n): PodControllerOverviewItem[] => {\n const activeStatefulSets = getActiveStatefulSets(ss, resources);\n return activeStatefulSets.map((pss) =>\n getIdledStatus(toResourceItem(pss, StatefulSetModel, resources), ss),\n );\n};\n\nexport const getActiveReplicaSets = (\n deployment: K8sResourceKind,\n resources: any,\n): K8sResourceKind[] => {\n const { replicaSets } = resources;\n const currentRevision = getDeploymentRevision(deployment);\n const ownedRS = getOwnedResources(deployment, replicaSets?.data);\n return _.filter(\n ownedRS,\n (rs) => _.get(rs, 'status.replicas') || getDeploymentRevision(rs) === currentRevision,\n );\n};\n\nexport const getReplicaSetsForResource = (\n deployment: K8sResourceKind,\n resources: any,\n): PodControllerOverviewItem[] => {\n const replicaSets = getActiveReplicaSets(deployment, resources);\n return sortReplicaSetsByRevision(replicaSets).map((rs) =>\n getIdledStatus(toResourceItem(rs, ReplicaSetModel, resources), deployment),\n );\n};\n\nexport const getJobsForCronJob = (cronJobUid: string, resources: any): JobKind[] => {\n if (!resources?.jobs?.data?.length) {\n return [];\n }\n return resources.jobs.data\n .filter((job) => job.metadata?.ownerReferences?.find((ref) => ref.uid === cronJobUid))\n .map((job) => ({\n ...job,\n apiVersion: apiVersionForModel(JobModel),\n kind: JobModel.kind,\n }));\n};\n\nexport const getBuildsForResource = (\n buildConfig: K8sResourceKind,\n resources: any,\n): K8sResourceKind[] => {\n const { builds } = resources;\n return getOwnedResources(buildConfig, builds.data);\n};\n\nexport const getBuildConfigsForCronJob = (\n cronJob: CronJobKind,\n resources: any,\n): BuildConfigOverviewItem[] => {\n const buildConfigs = resources?.buildConfigs?.data ?? [];\n const currentNamespace = cronJob.metadata.namespace;\n const containers = cronJob.spec?.jobTemplate?.spec?.template?.spec?.containers ?? [];\n return _.reduce(\n buildConfigs,\n (acc, buildConfig) => {\n const targetImageNamespace = buildConfig?.spec?.output?.to?.namespace ?? currentNamespace;\n const targetImageName = buildConfig?.spec?.output?.to?.name;\n if (\n currentNamespace === targetImageNamespace &&\n containers.find((container) => container.image?.endsWith(targetImageName))\n ) {\n const builds = getBuildsForResource(buildConfig, resources);\n return [\n ...acc,\n {\n ...buildConfig,\n builds: sortBuilds(builds),\n },\n ];\n }\n return acc;\n },\n [],\n );\n};\n\nexport const getBuildConfigsForResource = (\n resource: K8sResourceKind,\n resources: any,\n): BuildConfigOverviewItem[] => {\n if (resource.kind === 'CronJob') {\n return getBuildConfigsForCronJob(resource as CronJobKind, resources);\n }\n const NAME_LABEL = 'app.kubernetes.io/name';\n const buildConfigs = resources?.buildConfigs?.data;\n const currentNamespace = resource.metadata.namespace;\n const nativeTriggers = resource?.spec?.triggers;\n const annotatedTriggers = getAnnotatedTriggers(resource);\n const triggers = _.unionWith(nativeTriggers, annotatedTriggers, _.isEqual);\n const resourceNameLabel = resource.metadata?.labels?.[NAME_LABEL];\n return _.flatMap(triggers, (trigger) => {\n const triggerFrom = trigger.from || (trigger.imageChangeParams?.from ?? {});\n if (triggerFrom.kind !== 'ImageStreamTag') {\n return [];\n }\n const triggerImageNamespace = triggerFrom.namespace || currentNamespace;\n const triggerImageName = triggerFrom.name;\n return _.reduce(\n buildConfigs,\n (acc, buildConfig) => {\n const targetImageNamespace = buildConfig.spec?.output?.to?.namespace ?? currentNamespace;\n const targetImageName = buildConfig.spec?.output?.to?.name;\n if (\n triggerImageNamespace === targetImageNamespace &&\n (triggerImageName === targetImageName ||\n (!!resourceNameLabel &&\n resourceNameLabel === buildConfig.metadata?.labels?.[NAME_LABEL]))\n ) {\n const builds = getBuildsForResource(buildConfig, resources);\n return [\n ...acc,\n {\n ...buildConfig,\n builds: sortBuilds(builds),\n },\n ];\n }\n return acc;\n },\n [],\n );\n });\n};\n\nconst getPodTemplate = (resource: K8sResourceKind): PodTemplate => {\n switch (resource.kind) {\n case 'Pod':\n return resource as PodKind;\n case 'DeploymentConfig':\n // Include labels automatically added to deployment config pods since a service\n // might select them.\n return _.defaultsDeep(\n {\n metadata: {\n labels: {\n deploymentconfig: resource.metadata.name,\n },\n },\n },\n resource.spec?.template,\n );\n default:\n return resource.spec?.template;\n }\n};\n\nexport const getRoutesForServices = (services: string[], routes: RouteKind[]): RouteKind[] => {\n if (!services?.length || !routes?.length) {\n return [];\n }\n return routes.filter((route) => services.includes(route.spec?.to?.name));\n};\n\nexport const getServicesForResource = (\n resource: K8sResourceKind,\n services: K8sResourceKind[],\n): K8sResourceKind[] => {\n const template: PodTemplate = getPodTemplate(resource);\n return _.filter(services, (service: K8sResourceKind) => {\n const selector = new LabelSelector(_.get(service, 'spec.selector', {}));\n return selector.matches(template);\n });\n};\n\nexport const getWorkloadMonitoringAlerts = (\n resource: K8sResourceKind,\n monitoringAlerts: Alerts,\n): Alert[] => {\n const alerts = _.reduce(\n monitoringAlerts?.data,\n (acc, alert) => {\n const labelValues = _.map(alertMessageResources, (model, label) => alert?.labels?.[label]);\n if (_.find(labelValues, (val) => val === resource?.metadata?.name)) {\n acc.push(alert);\n }\n return acc;\n },\n [],\n );\n return alerts;\n};\n\nexport const validPod = (pod: K8sResourceKind) => {\n const owners = pod?.metadata?.ownerReferences;\n const phase = pod?.status?.phase;\n return _.isEmpty(owners) && phase !== 'Succeeded' && phase !== 'Failed';\n};\n\nconst isStandaloneJob = (job: K8sResourceKind) =>\n !_.find(job.metadata?.ownerReferences, (owner) => owner.kind === 'CronJob');\n\nexport const getStandaloneJobs = (jobs: K8sResourceKind[]) =>\n jobs.filter((job) => isStandaloneJob(job));\n\nexport const getOverviewItemForResource = (\n obj: K8sResourceKind,\n resources: any,\n utils?: ResourceUtil[],\n): OverviewItem => {\n const isMonitorable = MONITORABLE_KINDS.includes(obj.kind);\n const monitoringAlerts = isMonitorable\n ? getWorkloadMonitoringAlerts(obj, resources?.monitoringAlerts)\n : undefined;\n const hpas = resources?.hpas?.data?.filter(doesHpaMatch(obj));\n\n const overviewItems: OverviewItem = {\n obj,\n hpas,\n isMonitorable,\n monitoringAlerts,\n };\n\n if (utils) {\n return utils.reduce((acc, util) => {\n return { ...acc, ...util(obj, resources) };\n }, overviewItems);\n }\n return overviewItems;\n};\n\nexport const createOverviewItemForType = (\n type: string,\n resource: K8sResourceKind,\n resources: any,\n utils?: ResourceUtil[],\n): OverviewItem => {\n if (!WORKLOAD_TYPES.includes(type)) {\n return undefined;\n }\n switch (type) {\n case 'jobs':\n return isStandaloneJob(resource)\n ? getOverviewItemForResource(resource, resources, utils)\n : null;\n case 'pods':\n return validPod(resource)\n ? getOverviewItemForResource(resource, resources, utils)\n : undefined;\n default:\n return getOverviewItemForResource(resource, resources, utils);\n }\n};\n\nexport const getResourceLimitsData = (limitsData: LimitsData) => ({\n ...((limitsData.cpu.limit || limitsData.memory.limit) && {\n limits: {\n ...(limitsData.cpu.limit && { cpu: `${limitsData.cpu.limit}${limitsData.cpu.limitUnit}` }),\n ...(limitsData.memory.limit && {\n memory: `${limitsData.memory.limit}${limitsData.memory.limitUnit}`,\n }),\n },\n }),\n ...((limitsData.cpu.request || limitsData.memory.request) && {\n requests: {\n ...(limitsData.cpu.request && {\n cpu: `${limitsData.cpu.request}${limitsData.cpu.requestUnit}`,\n }),\n ...(limitsData.memory.request && {\n memory: `${limitsData.memory.request}${limitsData.memory.requestUnit}`,\n }),\n },\n }),\n});\n\nexport const getResourceData = (res: string) => {\n const resourcesRegEx = /^[0-9]*|[a-zA-Z]*/g;\n return res.match(resourcesRegEx);\n};\n\nexport const getLimitsDataFromResource = (resource: K8sResourceKind) => {\n const containers = resource?.spec?.template?.spec?.containers ?? [];\n\n const [cpuLimit, cpuLimitUnit] = getResourceData(containers?.[0]?.resources?.limits?.cpu ?? '');\n const [memoryLimit, memoryLimitUnit] = getResourceData(\n containers?.[0]?.resources?.limits?.memory ?? '',\n );\n const [cpuRequest, cpuRequestUnit] = getResourceData(\n containers?.[0]?.resources?.requests?.cpu ?? '',\n );\n const [memoryRequest, memoryRequestUnit] = getResourceData(\n containers?.[0]?.resources?.requests?.memory ?? '',\n );\n\n const limitsData = {\n cpu: {\n request: cpuRequest,\n requestUnit: cpuRequestUnit || '',\n defaultRequestUnit: cpuRequestUnit || '',\n limit: cpuLimit,\n limitUnit: cpuLimitUnit || '',\n defaultLimitUnit: cpuLimitUnit || '',\n },\n memory: {\n request: memoryRequest,\n requestUnit: memoryRequestUnit || 'Mi',\n defaultRequestUnit: memoryRequestUnit || 'Mi',\n limit: memoryLimit,\n limitUnit: memoryLimitUnit || 'Mi',\n defaultLimitUnit: memoryLimitUnit || 'Mi',\n },\n };\n return limitsData;\n};\n\nexport const getVerticalPodAutoscalersForResource = (\n vpas: K8sResourceKind[],\n obj: K8sResourceKind,\n) =>\n (vpas ?? []).filter((vpa) => {\n const { targetRef } = vpa.spec;\n const { namespace } = vpa.metadata;\n return (\n targetRef &&\n targetRef.apiVersion === obj?.apiVersion &&\n targetRef.kind === obj?.kind &&\n targetRef.name === obj?.metadata?.name &&\n namespace === obj?.metadata?.namespace\n );\n });\n","import { K8sState } from '../../redux-types';\n\nexport const getReduxIdPayload = (state, reduxId) => state.k8s.get(reduxId);\n\nexport const getK8sDataById = (state: K8sState, id: string) => state.getIn([id, 'data']);\n","import * as React from 'react';\nimport { Flex, Radio } from '@patternfly/react-core';\nimport { useTranslation } from 'react-i18next';\nimport './styles.scss';\n\nexport enum EditorType {\n Form = 'form',\n YAML = 'yaml',\n}\n\nexport const EditorToggle: React.FC = ({ value, onChange }) => {\n const { t } = useTranslation();\n const handleChange = (event: React.FormEvent) => {\n onChange(event?.currentTarget?.value as EditorType);\n };\n return (\n

\n \n \n {t('console-shared~Configure via:')}\n \n \n \n \n
\n );\n};\n\ntype EditorToggleProps = {\n value: EditorType;\n onChange?: (newValue: EditorType) => void;\n};\n","export * from './models';\nexport * from './components';\nexport * from './types';\n","import { Extension } from '../types';\n\nexport type { ResolvedExtension } from '../types';\n\n// Type for extension hook\nexport type ExtensionHook = (options: R) => ExtensionHookResult;\n\n// Type for extension hook result that returns [data, resolved, error]\nexport type ExtensionHookResult = [T, boolean, any];\n\nexport type ExtensionK8sModel = {\n group: string;\n version: string;\n kind: string;\n};\n\nexport type ExtensionK8sGroupModel = {\n group: string;\n version?: string;\n kind?: string;\n};\n\nexport type ExtensionK8sGroupKindModel = {\n group: string;\n version?: string;\n kind: string;\n};\n\nexport type ExtensionK8sKindVersionModel = {\n group?: string;\n version: string;\n kind: string;\n};\n\nexport type K8sModel = {\n abbr: string;\n kind: string;\n label: string;\n labelKey?: string;\n labelPlural: string;\n labelPluralKey?: string;\n plural: string;\n propagationPolicy?: 'Foreground' | 'Background';\n\n id?: string;\n crd?: boolean;\n apiVersion: string;\n apiGroup?: string;\n namespaced?: boolean;\n selector?: Selector;\n labels?: { [key: string]: string };\n annotations?: { [key: string]: string };\n verbs?: K8sVerb[];\n shortNames?: string[];\n badge?: BadgeType;\n color?: string;\n\n // Legacy option for supporing plural names in URL paths when `crd: true`.\n // This should not be set for new models, but is needed to avoid breaking\n // existing links as we transition to using the API group in URL paths.\n legacyPluralURL?: boolean;\n};\n\n/**\n * @deprecated migrated to new type K8sModel, use K8sModel over K8sKind\n */\nexport type K8sKind = K8sModel;\n\nexport enum Operator {\n Exists = 'Exists',\n DoesNotExist = 'DoesNotExist',\n In = 'In',\n NotIn = 'NotIn',\n Equals = 'Equals',\n NotEqual = 'NotEqual',\n GreaterThan = 'GreaterThan',\n LessThan = 'LessThan',\n NotEquals = 'NotEquals',\n}\n\nexport type MatchExpression = {\n key: string;\n operator: Operator | string;\n values?: string[];\n};\n\nexport type MatchLabels = {\n [key: string]: string;\n};\n\nexport type Selector = {\n matchLabels?: MatchLabels;\n matchExpressions?: MatchExpression[];\n};\n\ntype K8sVerb =\n | 'create'\n | 'get'\n | 'list'\n | 'update'\n | 'patch'\n | 'delete'\n | 'deletecollection'\n | 'watch'\n | 'impersonate';\n\nenum BadgeType {\n DEV = 'Dev Preview',\n TECH = 'Tech Preview',\n}\n\nexport const enum AlertStates {\n Firing = 'firing',\n NotFiring = 'not-firing',\n Pending = 'pending',\n Silenced = 'silenced',\n}\n\nexport const enum SilenceStates {\n Active = 'active',\n Expired = 'expired',\n Pending = 'pending',\n}\n\nexport const enum AlertSeverity {\n Critical = 'critical',\n Info = 'info',\n None = 'none',\n Warning = 'warning',\n}\n\nexport const enum RuleStates {\n Firing = 'firing',\n Inactive = 'inactive',\n Pending = 'pending',\n Silenced = 'silenced',\n}\n\nexport type Silence = {\n comment: string;\n createdBy: string;\n endsAt: string;\n firingAlerts: Alert[];\n id?: string;\n matchers: { isEqual?: boolean; isRegex: boolean; name: string; value: string }[];\n name?: string;\n startsAt: string;\n status?: { state: SilenceStates };\n updatedAt?: string;\n};\n\nexport type PrometheusAlert = {\n activeAt?: string;\n annotations: PrometheusLabels;\n labels: PrometheusLabels & {\n alertname: string;\n severity?: AlertSeverity | string;\n };\n state: AlertStates;\n value?: number | string;\n};\n\nexport type Alert = PrometheusAlert & {\n rule: Rule;\n silencedBy?: Silence[];\n};\n\nexport type PrometheusRule = {\n alerts: PrometheusAlert[];\n annotations: PrometheusLabels;\n duration: number;\n labels: PrometheusLabels & {\n severity?: string;\n };\n name: string;\n query: string;\n state: RuleStates;\n type: string;\n};\n\nexport type Rule = PrometheusRule & {\n id: string;\n sourceId?: string;\n silencedBy?: Silence[];\n};\n\nexport type PrometheusLabels = { [key: string]: string };\nexport type PrometheusValue = [number, string];\n\ntype Group = {\n rules: PrometheusRule[];\n file: string;\n name: string;\n};\n\nexport type PrometheusRulesResponse = {\n data: {\n groups: Group[];\n };\n status: string;\n};\n\nexport type DiscoveryResources = {\n adminResources: string[];\n allResources: string[];\n configResources: K8sKind[];\n clusterOperatorConfigResources: K8sKind[];\n models: K8sKind[];\n namespacedSet: Set;\n safeResources: string[];\n groupVersionMap: {\n [key: string]: {\n versions: string[];\n preferredVersion: string;\n };\n };\n};\n\nexport type AlwaysOnExtension

= Omit, 'flags'>;\n\nnamespace ExtensionProperties {\n export interface ModelDefinition {\n /** Additional Kubernetes model definitions to register with Console. */\n models: K8sModel[];\n }\n}\n\nexport interface ModelDefinition extends AlwaysOnExtension {\n type: 'ModelDefinition';\n}\n\nexport enum PrometheusEndpoint {\n LABEL = 'api/v1/label',\n QUERY = 'api/v1/query',\n QUERY_RANGE = 'api/v1/query_range',\n RULES = 'api/v1/rules',\n TARGETS = 'api/v1/targets',\n}\n","export * from './useExactSearch';\n","import {\n createContext,\n useReducer,\n useState,\n Reducer,\n Dispatch,\n ReducerAction,\n useEffect,\n useCallback,\n} from 'react';\nimport { pick, union, isEqual } from 'lodash';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore: FIXME missing exports due to out-of-sync @types/react-redux version\nimport { useSelector } from 'react-redux';\nimport { createSelector } from 'reselect';\nimport { useActivePerspective } from '@console/dynamic-plugin-sdk';\nimport { getFlagsObject } from '@console/internal/reducers/features';\nimport { RootState } from '@console/internal/redux';\nimport { useExtensions } from '@console/plugin-sdk';\nimport { isGuidedTour, GuidedTour } from '@console/plugin-sdk/src/typings/guided-tour';\nimport { useUserSettingsCompatibility } from '@console/shared/src/hooks/useUserSettingsCompatibility';\nimport { TourActions, TOUR_LOCAL_STORAGE_KEY } from './const';\nimport { TourDataType, Step } from './type';\nimport { filterTourBasedonPermissionAndFlag } from './utils';\n\ntype TourStateAction = { type: TourActions; payload?: { completed?: boolean } };\nexport const tourReducer = (state: TourState, action: TourStateAction) => {\n const { stepNumber } = state;\n switch (action.type) {\n case TourActions.initialize:\n return {\n completedTour: action.payload.completed,\n stepNumber: 0,\n startTour: !action.payload.completed,\n };\n case TourActions.start:\n return { startTour: true, completedTour: false, stepNumber: 0 };\n case TourActions.next:\n return {\n ...state,\n startTour: false,\n stepNumber: stepNumber + 1,\n };\n case TourActions.back:\n return {\n ...state,\n stepNumber: stepNumber - 1,\n };\n case TourActions.complete:\n return { ...state, completedTour: true, stepNumber: 0 };\n default:\n return state;\n }\n};\n\ntype TourReducer = Reducer;\n\ntype TourContextType = {\n tourState?: TourState;\n tourDispatch?: Dispatch>;\n tour?: TourDataType;\n totalSteps?: number;\n onComplete?: () => void;\n};\n\nexport type TourState = {\n stepNumber: number;\n startTour: boolean;\n completedTour: boolean;\n};\n\nexport const TourContext = createContext({});\n\nexport const TourContextProvider = TourContext.Provider;\n\nconst getRequiredFlagsFromTour = (steps: Step[]) =>\n steps.reduce((allFlags, { flags }) => (flags ? union(allFlags, flags) : allFlags), []);\n\nconst getRequiredFlagsByTour = createSelector(\n (state: RootState) => getFlagsObject(state),\n (_, steps: Step[]) => getRequiredFlagsFromTour(steps),\n (flags, requiredFlags) => pick(flags, requiredFlags),\n);\n\ntype TourLocalStorageType = {\n completed: boolean;\n};\n\ntype TourLocalStorageData = {\n [key: string]: TourLocalStorageType;\n};\n\nconst TOUR_CONFIGMAP_KEY = `console.guidedTour`;\n\nexport const useTourStateForPerspective = (\n perspective: string,\n): [TourLocalStorageType, (completed: boolean) => void, boolean] => {\n const [tourLocalState, setTourLocalState, loaded] = useUserSettingsCompatibility<\n TourLocalStorageData\n >(TOUR_CONFIGMAP_KEY, TOUR_LOCAL_STORAGE_KEY, { [perspective]: { completed: false } });\n useEffect(() => {\n if (loaded && !tourLocalState.hasOwnProperty(perspective)) {\n setTourLocalState((state) => ({ ...state, [perspective]: { completed: false } }));\n }\n // only run effect when the active perspective changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [perspective, loaded]);\n return [\n tourLocalState?.[perspective],\n useCallback(\n (completed: boolean) => {\n setTourLocalState((state) => {\n return { ...state, [perspective]: { ...state[perspective], completed } };\n });\n },\n [perspective, setTourLocalState],\n ),\n loaded,\n ];\n};\n\nexport const useTourValuesForContext = (): TourContextType => {\n // declaring a method for the perspective instead of using getActivePerspective\n // because importing getActivePerspective in this file throws error\n // Uncaught ReferenceError: Cannot access 'allModels' before initialization and this hook is used in plugin extension for ContextProvider\n const [activePerspective] = useActivePerspective();\n const [perspective, setPerspective] = useState(activePerspective);\n const tourExtension = useExtensions(isGuidedTour);\n const tour = tourExtension.find(({ properties }) => properties.perspective === perspective);\n const selectorSteps = tour?.properties?.tour?.steps ?? [];\n const flags = useSelector(\n (state: RootState) => getRequiredFlagsByTour(state, selectorSteps),\n isEqual,\n );\n const [tourCompletionState, setTourCompletionState, loaded] = useTourStateForPerspective(\n activePerspective,\n );\n const completed = tourCompletionState?.completed;\n const onComplete = () => {\n if (completed === false) {\n setTourCompletionState(true);\n }\n };\n const [tourState, tourDispatch] = useReducer(tourReducer, {\n completedTour: completed,\n stepNumber: 0,\n startTour: !completed,\n });\n\n useEffect(() => {\n tourDispatch({ type: TourActions.initialize, payload: { completed } });\n setPerspective(activePerspective);\n // only run effect when the active perspective changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activePerspective, loaded]);\n\n if (!tour || !loaded) return { tour: null };\n const {\n properties: {\n tour: { intro, steps: unfilteredSteps, end },\n },\n } = tour;\n const steps = filterTourBasedonPermissionAndFlag(unfilteredSteps, flags);\n return {\n tourState,\n tourDispatch,\n tour: { intro, steps, end },\n totalSteps: steps.length,\n onComplete,\n };\n};\n","import { SortByDirection } from '@patternfly/react-table';\n\nimport { K8sResourceCommon } from '../../../module/k8s';\n\nconst isNumber = (value): value is number => Number.isFinite(value);\n\nexport const sortResourceByValue = (\n sortDirection: SortByDirection,\n valueGetter: (obj: D) => V,\n) => (a: D, b: D): number => {\n const lang = navigator.languages[0] || navigator.language;\n // Use `localCompare` with `numeric: true` for a natural sort order (e.g., pv-1, pv-9, pv-10)\n const compareOpts = { numeric: true, ignorePunctuation: true };\n const aValue = valueGetter(a);\n const bValue = valueGetter(b);\n const result: number =\n isNumber(aValue) && isNumber(bValue)\n ? aValue - bValue\n : `${aValue}`.localeCompare(`${bValue}`, lang, compareOpts);\n if (result !== 0) {\n return sortDirection === SortByDirection.asc ? result : result * -1;\n }\n\n // Use name as a secondary sort for a stable sort.\n const aName = (a as K8sResourceCommon)?.metadata?.name || '';\n const bName = (b as K8sResourceCommon)?.metadata?.name || '';\n return aName.localeCompare(bName, lang, compareOpts);\n};\n","import * as React from 'react';\nimport { useFlag } from '@console/shared';\nimport { FLAG_DEVWORKSPACE } from '../../const';\nimport { checkTerminalAvailable } from './cloud-shell-utils';\n\nconst useCloudShellAvailable = () => {\n const [terminalAvailable, setTerminalAvailable] = React.useState(false);\n const flagEnabled = useFlag(FLAG_DEVWORKSPACE);\n React.useEffect(() => {\n let mounted = true;\n if (flagEnabled) {\n checkTerminalAvailable()\n .then(() => {\n if (mounted) {\n setTerminalAvailable(true);\n }\n })\n .catch(() => {\n if (mounted) {\n setTerminalAvailable(false);\n }\n });\n } else {\n setTerminalAvailable(false);\n }\n return () => {\n mounted = false;\n };\n }, [flagEnabled]);\n\n return flagEnabled && terminalAvailable;\n};\n\nexport default useCloudShellAvailable;\n","import { Dispatch } from 'react-redux';\nimport { action, ActionType } from 'typesafe-actions';\nimport { RootState } from '@console/internal/redux';\nimport { isCloudShellExpanded, isCloudShellActive } from '../reducers/cloud-shell-selectors';\n\nexport enum Actions {\n SetCloudShellExpanded = 'setCloudShellExpanded',\n SetCloudShellActive = 'setCloudShellActive',\n SetCloudShellCommand = 'setCloudShellCommand',\n}\n\nexport const setCloudShellCommand = (command: string | null) =>\n action(Actions.SetCloudShellCommand, { command });\n\nexport const setCloudShellExpanded = (isExpanded: boolean) =>\n action(Actions.SetCloudShellExpanded, { isExpanded });\n\nexport const toggleCloudShellExpanded = () => async (\n dispatch: Dispatch,\n getState: () => RootState,\n) => {\n const expanded = isCloudShellExpanded(getState());\n if (expanded && isCloudShellActive(getState())) {\n (\n await import(\n '@console/webterminal-plugin/src/components/cloud-shell/cloudShellConfirmationModal'\n )\n ).default(() => dispatch(setCloudShellExpanded(false)));\n } else {\n dispatch(setCloudShellExpanded(!expanded));\n }\n};\n\nexport const setCloudShellActive = (isActive: boolean) =>\n action(Actions.SetCloudShellActive, { isActive });\n\nconst actions = {\n setCloudShellExpanded,\n setCloudShellActive,\n setCloudShellCommand,\n};\n\nexport type CloudShellActions = ActionType;\n","import * as React from 'react';\nimport { CatalogItem } from '@console/dynamic-plugin-sdk';\nimport { history, removeQueryArgument } from '@console/internal/components/utils';\nimport { keywordCompare } from '../../catalog';\n\nexport const quickSearch = (items: CatalogItem[], query: string) => {\n return keywordCompare(query, items);\n};\n\nexport const handleCta = async (\n e: React.SyntheticEvent,\n item: CatalogItem,\n closeModal: () => void,\n fireTelemetryEvent: (event: string, properties?: {}) => void,\n callbackProps: { [key: string]: string } = {},\n) => {\n e.preventDefault();\n const { href, callback } = item.cta;\n if (callback) {\n fireTelemetryEvent('Quick Search Used', {\n id: item.uid,\n type: item.type,\n name: item.name,\n });\n closeModal();\n await callback(callbackProps);\n removeQueryArgument('catalogSearch');\n } else history.push(href);\n};\n","import { ActionContext as ActionContextType } from '@console/dynamic-plugin-sdk/src/api/internal-types';\n\nexport { ActionMenuVariant } from '@console/dynamic-plugin-sdk/src/api/internal-types';\n\nexport type ActionContext = ActionContextType;\n","import { action, ActionType as Action } from 'typesafe-actions';\nimport { UserInfo } from '../../../extensions';\nimport { AdmissionWebhookWarning } from '../../redux-types';\n\nexport enum ActionType {\n SetUser = 'setUser',\n BeginImpersonate = 'beginImpersonate',\n EndImpersonate = 'endImpersonate',\n SetActiveCluster = 'setActiveCluster',\n SetAdmissionWebhookWarning = 'setAdmissionWebhookWarning',\n RemoveAdmissionWebhookWarning = 'removeAdmissionWebhookWarning',\n}\n\nexport const setUser = (userInfo: UserInfo) => action(ActionType.SetUser, { userInfo });\nexport const beginImpersonate = (kind: string, name: string, subprotocols: string[]) =>\n action(ActionType.BeginImpersonate, { kind, name, subprotocols });\nexport const endImpersonate = () => action(ActionType.EndImpersonate);\nexport const setAdmissionWebhookWarning = (id: string, warning: AdmissionWebhookWarning) =>\n action(ActionType.SetAdmissionWebhookWarning, { id, warning });\nexport const removeAdmissionWebhookWarning = (id) =>\n action(ActionType.RemoveAdmissionWebhookWarning, { id });\nconst coreActions = {\n setUser,\n beginImpersonate,\n endImpersonate,\n setAdmissionWebhookWarning,\n removeAdmissionWebhookWarning,\n};\n\nexport type CoreAction = Action;\n","import { Store } from 'redux';\n\nlet store: Store;\n\nconst storeHandler = {\n setStore: (storeData: Store) => {\n store = storeData;\n },\n getStore: (): Store => store,\n};\n\nexport default storeHandler;\n","import { TFunction } from 'i18next';\nimport {\n deepForOwn,\n PredicateCheck,\n ValueCallback,\n} from '@console/dynamic-plugin-sdk/src/utils/object';\nimport { Extension } from '../typings';\n\nexport const isTranslatableString = (value): value is string => {\n return (\n typeof value === 'string' && value.length > 2 && value.startsWith('%') && value.endsWith('%')\n );\n};\n\nexport const getTranslationKey = (value: string) =>\n isTranslatableString(value) ? value.substr(1, value.length - 2) : undefined;\n\nexport const translateExtensionDeep = (\n extension: E,\n translationStringPredicate: PredicateCheck,\n cb: ValueCallback,\n): void => {\n deepForOwn(extension.properties, translationStringPredicate, cb);\n};\n\n/**\n * Recursively updates the extension's properties, replacing all translatable string values\n * via the provided `t` function.\n */\nexport const translateExtension = (extension: E, t: TFunction): E => {\n translateExtensionDeep(extension, isTranslatableString, (value, key, obj) => {\n obj[key] = t(value);\n });\n\n return extension;\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport * as _ from 'lodash-es';\nimport * as React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { useTranslation, withTranslation } from 'react-i18next';\nimport i18next, { TFunction, WithT } from 'i18next';\nimport { Base64 } from 'js-base64';\nimport { ActionGroup, Button } from '@patternfly/react-core';\nimport { MinusCircleIcon } from '@patternfly/react-icons/dist/esm/icons/minus-circle-icon';\nimport { PlusCircleIcon } from '@patternfly/react-icons/dist/esm/icons/plus-circle-icon';\nimport { useParams, useNavigate } from 'react-router-dom-v5-compat';\nimport { k8sCreate, k8sUpdate, K8sResourceKind, referenceFor } from '../../module/k8s';\nimport {\n ButtonBar,\n Dropdown,\n Firehose,\n LoadingBox,\n PageHeading,\n resourceObjPath,\n StatusBox,\n} from '../utils';\nimport { ModalBody, ModalTitle, ModalSubmitFooter } from '../factory/modal';\nimport { AsyncComponent } from '../utils/async';\nimport { SecretModel } from '../../models';\nimport { WebHookSecretKey } from '../secret';\nimport { containsNonPrintableCharacters } from '../utils/file-input';\nexport enum SecretTypeAbstraction {\n generic = 'generic',\n source = 'source',\n image = 'image',\n webhook = 'webhook',\n}\n\nconst secretDisplayType = (isCreate: boolean, abstraction: SecretTypeAbstraction, t: TFunction) => {\n switch (abstraction) {\n case 'generic':\n return isCreate ? t('public~Create key/value secret') : t('public~Edit key/value secret');\n case 'image':\n return isCreate ? t('public~Create image pull secret') : t('public~Edit image pull secret');\n default:\n return isCreate\n ? t('public~Create {{secretType}} secret', { secretType: abstraction })\n : t('public~Edit {{secretType}} secret', { secretType: abstraction });\n }\n};\n\nconst AUTHS_KEY = 'auths';\n\nexport enum SecretType {\n basicAuth = 'kubernetes.io/basic-auth',\n dockercfg = 'kubernetes.io/dockercfg',\n dockerconfigjson = 'kubernetes.io/dockerconfigjson',\n opaque = 'Opaque',\n serviceAccountToken = 'kubernetes.io/service-account-token',\n sshAuth = 'kubernetes.io/ssh-auth',\n tls = 'kubernetes.io/tls',\n}\n\nexport type BasicAuthSubformState = {\n username: string;\n password: string;\n};\nconst secretFormExplanation = (typeAbstraction: SecretTypeAbstraction) => {\n switch (typeAbstraction) {\n case SecretTypeAbstraction.generic:\n return i18next.t(\n 'public~Key/value secrets let you inject sensitive data into your application as files or environment variables.',\n );\n case SecretTypeAbstraction.source:\n return i18next.t('public~Source secrets let you authenticate against a Git server.');\n case SecretTypeAbstraction.image:\n return i18next.t(\n 'public~Image pull secrets let you authenticate against a private image registry.',\n );\n case SecretTypeAbstraction.webhook:\n return i18next.t('public~Webhook secrets let you authenticate a webhook trigger.');\n default:\n throw new Error('public~Non-existent abstraction in switch: abstraction');\n }\n};\n\nconst toDefaultSecretType = (typeAbstraction: SecretTypeAbstraction): SecretType => {\n switch (typeAbstraction) {\n case SecretTypeAbstraction.source:\n return SecretType.basicAuth;\n case SecretTypeAbstraction.image:\n return SecretType.dockerconfigjson;\n default:\n return SecretType.opaque;\n }\n};\n\nconst toTypeAbstraction = (obj): SecretTypeAbstraction => {\n const { data, type } = obj;\n switch (type) {\n case SecretType.basicAuth:\n case SecretType.sshAuth:\n return SecretTypeAbstraction.source;\n case SecretType.dockerconfigjson:\n case SecretType.dockercfg:\n return SecretTypeAbstraction.image;\n default:\n if (data?.[WebHookSecretKey] && _.size(data) === 1) {\n return SecretTypeAbstraction.webhook;\n }\n return SecretTypeAbstraction.generic;\n }\n};\n\nconst generateSecret = () => {\n // http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n const s4 = () =>\n Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n return s4() + s4() + s4() + s4();\n};\n\nconst determineSecretType = (stringData): SecretType => {\n const dataKeys = _.keys(stringData).sort();\n if (_.isEqual(dataKeys, ['tls.crt', 'tls.key'])) {\n return SecretType.tls;\n } else if (_.isEqual(dataKeys, ['ca.crt', 'namespace', 'service-ca.crt', 'token'])) {\n return SecretType.serviceAccountToken;\n } else if (_.isEqual(dataKeys, ['.dockercfg'])) {\n return SecretType.dockercfg;\n } else if (_.isEqual(dataKeys, ['.dockerconfigjson'])) {\n return SecretType.dockerconfigjson;\n } else if (_.isEqual(dataKeys, ['password', 'username'])) {\n return SecretType.basicAuth;\n } else if (_.isEqual(dataKeys, ['ssh-privatekey'])) {\n return SecretType.sshAuth;\n }\n return SecretType.opaque;\n};\n\nexport const SecretFormWrapper: React.FC = (props) => {\n const { isCreate, modal, onCancel } = props;\n const { t } = useTranslation();\n const navigate = useNavigate();\n const params = useParams();\n\n const existingSecret = _.pick(props.obj, ['metadata', 'type']);\n const defaultSecretType = toDefaultSecretType(props.secretTypeAbstraction);\n const initialSecret = _.defaultsDeep({}, props.fixed, existingSecret, {\n apiVersion: 'v1',\n data: {},\n kind: 'Secret',\n metadata: {\n name: '',\n },\n type: defaultSecretType,\n });\n\n const [secretTypeAbstraction] = React.useState(props.secretTypeAbstraction);\n const [secret, setSecret] = React.useState(initialSecret);\n const [inProgress, setInProgress] = React.useState(false);\n const [error, setError] = React.useState();\n const [stringData, setStringData] = React.useState(\n _.mapValues(_.get(props.obj, 'data'), (value) => {\n return value ? Base64.decode(value) : '';\n }),\n );\n const [base64StringData, setBase64StringData] = React.useState({});\n const [disableForm, setDisableForm] = React.useState(false);\n\n const cancel = () => navigate(`/k8s/ns/${params.ns}/core~v1~Secret`);\n\n const onDataChanged = (secretsData) => {\n setStringData({ ...secretsData?.stringData });\n setBase64StringData({ ...secretsData?.base64StringData });\n };\n\n const onError = (err) => {\n setError(err);\n setInProgress(false);\n };\n\n const onNameChanged = (event) => {\n const name = event.target.value;\n const newSecret = _.cloneDeep(secret);\n newSecret.metadata.name = name;\n setSecret(newSecret);\n };\n\n const save = (e) => {\n e.preventDefault();\n const { metadata } = secret;\n setInProgress(true);\n const data = {\n ..._.mapValues(stringData, (value) => {\n return Base64.encode(value);\n }),\n ...base64StringData,\n };\n const newSecret = _.assign(\n {},\n secret,\n {\n data,\n },\n // When creating new Secret, determine it's type from the `stringData` keys.\n // When updating a Secret, use it's type.\n isCreate ? { type: determineSecretType(stringData) } : {},\n );\n (isCreate\n ? k8sCreate(SecretModel, newSecret)\n : k8sUpdate(SecretModel, newSecret, metadata.namespace, newSecret.metadata.name)\n ).then(\n (s) => {\n setInProgress(false);\n if (props.onSave) {\n props.onSave(s.metadata.name);\n }\n if (!props.modal) {\n navigate(resourceObjPath(s, referenceFor(s)));\n }\n },\n (err) => {\n setError(err.message);\n setInProgress(false);\n },\n );\n };\n\n const renderBody = () => {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const SubForm = secretFormFactory(props.secretTypeAbstraction);\n\n return (\n <>\n

\n
\n \n
\n \n

\n {t('public~Unique name of the new secret.')}\n

\n
\n
\n
\n setDisableForm(disable)}\n stringData={stringData}\n secretType={secret.type}\n isCreate={isCreate}\n />\n \n );\n };\n\n const title = secretDisplayType(isCreate, secretTypeAbstraction, t);\n\n return modal ? (\n
\n {title}\n {renderBody()}\n \n \n ) : (\n
\n \n {title}\n \n \n
\n
\n {renderBody()}\n \n \n \n {props.saveButtonText || t('public~Create')}\n \n \n \n \n
\n
\n
\n );\n};\n\nconst getImageSecretKey = (secretType: SecretType): string => {\n switch (secretType) {\n case SecretType.dockercfg:\n return '.dockercfg';\n case SecretType.dockerconfigjson:\n return '.dockerconfigjson';\n default:\n return secretType;\n }\n};\n\nclass ImageSecretFormWithTranslation extends React.Component<\n ImageSecretFormProps & WithT,\n ImageSecretFormState\n> {\n constructor(props) {\n super(props);\n const data = this.props.isCreate ? { '.dockerconfigjson': '{}' } : this.props.stringData;\n let parsedData;\n try {\n parsedData = _.mapValues(data, JSON.parse);\n } catch (err) {\n this.props.onError(`Error parsing secret's data: ${err.message}`);\n parsedData = { '.dockerconfigjson': {} };\n }\n this.state = {\n type: this.props.secretType,\n dataKey: getImageSecretKey(this.props.secretType),\n stringData: parsedData,\n authType: 'credentials',\n disable: false,\n };\n this.onDataChanged = this.onDataChanged.bind(this);\n this.changeFormType = this.changeFormType.bind(this);\n this.onFormDisable = this.onFormDisable.bind(this);\n }\n onDataChanged(secretData) {\n if (!_.isError(secretData)) {\n this.onFormDisable(this.state.disable);\n }\n const dataKey = secretData[AUTHS_KEY] ? '.dockerconfigjson' : '.dockercfg';\n this.setState(\n {\n stringData: { [dataKey]: secretData },\n },\n () =>\n this.props.onChange({\n stringData: _.mapValues(this.state.stringData, JSON.stringify),\n }),\n );\n }\n changeFormType(authType) {\n this.setState({\n authType,\n });\n }\n onFormDisable(disable) {\n this.props.onFormDisable(disable);\n }\n render() {\n const { t } = this.props;\n const authTypes = {\n credentials: t('public~Image registry credentials'),\n 'config-file': t('public~Upload configuration file'),\n };\n const data = _.get(this.state.stringData, this.state.dataKey);\n return (\n <>\n {this.props.isCreate && (\n
\n \n
\n \n
\n
\n )}\n {this.state.authType === 'credentials' ? (\n \n ) : (\n \n )}\n \n );\n }\n}\n\nexport const ImageSecretForm = withTranslation()(ImageSecretFormWithTranslation);\n\ntype ConfigEntryFormState = {\n address: string;\n username: string;\n password: string;\n email: string;\n auth: string;\n uid: string;\n};\n\ntype ConfigEntryFormProps = {\n id: number;\n entry: Object;\n onChange: Function;\n};\n\nclass ConfigEntryFormWithTranslation extends React.Component<\n ConfigEntryFormProps & WithT,\n ConfigEntryFormState\n> {\n constructor(props) {\n super(props);\n this.state = {\n address: _.get(this.props.entry, 'address'),\n username: _.get(this.props.entry, 'username'),\n password: _.get(this.props.entry, 'password'),\n email: _.get(this.props.entry, 'email'),\n auth: _.get(this.props.entry, 'auth'),\n uid: _.get(this.props, 'uid'),\n };\n }\n\n propagateChange = () => {\n const { onChange, id } = this.props;\n onChange(this.state, id);\n };\n\n onAddressChanged: React.ReactEventHandler = (event) => {\n this.setState({ address: event.currentTarget.value }, this.propagateChange);\n };\n\n onUsernameChanged: React.ReactEventHandler = (event) => {\n const username = event.currentTarget.value;\n this.setState(\n (state: ConfigEntryFormState) => ({\n username,\n auth: Base64.encode(`${username}:${state.password}`),\n }),\n this.propagateChange,\n );\n };\n\n onPasswordChanged: React.ReactEventHandler = (event) => {\n const password = event.currentTarget.value;\n this.setState(\n (state: ConfigEntryFormState) => ({\n password,\n auth: Base64.encode(`${state.username}:${password}`),\n }),\n this.propagateChange,\n );\n };\n\n onEmailChanged: React.ReactEventHandler = (event) => {\n this.setState({ email: event.currentTarget.value }, this.propagateChange);\n };\n\n onBlurHandler: React.ReactEventHandler = (event) => {\n const { name, value } = event.currentTarget;\n this.setState(\n (prevState) => ({\n ...prevState,\n [name]: value.trim(),\n }),\n this.propagateChange,\n );\n };\n\n render() {\n const { t } = this.props;\n\n return (\n
\n
\n \n
\n \n
\n

\n {t('public~For example quay.io or docker.io')}\n

\n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n );\n }\n}\n\nexport const ConfigEntryForm = withTranslation()(ConfigEntryFormWithTranslation);\n\ntype CreateConfigSubformState = {\n isDockerconfigjson: boolean;\n hasDuplicate: boolean;\n secretEntriesArray: {\n entry: {\n address: string;\n username: string;\n password: string;\n email: string;\n auth: string;\n };\n uid: string;\n }[];\n};\n\nclass CreateConfigSubformWithTranslation extends React.Component<\n CreateConfigSubformProps & WithT,\n CreateConfigSubformState\n> {\n constructor(props) {\n super(props);\n this.state = {\n // If user creates a new image secret by filling out the form a 'kubernetes.io/dockerconfigjson' secret will be created.\n isDockerconfigjson: _.isEmpty(this.props.stringData) || !!this.props.stringData[AUTHS_KEY],\n secretEntriesArray: this.imageSecretObjectToArray(\n this.props.stringData?.[AUTHS_KEY] || this.props.stringData,\n ),\n hasDuplicate: false,\n };\n this.onDataChanged = this.onDataChanged.bind(this);\n }\n newImageSecretEntry() {\n return {\n entry: {\n address: '',\n username: '',\n password: '',\n email: '',\n auth: '',\n },\n uid: _.uniqueId(),\n };\n }\n imageSecretObjectToArray(imageSecretObject) {\n const imageSecretArray = [];\n if (_.isEmpty(imageSecretObject)) {\n return _.concat(imageSecretArray, this.newImageSecretEntry());\n }\n _.each(imageSecretObject, (v, k) => {\n // Decode and parse 'auth' in case 'username' and 'password' are not part of the secret.\n const decodedAuth = Base64.decode(_.get(v, 'auth', ''));\n const parsedAuth = _.isEmpty(decodedAuth) ? _.fill(Array(2), '') : _.split(decodedAuth, ':');\n imageSecretArray.push({\n entry: {\n address: k,\n username: _.get(v, 'username', parsedAuth[0]),\n password: _.get(v, 'password', parsedAuth[1]),\n email: _.get(v, 'email', ''),\n auth: _.get(v, 'auth', ''),\n },\n uid: _.get(v, 'uid', _.uniqueId()),\n });\n });\n return imageSecretArray;\n }\n imageSecretArrayToObject(imageSecretArray) {\n const imageSecretsObject = {};\n _.each(imageSecretArray, (value) => {\n imageSecretsObject[value.entry.address] = _.pick(value.entry, [\n 'username',\n 'password',\n 'auth',\n 'email',\n ]);\n });\n return imageSecretsObject;\n }\n propagateEntryChange(secretEntriesArray) {\n const imageSecretObject = this.imageSecretArrayToObject(secretEntriesArray);\n this.props.onChange(\n this.state.isDockerconfigjson ? { [AUTHS_KEY]: imageSecretObject } : imageSecretObject,\n );\n }\n onDataChanged(updatedEntry, entryIndex: number) {\n this.setState(\n (state: CreateConfigSubformState) => {\n const secretEntriesArray = [...state.secretEntriesArray];\n const updatedEntryData = {\n uid: secretEntriesArray[entryIndex].uid,\n entry: updatedEntry,\n };\n secretEntriesArray[entryIndex] = updatedEntryData;\n return {\n secretEntriesArray,\n };\n },\n () => this.propagateEntryChange(this.state.secretEntriesArray),\n );\n }\n removeEntry(entryIndex: number) {\n this.setState(\n (state: CreateConfigSubformState) => {\n const secretEntriesArray = [...state.secretEntriesArray];\n secretEntriesArray.splice(entryIndex, 1);\n return { secretEntriesArray };\n },\n () => this.propagateEntryChange(this.state.secretEntriesArray),\n );\n }\n addEntry() {\n this.setState(\n {\n secretEntriesArray: _.concat(this.state.secretEntriesArray, this.newImageSecretEntry()),\n },\n () => {\n this.propagateEntryChange(this.state.secretEntriesArray);\n },\n );\n }\n render() {\n const { t } = this.props;\n const secretEntriesList = _.map(this.state.secretEntriesArray, (entryData, index) => {\n return (\n
\n {_.size(this.state.secretEntriesArray) > 1 && (\n
\n this.removeEntry(index)}\n type=\"button\"\n variant=\"link\"\n data-test=\"remove-entry-button\"\n >\n \n {t('public~Remove credentials')}\n \n
\n )}\n \n
\n );\n });\n return (\n <>\n {secretEntriesList}\n this.addEntry()}\n type=\"button\"\n variant=\"link\"\n data-test=\"add-credentials-button\"\n >\n \n {t('public~Add credentials')}\n \n \n );\n }\n}\n\nexport const CreateConfigSubform = withTranslation()(CreateConfigSubformWithTranslation);\n\nclass UploadConfigSubformWithTranslation extends React.Component<\n UploadConfigSubformProps & WithT,\n UploadConfigSubformState\n> {\n constructor(props) {\n super(props);\n this.state = {\n configFile: _.isEmpty(this.props.stringData) ? '' : JSON.stringify(this.props.stringData),\n parseError: false,\n };\n this.changeData = this.changeData.bind(this);\n this.onFileChange = this.onFileChange.bind(this);\n }\n changeData(event) {\n this.updateState(_.attempt(JSON.parse, event.target.value), event.target.value);\n }\n onFileChange(fileData) {\n this.updateState(_.attempt(JSON.parse, fileData), fileData);\n }\n updateState(parsedData, stringData) {\n this.setState(\n {\n configFile: stringData,\n parseError: _.isError(parsedData),\n },\n () => {\n this.props.onChange(parsedData);\n this.props.onDisable(this.state.parseError);\n },\n );\n }\n render() {\n const { t } = this.props;\n return (\n <>\n \n {this.state.parseError && (\n
\n {t('public~Configuration file should be in JSON format.')}\n
\n )}\n \n );\n }\n}\n\nexport const UploadConfigSubform = withTranslation()(UploadConfigSubformWithTranslation);\n\nclass WebHookSecretFormWithTranslation extends React.Component<\n WebHookSecretFormProps & WithT,\n WebHookSecretFormState\n> {\n constructor(props) {\n super(props);\n this.state = {\n stringData: { WebHookSecretKey: this.props.stringData.WebHookSecretKey || '' },\n };\n this.changeWebHookSecretkey = this.changeWebHookSecretkey.bind(this);\n this.generateWebHookSecret = this.generateWebHookSecret.bind(this);\n }\n changeWebHookSecretkey(event) {\n this.setState(\n {\n stringData: { WebHookSecretKey: event.target.value },\n },\n () => this.props.onChange(this.state),\n );\n }\n generateWebHookSecret() {\n this.setState(\n {\n stringData: { WebHookSecretKey: generateSecret() },\n },\n () => this.props.onChange(this.state),\n );\n }\n render() {\n const { t } = this.props;\n return (\n
\n \n
\n \n \n {t('public~Generate')}\n \n
\n

\n {t('public~Value of the secret will be supplied when invoking the webhook.')}\n

\n
\n );\n }\n}\n\nexport const WebHookSecretForm = withTranslation()(WebHookSecretFormWithTranslation);\n\nclass SourceSecretFormWithTranslation extends React.Component<\n SourceSecretFormProps & WithT,\n SourceSecretFormState\n> {\n constructor(props) {\n super(props);\n this.state = {\n type: this.props.secretType,\n stringData: this.props.stringData || {},\n authType: SecretType.basicAuth,\n };\n this.changeAuthenticationType = this.changeAuthenticationType.bind(this);\n this.onDataChanged = this.onDataChanged.bind(this);\n }\n changeAuthenticationType(type: SecretType) {\n this.setState(\n {\n type,\n },\n () => this.props.onChange(this.state),\n );\n }\n onDataChanged(secretsData) {\n this.setState(\n {\n stringData: { ...secretsData },\n },\n () => this.props.onChange(this.state),\n );\n }\n render() {\n const { t } = this.props;\n const authTypes = {\n [SecretType.basicAuth]: t('public~Basic authentication'),\n [SecretType.sshAuth]: t('public~SSH key'),\n };\n return (\n <>\n {this.props.isCreate ? (\n
\n \n
\n \n
\n
\n ) : null}\n {this.state.type === SecretType.basicAuth ? (\n \n ) : (\n \n )}\n \n );\n }\n}\n\nexport const SourceSecretForm = withTranslation()(SourceSecretFormWithTranslation);\n\nclass BasicAuthSubformWithTranslation extends React.Component<\n BasicAuthSubformProps & WithT,\n BasicAuthSubformState\n> {\n constructor(props) {\n super(props);\n this.state = {\n username: this.props.stringData.username || '',\n password: this.props.stringData.password || '',\n };\n this.changeData = this.changeData.bind(this);\n }\n changeData(event) {\n this.setState(\n {\n [event.target.name]: event.target.value,\n } as BasicAuthSubformState,\n () => this.props.onChange(this.state),\n );\n }\n\n render() {\n const { t } = this.props;\n return (\n <>\n
\n \n
\n \n

\n {t('public~Optional username for Git authentication.')}\n

\n
\n
\n
\n \n
\n \n

\n {t(\n 'public~Password or token for Git authentication. Required if a ca.crt or .gitconfig file is not specified.',\n )}\n

\n
\n
\n \n );\n }\n}\n\nexport const BasicAuthSubform = withTranslation()(BasicAuthSubformWithTranslation);\n\nconst DroppableFileInput = (props) => (\n import('../utils/file-input').then((c) => c.DroppableFileInput)}\n {...props}\n />\n);\n\nclass SSHAuthSubformWithTranslation extends React.Component<\n SSHAuthSubformProps & WithT,\n SSHAuthSubformState\n> {\n constructor(props) {\n super(props);\n this.state = {\n 'ssh-privatekey': this.props.stringData['ssh-privatekey'] || '',\n };\n this.changeData = this.changeData.bind(this);\n this.onFileChange = this.onFileChange.bind(this);\n }\n changeData(event) {\n this.setState(\n {\n 'ssh-privatekey': event.target.value.endsWith('\\n')\n ? event.target.value\n : `${event.target.value}\\n`,\n },\n () => this.props.onChange(this.state),\n );\n }\n onFileChange(fileData) {\n this.setState(\n {\n 'ssh-privatekey': fileData.endsWith('\\n') ? fileData : `${fileData}\\n`,\n },\n () => this.props.onChange(this.state),\n );\n }\n render() {\n const { t } = this.props;\n return (\n \n );\n }\n}\n\nexport const SSHAuthSubform = withTranslation()(SSHAuthSubformWithTranslation);\n\ntype KeyValueEntryFormState = {\n isBase64?: boolean;\n isBinary?: boolean;\n key: string;\n value: string;\n};\n\ntype KeyValueEntryFormProps = {\n entry: KeyValueEntryFormState;\n id: number;\n onChange: Function;\n};\n\ntype GenericSecretFormProps = {\n onChange: Function;\n stringData: {\n [key: string]: string;\n };\n isCreate: boolean;\n};\n\ntype GenericSecretFormState = {\n secretEntriesArray: {\n entry: KeyValueEntryFormState;\n uid: string;\n }[];\n};\n\nclass GenericSecretFormWithTranslation extends React.Component<\n GenericSecretFormProps & WithT,\n GenericSecretFormState\n> {\n constructor(props) {\n super(props);\n this.state = {\n secretEntriesArray: this.genericSecretObjectToArray(this.props.stringData),\n };\n this.onDataChanged = this.onDataChanged.bind(this);\n }\n newGenericSecretEntry() {\n return {\n entry: {\n key: '',\n value: '',\n },\n uid: _.uniqueId(),\n };\n }\n genericSecretObjectToArray(genericSecretObject) {\n if (_.isEmpty(genericSecretObject)) {\n return [this.newGenericSecretEntry()];\n }\n return _.map(genericSecretObject, (value, key) => {\n const isBinary = containsNonPrintableCharacters(value);\n return {\n uid: _.uniqueId(),\n entry: {\n key,\n value: isBinary ? Base64.encode(value) : value,\n isBase64: isBinary,\n isBinary,\n },\n };\n });\n }\n genericSecretArrayToObject(genericSecretArray) {\n return _.reduce(\n genericSecretArray,\n (acc, k) =>\n _.assign(acc, {\n [k.entry.key]:\n k.entry?.isBase64 || k.entry?.isBinary ? k.entry.value : Base64.encode(k.entry.value),\n }),\n {},\n );\n }\n onDataChanged(updatedEntry, entryID) {\n const updatedSecretEntriesArray = [...this.state.secretEntriesArray];\n const updatedEntryData = {\n uid: updatedSecretEntriesArray[entryID].uid,\n entry: updatedEntry,\n };\n updatedSecretEntriesArray[entryID] = updatedEntryData;\n this.setState(\n {\n secretEntriesArray: updatedSecretEntriesArray,\n },\n () =>\n this.props.onChange({\n base64StringData: this.genericSecretArrayToObject(this.state.secretEntriesArray),\n }),\n );\n }\n removeEntry(entryID) {\n const updatedSecretEntriesArray = [...this.state.secretEntriesArray];\n updatedSecretEntriesArray.splice(entryID, 1);\n this.setState(\n {\n secretEntriesArray: updatedSecretEntriesArray,\n },\n () =>\n this.props.onChange({\n base64StringData: this.genericSecretArrayToObject(this.state.secretEntriesArray),\n }),\n );\n }\n addEntry() {\n this.setState(\n {\n secretEntriesArray: _.concat(this.state.secretEntriesArray, this.newGenericSecretEntry()),\n },\n () =>\n this.props.onChange({\n base64StringData: this.genericSecretArrayToObject(this.state.secretEntriesArray),\n }),\n );\n }\n render() {\n const { t } = this.props;\n const secretEntriesList = _.map(this.state.secretEntriesArray, (entryData, index) => {\n return (\n
\n {_.size(this.state.secretEntriesArray) > 1 && (\n
\n this.removeEntry(index)}\n variant=\"link\"\n data-test=\"remove-entry-button\"\n >\n \n {t('public~Remove key/value')}\n \n
\n )}\n \n
\n );\n });\n return (\n <>\n {secretEntriesList}\n this.addEntry()}\n type=\"button\"\n variant=\"link\"\n data-test=\"add-credentials-button\"\n >\n \n {t('public~Add key/value')}\n \n \n );\n }\n}\n\nexport const GenericSecretForm = withTranslation()(GenericSecretFormWithTranslation);\n\nclass KeyValueEntryFormWithTranslation extends React.Component<\n KeyValueEntryFormProps & WithT,\n KeyValueEntryFormState\n> {\n constructor(props) {\n super(props);\n this.state = {\n key: props.entry.key,\n value: props.entry.value,\n isBinary: props.entry.isBinary,\n };\n this.onValueChange = this.onValueChange.bind(this);\n this.onKeyChange = this.onKeyChange.bind(this);\n }\n onValueChange(fileData, isBinary) {\n this.setState(\n {\n value: fileData,\n isBase64: isBinary,\n },\n () => this.props.onChange(this.state, this.props.id),\n );\n }\n onKeyChange(event) {\n this.setState(\n {\n key: event.target.value,\n },\n () => this.props.onChange(this.state, this.props.id),\n );\n }\n render() {\n const { t } = this.props;\n return (\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport const KeyValueEntryForm = withTranslation()(KeyValueEntryFormWithTranslation);\n\nconst secretFormFactory = (secretType: SecretTypeAbstraction) => {\n switch (secretType) {\n case SecretTypeAbstraction.source:\n return SourceSecretForm;\n case SecretTypeAbstraction.image:\n return ImageSecretForm;\n case SecretTypeAbstraction.webhook:\n return WebHookSecretForm;\n default:\n return GenericSecretForm;\n }\n};\nexport const SecretLoadingWrapper = withTranslation()(\n class SecretLoadingWrapper extends React.Component<\n SecretLoadingWrapperProps & WithT,\n SecretLoadingWrapperState\n > {\n readonly state: SecretLoadingWrapperState = {\n secretTypeAbstraction: SecretTypeAbstraction.generic,\n };\n componentDidUpdate() {\n if (!_.isEmpty(this.props.obj.data)) {\n const secretTypeAbstraction = toTypeAbstraction(this.props.obj.data);\n if (this.state.secretTypeAbstraction !== secretTypeAbstraction) {\n this.setState({\n secretTypeAbstraction,\n });\n }\n }\n }\n render() {\n const { obj, fixedKeys } = this.props;\n const { secretTypeAbstraction } = this.state;\n if (!secretTypeAbstraction) {\n return ;\n }\n const fixed = fixedKeys?.reduce((acc, k) => ({ ...acc, [k]: obj.data?.[k] || '' }), {});\n\n return (\n \n \n \n );\n }\n },\n);\n\nexport const CreateSecret = () => {\n const params = useParams();\n const secretTypeAbstraction = params.type as SecretTypeAbstraction;\n return (\n \n );\n};\n\ntype EditSecretProps = {\n kind: string;\n};\n\nexport const EditSecret = ({ kind }: EditSecretProps) => {\n const params = useParams();\n const { t } = useTranslation();\n return (\n \n \n \n );\n};\n\ntype SecretLoadingWrapperProps = {\n obj?: {\n data?: K8sResourceKind;\n [key: string]: any;\n };\n fixedKeys: string[];\n saveButtonText: string;\n};\n\ntype SecretLoadingWrapperState = {\n secretTypeAbstraction: SecretTypeAbstraction;\n};\n\ntype BaseEditSecretProps_ = {\n obj?: K8sResourceKind;\n fixed: any;\n kind?: string;\n isCreate?: boolean;\n modal?: boolean;\n secretTypeAbstraction?: SecretTypeAbstraction;\n saveButtonText?: string;\n explanation?: string;\n onCancel?: () => void;\n onSave?: (name: string) => void;\n};\n\ntype BasicAuthSubformProps = {\n onChange: Function;\n stringData: {\n [key: string]: string;\n };\n};\n\ntype ImageSecretFormState = {\n type: SecretType;\n stringData: {\n [key: string]: any;\n };\n authType: string;\n dataKey: string;\n disable: boolean;\n};\n\ntype ImageSecretFormProps = {\n onChange: Function;\n onError: Function;\n onFormDisable: Function;\n stringData: {\n [key: string]: string;\n };\n secretType: SecretType;\n isCreate: boolean;\n};\n\ntype CreateConfigSubformProps = {\n onChange: Function;\n stringData: {\n [key: string]: any;\n };\n};\n\ntype UploadConfigSubformState = {\n parseError: boolean;\n configFile: string;\n};\n\ntype UploadConfigSubformProps = {\n onChange: Function;\n onDisable: Function;\n stringData: {\n [key: string]: Object;\n };\n};\n\ntype SSHAuthSubformState = {\n 'ssh-privatekey': string;\n};\n\ntype SSHAuthSubformProps = {\n onChange: Function;\n stringData: {\n [key: string]: string;\n };\n};\n\ntype SourceSecretFormState = {\n type: SecretType;\n stringData: {\n [key: string]: string;\n };\n authType: SecretType.basicAuth | SecretType.sshAuth;\n};\n\ntype SourceSecretFormProps = {\n onChange: Function;\n stringData: {\n [key: string]: string;\n };\n secretType: SecretType;\n isCreate: boolean;\n};\n\ntype WebHookSecretFormState = {\n stringData: {\n [key: string]: string;\n };\n};\n\ntype WebHookSecretFormProps = {\n onChange: Function;\n onError: Function;\n onFormDisable: Function;\n secretType: string;\n stringData: {\n [key: string]: string;\n };\n};\n","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport * as classNames from 'classnames';\n\nexport const RadioInput: React.SFC = (props) => {\n const inputProps: React.InputHTMLAttributes = _.omit(props, [\n 'title',\n 'subTitle',\n 'desc',\n 'children',\n 'inline',\n ]);\n const inputElement = (\n <>\n \n \n {props.title} {props.subTitle && {props.subTitle}}\n \n {props.desc &&

{props.desc}

}\n {props.children}\n \n );\n\n return props.inline ? inputElement :
{inputElement}
;\n};\n\nexport const RadioGroup: React.SFC = ({\n currentValue,\n inline = false,\n items,\n label,\n onChange,\n id = JSON.stringify(items),\n}) => {\n const radios = items.map(({ desc, title, subTitle, value, disabled }) => (\n \n ));\n return (\n
\n {label ? (\n <>\n \n
\n {radios}\n
\n \n ) : (\n radios\n )}\n
\n );\n};\n\nexport type RadioInputProps = {\n checked: boolean;\n desc?: string | JSX.Element;\n onChange: (v: any) => void;\n subTitle?: string | JSX.Element;\n value: any;\n disabled?: boolean;\n inline?: boolean;\n} & React.InputHTMLAttributes;\n\nexport type RadioGroupProps = {\n currentValue: any;\n id?: string;\n inline?: boolean;\n items: ({\n desc?: string | JSX.Element;\n title: string | JSX.Element;\n subTitle?: string | JSX.Element;\n value: any;\n disabled?: boolean;\n } & React.InputHTMLAttributes)[];\n label?: string;\n onChange: React.InputHTMLAttributes['onChange'];\n};\n\nRadioInput.displayName = 'RadioInput';\nRadioGroup.displayName = 'RadioGroup';\n","import * as React from 'react';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore: FIXME missing exports due to out-of-sync @types/react-redux version\nimport { useSelector } from 'react-redux';\nimport { Tooltip } from '@patternfly/react-core';\nimport * as classNames from 'classnames';\nimport { GlobeAmericasIcon } from '@patternfly/react-icons/dist/esm/icons/globe-americas-icon';\nimport { TimestampProps } from '@console/dynamic-plugin-sdk';\n\nimport * as dateTime from './datetime';\nimport { getLastLanguage } from '@console/app/src/components/user-preferences/language/getLastLanguage';\n\nconst timestampFor = (mdate: Date, now: Date, omitSuffix: boolean, lang: string) => {\n if (!dateTime.isValid(mdate)) {\n return '-';\n }\n\n const timeDifference = now.getTime() - mdate.getTime();\n if (omitSuffix) {\n return dateTime.fromNow(mdate, undefined, { omitSuffix: true }, lang);\n }\n\n // Show a relative time if within 10.5 minutes in the past from the current time.\n if (timeDifference > dateTime.maxClockSkewMS && timeDifference < 630000) {\n return dateTime.fromNow(mdate, undefined, undefined, lang);\n }\n\n // Apr 23, 2021, 4:33 PM\n return dateTime.dateTimeFormatter(lang).format(mdate);\n};\n\nconst nowStateToProps = ({ UI }) => ({ now: UI.get('lastTick') });\n\nexport const Timestamp = (props: TimestampProps) => {\n const now = useSelector(nowStateToProps);\n\n // Workaround for Date&Time values are not showing in supported languages onchange of language selector.\n const lang = getLastLanguage();\n\n // Check for null. If props.timestamp is null, it returns incorrect date and time of Wed Dec 31 1969 19:00:00 GMT-0500 (Eastern Standard Time)\n if (!props.timestamp) {\n return
-
;\n }\n\n const mdate = new Date(props.timestamp);\n\n const timestamp = timestampFor(mdate, new Date(now), props.omitSuffix, lang);\n\n if (!dateTime.isValid(mdate)) {\n return
-
;\n }\n\n if (props.simple) {\n return <>{timestamp};\n }\n\n return (\n
\n \n \n {dateTime.utcDateTimeFormatter.format(mdate)}\n ,\n ]}\n >\n {timestamp}\n \n
\n );\n};\n\nTimestamp.displayName = 'Timestamp';\n","import * as React from 'react';\nimport { LaptopCodeIcon, GitAltIcon } from '@patternfly/react-icons';\nimport * as serverlessFunctionIcon from '@console/internal/imgs/logos/serverlessfx.svg';\nimport * as channelIcon from '../imgs/channel.svg';\nimport * as eventSinkIcon from '../imgs/event-sink.svg';\nimport * as eventSourceIcon from '../imgs/event-source.svg';\n\nexport const eventIconStyle: React.CSSProperties = {\n width: '1em',\n height: '1em',\n};\nexport const eventSourceIconSVG = eventSourceIcon;\n\nexport const eventSinkIconSVG = eventSinkIcon;\n\nexport const channelIconSVG = channelIcon;\n\nexport const serverlessFunctionSVG = serverlessFunctionIcon;\n\nexport const gitIconElement = ;\n\nexport const samplesIconElement = ;\n\nexport const EventSinkIcon: React.FC<{ style?: React.CSSProperties }> = ({ style }) => (\n \"Event\n);\n\nexport const EventSourceIcon: React.FC<{ style?: React.CSSProperties }> = ({ style }) => (\n \"Event\n);\n\nexport const ServerlessFunctionIcon: React.FC<{ style?: React.CSSProperties }> = ({ style }) => (\n \"Serverless\n);\n","export { useK8sModel } from './useK8sModel';\nexport { useK8sModels } from './useK8sModels';\nexport { useK8sWatchResource } from './useK8sWatchResource';\nexport { useK8sWatchResources } from './useK8sWatchResources';\n","export * from './node-maintenance';\nexport * from './bare-metal-host';\n","/**\n * Unwrap the result of `Promise.allSettled` call as `[fulfilledValues, rejectedReasons, results]` tuple.\n */\nconst unwrapPromiseSettledResults = (\n results: PromiseSettledResult[],\n): [T[], any[], PromiseSettledResult[]] => {\n const fulfilledValues = results\n .filter((r) => r.status === 'fulfilled')\n .map((r: PromiseFulfilledResult) => r.value);\n\n const rejectedReasons = results\n .filter((r) => r.status === 'rejected')\n .map((r: PromiseRejectedResult) => r.reason);\n\n return [fulfilledValues, rejectedReasons, results];\n};\n\n/**\n * Await `Promise.allSettled(promises)` and unwrap the resulting objects.\n *\n * `Promise.allSettled` never rejects, therefore the resulting `Promise` never rejects.\n */\nexport const settleAllPromises = async (promises: Promise[]) => {\n const results = await Promise.allSettled(promises);\n return unwrapPromiseSettledResults(results);\n};\n","export * from './QueryBrowser';\nexport * from './theme';\n","import * as React from 'react';\nimport { Alert } from '@patternfly/react-core';\nimport { useTranslation } from 'react-i18next';\n\nconst ErrorAlert: React.FC = ({ message, title }) => {\n const { t } = useTranslation();\n\n return (\n \n {message}\n \n );\n};\n\ntype Props = {\n message: string;\n title?: string;\n};\n\nexport default ErrorAlert;\n","import * as React from 'react';\nimport { DndProvider, createDndContext } from 'react-dnd';\nimport HTML5Backend from 'react-dnd-html5-backend';\n\nconst dndContext = createDndContext(HTML5Backend);\n\nconst withDragDropContext = (\n Component: React.ComponentClass | React.FC,\n) => (props: TProps) => {\n const manager = React.useRef(dndContext);\n return (\n \n \n \n );\n};\n\nexport default withDragDropContext;\n","export const FLAG_WEB_TERMINAL = 'WEB_TERMINAL';\nexport const DEFAULT_NS_OPERATORS = 'openshift-operators';\nexport const FLAG_DEVWORKSPACE = 'DEVWORKSPACE';\nexport const FLAG_V1ALPHA2DEVWORKSPACE = 'v1alpha2DEVWORKSPACE';\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { chart_color_black_500 as black500 } from '@patternfly/react-tokens/dist/js/chart_color_black_500';\nimport { chart_color_gold_400 as gold400 } from '@patternfly/react-tokens/dist/js/chart_color_gold_400';\nimport { chart_color_orange_300 as orange300 } from '@patternfly/react-tokens/dist/js/chart_color_orange_300';\nimport { chart_color_red_100 as red100 } from '@patternfly/react-tokens/dist/js/chart_color_red_100';\nimport { chart_color_red_300 as red300 } from '@patternfly/react-tokens/dist/js/chart_color_red_300';\nimport { chart_color_red_400 as red400 } from '@patternfly/react-tokens/dist/js/chart_color_red_400';\n/* eslint-enable @typescript-eslint/naming-convention */\nimport { Map as ImmutableMap } from 'immutable';\nimport { ImageManifestVuln } from './types';\n\nexport const ContainerSecurityFlag = 'SECURITY_LABELLER';\n\nexport enum Priority {\n Defcon1 = 'Defcon1',\n Critical = 'Critical',\n High = 'High',\n Medium = 'Medium',\n Low = 'Low',\n Negligible = 'Negligible',\n Unknown = 'Unknown',\n}\n\nexport const vulnPriority = ImmutableMap()\n .set(Priority.Defcon1, {\n color: red400,\n description:\n 'Defcon1 is a Critical problem which has been manually highlighted by the Quay team. It requires immediate attention.',\n index: 0,\n level: 'error',\n score: 11,\n title: 'Defcon 1',\n value: 'Defcon1',\n })\n .set(Priority.Critical, {\n color: red300,\n description:\n 'Critical is a world-burning problem, exploitable for nearly all people in a installation of the package. Includes remote root privilege escalations, or massive data loss.',\n index: 1,\n level: 'error',\n score: 10,\n title: 'Critical',\n value: 'Critical',\n })\n .set(Priority.High, {\n color: red100,\n description:\n 'High is a real problem, exploitable for many people in a default installation. Includes serious remote denial of services, local root privilege escalations, or data loss.',\n index: 2,\n level: 'warning',\n score: 9,\n title: 'High',\n value: 'High',\n })\n .set(Priority.Medium, {\n color: orange300,\n description:\n 'Medium is a real security problem, and is exploitable for many people. Includes network daemon denial of service attacks, cross-site scripting, and gaining user privileges.',\n index: 3,\n level: 'warning',\n score: 6,\n title: 'Medium',\n value: 'Medium',\n })\n .set(Priority.Low, {\n color: gold400,\n description:\n 'Low is a security problem, but is hard to exploit due to environment, requires a user-assisted attack, a small install base, or does very little damage.',\n index: 4,\n level: 'warning',\n score: 3,\n title: 'Low',\n value: 'Low',\n })\n .set(Priority.Negligible, {\n color: black500,\n description:\n 'Negligible is technically a security problem, but is only theoretical in nature, requires a very special situation, has almost no install base, or does no real damage.',\n index: 5,\n level: 'info',\n score: 1,\n title: 'Negligible',\n value: 'Negligible',\n })\n .set(Priority.Unknown, {\n color: black500,\n description:\n 'Unknown is either a security problem that has not been assigned to a priority yet or a priority that our system did not recognize',\n index: 6,\n level: 'info',\n score: 0,\n title: 'Unknown',\n value: 'Unknown',\n });\n\nexport type VulnPriorityDescription = {\n color: any;\n description: string;\n index: number;\n level: 'error' | 'warning' | 'info';\n score: number;\n title: string;\n value: string;\n};\n\nexport const totalFor = (priority: Priority) => (obj: ImageManifestVuln) => {\n switch (priority) {\n case Priority.Defcon1:\n return obj.status.defcon1Count || 0;\n case Priority.Critical:\n return obj.status.criticalCount || 0;\n case Priority.High:\n return obj.status.highCount || 0;\n case Priority.Medium:\n return obj.status.mediumCount || 0;\n case Priority.Low:\n return obj.status.lowCount || 0;\n case Priority.Negligible:\n return obj.status.negligibleCount || 0;\n case Priority.Unknown:\n return obj.status.unknownCount || 0;\n default:\n return 0;\n }\n};\n\nexport const totalVulnFor = (priority: Priority) => (imageVulns): number => {\n if (!imageVulns) {\n return 0;\n }\n switch (priority) {\n case Priority.Defcon1:\n return imageVulns.filter((imageVuln) => imageVuln.severity === Priority.Defcon1).length;\n case Priority.Critical:\n return imageVulns.filter((imageVuln) => imageVuln.severity === Priority.Critical).length;\n case Priority.High:\n return imageVulns.filter((imageVuln) => imageVuln.severity === Priority.High).length;\n case Priority.Medium:\n return imageVulns.filter((imageVuln) => imageVuln.severity === Priority.Medium).length;\n case Priority.Low:\n return imageVulns.filter((imageVuln) => imageVuln.severity === Priority.Low).length;\n case Priority.Negligible:\n return imageVulns.filter((imageVuln) => imageVuln.severity === Priority.Negligible).length;\n case Priority.Unknown:\n return imageVulns.filter((imageVuln) => imageVuln.severity === Priority.Unknown).length;\n default:\n return 0;\n }\n};\n\nconst vulnPriorityByTitle = vulnPriority.mapEntries(\n ([, vulnPriorityDescription]: [Priority, VulnPriorityDescription]) => [\n vulnPriorityDescription.title,\n vulnPriorityDescription,\n ],\n) as ImmutableMap;\n\nexport const priorityFor = (severityTitle: string) =>\n vulnPriorityByTitle.get(severityTitle) || vulnPriority.get(Priority.Unknown);\n","export {\n makeReduxID,\n makeQuery,\n} from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks/k8s-watcher';\n","import * as _ from 'lodash';\nimport * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport i18next from 'i18next';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { connect, useDispatch } from 'react-redux';\nimport { Link } from 'react-router-dom-v5-compat';\nimport {\n NotificationDrawer,\n NotificationEntry,\n NotificationCategory,\n NotificationTypes,\n} from '@console/patternfly';\nimport { isNotLoadedDynamicPluginInfo } from '@console/plugin-sdk';\nimport {\n alertingErrored,\n alertingLoaded,\n alertingLoading,\n setAlertCount,\n} from '@console/internal/actions/observe';\nimport * as UIActions from '@console/internal/actions/ui';\nimport { RootState } from '@console/internal/redux';\nimport { history, resourcePath } from '@console/internal/components/utils';\n\nimport { getClusterID } from '../module/k8s/cluster-settings';\n\nimport {\n ServiceLevelNotification,\n useShowServiceLevelNotifications,\n} from '@console/internal/components/utils/service-level';\nimport {\n alertURL,\n getAlertsAndRules,\n silenceMatcherEqualitySymbol,\n} from '@console/internal/components/monitoring/utils';\nimport { NotificationAlerts } from '@console/internal/reducers/observe';\nimport { RedExclamationCircleIcon, useCanClusterUpgrade } from '@console/shared';\nimport {\n getAlertDescription,\n getAlertMessage,\n getAlertName,\n getAlertSeverity,\n getAlertTime,\n} from '@console/shared/src/components/dashboard/status-card/alert-utils';\nimport {\n EmptyState,\n EmptyStateBody,\n EmptyStateIcon,\n EmptyStateVariant,\n EmptyStateActions,\n EmptyStateHeader,\n EmptyStateFooter,\n} from '@patternfly/react-core';\nimport { useClusterVersion } from '@console/shared/src/hooks/version';\nimport { usePrevious } from '@console/shared/src/hooks/previous';\nimport {\n Alert,\n AlertAction,\n AlertSeverity,\n isAlertAction,\n useResolvedExtensions,\n ResolvedExtension,\n} from '@console/dynamic-plugin-sdk';\nimport { coFetchJSON } from '../co-fetch';\nimport { ConsolePluginModel } from '../models';\nimport {\n ClusterVersionKind,\n getNewerClusterVersionChannel,\n getSimilarClusterVersionChannels,\n getSortedAvailableUpdates,\n referenceForModel,\n Release,\n splitClusterVersionChannel,\n} from '../module/k8s';\nimport { pluginStore } from '../plugins';\nimport { LinkifyExternal } from './utils';\nimport { PrometheusEndpoint } from './graphs/helpers';\nimport { LabelSelector } from '@console/internal/module/k8s/label-selector';\nimport { useNotificationAlerts } from '@console/shared/src/hooks/useNotificationAlerts';\nimport { useModal, PrometheusRulesResponse } from '@console/dynamic-plugin-sdk/src/lib-core';\n\nconst AlertErrorState: React.FC = ({ errorText }) => {\n const { t } = useTranslation();\n return (\n \n {t('public~Alerts could not be loaded')}}\n icon={\n \n }\n headingLevel=\"h5\"\n />\n \n {errorText && {errorText}}\n \n \n );\n};\n\nconst AlertEmptyState: React.FC = ({ drawerToggle }) => {\n const { t } = useTranslation();\n return (\n \n {t('public~No critical alerts')}} headingLevel=\"h5\" />\n \n {t(\n 'public~There are currently no critical alerts firing. There may be firing alerts of other severities or silenced critical alerts however.',\n )}\n \n \n \n \n {t('public~View all alerts')}\n \n \n \n \n );\n};\n\n// FIXME (jon): AlertmanagerReceiversNotConfigured action should be defined as an extension in the\n// console-app package. Also, rather than build a map on every call of this function, we might want\n// to hook this into redux.\nexport const getAlertActions = (actionsExtensions: ResolvedExtension[]) => {\n const alertActions = new Map<\n string,\n Omit['properties'], 'alert'>\n >().set('AlertmanagerReceiversNotConfigured', {\n text: i18next.t('public~Configure'),\n action: () => history.push('/monitoring/alertmanagerconfig'),\n });\n actionsExtensions.forEach(({ properties }) =>\n alertActions.set(properties.alert, {\n text: properties.text,\n action: properties.action,\n }),\n );\n return alertActions;\n};\n\nconst getUpdateNotificationEntries = (\n canUpgrade: boolean,\n cv: ClusterVersionKind,\n toggleNotificationDrawer: () => void,\n): React.ReactNode[] => {\n if (!cv || !canUpgrade) {\n return [];\n }\n const updateData: Release[] = getSortedAvailableUpdates(cv);\n const currentChannel = cv?.spec?.channel;\n const currentPrefix = splitClusterVersionChannel(currentChannel)?.prefix;\n const similarChannels = getSimilarClusterVersionChannels(cv, currentPrefix);\n const newerChannel = getNewerClusterVersionChannel(similarChannels, currentChannel);\n const newerChannelVersion = splitClusterVersionChannel(newerChannel)?.version;\n const entries = [];\n\n const dynamicPluginInfo = pluginStore.getDynamicPluginInfo();\n const failedPlugins = dynamicPluginInfo\n .filter(isNotLoadedDynamicPluginInfo)\n .filter((plugin) => plugin.status === 'Failed');\n\n if (!_.isEmpty(updateData)) {\n entries.push(\n ,\n );\n }\n if (newerChannel) {\n entries.push(\n ,\n );\n }\n if (failedPlugins.length > 0) {\n entries.push(\n ...failedPlugins.map((plugin) => {\n const link = resourcePath(referenceForModel(ConsolePluginModel), plugin.pluginName);\n return (\n \n );\n }),\n );\n }\n return entries;\n};\n\nconst pollerTimeouts = {};\nconst pollers = {};\n\nexport const refreshNotificationPollers = () => {\n _.each(pollerTimeouts, clearTimeout);\n _.invoke(pollers, 'silences');\n _.invoke(pollers, 'notificationAlerts');\n};\n\nexport const ConnectedNotificationDrawer_: React.FC = ({\n isDesktop,\n toggleNotificationDrawer,\n isDrawerExpanded,\n onDrawerChange,\n children,\n}) => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const clusterID = getClusterID(useClusterVersion());\n const showServiceLevelNotification = useShowServiceLevelNotifications(clusterID);\n\n React.useEffect(() => {\n const poll: NotificationPoll = (url, key: 'notificationAlerts' | 'silences', dataHandler) => {\n dispatch(alertingLoading(key));\n const notificationPoller = (): void => {\n coFetchJSON(url)\n .then((response) => dataHandler(response))\n .then((data) => {\n dispatch(alertingLoaded(key, data));\n pollerTimeouts[key] = setTimeout(notificationPoller, 15 * 1000);\n })\n .catch((e) => {\n dispatch(alertingErrored(key, e));\n\n // If the API returned an error, poll less frequently to avoid excessive calls. For\n // example, if the user doesn't have permission to access the API, polling will probably\n // continue to fail, but it is possible that permissions will be granted so we don't\n // stop completely.\n pollerTimeouts[key] = setTimeout(notificationPoller, 60 * 1000);\n });\n };\n pollers[key] = notificationPoller;\n notificationPoller();\n };\n\n const { alertManagerBaseURL, prometheusBaseURL } = window.SERVER_FLAGS;\n\n if (prometheusBaseURL) {\n poll(\n `${prometheusBaseURL}/${PrometheusEndpoint.RULES}`,\n 'notificationAlerts',\n (alertsResults: PrometheusRulesResponse): Alert[] =>\n alertsResults\n ? getAlertsAndRules(alertsResults.data)\n .alerts.filter(\n (a) =>\n a.state === 'firing' &&\n getAlertName(a) !== 'Watchdog' &&\n getAlertName(a) !== 'UpdateAvailable',\n )\n .sort((a, b) => +new Date(getAlertTime(b)) - +new Date(getAlertTime(a)))\n : [],\n );\n } else {\n dispatch(\n alertingErrored('notificationAlerts', new Error(t('public~prometheusBaseURL not set'))),\n );\n }\n\n if (alertManagerBaseURL) {\n poll(`${alertManagerBaseURL}/api/v2/silences`, 'silences', (silences) => {\n // Set a name field on the Silence to make things easier\n _.each(silences, (s) => {\n s.name = _.get(_.find(s.matchers, { name: 'alertname' }), 'value');\n if (!s.name) {\n // No alertname, so fall back to displaying the other matchers\n s.name = s.matchers\n .map(\n (m) => `${m.name}${silenceMatcherEqualitySymbol(m.isEqual, m.isRegex)}${m.value}`,\n )\n .join(', ');\n }\n });\n return silences;\n });\n } else {\n dispatch(alertingErrored('silences', new Error(t('public~alertManagerBaseURL not set'))));\n }\n\n return () => _.each(pollerTimeouts, clearTimeout);\n }, [dispatch, t]);\n\n const clusterVersion: ClusterVersionKind = useClusterVersion();\n const [alerts, , loadError] = useNotificationAlerts();\n const launchModal = useModal();\n const alertIds = React.useMemo(() => alerts?.map((alert) => alert.rule.name) || [], [alerts]);\n const [alertActionExtensions] = useResolvedExtensions(\n React.useCallback(\n (e): e is AlertAction => isAlertAction(e) && alertIds.includes(e.properties.alert),\n [alertIds],\n ),\n );\n\n const alertActionExtensionsMap = React.useMemo(() => getAlertActions(alertActionExtensions), [\n alertActionExtensions,\n ]);\n\n const canUpgrade = useCanClusterUpgrade();\n const updateList: React.ReactNode[] = getUpdateNotificationEntries(\n canUpgrade,\n clusterVersion,\n toggleNotificationDrawer,\n );\n\n const [criticalAlerts, nonCriticalAlerts] = React.useMemo(() => {\n const criticalAlertLabelSelector = new LabelSelector({ severity: AlertSeverity.Critical });\n return alerts.reduce(\n ([criticalAlertAcc, nonCriticalAlertAcc], alert) => {\n return criticalAlertLabelSelector.matchesLabels(alert.labels)\n ? [[...criticalAlertAcc, alert], nonCriticalAlertAcc]\n : [criticalAlertAcc, [...nonCriticalAlertAcc, alert]];\n },\n [[], []],\n );\n }, [alerts]);\n\n const hasCriticalAlerts = criticalAlerts.length > 0;\n const hasNonCriticalAlerts = nonCriticalAlerts.length > 0;\n const [isAlertExpanded, toggleAlertExpanded] = React.useState(hasCriticalAlerts);\n const [isNonCriticalAlertExpanded, toggleNonCriticalAlertExpanded] = React.useState(\n true,\n );\n const [isClusterUpdateExpanded, toggleClusterUpdateExpanded] = React.useState(true);\n const prevDrawerToggleState = usePrevious(isDrawerExpanded);\n React.useEffect(() => {\n if (hasCriticalAlerts && !prevDrawerToggleState && isDrawerExpanded) {\n toggleAlertExpanded(true);\n }\n if (hasNonCriticalAlerts && !prevDrawerToggleState && isDrawerExpanded) {\n toggleNonCriticalAlertExpanded(true);\n }\n }, [\n hasCriticalAlerts,\n hasNonCriticalAlerts,\n isAlertExpanded,\n isDrawerExpanded,\n prevDrawerToggleState,\n ]);\n React.useEffect(() => {\n onDrawerChange();\n }, [isDrawerExpanded, onDrawerChange]);\n\n // Update alert count.\n const alertCount = alerts?.length ?? 0;\n React.useEffect(() => {\n dispatch(setAlertCount(alertCount));\n }, [alertCount, dispatch]);\n\n const emptyState = loadError ? (\n \n ) : (\n \n );\n\n const criticalAlertCategory: React.ReactElement = (\n \n {criticalAlerts.length > 0\n ? criticalAlerts.map((alert, i) => {\n const action = alertActionExtensionsMap.get(alert.rule.name);\n return (\n \n {getAlertDescription(alert) || getAlertMessage(alert)}\n \n }\n timestamp={getAlertTime(alert)}\n type={NotificationTypes[getAlertSeverity(alert)]}\n title={getAlertName(alert)}\n toggleNotificationDrawer={toggleNotificationDrawer}\n targetPath={alertURL(alert, alert.rule.id)}\n actionText={action?.text}\n alertAction={() => action?.action?.(alert, launchModal)}\n />\n );\n })\n : emptyState}\n \n );\n const nonCriticalAlertCategory: React.ReactElement =\n nonCriticalAlerts.length > 0 ? (\n \n {nonCriticalAlerts.map((alert, i) => {\n const action = alertActionExtensionsMap.get(alert.rule.name);\n return (\n \n {getAlertDescription(alert) || getAlertMessage(alert)}\n \n }\n timestamp={getAlertTime(alert)}\n type={NotificationTypes[getAlertSeverity(alert)]}\n title={getAlertName(alert)}\n toggleNotificationDrawer={toggleNotificationDrawer}\n targetPath={alertURL(alert, alert.rule.id)}\n actionText={action?.text}\n alertAction={() => action?.action?.(alert, launchModal)}\n />\n );\n })}\n \n ) : null;\n\n if (showServiceLevelNotification) {\n updateList.push(\n ,\n );\n }\n const recommendationsCategory: React.ReactElement = !_.isEmpty(updateList) ? (\n \n {updateList}\n \n ) : null;\n\n return (\n \n {children}\n \n );\n};\n\ntype NotificationPoll = (\n url: string,\n key: 'notificationAlerts' | 'silences',\n dataHandler: (data) => any,\n) => void;\n\nexport type WithNotificationsProps = {\n isDrawerExpanded: boolean;\n alerts?: NotificationAlerts;\n silences?: any;\n};\n\nexport type ConnectedNotificationDrawerProps = {\n isDesktop: boolean;\n toggleNotificationDrawer: () => any;\n isDrawerExpanded: boolean;\n onDrawerChange: () => void;\n alerts: NotificationAlerts;\n};\n\nconst notificationStateToProps = ({ UI }: RootState): WithNotificationsProps => ({\n isDrawerExpanded: !!UI.getIn(['notifications', 'isExpanded']),\n});\n\ntype AlertErrorProps = {\n errorText: string;\n};\n\ntype AlertEmptyProps = {\n drawerToggle: (event: React.MouseEvent) => void;\n};\n\ntype AlertAccumulator = [Alert[], Alert[]];\n\nconst connectToNotifications = connect((state: RootState) => notificationStateToProps(state), {\n toggleNotificationDrawer: UIActions.notificationDrawerToggleExpanded,\n});\nexport const ConnectedNotificationDrawer = connectToNotifications(ConnectedNotificationDrawer_);\n","import { createContext } from 'react';\nimport { CellMeasurerCache } from 'react-virtualized';\nimport { GroupedItems, CellItem } from './types';\n\n/**\n *\n * @param groupedItems GroupedItems\n * @param columnCount number\n * Example:\n * groupedItems = {\n * header: [item1, item2, item3, item4]\n * }\n * array of length 4 with header and number of columns 3\n * Based on the fixed width of column and number of items in the array Grid would be:\n * |header |\n * |item1 item2 item3|\n * |item4 |\n * this method returns the items array considering the above grid: [header, null, null, item1, item2, item3, item4, null null].\n * |header null null |\n * |item1 item2 item3|\n * |item4 null null |\n * which makes the rowCount: 3, columnCount: 3 and headerRows: [0]\n *\n * @returns {items, rowCount, columnCount, headerRows}\n * items: array will be used to render grid\n * rowCount: no. of rows in the grid\n * columnCount: number of column in the grid\n * headerRows: This array consists the index of rows in which header will be rendered so that height of those row can be changed.\n *\n */\nexport const getItemsAndRowCount = (\n groupedItems: GroupedItems,\n columnCount: number,\n): { items: CellItem[]; rowCount: number; columnCount: number; headerRows: number[] } =>\n Object.keys(groupedItems).reduce(\n (accumulatedValues, currentKey) => {\n // if there are no item for one of the groupings return accumulator\n if (groupedItems[currentKey].length < 1) return accumulatedValues;\n\n const {\n items: accItems,\n rowCount: accRowCount,\n columnCount: accColumnCount,\n headerRows: accHeaderRow,\n } = accumulatedValues;\n const items = [];\n const headerRows = [...accHeaderRow];\n // push header to the items at 0th column of row, and null for all other columns in the same row\n for (let i = 0; i < columnCount; i++) {\n if (i === 0) {\n items.push(currentKey);\n headerRows.push(accRowCount); // push row index to headerRows array\n } else {\n items.push(null);\n }\n }\n\n // find the number of rows for current group, say `x` using columncount say `y`\n const currentKeyItems = groupedItems[currentKey];\n const currentKeyItemCount = currentKeyItems.length;\n const rowCount = Math.ceil(currentKeyItemCount / accColumnCount);\n // total number of cells needed in the grid x * y\n const numberOfCell = accColumnCount * rowCount;\n // push grouped items in the matrix and push null for the remaining Grid cell\n for (let i = 0; i < numberOfCell; i++) {\n if (currentKeyItems[i]) {\n items.push(currentKeyItems[i]);\n } else {\n items.push(null);\n }\n }\n return {\n items: [...accItems, ...items],\n rowCount: accRowCount + rowCount + 1,\n columnCount: accColumnCount,\n headerRows,\n };\n },\n {\n items: [],\n rowCount: 0,\n columnCount,\n headerRows: [],\n },\n );\n\ntype CellMeasurementContextType = {\n cache?: CellMeasurerCache;\n cellWidth?: number;\n cellMargin?: number;\n overscanRowCount?: number;\n headerHeight?: number;\n estimatedCellHeight?: number;\n className?: string;\n};\n\nexport const CellMeasurementContext = createContext({});\n","import { K8sKind } from '@console/internal/module/k8s';\n\nexport const ImageManifestVulnModel: K8sKind = {\n kind: 'ImageManifestVuln',\n label: 'ImageManifestVuln',\n labelPlural: 'ImageManifestVuln',\n apiGroup: 'secscan.quay.redhat.com',\n apiVersion: 'v1alpha1',\n abbr: 'IMV',\n namespaced: true,\n crd: true,\n plural: 'imagemanifestvulns',\n};\n","/** URL query params that adjust scope / purpose of the page */\nexport enum QUERY_PROPERTIES {\n /** For defining a contextual application group (ie, add new workload into this application group) */\n APPLICATION = 'application',\n /** For defining a contextual source of the redirect (ie, connect a new workload from this contextual source) */\n CONTEXT_SOURCE = 'contextSource',\n CONTEXT_ACTION = 'action',\n}\n\n/** connects to action for resources */\nexport const INCONTEXT_ACTIONS_CONNECTS_TO = 'connectsTo';\n/** connector action for service binding */\nexport const INCONTEXT_ACTIONS_SERVICE_BINDING = 'serviceBinding';\n\nexport enum CONNECTOR_INCONTEXT_ACTIONS {\n /** connects to action for resources */\n connectsTo = 'connectsTo',\n}\n\nexport const SERVICE_BINDING_ENABLED = 'SERVICE_BINDING_ENABLED';\n\nexport const SAMPLE_APPLICATION_GROUP = 'sample-app';\n\nexport const PREFERRED_RESOURCE_TYPE_USER_SETTING_KEY = 'devconsole.preferredResourceType';\nexport const LAST_RESOURCE_TYPE_STORAGE_KEY = `devconsole.last.resource-type`;\n\nexport const NAME_LABEL = 'app.kubernetes.io/name';\nexport const INSTANCE_LABEL = 'app.kubernetes.io/instance';\nexport const RUNTIME_LABEL = 'app.openshift.io/runtime';\nexport const FLAG_DEVELOPER_CATALOG = 'DEVELOPER_CATALOG';\nexport const FLAG_OPERATOR_BACKED_SERVICE_CATALOG_TYPE = 'OPERATOR_BACKED_SERVICE_CATALOG_TYPE';\nexport const FLAG_SAMPLE_CATALOG_TYPE = 'SAMPLE_CATALOG_TYPE';\nexport const OPERATOR_BACKED_SERVICE_CATALOG_TYPE_ID = 'OperatorBackedService';\nexport const SAMPLE_CATALOG_TYPE_ID = 'Sample';\nexport const ADD_TO_PROJECT = 'add-to-project';\n\nexport const FLAG_JAVA_IMAGE_STREAM_ENABLED = 'JAVA_IMAGE_STREAM_ENABLED';\nexport const IMAGESTREAM_NAMESPACE = 'openshift';\nexport const JAVA_IMAGESTREAM_NAME = 'java';\n\nexport const FLAG_OPENSHIFT_DEPLOYMENTCONFIG = 'OPENSHIFT_DEPLOYMENTCONFIG';\nexport const FLAG_OPENSHIFT_BUILDCONFIG = 'OPENSHIFT_BUILDCONFIG';\n","import * as _ from 'lodash';\nimport { ByteDataTypes } from '@console/dynamic-plugin-sdk/src/api/internal-types';\nimport { DataPoint } from '@console/internal/components/graphs';\nimport { getType } from '@console/internal/components/utils/units';\n\nexport { ByteDataTypes };\n\nconst log = (x: number, y: number) => {\n return Math.log(y) / Math.log(x);\n};\n\n// Get the larget unit seen in the dataframe within the supported range\nconst bestUnit = (dataPoints: DataPoint[][], type) => {\n const flattenDataPoints = dataPoints.reduce((acc, arr) => acc.concat(arr), []);\n\n const bestLevel = flattenDataPoints.reduce((maxUnit, point) => {\n const index = Math.floor(log(_.get(type, 'divisor', 1024), point.y));\n const unitIndex = index >= type.units.length ? type.units.length - 1 : index;\n return maxUnit < unitIndex ? unitIndex : maxUnit;\n }, -1);\n return _.get(type, ['units', bestLevel]);\n};\n\n// Array based processor\nexport const processFrame = (dataPoints: DataPoint[][], typeName: string): ProcessFrameResult => {\n const type = getType(typeName);\n let unit = null;\n if (dataPoints && dataPoints[0]) {\n // Get the appropriate unit and convert the dataset to that level\n unit = bestUnit(dataPoints, type);\n const frameLevel = type.units.indexOf(unit);\n dataPoints.forEach((arr) =>\n arr.forEach((point) => {\n point.y /= type.divisor ** frameLevel;\n }),\n );\n }\n return { processedData: dataPoints, unit };\n};\n\nexport type ProcessFrameResult = {\n processedData: DataPoint[][];\n unit: string;\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { useCallback, useState } from 'react';\nimport { UseURLPoll } from '@console/dynamic-plugin-sdk/src/api/internal-types';\nimport { usePoll } from './poll-hook';\nimport { useSafeFetch } from './safe-fetch-hook';\n\nexport const URL_POLL_DEFAULT_DELAY = 15000; // 15 seconds\n\nexport const useURLPoll: UseURLPoll = (\n url: string,\n delay = URL_POLL_DEFAULT_DELAY,\n ...dependencies: any[]\n) => {\n const [error, setError] = useState();\n const [response, setResponse] = useState();\n const [loading, setLoading] = useState(true);\n const safeFetch = useSafeFetch();\n const tick = useCallback(() => {\n if (url) {\n safeFetch(url)\n .then((data) => {\n setResponse(data);\n setError(null);\n })\n .catch((err) => {\n if (err.name !== 'AbortError') {\n setResponse(null);\n setError(err);\n // eslint-disable-next-line no-console\n console.error(`Error polling URL: ${err}`);\n }\n })\n .finally(() => setLoading(false));\n } else {\n setLoading(false);\n }\n }, [url]);\n\n usePoll(tick, delay, ...dependencies);\n\n return [response, error, loading];\n};\n","import * as React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { Trans, useTranslation } from 'react-i18next';\nimport {\n CodeBlock,\n CodeBlockCode,\n EmptyState,\n EmptyStateBody,\n EmptyStateIcon,\n Stack,\n StackItem,\n EmptyStateHeader,\n EmptyStateActions,\n Icon,\n Title,\n} from '@patternfly/react-core';\nimport { ExclamationCircleIcon } from '@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon';\nimport { global_danger_color_100 as globalDangerColor100 } from '@patternfly/react-tokens';\nimport { PageHeading } from './utils';\nimport { useLocation } from 'react-router';\n\nconst ErrorComponent: React.FC = ({ title, message }) => {\n const { t } = useTranslation();\n return (\n <>\n \n
\n \n {message &&
{message}
}\n
\n \n );\n};\n\nexport const ErrorPage404: React.FC = (props) => {\n const { t } = useTranslation();\n return (\n
\n \n {t('public~Page Not Found (404)')}\n \n \n
\n );\n};\n\nexport type ErrorComponentProps = {\n title: string;\n message?: string;\n};\n\nexport type ErrorPage404Props = Omit;\n\nconst ErrorStateMessage = () => (\n \n If the problem persists, contact a cluster administrator,{' '}\n
Red Hat Support or check our{' '}\n status page for known outages.\n \n);\n\nexport const ErrorState: React.FC = () => {\n const { t } = useTranslation();\n const DangerIcon = () => (\n \n \n \n );\n return (\n \n {t('public~Something went wrong')}}\n icon={}\n headingLevel=\"h6\"\n />\n \n \n \n {t('public~There was a problem processing the request. Please try again.')}\n \n \n \n \n \n \n \n );\n};\n\nconst LoginErrorMessage: React.FC = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const urlSearchParams = new URLSearchParams(location.search);\n const errorType = urlSearchParams.get('error_type');\n const error = urlSearchParams.get('error');\n switch (errorType) {\n case 'oauth_error':\n return t('public~There was an error generating OAuth client from OIDC client.');\n case 'login_state_error':\n return t('public~There was an error generating login state.');\n case 'cookie_error':\n return t('public~There was an error setting login state cookie');\n case 'missing_code':\n return t('public~Auth code is missing in query param.');\n case 'missing_state':\n return t('public~There was an error parsing your state cookie');\n case 'invalid_code':\n return t('public~There was an error logging you in. Please log out and try again.');\n case 'invalid_state':\n return t('public~There was an error verifying your session. Please log out and try again.');\n case 'logout_error':\n return t('public~There was an error logging you out. Please try again.');\n default:\n return (\n \n There was an authentication error with the system:\n \n {error}\n \n \n );\n }\n};\n\nexport const AuthenticationErrorPage: React.FC = () => {\n const { t } = useTranslation();\n const title = t('public~Authentication error');\n return (\n <>\n \n {title}\n \n \n \n {title}\n \n \n \n \n \n \n \n \n \n \n \n {t('public~Try again')}\n \n \n \n );\n};\n","import * as React from 'react';\nimport { debounce } from 'lodash';\nimport { useDeepCompareMemoize } from './deep-compare-memoize';\n\ninterface Cancelable {\n cancel(): void;\n flush(): void;\n}\n\nexport const useDebounceCallback = any>(\n callback: T,\n timeout: number = 500,\n debounceParams: { leading?: boolean; trailing?: boolean; maxWait?: number } = {\n leading: false,\n trailing: true,\n },\n): ((...args) => any) & Cancelable => {\n const memDebounceParams = useDeepCompareMemoize(debounceParams);\n const callbackRef = React.useRef();\n callbackRef.current = callback;\n\n return React.useMemo(() => {\n return debounce((...args) => callbackRef.current(...args), timeout, memDebounceParams);\n }, [memDebounceParams, timeout]);\n};\n","import * as React from 'react';\nimport { Map as ImmutableMap } from 'immutable';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore: FIXME missing exports due to out-of-sync @types/react-redux version\nimport { useSelector, useDispatch } from 'react-redux';\nimport * as k8sActions from '../../../app/k8s/actions/k8s';\nimport { getReduxIdPayload } from '../../../app/k8s/reducers/k8sSelector';\nimport { SDKStoreState } from '../../../app/redux-types';\nimport { UseK8sWatchResource } from '../../../extensions/console-types';\nimport { getIDAndDispatch, getReduxData, NoModelError } from './k8s-watcher';\nimport { useDeepCompareMemoize } from './useDeepCompareMemoize';\nimport { useK8sModel } from './useK8sModel';\nimport { useModelsLoaded } from './useModelsLoaded';\n\n/**\n * Hook that retrieves the Kubernetes resource along with their respective status for loaded and error.\n * @param initResource resources need to be watched as key-value pair, wherein key will be unique to resource and value will be options needed to watch for the respective resource.\n * @returns An array with first item as resource(s), second item as loaded status and third item as error state if any.\n * @example\n * ```ts\n * const Component: React.FC = () => {\n * const watchRes = {\n ...\n }\n * const [data, loaded, error] = useK8sWatchResource(watchRes)\n * return ...\n * }\n * ```\n */\nexport const useK8sWatchResource: UseK8sWatchResource = (initResource) => {\n const resource = useDeepCompareMemoize(initResource, true);\n const modelsLoaded = useModelsLoaded();\n\n const [k8sModel] = useK8sModel(resource?.groupVersionKind || resource?.kind);\n\n const reduxID = React.useMemo(() => getIDAndDispatch(resource, k8sModel), [k8sModel, resource]);\n\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n if (reduxID) {\n dispatch(reduxID.dispatch);\n }\n return () => {\n if (reduxID) {\n dispatch(k8sActions.stopK8sWatch(reduxID.id));\n }\n };\n }, [dispatch, reduxID]);\n\n const resourceK8s = useSelector>((state) =>\n reduxID ? getReduxIdPayload(state, reduxID.id) : null,\n );\n\n return React.useMemo(() => {\n if (!resource) {\n return [undefined, true, undefined];\n }\n if (!resourceK8s) {\n const data = resource?.isList ? [] : {};\n return modelsLoaded && !k8sModel\n ? [data, true, new NoModelError()]\n : [data, false, undefined];\n }\n\n const data = getReduxData(resourceK8s.get('data'), resource);\n const loaded = resourceK8s.get('loaded');\n const loadError = resourceK8s.get('loadError');\n return [data, loaded, loadError];\n }, [resource, resourceK8s, modelsLoaded, k8sModel]);\n};\n","export * from './bindings';\n// export * from './edit-rule';\nexport * from './role';\nexport * from './rules';\n","import { K8sModel as K8sKind } from '@console/dynamic-plugin-sdk/src/api/common-types';\n\nexport const ServiceBindingModel: K8sKind = {\n id: 'servicebinding',\n kind: 'ServiceBinding',\n plural: 'servicebindings',\n label: 'ServiceBinding',\n // t('service-binding-plugin~ServiceBinding')\n labelKey: 'service-binding-plugin~ServiceBinding',\n labelPlural: 'ServiceBindings',\n // t('service-binding-plugin~ServiceBindings')\n labelPluralKey: 'service-binding-plugin~ServiceBindings',\n abbr: 'SB',\n apiGroup: 'binding.operators.coreos.com',\n apiVersion: 'v1alpha1',\n namespaced: true,\n crd: true,\n};\n","import { Map as ImmutableMap } from 'immutable';\nimport * as _ from 'lodash-es';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useSelector } from 'react-redux';\n\nimport { K8sResourceKindReference, K8sKind, getModelExtensionMetadata } from './index';\nimport * as staticModels from '../../models';\nimport {\n referenceForModel,\n kindForReference,\n apiVersionCompare,\n referenceForGroupVersionKind,\n} from './k8s';\nimport store from '../../redux';\nimport { pluginStore } from '../../plugins';\nimport { isModelDefinition, LoadedExtension } from '@console/plugin-sdk';\nimport { isModelMetadata, ModelMetadata } from '@console/dynamic-plugin-sdk';\nimport { DiscoveryResources } from '@console/dynamic-plugin-sdk/src/api/common-types';\n\nconst modelKey = (model: K8sKind): string => {\n // TODO: Use `referenceForModel` even for known API objects\n return model.crd ? referenceForModel(model) : model.kind;\n};\n\nexport const modelsToMap = (models: K8sKind[]): ImmutableMap => {\n return ImmutableMap().withMutations((map) => {\n models.forEach((model) => map.set(modelKey(model), model));\n });\n};\n\n/**\n * Contains static resource definitions for Kubernetes objects.\n * Keys are of type `group:version:Kind`, but TypeScript doesn't support regex types (https://github.com/Microsoft/TypeScript/issues/6579).\n */\nlet k8sModels;\n\nconst getK8sModels = () => {\n if (!k8sModels) {\n k8sModels = modelsToMap(_.values(staticModels));\n\n const hasModel = (model: K8sKind) => k8sModels.has(modelKey(model));\n\n k8sModels = k8sModels.withMutations((map) => {\n const pluginModels = _.flatMap(\n pluginStore\n .getExtensionsInUse()\n .filter(isModelDefinition)\n .map((md) => md.properties.models),\n );\n map.merge(modelsToMap(pluginModels.filter((model) => !hasModel(model))));\n });\n }\n return k8sModels;\n};\n\n/**\n * Provides a synchronous way to acquire a statically-defined Kubernetes model.\n * NOTE: This will not work for CRDs defined at runtime, use `connectToModels` instead.\n */\nexport const modelFor = (ref: K8sResourceKindReference) => {\n const metadataExtensions = pluginStore\n .getExtensionsInUse()\n .filter(isModelMetadata) as LoadedExtension[];\n\n let m = getK8sModels().get(ref);\n if (m) {\n const metadata = getModelExtensionMetadata(metadataExtensions, m?.group, m?.version, m?.kind);\n return _.merge(m, metadata);\n }\n\n // FIXME: Remove synchronous `store.getState()` call here, should be using `connectToModels` instead, only here for backwards-compatibility\n m = store.getState().k8s.getIn(['RESOURCES', 'models']).get(ref);\n if (m) {\n return m;\n }\n\n m = getK8sModels().get(kindForReference(ref));\n if (m) {\n const metadata = getModelExtensionMetadata(metadataExtensions, m?.group, m?.version, m?.kind);\n return _.merge(m, metadata);\n }\n\n m = store.getState().k8s.getIn(['RESOURCES', 'models']).get(kindForReference(ref));\n if (m) {\n return m;\n }\n};\n\n/**\n * Provides a synchronous way to acquire an API discovered Kubernetes model by group and kind only.\n * NOTE: This will not work for CRDs defined at runtime, use `connectToModels` instead.\n */\nexport const modelForGroupKind = (group: string, kind: string): K8sKind => {\n const models: ImmutableMap = store.getState().k8s.getIn(['RESOURCES', 'models']);\n const groupVersionMap: DiscoveryResources['groupVersionMap'] = store\n .getState()\n .k8s.getIn(['RESOURCES', 'groupToVersionMap']);\n\n const { preferredVersion, versions } = groupVersionMap?.[group] || {};\n if (preferredVersion) {\n // Find a model for the CRD that uses this preferred version\n const ref = referenceForGroupVersionKind(group)(preferredVersion)(kind);\n const model = models.get(ref);\n if (model) {\n return model;\n }\n }\n // In case the preferred version does not have the CRD\n if (versions) {\n const sortedVersions: string[] = versions.sort(apiVersionCompare);\n for (const version of sortedVersions) {\n const ref = referenceForGroupVersionKind(group)(version)(kind);\n const model = models.get(ref);\n if (model) {\n return model;\n }\n }\n }\n return null;\n};\n\n/**\n * Provides a synchronous way to acquire all statically-defined Kubernetes models.\n * NOTE: This will not work for CRDs defined at runtime, use `connectToModels` instead.\n */\nexport const allModels = getK8sModels;\n\n/**\n * Use this hook to find the model for resources using only group and plural\n */\nexport const useModelFinder = () => {\n const referenceForGroupVersionPlural = (group: string) => (version: string) => (plural: string) =>\n [group || 'core', version, plural].join('~');\n\n const models: ImmutableMap = useSelector(({ k8s }) =>\n k8s.getIn(['RESOURCES', 'models']),\n );\n const pluralsToModelMap = models.reduce((acc, curr) => {\n const ref = referenceForGroupVersionPlural(curr.apiGroup)(curr.apiVersion)(curr.plural);\n acc[ref] = curr;\n return acc;\n }, {});\n const groupVersionMap: DiscoveryResources['groupVersionMap'] = useSelector(({ k8s }) =>\n k8s.getIn(['RESOURCES', 'groupToVersionMap']),\n );\n\n const findModel = (group: string, resource: string) => {\n if (!group) {\n const refPlural = referenceForGroupVersionPlural(group)('v1')(resource);\n const model = pluralsToModelMap[refPlural];\n if (model) {\n return model;\n }\n }\n const { preferredVersion, versions } = groupVersionMap?.[group] || {};\n if (preferredVersion) {\n // Find a model for the CRD that uses this preferred version\n const ref = referenceForGroupVersionPlural(group)(preferredVersion)(resource);\n const model = pluralsToModelMap[ref];\n if (model) {\n return model;\n }\n }\n // In case the preferred version does not have the CRD\n if (versions) {\n const sortedVersions: string[] = versions.sort(apiVersionCompare);\n for (const version of sortedVersions) {\n const ref = referenceForGroupVersionPlural(group)(version)(resource);\n const model = pluralsToModelMap[ref];\n if (model) {\n return model;\n }\n }\n }\n return null;\n };\n return { findModel };\n};\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { Button } from '@patternfly/react-core';\nimport { Link } from 'react-router-dom-v5-compat';\nimport {\n DropdownToggle as DropdownToggleDeprecated,\n Dropdown as DropdownDeprecated,\n DropdownItem as DropdownItemDeprecated,\n} from '@patternfly/react-core/deprecated';\nimport { CaretDownIcon } from '@patternfly/react-icons/dist/esm/icons/caret-down-icon';\nimport { useK8sModel } from '@console/shared/src/hooks/useK8sModel';\nimport { useActiveNamespace } from '@console/shared/src/hooks/useActiveNamespace';\nimport { ALL_NAMESPACES_KEY } from '@console/shared/src/constants/common';\nimport {\n ListPageCreateProps,\n CreateWithPermissionsProps,\n ListPageCreateLinkProps,\n ListPageCreateButtonProps,\n ListPageCreateDropdownProps,\n} from '@console/dynamic-plugin-sdk';\n\nimport { RequireCreatePermission } from '../../utils';\nimport { transformGroupVersionKindToReference } from '@console/dynamic-plugin-sdk/src/utils/k8s';\n\nconst CreateWithPermissions: React.FC = ({\n createAccessReview,\n children,\n}) => {\n const [k8sModel] = useK8sModel(createAccessReview?.groupVersionKind);\n return !_.isEmpty(createAccessReview) ? (\n \n {children}\n \n ) : (\n <>{children}\n );\n};\n\nexport const ListPageCreateLink: React.FC = ({\n to,\n createAccessReview,\n children,\n}) => (\n \n \n \n \n \n);\n\nexport const ListPageCreateButton: React.FC = ({\n createAccessReview,\n ...rest\n}) => (\n \n \n * )\n * }\n * ```\n */\nexport const useModal: UseModalLauncher = () => {\n const { launchModal } = React.useContext(ModalContext);\n return launchModal;\n};\n","import { CatalogCategory } from '../components/catalog/utils/types';\n\nexport const defaultCatalogCategories: CatalogCategory[] = [\n {\n id: 'cicd',\n label: 'CI/CD',\n subcategories: [\n { id: 'jenkins', label: 'Jenkins', tags: ['jenkins'] },\n { id: 'pipelines', label: 'Pipelines', tags: ['pipelines'] },\n ],\n },\n {\n id: 'databases',\n label: 'Databases',\n subcategories: [\n { id: 'mariadb', label: 'MariaDB', tags: ['mariadb'] },\n { id: 'mongodb', label: 'Mongo', tags: ['mongodb'] },\n { id: 'mysql', label: 'MySQL', tags: ['mysql'] },\n { id: 'postgresql', label: 'Postgres', tags: ['postgresql'] },\n ],\n },\n {\n id: 'languages',\n label: 'Languages',\n subcategories: [\n { id: 'dotnet', label: '.NET', tags: ['dotnet'] },\n { id: 'golang', label: 'Go', tags: ['golang', 'go'] },\n { id: 'java', label: 'Java', tags: ['java'] },\n {\n id: 'javascript',\n label: 'JavaScript',\n tags: ['javascript', 'nodejs', 'js'],\n },\n { id: 'perl', label: 'Perl', tags: ['perl'] },\n { id: 'php', label: 'PHP', tags: ['php'] },\n { id: 'python', label: 'Python', tags: ['python'] },\n { id: 'ruby', label: 'Ruby', tags: ['ruby'] },\n ],\n },\n {\n id: 'middleware',\n label: 'Middleware',\n subcategories: [\n {\n id: 'analyticsData',\n label: 'Analytics & Data',\n tags: ['datagrid', 'datavirt'],\n },\n {\n id: 'integration',\n label: 'Integration',\n tags: ['amq', 'fuse', 'jboss-fuse', 'sso', '3scale'],\n },\n {\n id: 'processAutomation',\n label: 'Process Automation',\n tags: ['decisionserver', 'processserver'],\n },\n {\n id: 'runtimes',\n label: 'Runtimes & Frameworks',\n tags: ['eap', 'httpd', 'tomcat'],\n },\n ],\n },\n {\n id: 'virtualization',\n label: 'Virtualization',\n subcategories: [{ id: 'vms', label: 'Virtual Machines', tags: ['virtualmachine'] }],\n },\n];\n","import * as React from 'react';\nimport { Label } from '@patternfly/react-core';\nimport { CatalogItemBadge } from '@console/dynamic-plugin-sdk/src/extensions';\nimport './CatalogBadges.scss';\n\ntype CatalogBadgesProps = {\n badges: CatalogItemBadge[];\n};\n\nconst CatalogBadges: React.FC = ({ badges }) => (\n
\n {badges?.map((badge) => (\n \n {badge.text}\n \n ))}\n
\n);\n\nexport default CatalogBadges;\n","export const ONE_SECOND = 1000;\nexport const ONE_MINUTE = 60 * ONE_SECOND;\nexport const ONE_HOUR = 60 * ONE_MINUTE;\nexport const ONE_DAY = 24 * ONE_HOUR;\nexport const ONE_WEEK = 7 * ONE_DAY;\n","export const supportedLocales = {\n en: 'English',\n es: 'Espaรฑol',\n fr: 'Franรงais',\n ko: 'ํ•œ๊ตญ์–ด',\n ja: 'ๆ—ฅๆœฌ่ชž',\n 'zh-CN': 'ไธญๆ–‡',\n};\n\nexport const LAST_LANGUAGE_LOCAL_STORAGE_KEY = 'bridge/last-language';\n","import { UserPreferenceFieldType } from '@console/dynamic-plugin-sdk';\nimport UserPreferenceCheckboxField from './UserPreferenceCheckboxField';\nimport UserPreferenceCustomField from './UserPreferenceCustomField';\nimport UserPreferenceDropdownField from './UserPreferenceDropdownField';\n\nexport const USER_PREFERENCES_BASE_URL = '/user-preferences';\n\nexport const componentForFieldType: Record> = {\n [UserPreferenceFieldType.dropdown]: UserPreferenceDropdownField,\n [UserPreferenceFieldType.checkbox]: UserPreferenceCheckboxField,\n [UserPreferenceFieldType.custom]: UserPreferenceCustomField,\n};\n","import { K8sModel as K8sKind } from '@console/dynamic-plugin-sdk/src/api/common-types';\n\nexport const DevWorkspaceTemplateModel: K8sKind = {\n apiGroup: 'workspace.devfile.io',\n apiVersion: 'v1alpha2',\n label: 'DevWorkspaceTemplate',\n // t('webterminal-plugin~DevWorkspaceTemplate')\n labelKey: 'webterminal-plugin~DevWorkspaceTemplate',\n // t('webterminal-plugin~DevWorkspaceTemplates')\n labelPluralKey: 'webterminal-plugin~DevWorkspaceTemplates',\n plural: 'devworkspacetemplates',\n abbr: 'DWT',\n kind: 'DevWorkspaceTemplate',\n labelPlural: 'devworkspacetemplates',\n namespaced: true,\n};\n\nexport const WorkspaceModel: K8sKind = {\n kind: 'DevWorkspace',\n label: 'DevWorkspace',\n labelPlural: 'devworkspaces',\n apiGroup: 'workspace.devfile.io',\n apiVersion: 'v1alpha2',\n abbr: 'DW',\n namespaced: true,\n crd: true,\n plural: 'devworkspaces',\n propagationPolicy: 'Background',\n};\n\nexport const v1alpha1WorkspaceModel: K8sKind = Object.assign(\n { ...WorkspaceModel },\n {\n apiVersion: 'v1alpha1',\n },\n);\n","import { useEffect } from 'react';\nimport { chart_color_red_300 as knativeEventingColor } from '@patternfly/react-tokens/dist/js/chart_color_red_300';\nimport * as _ from 'lodash';\nimport { useSafetyFirst } from '@console/dynamic-plugin-sdk';\nimport { coFetch } from '@console/internal/co-fetch';\nimport {\n K8sKind,\n kindToAbbr,\n referenceForModel,\n getLatestVersionForCRD,\n} from '@console/internal/module/k8s';\n\ninterface EventSourcetData {\n loaded: boolean;\n eventSourceModels: K8sKind[];\n eventSourceChannels?: K8sKind[];\n}\n\nconst eventSourceData: EventSourcetData = {\n loaded: false,\n eventSourceModels: [],\n eventSourceChannels: [],\n};\n\ninterface EventChannelData {\n loaded: boolean;\n channels: string[];\n}\n\nexport const getLabelPlural = (kind: string, plural: string) => kind + plural.slice(kind.length);\n\nexport const fetchEventSourcesCrd = async () => {\n const url = 'api/console/knative-event-sources';\n try {\n const res = await coFetch(url);\n const resolvedRes = await res.json();\n const allModels = _.reduce(\n resolvedRes?.items,\n (accumulator, crd) => {\n const {\n metadata: { labels },\n spec: {\n group,\n names: { kind, plural, singular },\n },\n } = crd;\n const crdLatestVersion = getLatestVersionForCRD(crd);\n const labelPlural = getLabelPlural(kind, plural);\n if (crdLatestVersion) {\n const sourceModel = {\n apiGroup: group,\n apiVersion: crdLatestVersion,\n kind,\n plural,\n id: singular,\n label: kind,\n labelPlural,\n abbr: kindToAbbr(kind),\n namespaced: true,\n crd: true,\n color: knativeEventingColor.value,\n };\n const sourceIndex = _.findIndex(accumulator, ['kind', kind]);\n // added check as some sources has multiple entries with deprecated APIgroups\n if (sourceIndex === -1) {\n accumulator.push(sourceModel);\n } else if (!labels?.['eventing.knative.dev/deprecated'] === true) {\n accumulator.splice(sourceIndex, 1, sourceModel);\n }\n }\n return accumulator;\n },\n [],\n );\n\n eventSourceData.eventSourceModels = allModels;\n } catch (err) {\n // show warning if there is an error fetching the CRDs\n // eslint-disable-next-line no-console\n console.warn('Error fetching CRDs for dynamic event sources', err);\n eventSourceData.eventSourceModels = [];\n }\n eventSourceData.loaded = true;\n return eventSourceData.eventSourceModels;\n};\n\nexport const useEventSourceModels = (): EventSourcetData => {\n const [modelsData, setModelsData] = useSafetyFirst({ loaded: false, eventSourceModels: [] });\n useEffect(() => {\n if (eventSourceData.eventSourceModels.length === 0) {\n fetchEventSourcesCrd()\n .then((data) => {\n setModelsData({ loaded: true, eventSourceModels: data });\n })\n .catch((err) => {\n setModelsData({ loaded: true, eventSourceModels: eventSourceData.eventSourceModels });\n // eslint-disable-next-line no-console\n console.warn('Error fetching CRDs for dynamic event sources', err);\n });\n } else {\n setModelsData({ loaded: true, eventSourceModels: eventSourceData.eventSourceModels });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return modelsData;\n};\n\nexport const getEventSourceModels = (): K8sKind[] => eventSourceData.eventSourceModels;\n\nexport const getChannelModels = (): K8sKind[] => eventSourceData.eventSourceChannels;\nexport const getDynamicEventSourcesResourceList = (namespace: string, limit?: number) => {\n return eventSourceData.eventSourceModels.map((model) => {\n return {\n isList: true,\n kind: referenceForModel(model),\n namespace,\n prop: referenceForModel(model),\n optional: true,\n ...(limit && { limit }),\n };\n });\n};\n\nexport const getDynamicEventSourcesWatchers = (namespace: string) => {\n return eventSourceData.eventSourceModels.reduce((acc, model) => {\n acc[referenceForModel(model)] = {\n isList: true,\n kind: referenceForModel(model),\n namespace,\n optional: true,\n };\n return acc;\n }, {});\n};\n\nexport const getDynamicEventSourceModel = (resourceRef: string): K8sKind => {\n return eventSourceData.eventSourceModels.find(\n (model: K8sKind) => referenceForModel(model) === resourceRef,\n );\n};\n\nexport const getDynamicEventSourcesModelRefs = (): string[] => {\n return eventSourceData.eventSourceModels.map((model: K8sKind) => referenceForModel(model));\n};\n\nexport const isDynamicEventResourceKind = (resourceRef: string): boolean => {\n const index = eventSourceData.eventSourceModels.findIndex(\n (model: K8sKind) => referenceForModel(model) === resourceRef,\n );\n return index !== -1;\n};\n\nexport const isDynamicEventSourceKind = (kind: string): boolean => {\n const index = eventSourceData.eventSourceModels.findIndex(\n (model: K8sKind) => model.kind === kind,\n );\n return index !== -1;\n};\n\nexport const fetchChannelsCrd = async () => {\n const url = 'api/console/knative-channels';\n try {\n const res = await coFetch(url);\n const resolvedRes = await res.json();\n\n const allChannelModels = _.reduce(\n resolvedRes?.items,\n (accumulator, crd) => {\n const {\n spec: {\n group,\n names: { kind, plural, singular },\n },\n } = crd;\n const crdLatestVersion = getLatestVersionForCRD(crd);\n const labelPlural = getLabelPlural(kind, plural);\n const sourceModel = {\n apiGroup: group,\n apiVersion: crdLatestVersion,\n kind,\n plural,\n id: singular,\n label: kind,\n labelPlural,\n abbr: kindToAbbr(kind),\n namespaced: true,\n crd: true,\n color: knativeEventingColor.value,\n };\n accumulator.push(sourceModel);\n return accumulator;\n },\n [],\n );\n\n eventSourceData.eventSourceChannels = allChannelModels;\n } catch {\n eventSourceData.eventSourceChannels = [];\n }\n return eventSourceData.eventSourceChannels;\n};\n\nexport const useChannelModels = () => {\n const [modelsData, setModelsData] = useSafetyFirst({ loaded: false, eventSourceChannels: [] });\n useEffect(() => {\n if (eventSourceData.eventSourceChannels.length === 0) {\n fetchChannelsCrd()\n .then((data) => {\n setModelsData({ loaded: true, eventSourceChannels: data });\n })\n .catch((err) => {\n setModelsData({ loaded: true, eventSourceChannels: eventSourceData.eventSourceChannels });\n // eslint-disable-next-line no-console\n console.warn('Error fetching CRDs for dynamic event sources', err);\n });\n } else {\n setModelsData({ loaded: true, eventSourceChannels: eventSourceData.eventSourceChannels });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return modelsData;\n};\n\nexport const getDynamicChannelResourceList = (namespace: string, limit?: number) => {\n return eventSourceData.eventSourceChannels.map((model) => {\n return {\n isList: true,\n kind: referenceForModel(model),\n namespace,\n prop: referenceForModel(model),\n optional: true,\n ...(limit && { limit }),\n };\n });\n};\n\nexport const getDynamicEventingChannelWatchers = (namespace: string) => {\n return eventSourceData.eventSourceChannels.reduce((acc, model) => {\n acc[referenceForModel(model)] = {\n isList: true,\n kind: referenceForModel(model),\n namespace,\n optional: true,\n };\n return acc;\n }, {});\n};\nexport const useChannelResourcesList = (): EventChannelData => {\n const [modelRefs, setModelRefs] = useSafetyFirst({\n channels: [],\n loaded: false,\n });\n useEffect(() => {\n if (eventSourceData.eventSourceChannels.length === 0) {\n fetchChannelsCrd()\n .then((data) => {\n setModelRefs({\n channels: data.map((model: K8sKind) => referenceForModel(model)),\n loaded: true,\n });\n })\n .catch((err) => {\n setModelRefs({ channels: [], loaded: true });\n // eslint-disable-next-line no-console\n console.warn('Error fetching CRDs for dynamic channel model refs', err);\n });\n } else {\n setModelRefs({\n channels: eventSourceData.eventSourceChannels.map((model: K8sKind) =>\n referenceForModel(model),\n ),\n loaded: true,\n });\n }\n }, [setModelRefs]);\n return modelRefs;\n};\n\nexport const getDynamicChannelModelRefs = (): string[] => {\n return eventSourceData.eventSourceChannels.map((model: K8sKind) => referenceForModel(model));\n};\nexport const getDynamicChannelModel = (resourceRef: string): K8sKind => {\n return eventSourceData.eventSourceChannels.find(\n (model: K8sKind) => referenceForModel(model) === resourceRef,\n );\n};\n\nexport const isEventingChannelResourceKind = (resourceRef: string): boolean => {\n const index = eventSourceData.eventSourceChannels.findIndex(\n (model: K8sKind) => referenceForModel(model) === resourceRef,\n );\n return index !== -1;\n};\n","import * as _ from 'lodash';\nimport * as React from 'react';\nimport * as classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport { sortable } from '@patternfly/react-table';\nimport { PageComponentProps } from '@console/dynamic-plugin-sdk/src/extensions/horizontal-nav-tabs';\nimport { getGroupVersionKindForResource } from '@console/dynamic-plugin-sdk/src/utils/k8s/k8s-ref';\nimport { useK8sModel } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks/useK8sModel';\nimport { useDetailsItemExtensionsForResource } from '@console/shared/src/hooks/useDetailsItemExtensionsForResource';\nimport { ExtensionDetailsItem } from '@console/shared/src/components/details-page/ExtensionDetailsItem';\nimport { Conditions } from './conditions';\nimport { DetailsPage, ListPage, Table, TableData, TableProps, RowFunctionArgs } from './factory';\nimport { referenceFor, K8sResourceKind, modelFor } from '../module/k8s';\nimport {\n Kebab,\n kindObj,\n navFactory,\n ResourceKebab,\n ResourceLink,\n ResourceSummary,\n SectionHeading,\n Timestamp,\n} from './utils';\n\nconst { common } = Kebab.factory;\n\nconst tableColumnClasses = ['', '', 'pf-m-hidden pf-m-visible-on-md', Kebab.columnClass];\n\nexport const DetailsForKind: React.FC> = ({ obj }) => {\n const { t } = useTranslation();\n const groupVersionKind = getGroupVersionKindForResource(obj);\n const [model] = useK8sModel(groupVersionKind);\n const leftDetailsItemExtensions = useDetailsItemExtensionsForResource(obj, 'left');\n const rightDetailsItemExtensions = useDetailsItemExtensionsForResource(obj, 'right');\n const leftDetailsItems = React.useMemo(\n () =>\n leftDetailsItemExtensions.map((extension) => (\n \n )),\n [leftDetailsItemExtensions, obj],\n );\n\n const rightDetailsItems = React.useMemo(\n () =>\n rightDetailsItemExtensions.map((extension) => (\n \n )),\n [rightDetailsItemExtensions, obj],\n );\n\n return (\n <>\n
\n \n
\n
\n \n {leftDetailsItems}\n \n
\n {rightDetailsItems.length > 0 && (\n
{rightDetailsItems}
\n )}\n
\n
\n {_.isArray(obj?.status?.conditions) && (\n
\n \n \n
\n )}\n \n );\n};\n\nconst TableRowForKind: React.FC> = ({ obj, customData }) => {\n const kind = referenceFor(obj) || customData.kind;\n const menuActions = [...Kebab.getExtensionsActionsForKind(kindObj(kind)), ...common];\n const { t } = useTranslation();\n return (\n <>\n \n \n \n \n {obj.metadata.namespace ? (\n \n ) : (\n t('public~None')\n )}\n \n \n \n \n \n \n \n \n );\n};\n\nexport const DefaultList: React.FC = (props) => {\n const { t } = useTranslation();\n\n const { kinds } = props;\n\n const TableHeader = () => {\n return [\n {\n title: t('public~Name'),\n sortField: 'metadata.name',\n transforms: [sortable],\n props: { className: tableColumnClasses[0] },\n },\n {\n title: t('public~Namespace'),\n sortField: 'metadata.namespace',\n transforms: [sortable],\n props: { className: tableColumnClasses[1] },\n },\n {\n title: t('public~Created'),\n sortField: 'metadata.creationTimestamp',\n transforms: [sortable],\n props: { className: tableColumnClasses[2] },\n },\n {\n title: '',\n props: { className: tableColumnClasses[3] },\n },\n ];\n };\n\n const getAriaLabel = (item) => {\n const model = modelFor(item);\n // API discovery happens asynchronously. Avoid runtime errors if the model hasn't loaded.\n if (!model) {\n return '';\n }\n return model.labelPluralKey ? t(model.labelPluralKey) : model.labelPlural;\n };\n\n const customData = React.useMemo(\n () => ({\n kind: kinds[0],\n }),\n [kinds],\n );\n\n return (\n \n );\n};\nDefaultList.displayName = 'DefaultList';\n\nexport const DefaultPage: React.FC> = (props) => (\n \n);\nDefaultPage.displayName = 'DefaultPage';\n\nexport const DefaultDetailsPage: React.FC> = (props) => {\n const pages = [navFactory.details(DetailsForKind), navFactory.editYaml()];\n const menuActions = [...Kebab.getExtensionsActionsForKind(kindObj(props.kind)), ...common];\n\n return ;\n};\nDefaultDetailsPage.displayName = 'DefaultDetailsPage';\n","import { ALL_NAMESPACES_KEY } from '@console/shared/src';\n\nexport enum Flags {\n OPERATOR_LIFECYCLE_MANAGER = 'OPERATOR_LIFECYCLE_MANAGER',\n}\n\nexport enum DefaultCatalogSource {\n RedHatOperators = 'redhat-operators',\n RedHatMarketPlace = 'redhat-marketplace',\n CertifiedOperators = 'certified-operators',\n CommunityOperators = 'community-operators',\n}\n\nexport enum DefaultCatalogSourceDisplayName {\n RedHatOperators = 'Red Hat',\n RedHatMarketplace = 'Marketplace',\n CertifiedOperators = 'Certified',\n CommunityOperators = 'Community',\n Custom = 'Custom',\n}\n\nexport const DEFAULT_GLOBAL_OPERATOR_INSTALLATION_NAMESPACE = 'openshift-operators';\nexport const DEFAULT_SOURCE_NAMESPACE = 'openshift-marketplace';\nexport const GLOBAL_COPIED_CSV_NAMESPACE = 'openshift';\nexport const INTERNAL_OBJECTS_ANNOTATION = 'operators.operatorframework.io/internal-objects';\nexport const NON_STANDALONE_ANNOTATION_VALUE = 'non-standalone';\nexport const OPERATOR_NAMESPACE_ANNOTATION = 'olm.operatorNamespace';\nexport const OPERATOR_PLUGINS_ANNOTATION = 'console.openshift.io/plugins';\nexport const OPERATOR_TYPE_ANNOTATION = 'operators.operatorframework.io/operator-type';\nexport const OPERATOR_UNINSTALL_MESSAGE_ANNOTATION = 'operator.openshift.io/uninstall-message';\n\nexport const GLOBAL_OPERATOR_NAMESPACES = [\n DEFAULT_GLOBAL_OPERATOR_INSTALLATION_NAMESPACE,\n GLOBAL_COPIED_CSV_NAMESPACE,\n ALL_NAMESPACES_KEY,\n];\n","import * as React from 'react';\nimport * as classNames from 'classnames';\nimport { NativeTypes } from 'react-dnd-html5-backend';\nimport { DropTarget } from 'react-dnd';\nimport { ConnectDropTarget, DropTargetMonitor } from 'react-dnd/lib/interfaces';\nimport { Alert } from '@patternfly/react-core';\n/* eslint-disable-next-line */\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { isBinary } from 'istextorbinary/edition-es2017/index';\n\nimport withDragDropContext from './drag-drop-context';\n\n// Maximal file size, in bytes, that user can upload\nconst maxFileUploadSize = 4000000;\n\nexport const containsNonPrintableCharacters = (value: string) => {\n if (!value) {\n return false;\n }\n // eslint-disable-next-line no-control-regex\n return /[\\x00-\\x09\\x0E-\\x1F]/.test(value);\n};\n\nclass FileInputWithTranslation extends React.Component {\n constructor(props) {\n super(props);\n this.onDataChange = this.onDataChange.bind(this);\n this.onFileUpload = this.onFileUpload.bind(this);\n }\n onDataChange(event) {\n this.props.onChange({\n fileData: event.target.value,\n });\n }\n readFile(file) {\n const { t } = this.props;\n if (file.size > maxFileUploadSize) {\n this.props.onChange({\n errorMessage: t('public~Maximum file size exceeded. File limit is 4MB.'),\n });\n return;\n }\n let fileIsBinary = false;\n const reader = new FileReader();\n reader.onload = () => {\n const input = fileIsBinary\n ? (reader.result as string).split(',')[1]\n : (reader.result as string);\n // OnLoad, if inputFileIsBinary we have read as a binary string, skip next block\n if (containsNonPrintableCharacters(input) && isBinary(null, input) && !fileIsBinary) {\n fileIsBinary = true;\n reader.readAsDataURL(file);\n } else {\n this.props.onChange({\n fileData: input,\n fileIsBinary,\n fileName: file.name,\n });\n }\n };\n reader.readAsText(file, 'UTF-8');\n }\n onFileUpload(event) {\n this.readFile(event.target.files[0]);\n }\n render() {\n const {\n connectDropTarget,\n errorMessage,\n fileIsBinary,\n hideContents,\n isOver,\n canDrop,\n id,\n isRequired,\n t,\n } = this.props;\n const klass = classNames('co-file-dropzone-container', {\n 'co-file-dropzone--drop-over': isOver,\n });\n return connectDropTarget(\n
\n {canDrop && (\n
\n

{t('public~Drop file here')}

\n
\n )}\n\n
\n \n {this.props.label}\n \n
\n
\n \n \n \n {t('public~Browse...')}\n \n
\n {this.props.inputFieldHelpText ? (\n

\n {this.props.inputFieldHelpText}\n

\n ) : null}\n {!hideContents && (\n \n )}\n {this.props.textareaFieldHelpText ? (\n

\n {this.props.textareaFieldHelpText}\n

\n ) : null}\n {errorMessage &&
{errorMessage}
}\n {fileIsBinary && (\n \n {t('public~File contains non-printable characters. Preview is not available.')}\n \n )}\n
\n
\n
,\n );\n }\n}\n\nconst boxTarget = {\n drop(props: FileInputProps, monitor: DropTargetMonitor) {\n if (props.onDrop && monitor.isOver()) {\n props.onDrop(props, monitor);\n }\n },\n};\nexport const FileInput = withTranslation()(FileInputWithTranslation);\nconst FileInputComponent = DropTarget(NativeTypes.FILE, boxTarget, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n}))(FileInput);\n\nconst DroppableFileInputWithTranslation = withDragDropContext(\n class DroppableFileInput extends React.Component<\n DroppableFileInputProps,\n DroppableFileInputState\n > {\n constructor(props) {\n super(props);\n this.state = {\n inputFileName: '',\n inputFileData: this.props.inputFileData || '',\n inputFileIsBinary:\n this.props.inputFileIsBinary ||\n (containsNonPrintableCharacters(this.props.inputFileData) &&\n isBinary(null, this.props.inputFileData)),\n };\n this.handleFileDrop = this.handleFileDrop.bind(this);\n this.onDataChange = this.onDataChange.bind(this);\n }\n handleFileDrop(item: any, monitor: DropTargetMonitor) {\n const { t } = this.props;\n if (!monitor) {\n return;\n }\n const file = monitor.getItem().files[0];\n if (file.size > maxFileUploadSize) {\n this.setState({\n errorMessage: t('public~Maximum file size exceeded. File limit is 4MB.'),\n inputFileName: '',\n inputFileData: '',\n });\n return;\n }\n let inputFileIsBinary = false;\n const reader = new FileReader();\n reader.onload = () => {\n const input = reader.result as string; // Note(Yaacov): we use reader.readAsText\n // OnLoad, if inputFileIsBinary we have read as a binary string, skip next block\n if (containsNonPrintableCharacters(input) && isBinary(null, input) && !inputFileIsBinary) {\n inputFileIsBinary = true;\n reader.readAsBinaryString(file);\n } else {\n this.setState(\n {\n inputFileName: file.name,\n inputFileData: input,\n inputFileIsBinary,\n errorMessage: '',\n },\n () => this.props.onChange(input, inputFileIsBinary),\n );\n }\n };\n reader.readAsText(file, 'UTF-8');\n }\n onDataChange(data) {\n const { fileData, fileIsBinary, fileName, errorMessage } = data;\n this.setState(\n {\n inputFileData: fileData || '',\n inputFileIsBinary: fileIsBinary,\n inputFileName: fileName || '',\n errorMessage: errorMessage || '',\n },\n () => this.props.onChange(this.state.inputFileData, fileIsBinary),\n );\n }\n render() {\n return (\n \n );\n }\n },\n);\n\nexport const DroppableFileInput = withTranslation()(DroppableFileInputWithTranslation);\n\nexport type DroppableFileInputProps = WithTranslation & {\n inputFileData: string;\n onChange: Function;\n label: string;\n id: string;\n inputFieldHelpText: string;\n textareaFieldHelpText: string;\n isRequired: boolean;\n hideContents?: boolean;\n inputFileIsBinary?: boolean;\n};\n\nexport type DroppableFileInputState = {\n inputFileData: string;\n inputFileIsBinary?: boolean;\n inputFileName: string;\n errorMessage?: any;\n};\n\nexport type FileInputState = {\n inputFileData: string;\n inputFileName: string;\n};\n\nexport type FileInputProps = WithTranslation & {\n errorMessage: string;\n connectDropTarget?: ConnectDropTarget;\n isOver?: boolean;\n canDrop?: boolean;\n onDrop: (props: FileInputProps, monitor: DropTargetMonitor) => void;\n inputFileData: string;\n inputFileName: string;\n onChange: Function;\n label: string;\n id: string;\n inputFieldHelpText: string;\n textareaFieldHelpText: string;\n isRequired: boolean;\n hideContents?: boolean;\n fileIsBinary?: boolean;\n};\n","import * as _ from 'lodash';\nimport 'whatwg-fetch';\nimport { getUtilsConfig } from '../../app/configSetup';\nimport { setAdmissionWebhookWarning } from '../../app/core/actions';\nimport storeHandler from '../../app/storeHandler';\nimport { ConsoleFetchText, ConsoleFetchJSON, ConsoleFetch } from '../../extensions/console-types';\nimport { TimeoutError } from '../error/http-error';\nimport { getConsoleRequestHeaders } from './console-fetch-utils';\n\n/**\n * A custom wrapper around `fetch` that adds console-specific headers and allows for retries and timeouts.\n * It also validates the response status code and throws an appropriate error or logs out the user if required.\n * @param url The URL to fetch\n * @param options The options to pass to fetch\n * @param timeout The timeout in milliseconds\n * @returns A promise that resolves to the response.\n */\nexport const consoleFetch: ConsoleFetch = async (url, options = {}, timeout = 60000) => {\n const fetchPromise = getUtilsConfig().appFetch(url, options);\n\n if (timeout <= 0) {\n return fetchPromise;\n }\n\n const timeoutPromise = new Promise((resolve, reject) => {\n setTimeout(() => reject(new TimeoutError(url, timeout)), timeout);\n });\n\n return Promise.race([fetchPromise, timeoutPromise]);\n};\n\nconst parseData = async (response) => {\n const text = await response.text();\n const isPlainText = response.headers.get('Content-Type') === 'text/plain';\n if (!text) {\n return isPlainText ? '' : {};\n }\n return isPlainText || !response.ok ? text : JSON.parse(text);\n};\n\nconst handleAdmissionWebhookWarning = (warning: string, kind?: string, name?: string) => {\n const store = storeHandler.getStore();\n const id = `${kind}_${name}_${warning}`;\n const warningData = { kind, name, warning };\n store.dispatch(setAdmissionWebhookWarning(id, warningData));\n};\n\nconst consoleFetchCommon = async (\n url: string,\n method: string = 'GET',\n options: RequestInit = {},\n timeout?: number,\n): Promise => {\n const headers = getConsoleRequestHeaders();\n // Pass headers last to let callers to override Accept.\n const allOptions = _.defaultsDeep({ method }, options, { headers });\n const response = await consoleFetch(url, allOptions, timeout);\n const dataPromise = parseData(response);\n const warning = response.headers.get('Warning');\n\n // If the response has a warning header, store it in the redux store.\n if (response.ok && warning && method !== 'GET') {\n // Do nothing on error since this is a side-effect. Caller will handle the error.\n dataPromise\n .then((data) => handleAdmissionWebhookWarning(warning, data.kind, data.metadata?.name))\n .catch(() => {});\n }\n\n return dataPromise;\n};\n\n/**\n * A custom wrapper around `fetch` that adds console-specific headers and allows for retries and timeouts.\n * It also validates the response status code and throws an appropriate error or logs out the user if required.\n * It returns the response as a JSON object.\n * Uses consoleFetch internally.\n * @param url The URL to fetch\n * @param method The HTTP method to use. Defaults to GET\n * @param options The options to pass to fetch\n * @param timeout The timeout in milliseconds\n * @returns A promise that resolves to the response as text or JSON object.\n */\nexport const consoleFetchJSON: ConsoleFetchJSON = (url, method = 'GET', options = {}, timeout) => {\n const allOptions = _.defaultsDeep({}, options, {\n headers: { Accept: 'application/json' },\n });\n return consoleFetchCommon(url, method, allOptions, timeout);\n};\n\n/**\n * A custom wrapper around `fetch` that adds console-specific headers and allows for retries and timeouts.\n * It also validates the response status code and throws an appropriate error or logs out the user if required.\n * It returns the response as a text.\n * Uses `consoleFetch` internally.\n * @param url The URL to fetch\n * @param options The options to pass to fetch\n * @param timeout The timeout in milliseconds\n * @returns A promise that resolves to the response as text or JSON object.\n */\nexport const consoleFetchText: ConsoleFetchText = (url, options = {}, timeout) => {\n return consoleFetchCommon(url, 'GET', options, timeout);\n};\n\nconst consoleFetchSendJSON = (\n url: string,\n method: string,\n json = null,\n options: RequestInit = {},\n timeout: number,\n) => {\n const allOptions: Record = {\n headers: {\n Accept: 'application/json',\n 'Content-Type': `application/${\n method === 'PATCH' ? 'json-patch+json' : 'json'\n };charset=UTF-8`,\n },\n };\n if (json) {\n allOptions.body = JSON.stringify(json);\n }\n\n return consoleFetchJSON(url, method, _.defaultsDeep(allOptions, options), timeout);\n};\n\n/**\n * A custom DELETE method of consoleFetchJSON.\n * It sends an optional JSON object as the body of the request and adds extra headers for patch request.\n * @param url The URL to delete the object\n * @param json The JSON to delete the object\n * @param options The options to pass to fetch\n * @param timeout The timeout in milliseconds\n */\nconsoleFetchJSON.delete = (url, json = null, options = {}, timeout) => {\n return json\n ? consoleFetchSendJSON(url, 'DELETE', json, options, timeout)\n : consoleFetchJSON(url, 'DELETE', options, timeout);\n};\n\n/**\n * A custom POST method of consoleFetchJSON.\n * It sends the JSON object as the body of the request.\n * @param url The URL to post the object\n * @param json The JSON to POST the object\n * @param options The options to pass to fetch\n * @param timeout The timeout in milliseconds\n */\nconsoleFetchJSON.post = (url: string, json, options = {}, timeout) =>\n consoleFetchSendJSON(url, 'POST', json, options, timeout);\n\n/**\n * A custom PUT method of consoleFetchJSON.\n * It sends the JSON object as the body of the request.\n * @param url The URL to put the object\n * @param json The JSON to PUT the object\n * @param options The options to pass to fetch\n * @param timeout The timeout in milliseconds\n */\nconsoleFetchJSON.put = (url: string, json, options = {}, timeout) =>\n consoleFetchSendJSON(url, 'PUT', json, options, timeout);\n\n/**\n * A custom PATCH method of consoleFetchJSON.\n * It sends the JSON object as the body of the request.\n * @param url The URL to patch the object\n * @param json The JSON to PATCH the object\n * @param options The options to pass to fetch\n * @param timeout The timeout in milliseconds\n */\nconsoleFetchJSON.patch = (url: string, json, options = {}, timeout) =>\n consoleFetchSendJSON(url, 'PATCH', json, options, timeout);\n","import * as React from 'react';\nimport { useExtensions } from '@console/plugin-sdk/src/api/useExtensions';\nimport { resolveExtension } from '../coderefs/coderef-resolver';\nimport { UseResolvedExtensions } from '../extensions/console-types';\nimport { Extension, ExtensionTypeGuard, ResolvedExtension } from '../types';\nimport { settleAllPromises } from '../utils/promise';\n\nexport const useResolvedExtensions: UseResolvedExtensions = (\n ...typeGuards: ExtensionTypeGuard[]\n): [ResolvedExtension[], boolean, any[]] => {\n const extensions = useExtensions(...typeGuards);\n\n const [resolvedExtensions, setResolvedExtensions] = React.useState[]>([]);\n const [resolved, setResolved] = React.useState(false);\n const [errors, setErrors] = React.useState([]);\n\n React.useEffect(() => {\n let disposed = false;\n\n // eslint-disable-next-line promise/catch-or-return\n settleAllPromises(\n extensions.map((e) => resolveExtension>(e)),\n ).then(([fulfilledValues, rejectedReasons]) => {\n if (!disposed) {\n setResolvedExtensions(fulfilledValues);\n setErrors(rejectedReasons);\n setResolved(true);\n\n if (rejectedReasons.length > 0) {\n // eslint-disable-next-line no-console\n console.error('Detected errors while resolving Console extensions', rejectedReasons);\n }\n }\n });\n\n return () => {\n disposed = true;\n };\n }, [extensions]);\n\n return [resolvedExtensions, resolved, errors];\n};\n","import { K8sKind } from '@console/internal/module/k8s';\n\nexport const NetworkAttachmentDefinitionModel: K8sKind = {\n label: 'Network Attachment Definition',\n labelPlural: 'Network Attachment Definitions',\n apiVersion: 'v1',\n apiGroup: 'k8s.cni.cncf.io',\n plural: 'network-attachment-definitions',\n namespaced: true,\n abbr: 'NAD',\n kind: 'NetworkAttachmentDefinition',\n id: 'network-attachment-definition',\n crd: true,\n legacyPluralURL: true,\n};\n\nexport const SriovNetworkNodePolicyModel: K8sKind = {\n label: 'SR-IOV Network Node Policy',\n labelPlural: 'SR-IOV Network Node Policies',\n apiVersion: 'v1',\n apiGroup: 'sriovnetwork.openshift.io',\n plural: 'sriovnetworknodepolicies',\n namespaced: true,\n abbr: 'SRNNPM', // TODO check on this\n kind: 'SriovNetworkNodePolicy',\n id: 'sriov-network-node-policy',\n crd: true,\n};\n","import * as _ from 'lodash';\nimport { NodeKind } from '@console/internal/module/k8s';\nimport { NodeAddress, NodeCondition } from '../types';\n\nconst NODE_ROLE_PREFIX = 'node-role.kubernetes.io/';\n\nexport const getNodeRoles = (node: NodeKind): string[] => {\n const labels = _.get(node, 'metadata.labels');\n return _.reduce(\n labels,\n (acc: string[], v: string, k: string) => {\n if (k.startsWith(NODE_ROLE_PREFIX)) {\n acc.push(k.slice(NODE_ROLE_PREFIX.length));\n }\n return acc;\n },\n [],\n );\n};\n\nexport const getNodeRole = (node: NodeKind): string =>\n getNodeRoles(node).includes('control-plane') ? 'control-plane' : 'worker';\n\nexport const getNodeRoleMatch = (node: NodeKind, role: string): boolean => {\n const roles = getNodeRoles(node);\n\n return roles.filter((elem) => elem === role).length > 0;\n};\n\nexport const getNodeAddresses = (node: NodeKind): NodeAddress[] =>\n _.get(node, 'status.addresses', []);\n\ntype NodeMachineAndNamespace = {\n name: string;\n namespace: string;\n};\nexport const getNodeMachineNameAndNamespace = (node: NodeKind): NodeMachineAndNamespace => {\n const machine = _.get(node, 'metadata.annotations[\"machine.openshift.io/machine\"]', '/');\n const [namespace, name] = machine.split('/');\n return { namespace, name };\n};\n\nexport const getNodeMachineName = (node: NodeKind): string =>\n getNodeMachineNameAndNamespace(node).name;\n\nexport const isNodeUnschedulable = (node: NodeKind): boolean =>\n _.get(node, 'spec.unschedulable', false);\n\nexport const isNodeReady = (node: NodeKind): boolean => {\n const conditions = _.get(node, 'status.conditions', []);\n const readyState = _.find(conditions, { type: 'Ready' }) as NodeCondition;\n\n return readyState && readyState.status === 'True';\n};\n\nexport const getNodeCPUCapacity = (node: NodeKind): string => _.get(node.status, 'capacity.cpu');\n\nexport const getNodeAllocatableMemory = (node: NodeKind): string =>\n _.get(node.status, 'allocatable.memory');\n\nexport const getNodeTaints = (node: NodeKind) => node?.spec?.taints;\n\nexport const isWindowsNode = (node) =>\n node?.metadata?.labels?.['node.openshift.io/os_id'] === 'Windows' ||\n node?.metadata?.labels?.['corev1.LabelOSStable'] === 'windows';\n\nexport const getNodeUptime = (node: NodeKind) =>\n _.find(node?.status?.conditions, { type: 'Ready', status: 'True' })?.lastTransitionTime;\n","import * as React from 'react';\nimport { QuickStartContext, QuickStartContextValues } from '@patternfly/quickstarts';\n\nexport const useQuickStartContext = () => {\n return React.useContext(QuickStartContext);\n};\n","import * as _ from 'lodash-es';\nimport { createEquals } from '@console/dynamic-plugin-sdk/src/utils/k8s';\n\nexport const requirementFromString = (string) => {\n string = string.trim();\n\n // \"key\"\n if (/^[0-9A-Za-z/\\-_.]+$/.test(string)) {\n return {\n key: string,\n operator: 'Exists',\n values: [],\n };\n }\n\n // \"!key\"\n if (/^!\\s*[0-9A-Za-z/\\-_.]+$/.test(string)) {\n return {\n key: string.split(/!\\s*/)[1],\n operator: 'DoesNotExist',\n values: [],\n };\n }\n\n // \"key=value\" OR \"key==value\"\n if (/^[0-9A-Za-z/\\-_.]+\\s*==?\\s*[0-9A-Za-z/\\-_.]+$/.test(string)) {\n const parts = string.split(/\\s*==?\\s*/);\n const key = parts[0];\n const value = parts[1];\n return createEquals(key, value);\n }\n\n // \"key!=value\"\n if (/^[0-9A-Za-z/\\-_.]+\\s*!=\\s*[0-9A-Za-z/\\-_.]+$/.test(string)) {\n return {\n key: string.split(/\\s*!=\\s*/)[0],\n operator: 'NotEquals',\n values: [string.split(/\\s*!=\\s*/)[1]],\n };\n }\n\n // \"key in (value1[,value2,...])\"\n if (/^[0-9A-Za-z/\\-_.]+\\s+in\\s+\\([0-9A-Za-z/\\-_.,\\s]+\\)$/.test(string)) {\n const parts = string.split(/\\s+in\\s+/);\n const key = parts[0];\n const values = parts[1].slice(1, -1).split(',').map(_.trim);\n\n return {\n key,\n operator: 'In',\n values,\n };\n }\n\n // \"key notin (value1[,value2,...])\"\n if (/^[0-9A-Za-z/\\-_.]+\\s+notin\\s+\\([0-9A-Za-z/\\-_.,\\s]+\\)$/.test(string)) {\n const parts = string.split(/\\s+notin\\s+/);\n const key = parts[0];\n const values = parts[1].slice(1, -1).split(',').map(_.trim);\n\n return {\n key,\n operator: 'NotIn',\n values,\n };\n }\n\n // \"key > value1\"\n if (/^[0-9A-Za-z/\\-_.]+\\s+>\\s+[0-9.]+$/.test(string)) {\n const parts = string.split(/\\s+>\\s+/);\n const key = parts[0];\n const value = parts[1];\n\n return {\n key,\n operator: 'GreaterThan',\n values: [value],\n };\n }\n\n // \"key < value1\"\n if (/^[0-9A-Za-z/\\-_.]+\\s+<\\s+[0-9.]+$/.test(string)) {\n const parts = string.split(/\\s+<\\s+/);\n const key = parts[0];\n const value = parts[1];\n\n return {\n key,\n operator: 'LessThan',\n values: [value],\n };\n }\n\n return; // falsy means parsing failure\n};\n","/* eslint-disable camelcase */\nimport * as _ from 'lodash-es';\nimport { Base64 } from 'js-base64';\nimport { safeLoad, safeDump } from 'js-yaml';\n\nimport { SecretModel } from '../../../models';\nimport { k8sPatch, K8sResourceKind } from '../../../module/k8s';\nimport { AlertmanagerConfig } from './alertmanager-config';\n\n// t('public~PagerDuty')\n// t('public~Webhook')\n// t('public~Email')\n// t('public~Slack')\nexport const receiverTypes = Object.freeze({\n pagerduty_configs: 'PagerDuty',\n webhook_configs: 'Webhook',\n email_configs: 'Email',\n slack_configs: 'Slack',\n});\n\nexport const getAlertmanagerYAML = (\n secret: K8sResourceKind,\n): { yaml: string; errorMessage?: string } => {\n const alertManagerYaml = _.get(secret, ['data', 'alertmanager.yaml']);\n\n if (_.isEmpty(alertManagerYaml)) {\n return {\n yaml: '',\n errorMessage:\n 'Error: alertmanager.yaml not found in Secret \"alertmanager-main\", in namespace \"openshift-monitoring\"',\n };\n }\n\n try {\n const yaml = Base64.decode(alertManagerYaml);\n return { yaml };\n } catch (e) {\n return { yaml: '', errorMessage: `Error decoding alertmanager.yaml: ${e}` };\n }\n};\n\nexport const getAlertmanagerConfig = (\n secret: K8sResourceKind,\n): { config: AlertmanagerConfig; errorMessage?: string } => {\n const parsedAlertmanagerYAML = getAlertmanagerYAML(secret);\n try {\n const config = safeLoad(parsedAlertmanagerYAML.yaml);\n return { config, errorMessage: parsedAlertmanagerYAML.errorMessage };\n } catch (e) {\n return { config: null, errorMessage: `Error loading alertmanager.yaml: ${e}` };\n }\n};\n\nexport const patchAlertmanagerConfig = (\n secret: K8sResourceKind,\n yaml: object | string,\n): Promise => {\n const yamlString = _.isObject(yaml) ? safeDump(yaml) : yaml;\n const yamlEncodedString = Base64.encode(yamlString);\n const patch = [{ op: 'replace', path: '/data/alertmanager.yaml', value: yamlEncodedString }];\n return k8sPatch(SecretModel, secret, patch);\n};\n","import { Map as ImmutableMap } from 'immutable';\nimport { UserInfo } from '../../../extensions';\nimport { ImpersonateKind, SDKStoreState, AdmissionWebhookWarning } from '../../redux-types';\n\ntype GetImpersonate = (state: SDKStoreState) => ImpersonateKind;\ntype GetUser = (state: SDKStoreState) => UserInfo;\ntype GetAdmissionWebhookWarnings = (\n state: SDKStoreState,\n) => ImmutableMap;\n\n/**\n * It provides impersonation details from the redux store.\n * @param state the root state\n * @returns The the impersonate state.\n */\nexport const getImpersonate: GetImpersonate = (state) => state.sdkCore.impersonate;\n\n/**\n * It provides impersonation details from the redux store as a props object.\n * @param state the root state\n * @returns The the impersonation details props object.\n */\nexport const impersonateStateToProps = (state: SDKStoreState) => {\n return { impersonate: getImpersonate(state) };\n};\n\n/**\n * It provides user details from the redux store.\n * @param state the root state\n * @returns The the user state.\n */\nexport const getUser: GetUser = (state) => state.sdkCore.user;\n\n/**\n * It provides admission webhook warning data from the redux store.\n * @param state the root state\n * @returns The the admissionWebhookWarning state.\n */\nexport const getAdmissionWebhookWarnings: GetAdmissionWebhookWarnings = (state) =>\n state.sdkCore.admissionWebhookWarnings;\n","import * as _ from 'lodash-es';\nimport { plural } from 'pluralize';\nimport i18next, { TFunction } from 'i18next';\n\nimport { K8sKind, K8sVerb } from '../../module/k8s';\nimport { isModelMetadata, ModelMetadata } from '@console/dynamic-plugin-sdk';\nimport { DiscoveryResources } from '@console/dynamic-plugin-sdk/src/api/common-types';\nimport { LoadedExtension } from '@console/dynamic-plugin-sdk/src/types';\nimport {\n getTranslationKey,\n isTranslatableString,\n translateExtension,\n} from '@console/plugin-sdk/src/utils/extension-i18n';\nimport { API_DISCOVERY_RESOURCES_LOCAL_STORAGE_KEY } from '@console/shared/src/constants';\nimport { fetchURL } from '../../graphql/client';\nimport { pluginStore } from '../../plugins';\nimport { loading as i18nLoading } from '../../i18n';\n\nconst ADMIN_RESOURCES = new Set([\n 'roles',\n 'rolebindings',\n 'clusterroles',\n 'clusterrolebindings',\n 'thirdpartyresources',\n 'nodes',\n 'secrets',\n]);\n\nconst abbrBlacklist = ['ASS', 'FART'];\nexport const kindToAbbr = (kind) => {\n const abbrKind = (kind.replace(/[^A-Z]/g, '') || kind.toUpperCase()).slice(0, 4);\n return abbrBlacklist.includes(abbrKind) ? abbrKind.slice(0, -1) : abbrKind;\n};\n\nexport const cacheResources = (resources) =>\n new Promise((resolve, reject) => {\n try {\n // Add the console version. We invalidate the cache when console version changes.\n const { consoleVersion } = window.SERVER_FLAGS;\n const versionedResources = _.assign({}, resources, { consoleVersion });\n localStorage.setItem(\n API_DISCOVERY_RESOURCES_LOCAL_STORAGE_KEY,\n JSON.stringify(versionedResources),\n );\n resolve();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('Error caching API resources in localStorage', e);\n reject(e);\n }\n });\n\nexport const getCachedResources = () =>\n new Promise((resolve, reject) => {\n try {\n const resourcesJSON = localStorage.getItem(API_DISCOVERY_RESOURCES_LOCAL_STORAGE_KEY);\n\n // Clear cached resources after load as a safeguard. If there's any errors\n // with the content that prevents the console from working, the bad data\n // will not be loaded when the user refreshes the console. The cache will\n // be refreshed when discovery completes.\n localStorage.removeItem(API_DISCOVERY_RESOURCES_LOCAL_STORAGE_KEY);\n\n if (resourcesJSON) {\n const resources = JSON.parse(resourcesJSON);\n const { consoleVersion: currentVersion } = window.SERVER_FLAGS;\n const { consoleVersion: cachedVersion } = resources;\n if (cachedVersion !== currentVersion) {\n // eslint-disable-next-line no-console\n console.log(\n `Invalidating API discovery cache from earlier console version (current: ${currentVersion}, cached: ${cachedVersion})`,\n );\n resolve(null);\n return;\n }\n // eslint-disable-next-line no-console\n console.log('Loaded cached API resources from localStorage');\n resolve(resources);\n return;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('Error reading API resources from localStorage', e);\n reject(e);\n }\n\n resolve(null);\n });\n\nexport const pluralizeKind = (kind: string): string => {\n // Use startCase to separate words so the last can be pluralized but remove spaces so as not to humanize\n const pluralized = plural(_.startCase(kind)).replace(/\\s+/g, '');\n // Handle special cases like DB -> DBs (instead of DBS).\n if (pluralized === `${kind}S`) {\n return `${kind}s`;\n }\n return pluralized;\n};\n\nexport const getModelExtensionMetadata = (\n extensions: LoadedExtension[],\n group: string,\n version?: string,\n kind?: string,\n) => {\n const tcb: TFunction = (value: string) =>\n isTranslatableString(value) ? i18next.t(getTranslationKey(value)) : value;\n const translatedExtensions = extensions.map((e) => translateExtension(e, tcb));\n const groupVersionKindMetadata = translatedExtensions\n .filter(\n ({ properties }) =>\n properties.model.group === group &&\n properties.model.kind === kind &&\n properties.model.version === version,\n )\n .map((e) => e.properties);\n const groupKindMetadata = translatedExtensions\n .filter(\n ({ properties }) =>\n properties.model.version == null &&\n properties.model.group === group &&\n properties.model.kind === kind,\n )\n .map((e) => e.properties);\n const groupMetadata = translatedExtensions\n .filter(\n ({ properties }) =>\n properties.model.kind == null &&\n properties.model.version == null &&\n properties.model.group === group,\n )\n .map((e) => e.properties);\n\n return _.omit(\n Object.assign({}, ...groupMetadata, ...groupKindMetadata, ...groupVersionKindMetadata),\n ['model'],\n );\n};\n\nexport const getResources = (): Promise =>\n fetchURL('/apis').then((res) => {\n const groupVersionMap = res.groups.reduce(\n (acc, { name, versions, preferredVersion: { version } }) => {\n acc[name] = {\n versions: _.map(versions, 'version'),\n preferredVersion: version,\n };\n return acc;\n },\n {},\n );\n const all = _.flatten(\n res.groups.map((group) => group.versions.map((version) => `/apis/${version.groupVersion}`)),\n )\n .concat(['/api/v1'])\n .map((p) => fetchURL(p).catch((err) => err));\n\n // Wait also until the known translation bundles are resolved\n all.push(i18nLoading);\n\n return Promise.all(all).then((data) => {\n // Drop i18nLoading promise (resolved loaded state)\n data.pop();\n\n const resourceSet = new Set();\n const namespacedSet = new Set();\n data.forEach(\n (d) =>\n d.resources &&\n d.resources.forEach(({ namespaced, name }) => {\n resourceSet.add(name);\n namespaced && namespacedSet.add(name);\n }),\n );\n const allResources = [...resourceSet].sort();\n\n const safeResources = [];\n const adminResources = [];\n\n const defineModels = (list: APIResourceList): K8sKind[] => {\n const metadataExtensions = pluginStore\n .getExtensionsInUse()\n .filter(isModelMetadata) as LoadedExtension[];\n const groupVersionParts = list.groupVersion.split('/');\n const apiGroup = groupVersionParts.length > 1 ? groupVersionParts[0] : null;\n const apiVersion = groupVersionParts.length > 1 ? groupVersionParts[1] : list.groupVersion;\n return list.resources\n .filter(({ name }) => !name.includes('/'))\n .map(({ name, singularName, namespaced, kind, verbs, shortNames }) => {\n return {\n kind,\n namespaced,\n verbs,\n shortNames,\n label: kind,\n plural: name,\n apiVersion,\n abbr: kindToAbbr(kind),\n ...(apiGroup ? { apiGroup } : {}),\n labelPlural: pluralizeKind(kind),\n path: name,\n id: singularName,\n crd: true,\n ...getModelExtensionMetadata(metadataExtensions, apiGroup, apiVersion, kind),\n };\n });\n };\n\n const models = _.flatten(data.filter((d) => d.resources).map(defineModels));\n allResources.forEach((r) =>\n ADMIN_RESOURCES.has(r.split('/')[0]) ? adminResources.push(r) : safeResources.push(r),\n );\n const configResources = _.filter(\n models,\n (m) => m.apiGroup === 'config.openshift.io' && m.kind !== 'ClusterOperator',\n );\n const clusterOperatorConfigResources = _.filter(\n models,\n (m) => m.apiGroup === 'operator.openshift.io',\n );\n\n return {\n allResources,\n safeResources,\n adminResources,\n configResources,\n clusterOperatorConfigResources,\n namespacedSet,\n models,\n groupVersionMap,\n };\n });\n });\n\nexport type APIResourceList = {\n kind: 'APIResourceList';\n apiVersion: 'v1';\n groupVersion: string;\n resources?: {\n name: string;\n singularName?: string;\n namespaced?: boolean;\n kind: string;\n verbs: K8sVerb[];\n shortNames?: string[];\n }[];\n};\n","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { connect } from 'react-redux';\nimport { useParams, useLocation, useNavigate } from 'react-router-dom-v5-compat';\nimport * as classNames from 'classnames';\nimport { ActionGroup, Button } from '@patternfly/react-core';\nimport { sortable } from '@patternfly/react-table';\nimport { ListPageBody } from '@console/dynamic-plugin-sdk';\nimport { FLAGS } from '@console/shared/src/constants';\nimport { useActiveNamespace } from '@console/shared/src/hooks/useActiveNamespace';\nimport { ClusterRoleBindingModel } from '../../models';\nimport { getQN, k8sCreate, k8sPatch, referenceFor } from '../../module/k8s';\nimport * as UIActions from '../../actions/ui';\nimport { Table, TableData } from '../factory';\nimport ListPageFilter from '../factory/ListPage/ListPageFilter';\nimport ListPageHeader from '../factory/ListPage/ListPageHeader';\nimport { useListPageFilter } from '../factory/ListPage/filter-hook';\nimport { ListPageCreateLink } from '../factory/ListPage/ListPageCreate';\nimport { RadioGroup } from '../radio';\nimport { confirmModal } from '../modals';\nimport {\n ButtonBar,\n Firehose,\n getQueryArgument,\n Kebab,\n kindObj,\n ListDropdown,\n MsgBox,\n NsDropdown,\n PageHeading,\n ResourceKebab,\n ResourceLink,\n ResourceName,\n resourceObjPath,\n StatusBox,\n useAccessReview,\n} from '../utils';\nimport { connectToFlags } from '../../reducers/connectToFlags';\nimport { flagPending } from '../../reducers/features';\nimport { useTranslation, withTranslation } from 'react-i18next';\nimport i18next from 'i18next';\nimport { useK8sWatchResources } from '../utils/k8s-watch-hook';\n\nconst bindingKind = (binding) =>\n binding.metadata.namespace ? 'RoleBinding' : 'ClusterRoleBinding';\n\n// Split each binding into one row per subject\nexport const flatten = (resources) =>\n _.flatMap(resources, (resource) => {\n const ret = [];\n\n _.each(resource.data, (binding) => {\n if (!binding) {\n return undefined;\n }\n if (_.isEmpty(binding.subjects)) {\n const subject = { kind: '-', name: '-' };\n return ret.push(Object.assign({}, binding, { subject }));\n }\n _.each(binding.subjects, (subject, subjectIndex) => {\n ret.push(\n Object.assign({}, binding, {\n subject,\n subjectIndex,\n rowKey: `${getQN(binding)}|${subject.kind}|${subject.name}${\n subject.namespace ? `|${subject.namespace}` : ''\n }`,\n }),\n );\n });\n });\n\n return ret;\n });\n\nconst getKindLabel = (kind) => (kind.labelKey ? i18next.t(kind.labelKey) : kind.label);\n\nconst menuActions = ({ subjectIndex, subjects }, startImpersonate, navigate) => {\n const subject = subjects[subjectIndex];\n\n const actions = [\n (kind, obj) => ({\n label: i18next.t('public~Duplicate {{kindLabel}}', {\n kindLabel: getKindLabel(kind),\n }),\n href: `${decodeURIComponent(\n resourceObjPath(obj, kind.kind),\n )}/copy?subjectIndex=${subjectIndex}`,\n // Only perform access checks when duplicating cluster role bindings.\n // It's not practical to check namespace role bindings since we don't know what namespace the user will pick in the form.\n accessReview: _.get(obj, 'metadata.namespace')\n ? null\n : {\n group: kind.apiGroup,\n resource: kind.plural,\n verb: 'create',\n },\n }),\n (kind, obj) => ({\n label: i18next.t('public~Edit {{kindLabel}} subject', {\n kindLabel: getKindLabel(kind),\n }),\n href: `${decodeURIComponent(\n resourceObjPath(obj, kind.kind),\n )}/edit?subjectIndex=${subjectIndex}`,\n accessReview: {\n group: kind.apiGroup,\n resource: kind.plural,\n name: obj.metadata.name,\n namespace: obj.metadata.namespace,\n verb: 'update',\n },\n }),\n subjects.length === 1\n ? Kebab.factory.Delete\n : (kind, binding) => ({\n label: i18next.t('public~Delete {{label}} subject', kind),\n callback: () =>\n confirmModal({\n title: i18next.t('public~Delete {{label}} subject', kind),\n message: i18next.t(\n 'public~Are you sure you want to delete subject {{name}} of type {{kind}}?',\n subject,\n ),\n btnText: i18next.t('public~Delete subject'),\n executeFn: () =>\n k8sPatch(kind, binding, [\n {\n op: 'remove',\n path: `/subjects/${subjectIndex}`,\n },\n ]),\n }),\n accessReview: {\n group: kind.apiGroup,\n resource: kind.plural,\n name: binding.metadata.name,\n namespace: binding.metadata.namespace,\n verb: 'patch',\n },\n }),\n ];\n\n if (subject.kind === 'User' || subject.kind === 'Group') {\n actions.unshift(() => ({\n label: i18next.t('public~Impersonate {{kind}} \"{{name}}\"', subject),\n callback: () => {\n startImpersonate(subject.kind, subject.name);\n navigate(window.SERVER_FLAGS.basePath);\n },\n // Must use API group authorization.k8s.io, NOT user.openshift.io\n // See https://kubernetes.io/docs/reference/access-authn-authz/authentication/#user-impersonation\n accessReview: {\n group: 'authorization.k8s.io',\n resource: subject.kind === 'Group' ? 'groups' : 'users',\n name: subject.name,\n verb: 'impersonate',\n },\n }));\n }\n\n return actions;\n};\n\nconst tableColumnClasses = [\n '',\n 'pf-m-hidden pf-m-visible-on-md',\n 'pf-m-hidden pf-m-visible-on-lg',\n 'pf-m-hidden pf-m-visible-on-xl',\n '',\n Kebab.columnClass,\n];\n\nconst RoleBindingsTableHeader = () => {\n return [\n {\n title: i18next.t('public~Name'),\n sortField: 'metadata.name',\n transforms: [sortable],\n props: { className: tableColumnClasses[0] },\n },\n {\n title: i18next.t('public~Role ref'),\n sortField: 'roleRef.name',\n transforms: [sortable],\n props: { className: tableColumnClasses[1] },\n },\n {\n title: i18next.t('public~Subject kind'),\n sortField: 'subject.kind',\n transforms: [sortable],\n props: { className: tableColumnClasses[2] },\n },\n {\n title: i18next.t('public~Subject name'),\n sortField: 'subject.name',\n transforms: [sortable],\n props: { className: tableColumnClasses[3] },\n },\n {\n title: i18next.t('public~Namespace'),\n sortField: 'metadata.namespace',\n transforms: [sortable],\n props: { className: tableColumnClasses[4] },\n },\n {\n title: '',\n props: { className: tableColumnClasses[5] },\n },\n ];\n};\nRoleBindingsTableHeader.displayName = 'RoleBindingsTableHeader';\n\nexport const BindingName = ({ binding }) => (\n \n);\n\nexport const BindingKebab = connect(null, {\n startImpersonate: UIActions.startImpersonate,\n})(({ binding, startImpersonate }) => {\n const navigate = useNavigate();\n return binding.subjects ? (\n \n ) : null;\n});\n\nexport const RoleLink = ({ binding }) => {\n const kind = binding.roleRef.kind;\n\n // Cluster Roles have no namespace and for Roles, the Role's namespace matches the Role Binding's namespace\n const ns = kind === 'ClusterRole' ? undefined : binding.metadata.namespace;\n return ;\n};\n\nconst RoleBindingsTableRow = ({ obj: binding }) => {\n return (\n <>\n \n \n \n \n \n \n \n {binding.subject.kind}\n \n \n {binding.subject.name}\n \n \n {binding.metadata.namespace ? (\n \n ) : (\n i18next.t('public~All namespaces')\n )}\n \n \n \n \n \n );\n};\n\nconst EmptyMsg = () => {\n const { t } = useTranslation();\n return (\n \n );\n};\n\nexport const BindingsList = (props) => {\n const { t } = useTranslation();\n return (\n \n );\n};\n\nexport const bindingType = (binding) => {\n if (!binding) {\n return undefined;\n }\n if (binding.roleRef.name.startsWith('system:')) {\n return 'system';\n }\n return binding.metadata.namespace ? 'namespace' : 'cluster';\n};\n\nexport const RoleBindingsPage = ({\n namespace = undefined,\n showTitle = true,\n mock = false,\n staticFilters,\n name,\n kind,\n createPath = `/k8s/cluster/rolebindings/~new${\n name && kind ? `?subjectName=${encodeURIComponent(name)}&subjectKind=${kind}` : ''\n }`,\n hideLabelFilter = false,\n hideNameLabelFilters = false,\n hideColumnManagement = false,\n}) => {\n const { t } = useTranslation();\n const resources = useK8sWatchResources({\n RoleBinding: {\n kind: 'RoleBinding',\n namespaced: true,\n namespace,\n isList: true,\n },\n ClusterRoleBinding: {\n kind: 'ClusterRoleBinding',\n namespaced: false,\n isList: true,\n },\n });\n\n const data = React.useMemo(() => flatten(resources), [resources]);\n\n const loaded = Object.values(resources)\n .filter((r) => !r.loadError)\n .every((r) => r.loaded);\n\n const hasCRBindings =\n resources.ClusterRoleBinding.data?.length > 0 &&\n resources.ClusterRoleBinding.loaded &&\n !resources.ClusterRoleBinding.loadError;\n\n const rowFilters = React.useMemo(\n () => [\n {\n filterGroupName: t('public~Kind'),\n type: 'role-binding-kind',\n reducer: bindingType,\n filter: (filter, binding) =>\n filter.selected?.includes(bindingType(binding)) || !filter.selected?.length,\n items: hasCRBindings\n ? [\n {\n id: 'cluster',\n title: t('public~Cluster-wide RoleBindings'),\n },\n { id: 'namespace', title: t('public~Namespace RoleBindings') },\n { id: 'system', title: t('public~System RoleBindings') },\n ]\n : [\n { id: 'namespace', title: t('public~Namespace RoleBindings') },\n { id: 'system', title: t('public~System RoleBindings') },\n ],\n },\n ],\n [hasCRBindings, t],\n );\n\n const [staticData, filteredData, onFilterChange] = useListPageFilter(\n data,\n rowFilters,\n staticFilters,\n );\n\n return (\n <>\n \n {!mock && (\n {t('public~Create binding')}\n )}\n \n \n \n \n \n \n );\n};\n\nconst NsRoleDropdown_ = (props) => {\n const openshiftFlag = props.flags[FLAGS.OPENSHIFT];\n if (flagPending(openshiftFlag)) {\n return null;\n }\n\n let kinds;\n if (props.fixed) {\n kinds = [props.selectedKeyKind];\n } else if (props.namespace) {\n kinds = ['Role', 'ClusterRole'];\n } else {\n kinds = ['ClusterRole'];\n }\n const resourceForKind = (kind) => ({ kind, namespace: kind === 'Role' ? props.namespace : null });\n const resources = _.map(kinds, resourceForKind);\n const { t } = props;\n\n return (\n \n );\n};\n\nconst NsRoleDropdown = connectToFlags(FLAGS.OPENSHIFT)(withTranslation()(NsRoleDropdown_));\n\nconst ClusterRoleDropdown = (props) => {\n const { t } = useTranslation();\n return (\n \n );\n};\n\nconst Section = ({ label, children }) => (\n
\n
{label}
\n
{children}
\n
\n);\n\nconst BaseEditRoleBinding = (props) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n\n const { fixed, saveButtonText } = props;\n\n const [data, setData] = React.useState({});\n const [inProgress, setInProgress] = React.useState(false);\n const [error, setError] = React.useState('');\n\n const subjectIndex = props.subjectIndex || 0;\n\n const existingData = _.pick(props.obj, [\n 'metadata.name',\n 'metadata.namespace',\n 'roleRef',\n 'subjects',\n ]);\n existingData.kind = props.kind;\n\n const { subjectKind, subjectName } = fixed.subjectRef || {};\n\n // constructor/didmount\n React.useEffect(() => {\n const obj = _.defaultsDeep({}, fixed, existingData, {\n apiVersion: 'rbac.authorization.k8s.io/v1',\n kind: 'RoleBinding',\n metadata: {\n name: '',\n },\n roleRef: {\n apiGroup: 'rbac.authorization.k8s.io',\n },\n subjects: [\n {\n kind: subjectKind || 'User',\n name: subjectName || '',\n apiGroup:\n subjectKind === 'ServiceAccount' || !subjectKind ? '' : 'rbac.authorization.k8s.io',\n },\n ],\n });\n setData(obj);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const getSubject = () => {\n return _.get(data, `subjects[${subjectIndex}]`);\n };\n\n const setSubject = (patch) => {\n const { kind, name, namespace } = Object.assign({}, getSubject(), patch);\n const obj = Object.assign({}, data);\n obj.subjects[subjectIndex] =\n kind === 'ServiceAccount'\n ? { kind, name, namespace }\n : { apiGroup: 'rbac.authorization.k8s.io', kind, name };\n setData(obj);\n };\n\n // substituting this.setData\n const updateData = (patch) => {\n setData((previous) => _.defaultsDeep({}, patch, previous));\n };\n\n const changeName = (e) => {\n updateData({ metadata: { name: e.target.value } });\n };\n\n const changeNamespace = (namespace) => {\n updateData({ metadata: { namespace } });\n };\n\n const changeRoleRef = (name, kindId) => {\n updateData({ roleRef: { name, kind: kindId } });\n };\n\n const changeSubjectKind = (e) => {\n setSubject({ kind: e.target.value });\n };\n\n const changeSubjectName = (e) => {\n setSubject({ name: e.target.value });\n };\n\n const changeSubjectNamespace = (namespace) => {\n setSubject({ namespace });\n };\n\n const setKind = (e) => {\n const kind = e.target.value;\n const patch = { kind };\n if (kind === 'ClusterRoleBinding') {\n patch.metadata = { namespace: null };\n }\n updateData(patch);\n };\n\n const subject = getSubject();\n\n const save = (e) => {\n e.preventDefault();\n\n const { kind, metadata, roleRef } = data;\n\n if (\n !kind ||\n !metadata.name ||\n !roleRef.kind ||\n !roleRef.name ||\n !subject.kind ||\n !subject.name ||\n (kind === 'RoleBinding' && !metadata.namespace) ||\n (subject.kind === 'ServiceAccount' && !subject.namespace)\n ) {\n setError(t('public~Please complete all fields.'));\n return;\n }\n\n setInProgress(true);\n\n const ko = kindObj(kind);\n (props.isCreate\n ? k8sCreate(ko, data)\n : k8sPatch(ko, { metadata }, [\n {\n op: 'replace',\n path: `/subjects/${subjectIndex}`,\n value: subject,\n },\n ])\n ).then(\n (obj) => {\n setInProgress(false);\n if (metadata.namespace) {\n props.setActiveNamespace(metadata.namespace);\n }\n navigate(resourceObjPath(obj, referenceFor(obj)));\n },\n (err) => {\n setError(err.message);\n setInProgress(false);\n },\n );\n };\n\n const RoleDropdown = data.kind === 'RoleBinding' ? NsRoleDropdown : ClusterRoleDropdown;\n\n const title = `${props.titleVerbAndKind}`;\n\n const isSubjectDisabled = fixed?.subjectRef?.subjectName ? true : false;\n\n const bindingKinds = [\n {\n value: 'RoleBinding',\n title: t('public~Namespace role binding (RoleBinding)'),\n desc: t(\n 'public~Grant the permissions to a user or set of users within the selected namespace.',\n ),\n },\n {\n value: 'ClusterRoleBinding',\n title: t('public~Cluster-wide role binding (ClusterRoleBinding)'),\n desc: t(\n 'public~Grant the permissions to a user or set of users at the cluster level and in all namespaces.',\n ),\n },\n ];\n\n const subjectKinds = [\n { value: 'User', title: t('public~User'), disabled: false },\n { value: 'Group', title: t('public~Group'), disabled: false },\n {\n value: 'ServiceAccount',\n title: t('public~ServiceAccount'),\n disabled: false,\n },\n ];\n\n return (\n
\n \n {title}\n \n {title}
}\n helpText={t(\n 'public~Associate a user/group to the selected role to define the type of access and resources that are allowed.',\n )}\n />\n
\n
\n {!_.get(fixed, 'kind') && (\n
\n \n
\n )}\n\n
\n\n
\n
\n \n {_.get(fixed, 'metadata.name') ? (\n \n ) : (\n \n )}\n
\n {data?.kind === 'RoleBinding' && (\n
\n \n \n
\n )}\n
\n\n
\n\n
\n
\n \n \n
\n
\n\n
\n\n
\n
\n ({\n ...obj,\n disabled: isSubjectDisabled,\n }))}\n onChange={changeSubjectKind}\n />\n
\n {subject?.kind === 'ServiceAccount' && (\n
\n \n \n
\n )}\n
\n \n \n
\n
\n\n
\n\n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport const CreateRoleBinding = () => {\n const params = useParams();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const roleKind = searchParams.get('rolekind');\n const roleName = searchParams.get('rolename');\n const subjectName = searchParams.get('subjectName');\n const subjectKind = searchParams.get('subjectKind');\n const [namespace, setActiveNamespace] = useActiveNamespace();\n const metadata = { namespace };\n const clusterAllowed = useAccessReview({\n group: ClusterRoleBindingModel.apiGroup,\n resource: ClusterRoleBindingModel.plural,\n verb: 'create',\n });\n const fixed = {\n kind: params.ns || roleKind === 'Role' || !clusterAllowed ? 'RoleBinding' : undefined,\n metadata: { namespace: params.ns },\n roleRef: { kind: roleKind, name: roleName },\n subjectRef: { subjectName, subjectKind },\n };\n const { t } = useTranslation();\n return (\n \n );\n};\n\nconst getSubjectIndex = () => {\n const subjectIndex = getQueryArgument('subjectIndex') || '0';\n return parseInt(subjectIndex, 10);\n};\n\nconst BindingLoadingWrapper = (props) => {\n const [, setActiveNamespace] = useActiveNamespace();\n const fixed = {};\n _.each(props.fixedKeys, (k) => (fixed[k] = _.get(props.obj.data, k)));\n return (\n \n \n \n );\n};\n\nexport const EditRoleBinding = ({ kind }) => {\n const { t } = useTranslation();\n const params = useParams();\n return (\n \n \n \n );\n};\n\nexport const CopyRoleBinding = ({ kind }) => {\n const { t } = useTranslation();\n const params = useParams();\n return (\n \n \n \n );\n};\n","import { useEffect, useState } from 'react';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore: FIXME missing exports due to out-of-sync @types/react-redux version\nimport { useSelector } from 'react-redux';\nimport { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';\nimport { ClusterVersionModel } from '@console/internal/models';\nimport { referenceForModel, ClusterVersionKind } from '@console/internal/module/k8s';\nimport { getFlagsObject } from '@console/internal/reducers/features';\nimport { RootState } from '@console/internal/redux';\nimport { FLAGS } from '../constants';\n\nconst getClusterVersionFlag = (state: RootState) => getFlagsObject(state)?.[FLAGS.CLUSTER_VERSION];\n\nexport const useClusterVersion = (): ClusterVersionKind => {\n const isClusterVersion = useSelector(getClusterVersionFlag);\n const resource = isClusterVersion\n ? { kind: referenceForModel(ClusterVersionModel), name: 'version', isList: false }\n : null;\n const [cvData, cvLoaded, cvLoadError] = useK8sWatchResource(resource);\n return cvLoaded && !cvLoadError ? cvData : null;\n};\n\nexport const useOpenShiftVersion = (): string => {\n const [openshiftVersion, setOpenShiftVersion] = useState();\n const clusterVersion = useClusterVersion();\n const version = clusterVersion?.status?.history?.[0]?.version;\n useEffect(() => {\n setOpenShiftVersion(version);\n }, [version]);\n return openshiftVersion;\n};\n","export * from './catalog-utils';\nexport * from './category-utils';\nexport * from './filter-utils';\nexport * from './types';\n","import { ExtensionK8sGroupModel } from '../api/common-types';\nimport { Extension, ExtensionDeclaration } from '../types';\n\nexport enum ModelBadge {\n DEV = 'dev',\n TECH = 'tech',\n}\n\n/** Customize the display of models by overriding values retrieved and generated through API discovery. */\nexport type ModelMetadata = ExtensionDeclaration<\n 'console.model-metadata',\n {\n /** The model to customize. May specify only a group, or optional version and kind. */\n model: ExtensionK8sGroupModel;\n /** Whether to consider this model reference as tech preview or dev preview. */\n badge?: ModelBadge;\n /** The color to associate to this model. */\n color?: string;\n /** Override the label. Requires `kind` be provided. */\n label?: string;\n /** Override the plural label. Requires `kind` be provided. */\n labelPlural?: string;\n /** Customize the abbreviation. Defaults to All uppercase chars in the kind up to 4 characters long. Requires `kind` be provided. */\n abbr?: string;\n }\n>;\n\n// Type guards\n\nexport const isModelMetadata = (e: Extension): e is ModelMetadata =>\n e.type === 'console.model-metadata';\n","import * as React from 'react';\nimport { StatusComponentProps } from '../../../extensions/console-types';\nimport PopoverStatus from './PopoverStatus';\nimport StatusIconAndText from './StatusIconAndText';\n\ntype GenericStatusProps = StatusComponentProps & {\n Icon: React.ComponentType<{ title?: string }>;\n popoverTitle?: string;\n noTooltip?: boolean;\n};\n\n/**\n * Component for a generic status popover\n * @param {string} [title] - (optional) status text\n * @param {boolean} [iconOnly] - (optional) if true, only displays icon\n * @param {boolean} [noTooltip] - (optional) if true, tooltip won't be displayed\n * @param {string} [className] - (optional) additional class name for the component\n * @param {string} [popoverTitle] - (optional) title for popover\n * @param {React.ComponentType} Icon - icon to be displayed\n * @param {ReactNode} [children] - (optional) children for the component\n * @example\n * ```tsx\n * \n * ```\n */\nconst GenericStatus: React.FC = (props) => {\n const { Icon, children, popoverTitle, title, noTooltip, iconOnly, ...restProps } = props;\n const renderIcon = iconOnly && !noTooltip ? : ;\n const statusBody = (\n \n );\n return React.Children.toArray(children).length ? (\n \n {children}\n \n ) : (\n statusBody\n );\n};\n\nexport default GenericStatus;\n","import * as React from 'react';\nimport { InProgressIcon } from '@patternfly/react-icons';\nimport { StatusComponentProps } from '../../../extensions/console-types';\nimport GenericStatus from './GenericStatus';\nimport { RedExclamationCircleIcon, GreenCheckCircleIcon, BlueInfoCircleIcon } from './icons';\n\n/**\n * Component for displaying an error status popover.\n * @param {string} [title] - (optional) status text\n * @param {boolean} [iconOnly] - (optional) if true, only displays icon\n * @param {boolean} [noTooltip] - (optional) if true, tooltip is not displayed\n * @param {string} [className] - (optional) additional class name for the component\n * @param {string} [popoverTitle] - (optional) title for popover\n * @example\n * ```tsx\n * \n * ```\n */\nexport const ErrorStatus: React.FC = (props) => (\n \n);\nErrorStatus.displayName = 'ErrorStatus';\n\n/**\n * Component for displaying an information status popover.\n * @param {string} [title] - (optional) status text\n * @param {boolean} [iconOnly] - (optional) if true, only displays icon\n * @param {boolean} [noTooltip] - (optional) if true, tooltip is not displayed\n * @param {string} [className] - (optional) additional class name for the component\n * @param {string} [popoverTitle] - (optional) title for popover\n * @example\n * ```tsx\n * \n * ```\n */\nexport const InfoStatus: React.FC = (props) => (\n \n);\nInfoStatus.displayName = 'InfoStatus';\n\n/**\n * Component for displaying a progressing status popover.\n * @param {string} [title] - (optional) status text\n * @param {boolean} [iconOnly] - (optional) if true, only displays icon\n * @param {boolean} [noTooltip] - (optional) if true, tooltip is not displayed\n * @param {string} [className] - (optional) additional class name for the component\n * @param {string} [popoverTitle] - (optional) title for popover\n * @example\n * ```tsx\n * \n * ```\n */\nexport const ProgressStatus: React.FC = (props) => (\n \n);\nProgressStatus.displayName = 'ProgressStatus';\n\n/**\n * Component for displaying a success status popover.\n * @param {string} [title] - (optional) status text\n * @param {boolean} [iconOnly] - (optional) if true, only displays icon\n * @param {boolean} [noTooltip] - (optional) if true, tooltip is not displayed\n * @param {string} [className] - (optional) additional class name for the component\n * @param {string} [popoverTitle] - (optional) title for popover\n * @example\n * ```tsx\n * \n * ```\n */\nexport const SuccessStatus: React.FC = (props) => (\n \n);\nSuccessStatus.displayName = 'SuccessStatus';\n","import { ONE_HOUR, ONE_DAY } from './time';\n\nexport enum DurationKeys {\n OneHour = 'OneHour',\n SixHours = 'SixHours',\n TwentyFourHours = 'TwentyFourHours',\n}\n\nexport const DURATION_VALUES = {\n [DurationKeys.OneHour]: ONE_HOUR,\n [DurationKeys.SixHours]: 6 * ONE_HOUR,\n [DurationKeys.TwentyFourHours]: ONE_DAY,\n};\n\nexport const DEFAULT_DURATION_KEY = DurationKeys.OneHour;\nexport const DEFAULT_DURATION = DURATION_VALUES[DEFAULT_DURATION_KEY];\n\nexport const TOAST_TIMEOUT_LONG = 20000;\nexport const TOAST_TIMEOUT_DEFAULT = true;\n","import * as React from 'react';\nimport {\n Button,\n Divider,\n EmptyState,\n EmptyStateBody,\n Menu,\n MenuContent,\n MenuFooter,\n MenuGroup,\n MenuSearch,\n MenuSearchInput,\n MenuItem,\n MenuList,\n Switch,\n TextInput,\n EmptyStateActions,\n EmptyStateHeader,\n EmptyStateFooter,\n} from '@patternfly/react-core';\nimport fuzzysearch from 'fuzzysearch';\nimport { useTranslation } from 'react-i18next';\nimport { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';\nimport { ProjectModel, NamespaceModel } from '@console/internal/models';\nimport { K8sResourceKind } from '@console/internal/module/k8s';\nimport {\n useUserSettingsCompatibility,\n ALL_NAMESPACES_KEY,\n NAMESPACE_USERSETTINGS_PREFIX,\n NAMESPACE_LOCAL_STORAGE_KEY,\n alphanumericCompare,\n} from '@console/shared';\nimport { FLAGS } from '@console/shared/src/constants';\nimport { useFlag } from '@console/shared/src/hooks/flag';\nimport { isSystemNamespace } from './filters';\nimport NamespaceMenuToggle from './NamespaceMenuToggle';\nimport './NamespaceDropdown.scss';\n\nexport const NoResults: React.FC<{\n isProjects: boolean;\n onClear: (event: React.MouseEvent) => void;\n}> = ({ isProjects, onClear }) => {\n const { t } = useTranslation();\n return (\n <>\n \n \n \n {isProjects\n ? t('console-shared~No projects found')\n : t('console-shared~No namespaces found')}\n \n }\n headingLevel=\"h4\"\n />\n {t('console-shared~No results match the filter criteria.')}\n \n \n \n {t('console-shared~Clear filters')}\n \n \n \n \n \n );\n};\n\n/* ****************************************** */\n\nexport const Filter: React.FC<{\n filterRef: React.Ref;\n onFilterChange: (filterText: string) => void;\n filterText: string;\n isProject: boolean;\n}> = ({ filterText, filterRef, onFilterChange, isProject }) => {\n const { t } = useTranslation();\n return (\n \n \n onFilterChange(value)}\n ref={filterRef}\n />\n \n \n );\n};\n\n/* ****************************************** */\n\nconst SystemSwitch: React.FC<{\n hasSystemNamespaces: boolean;\n isProject: boolean;\n isChecked: boolean;\n onChange: (isChecked: boolean) => void;\n}> = ({ hasSystemNamespaces, isProject, isChecked, onChange }) => {\n const { t } = useTranslation();\n return hasSystemNamespaces ? (\n <>\n \n \n \n onChange(value)}\n className=\"pf-v5-c-select__menu-item pf-m-action co-namespace-dropdown__switch\"\n />\n \n \n \n ) : null;\n};\n\n/* ****************************************** */\n\nexport const NamespaceGroup: React.FC<{\n isProjects: boolean;\n isFavorites?: boolean;\n options: { key: string; title: string }[];\n selectedKey: string;\n favorites?: { [key: string]: boolean }[];\n canFavorite?: boolean;\n}> = ({ isProjects, isFavorites, options, selectedKey, favorites, canFavorite = true }) => {\n const { t } = useTranslation();\n let label = isProjects ? t('console-shared~Projects') : t('console-shared~Namespaces');\n if (isFavorites) {\n label = t('console-shared~Favorites');\n }\n\n return options.length === 0 ? null : (\n <>\n \n \n \n {options.map((option) => {\n return (\n \n {option.title}\n \n );\n })}\n \n \n \n );\n};\n\n/* ****************************************** */\n\n// The items in the footer are not accessible via the keyboard.\n// This is being tracked in: https://github.com/patternfly/patternfly-react/issues/6031\n\nexport const Footer: React.FC<{\n canCreateNew: boolean;\n isProject?: boolean;\n setOpen: (isOpen: boolean) => void;\n onCreateNew: () => void;\n}> = ({ canCreateNew, isProject, setOpen, onCreateNew }) => {\n const { t } = useTranslation();\n return (\n <>\n {canCreateNew ? (\n \n {\n {\n setOpen(false);\n onCreateNew();\n }}\n data-test-dropdown-menu=\"#CREATE_RESOURCE_ACTION#\"\n >\n {isProject\n ? t('console-shared~Create Project')\n : t('console-shared~Create Namespace')}\n \n }\n \n ) : null}\n \n );\n};\n\n/* ****************************************** */\n\nconst NamespaceMenu: React.FC<{\n setOpen: (isOpen: boolean) => void;\n onSelect: (event: React.MouseEvent, itemId: string) => void;\n selected?: string;\n isProjects: boolean;\n allNamespacesTitle: string;\n onCreateNew: () => void;\n menuRef: React.MutableRefObject;\n}> = ({ setOpen, onSelect, selected, isProjects, allNamespacesTitle, onCreateNew, menuRef }) => {\n const filterRef = React.useRef(null);\n\n const [filterText, setFilterText] = React.useState('');\n\n // Bookmarking / favorites (note in <= 4.8 this feature was known as bookmarking)\n const favoritesUserSettingsKey = `${NAMESPACE_USERSETTINGS_PREFIX}.bookmarks`;\n const systemNamespacesSettingsKey = `${NAMESPACE_USERSETTINGS_PREFIX}.systemNamespace`;\n const favoriteStorageKey = `${NAMESPACE_LOCAL_STORAGE_KEY}-bookmarks`;\n const systemNamespaceKey = `${NAMESPACE_LOCAL_STORAGE_KEY}-systemNamespace`;\n const [favorites, setFavorites] = useUserSettingsCompatibility(\n favoritesUserSettingsKey,\n favoriteStorageKey,\n undefined,\n true,\n );\n\n const canList: boolean = useFlag(FLAGS.CAN_LIST_NS);\n const canCreate: boolean = useFlag(isProjects ? FLAGS.CAN_CREATE_PROJECT : FLAGS.CAN_CREATE_NS);\n const [options, optionsLoaded] = useK8sWatchResource({\n isList: true,\n kind: isProjects ? ProjectModel.kind : NamespaceModel.kind,\n optional: true,\n });\n\n const optionItems = React.useMemo(() => {\n if (!optionsLoaded) {\n return [];\n }\n const items = options.map((item) => {\n const { name } = item.metadata;\n return { title: name, key: name };\n });\n if (!items.some((option) => option.title === selected) && selected !== ALL_NAMESPACES_KEY) {\n items.push({ title: selected, key: selected }); // Add current namespace if it isn't included\n }\n items.sort((a, b) => alphanumericCompare(a.title, b.title));\n\n if (canList) {\n items.unshift({ title: allNamespacesTitle, key: ALL_NAMESPACES_KEY });\n }\n return items;\n }, [allNamespacesTitle, canList, options, optionsLoaded, selected]);\n\n const hasSystemNamespaces = React.useMemo(\n () => optionItems.some((option) => isSystemNamespace(option)),\n [optionItems],\n );\n\n const onSetFavorite = React.useCallback(\n (key, active) => {\n setFavorites((oldFavorites) => ({\n ...oldFavorites,\n [key]: active ? true : undefined,\n }));\n },\n [setFavorites],\n );\n\n const [systemNamespaces, setSystemNamespaces] = useUserSettingsCompatibility(\n systemNamespacesSettingsKey,\n systemNamespaceKey,\n false,\n true,\n );\n\n const isFavorite = React.useCallback((option) => !!favorites?.[option.key], [favorites]);\n\n const isOptionShown = React.useCallback(\n (option, checkIsFavorite: boolean) => {\n const containsFilterText = fuzzysearch(filterText.toLowerCase(), option.title.toLowerCase());\n\n if (checkIsFavorite) {\n return containsFilterText && isFavorite(option);\n }\n return (\n containsFilterText &&\n (systemNamespaces || !isSystemNamespace(option)) &&\n (!checkIsFavorite || isFavorite(option))\n );\n },\n [filterText, isFavorite, systemNamespaces],\n );\n\n const { filteredOptions, filteredFavorites } = React.useMemo(\n () =>\n optionItems.reduce(\n (filtered, option) => {\n if (isOptionShown(option, false)) {\n filtered.filteredOptions.push(option);\n }\n if (isOptionShown(option, true)) {\n filtered.filteredFavorites.push(option);\n }\n return filtered;\n },\n { filteredOptions: [], filteredFavorites: [] },\n ),\n [isOptionShown, optionItems],\n );\n\n return (\n {\n setOpen(false);\n onSelect(event, itemId);\n }}\n onActionClick={(event: React.MouseEvent, itemID: string) => {\n const isCurrentFavorite = favorites?.[itemID];\n onSetFavorite(itemID, !isCurrentFavorite);\n }}\n activeItemId={selected}\n data-test=\"namespace-dropdown-menu\"\n isScrollable\n >\n \n \n {filteredOptions.length === 0 ? (\n {\n event.preventDefault();\n event.stopPropagation();\n setFilterText('');\n filterRef.current?.focus();\n }}\n />\n ) : null}\n \n \n \n \n \n \n );\n};\n\n/* ****************************************** */\n\nconst NamespaceDropdown: React.FC = ({\n disabled,\n isProjects,\n onSelect,\n selected,\n onCreateNew,\n shortCut,\n}) => {\n const { t } = useTranslation();\n const menuRef = React.useRef(null);\n const [isOpen, setOpen] = React.useState(false);\n const allNamespacesTitle = isProjects\n ? t('console-shared~All Projects')\n : t('console-shared~All Namespaces');\n\n const title = selected === ALL_NAMESPACES_KEY ? allNamespacesTitle : selected;\n\n const menuProps = {\n setOpen,\n onSelect,\n selected,\n isProjects,\n allNamespacesTitle,\n onCreateNew,\n menuRef,\n children: <>,\n };\n\n return (\n
\n }\n menuRef={menuRef}\n isOpen={isOpen}\n title={`${\n isProjects ? t('console-shared~Project') : t('console-shared~Namespace')\n }: ${title}`}\n onToggle={(menuState) => {\n setOpen(menuState);\n }}\n shortCut={shortCut}\n />\n
\n );\n};\n\ntype NamespaceDropdownProps = {\n disabled?: boolean;\n isProjects?: boolean; // Does this drop down contain projects. If not, assuming namespaces\n onSelect?: (event: React.MouseEvent | React.ChangeEvent, value: string) => void;\n onCreateNew?: () => void;\n shortCut?: string;\n selected?: string;\n};\n\nexport default NamespaceDropdown;\n","export * from './add-event-source';\nexport * from './add-trigger';\nexport * from './add-subscription';\nexport * from './sink-source';\nexport * from './knatify';\n","import { useUserSettings } from '../../hooks/useUserSettings';\n\nexport enum GettingStartedShowState {\n SHOW = 'show',\n HIDE = 'hide',\n DISAPPEAR = 'disappear',\n}\n\nexport const useGettingStartedShowState = (\n key: string,\n defaultValue = GettingStartedShowState.SHOW,\n) => useUserSettings(key, defaultValue, true);\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport {\n Brand,\n Masthead as PfMasthead,\n MastheadBrand,\n MastheadContent,\n MastheadMain,\n MastheadToggle,\n PageToggleButton,\n} from '@patternfly/react-core';\nimport { BarsIcon } from '@patternfly/react-icons/dist/esm/icons/bars-icon';\nimport { useNavigate } from 'react-router-dom-v5-compat';\n\nimport { MastheadToolbar } from './masthead-toolbar';\nimport okdLogoImg from '../imgs/okd-logo.svg';\nimport openshiftLogoImg from '../imgs/openshift-logo.svg';\nimport onlineLogoImg from '../imgs/openshift-online-logo.svg';\nimport dedicatedLogoImg from '../imgs/openshift-dedicated-logo.svg';\nimport rosaLogoImg from '../imgs/openshift-service-on-aws-logo.svg';\n\nexport const getBrandingDetails = () => {\n let logoImg, productName;\n // Webpack won't bundle these images if we don't directly reference them, hence the switch\n switch (window.SERVER_FLAGS.branding) {\n case 'openshift':\n logoImg = openshiftLogoImg;\n productName = 'Red Hat OpenShift';\n break;\n case 'ocp':\n logoImg = openshiftLogoImg;\n productName = 'Red Hat OpenShift';\n break;\n case 'online':\n logoImg = onlineLogoImg;\n productName = 'Red Hat OpenShift Online';\n break;\n case 'dedicated':\n logoImg = dedicatedLogoImg;\n productName = 'Red Hat OpenShift Dedicated';\n break;\n case 'azure':\n logoImg = openshiftLogoImg;\n productName = 'Azure Red Hat OpenShift';\n break;\n case 'rosa':\n logoImg = rosaLogoImg;\n productName = 'Red Hat OpenShift Service on AWS';\n break;\n default:\n logoImg = okdLogoImg;\n productName = 'OKD';\n }\n if (window.SERVER_FLAGS.customLogoURL) {\n logoImg = window.SERVER_FLAGS.customLogoURL;\n }\n if (window.SERVER_FLAGS.customProductName) {\n productName = window.SERVER_FLAGS.customProductName;\n }\n return { logoImg, productName };\n};\n\nexport const Masthead = React.memo(({ isMastheadStacked, isNavOpen, onNavToggle }) => {\n const details = getBrandingDetails();\n const navigate = useNavigate();\n const defaultRoute = '/';\n const logoProps = {\n href: defaultRoute,\n // use onClick to prevent browser reload\n onClick: (e) => {\n e.preventDefault();\n navigate(defaultRoute);\n },\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n});\n\nMasthead.propTypes = {\n isMastheadStacked: PropTypes.bool,\n isNavOpen: PropTypes.bool,\n onNavToggle: PropTypes.func,\n};\n","import { AngleDoubleDownIcon } from '@patternfly/react-icons/dist/esm/icons/angle-double-down-icon';\nimport { AngleDoubleUpIcon } from '@patternfly/react-icons/dist/esm/icons/angle-double-up-icon';\nimport { CriticalRiskIcon } from '@patternfly/react-icons/dist/esm/icons/critical-risk-icon';\nimport { EqualsIcon } from '@patternfly/react-icons/dist/esm/icons/equals-icon';\nimport { global_palette_blue_300 as blue300 } from '@patternfly/react-tokens/dist/js/global_palette_blue_300';\nimport { global_palette_blue_50 as blue50 } from '@patternfly/react-tokens/dist/js/global_palette_blue_50';\nimport { global_palette_gold_400 as gold400 } from '@patternfly/react-tokens/dist/js/global_palette_gold_400';\nimport { global_palette_orange_300 as orange300 } from '@patternfly/react-tokens/dist/js/global_palette_orange_300';\nimport { global_palette_red_200 as red200 } from '@patternfly/react-tokens/dist/js/global_palette_red_200';\nimport * as _ from 'lodash';\nimport { PrometheusResponse } from '@console/internal/components/graphs';\n\nexport const riskIcons = {\n low: AngleDoubleDownIcon,\n moderate: EqualsIcon,\n important: AngleDoubleUpIcon,\n critical: CriticalRiskIcon,\n};\n\nexport const colorScale = [red200.value, orange300.value, gold400.value, blue50.value];\n\nexport const legendColorScale = {\n low: blue300.value,\n moderate: gold400.value,\n important: orange300.value,\n critical: red200.value,\n};\n\nexport const riskSorting = {\n low: 0,\n moderate: 1,\n important: 2,\n critical: 3,\n};\n\ntype Metrics = {\n critical?: number;\n important?: number;\n low?: number;\n moderate?: number;\n};\n\ntype Conditions = {\n Available?: number;\n Degraded?: number;\n Disabled?: number;\n Progressing?: number;\n UploadDegraded?: number;\n};\n\nexport const mapMetrics = (response: PrometheusResponse): Metrics => {\n const values: Metrics = {};\n for (let i = 0; i < response?.data.result.length; i++) {\n const value = response.data?.result?.[i]?.value?.[1];\n if (_.isNil(value)) {\n return null;\n }\n const metricName = response.data?.result?.[i]?.metric?.metric;\n if (values[metricName] === -1 || values[metricName] === undefined) {\n values[metricName] = parseInt(value, 10);\n }\n }\n\n return values;\n};\n\nexport const mapConditions = (response: PrometheusResponse): Conditions =>\n response?.data?.result && Array.isArray(response.data.result)\n ? response.data.result.reduce((prev, cur) => {\n if (cur?.metric?.condition && cur?.value?.[1]) {\n prev[cur.metric.condition] = parseInt(cur.value[1], 10);\n }\n return prev;\n }, {})\n : {};\n\n// An error occurred while requesting Insights results (e.g. IO is turned off)\nexport const isError = (values: Metrics) => _.isEmpty(values);\n\n// Insights Operator has been just initialized and waiting for the first results\nexport const isWaiting = (values: Metrics) =>\n Object.values(values).some((cur: number) => cur === -1);\n\nexport const errorUpload = (conditions: Conditions) =>\n !!conditions.Degraded && !!conditions.UploadDegraded;\n","import * as _ from 'lodash';\nimport { K8sResourceKind, referenceFor } from '@console/internal/module/k8s';\nimport { useK8sModel } from '../hooks/useK8sModel';\n\nexport enum ResourceUtilizationQuery {\n MEMORY = 'MEMORY',\n CPU = 'CPU',\n FILESYSTEM = 'FILESYSTEM',\n NETWORK_IN = 'NETWORK_IN',\n NETWORK_OUT = 'NETWORK_OUT',\n QUOTA_LIMIT = 'QUOTA_LIMIT',\n QUOTA_REQUEST = 'QUOTA_REQUEST',\n}\n\nconst podMetricsQueries = {\n [ResourceUtilizationQuery.MEMORY]: _.template(\n \"sum(container_memory_working_set_bytes{pod='<%= name %>',container=''}) BY (pod)\",\n ),\n [ResourceUtilizationQuery.CPU]: _.template(\"pod:container_cpu_usage:sum{pod='<%= name %>'}\"),\n [ResourceUtilizationQuery.FILESYSTEM]: _.template(\n \"pod:container_fs_usage_bytes:sum{pod='<%= name %>'}\",\n ),\n [ResourceUtilizationQuery.NETWORK_IN]: _.template(\n \"pod_interface_network:container_network_receive_bytes:irate5m{pod='<%= name %>'}\",\n ),\n [ResourceUtilizationQuery.NETWORK_OUT]: _.template(\n \"pod_interface_network:container_network_transmit_bytes_total:irate5m{pod='<%= name %>'}\",\n ),\n [ResourceUtilizationQuery.QUOTA_LIMIT]: _.template(\n \"sum by (pod, resource) (kube_pod_resource_limit{resource='<%= resource %>',pod='<%= name %>'})\",\n ),\n [ResourceUtilizationQuery.QUOTA_REQUEST]: _.template(\n \"sum by (pod, resource) (kube_pod_resource_request{resource='<%= resource %>',pod='<%= name %>'})\",\n ),\n};\n\nconst podControllerMetricsQueries = {\n [ResourceUtilizationQuery.MEMORY]: _.template(\n \"sum(container_memory_working_set_bytes{container!=''} * on(pod) group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{workload='<%= name %>', workload_type='<%= type %>'}) by (pod)\",\n ),\n [ResourceUtilizationQuery.CPU]: _.template(\n \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{} * on(pod) group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{workload='<%= name %>', workload_type='<%= type %>'}) by (pod)\",\n ),\n [ResourceUtilizationQuery.FILESYSTEM]: _.template(\n \"sum(pod:container_fs_usage_bytes:sum * on(pod) group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{workload='<%= name %>', workload_type='<%= type %>'}) by (pod)\",\n ),\n [ResourceUtilizationQuery.NETWORK_IN]: _.template(\n \"sum(irate(container_network_receive_bytes_total[5m]) * on (pod) group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{workload='<%= name %>', workload_type='<%= type %>'}) by (pod)\",\n ),\n [ResourceUtilizationQuery.NETWORK_OUT]: _.template(\n \"sum(irate(container_network_transmit_bytes_total[5m]) * on (pod) group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{workload='<%= name %>', workload_type='<%= type %>'}) by (pod)\",\n ),\n};\n\nexport const getPodMetricsQueries = (name: string): { [key: string]: string[] } => ({\n [ResourceUtilizationQuery.MEMORY]: [\n podMetricsQueries[ResourceUtilizationQuery.MEMORY]({ name }),\n podMetricsQueries[ResourceUtilizationQuery.QUOTA_LIMIT]({ name, resource: 'memory' }),\n podMetricsQueries[ResourceUtilizationQuery.QUOTA_REQUEST]({ name, resource: 'memmory' }),\n ],\n [ResourceUtilizationQuery.CPU]: [\n podMetricsQueries[ResourceUtilizationQuery.CPU]({ name }),\n podMetricsQueries[ResourceUtilizationQuery.QUOTA_LIMIT]({ name, resource: 'cpu' }),\n podMetricsQueries[ResourceUtilizationQuery.QUOTA_REQUEST]({ name, resource: 'cpu' }),\n ],\n [ResourceUtilizationQuery.FILESYSTEM]: [\n podMetricsQueries[ResourceUtilizationQuery.FILESYSTEM]({ name }),\n ],\n [ResourceUtilizationQuery.NETWORK_IN]: [\n podMetricsQueries[ResourceUtilizationQuery.NETWORK_IN]({ name }),\n ],\n [ResourceUtilizationQuery.NETWORK_OUT]: [\n podMetricsQueries[ResourceUtilizationQuery.NETWORK_OUT]({ name }),\n ],\n});\n\nexport const getPodControllerMetricsQueries = (\n name: string,\n type: string,\n): { [key: string]: string[] } => ({\n [ResourceUtilizationQuery.MEMORY]: [\n podControllerMetricsQueries[ResourceUtilizationQuery.MEMORY]({ name, type }),\n ],\n [ResourceUtilizationQuery.CPU]: [\n podControllerMetricsQueries[ResourceUtilizationQuery.CPU]({ name, type }),\n ],\n [ResourceUtilizationQuery.FILESYSTEM]: [\n podControllerMetricsQueries[ResourceUtilizationQuery.FILESYSTEM]({ name, type }),\n ],\n [ResourceUtilizationQuery.NETWORK_IN]: [\n podControllerMetricsQueries[ResourceUtilizationQuery.NETWORK_IN]({ name, type }),\n ],\n [ResourceUtilizationQuery.NETWORK_OUT]: [\n podControllerMetricsQueries[ResourceUtilizationQuery.NETWORK_OUT]({ name, type }),\n ],\n});\n\nexport const useResourceMetricsQueries = (obj: K8sResourceKind): { [key: string]: string[] } => {\n const [model] = useK8sModel(referenceFor(obj));\n if (model) {\n return model.id === 'pod'\n ? getPodMetricsQueries(obj.metadata.name)\n : getPodControllerMetricsQueries(obj.metadata.name, model.id);\n }\n return null;\n};\n","export const IDEAL_CELL_WIDTH = 260;\nexport const IDEAL_SPACE_BW_TILES = 25;\nexport const HEADER_FIXED_HEIGHT = 30;\nexport const OVERSCAN_ROW_COUNT = 6;\nexport const DEFAULT_CELL_HEIGHT = 250;\nexport const ESTIMATED_ROW_SIZE = 270;\n","import { applyCodeRefSymbol } from '@console/dynamic-plugin-sdk/src/coderefs/coderef-resolver';\n\nexport const eventSourceBreadcrumbsProvider = applyCodeRefSymbol(() =>\n import(\n './useEventSourceDetailPageBreadcrumbs' /* webpackChunkName: \"event-source-breadcrumbs-provider\" */\n ).then((m) => m.useEventSourceDetailPageBreadcrumbs),\n);\n\nexport const eventSourceModelsProviderForBreadcrumbs = applyCodeRefSymbol(() =>\n import(\n './useEventSourceDetailPageBreadcrumbs' /* webpackChunkName: \"event-source-models-provider-breadcrumbs\" */\n ).then((m) => m.getEventSourceModelsForBreadcrumbs),\n);\n\nexport const channelBreadcrumbsProvider = applyCodeRefSymbol(() =>\n import(\n './useChannelDetailPageBreadcrumbs' /* webpackChunkName: \"channel-breadcrumbs-provider\" */\n ).then((m) => m.useChannelDetailPageBreadcrumbs),\n);\n\nexport const channelModelsProviderForBreadcrumbs = applyCodeRefSymbol(() =>\n import(\n '../utils/fetch-dynamic-eventsources-utils' /* webpackChunkName: \"channel-models-provider-breadcrumbs\" */\n ).then((m) => m.getChannelModels),\n);\n\nexport const brokerBreadcrumbsProvider = applyCodeRefSymbol(() =>\n import(\n './useBrokerDetailPageBreadcrumbs' /* webpackChunkName: \"broker-breadcrumbs-provider\" */\n ).then((m) => m.useBrokerDetailPageBreadcrumbs),\n);\n\nexport const brokerModelProviderForBreadcrumbs = applyCodeRefSymbol(() =>\n import(\n './useBrokerDetailPageBreadcrumbs' /* webpackChunkName: \"broker-model-provider-breadcrumbs\" */\n ).then((m) => m.getBrokerModel),\n);\n","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { useParams, useLocation } from 'react-router-dom-v5-compat';\nimport { getBadgeFromType, getTitleForNodeKind } from '@console/shared';\nimport { PageTitleContext } from '@console/shared/src/components/pagetitle/PageTitleContext';\nimport { connectToPlural } from '../kinds';\nimport { ErrorPage404 } from './error';\nimport { withStartGuide } from './start-guide';\nimport { AsyncComponent, LoadingBox } from './utils';\nimport { DefaultPage, DefaultDetailsPage } from './default-resource';\nimport { getResourceListPages, getResourceDetailsPages } from './resource-pages';\nimport {\n apiVersionForReference,\n isGroupVersionKind,\n K8sKind,\n K8sResourceKindReference,\n kindForReference,\n referenceForExtensionModel,\n referenceForModel,\n} from '../module/k8s';\nimport {\n useExtensions,\n isResourceDetailsPage,\n ResourceDetailsPage as ResourceDetailsPageExt,\n ResourceListPage as ResourceListPageExt,\n isResourceListPage,\n} from '@console/plugin-sdk';\nimport {\n ResourceDetailsPage as DynamicResourceDetailsPage,\n isResourceDetailsPage as isDynamicResourceDetailsPage,\n ResourceListPage as DynamicResourceListPage,\n isResourceListPage as isDynamicResourceListPage,\n} from '@console/dynamic-plugin-sdk';\n\n// Parameters can be in pros.params (in URL) or in props.route (attribute of Route tag)\nconst allParams = (props) => Object.assign({}, _.get(props, 'params'), props);\n\nconst ResourceListPage_ = connectToPlural(\n withStartGuide((props: ResourceListPageProps) => {\n const resourceListPageExtensions = useExtensions(isResourceListPage);\n const dynamicResourceListPageExtensions = useExtensions(\n isDynamicResourceListPage,\n );\n const { kindObj, kindsInFlight, modelRef, noProjectsAvailable, ns, plural } = allParams(props);\n\n if (!kindObj) {\n if (kindsInFlight) {\n return ;\n }\n const missingType = isGroupVersionKind(plural)\n ? `\"${kindForReference(plural)}\" in \"${apiVersionForReference(plural)}\"`\n : `\"${plural}\"`;\n return (\n \n );\n }\n const ref = referenceForModel(kindObj);\n const componentLoader = getResourceListPages(\n resourceListPageExtensions,\n dynamicResourceListPageExtensions,\n ).get(ref, () => Promise.resolve(DefaultPage));\n\n return (\n
\n \n {kindObj.labelPlural}\n \n \n
\n );\n }),\n);\n\nexport const ResourceListPage = (props) => {\n const params = useParams();\n return ;\n};\n\nconst ResourceDetailsPage_ = connectToPlural((props: ResourceDetailsPageProps) => {\n const detailsPageExtensions = useExtensions(isResourceDetailsPage);\n const dynamicResourceDetailsPageExtensions = useExtensions(\n isDynamicResourceDetailsPage,\n );\n const location = useLocation();\n\n const { name, ns, kindObj, kindsInFlight } = allParams(props);\n const decodedName = decodeURIComponent(name);\n\n if (!name || !kindObj) {\n if (kindsInFlight) {\n return ;\n }\n return ;\n }\n\n const ref =\n location.pathname.indexOf('customresourcedefinitions') === -1\n ? referenceForModel(kindObj)\n : null;\n const componentLoader =\n getResourceDetailsPages(detailsPageExtensions, dynamicResourceDetailsPageExtensions).get(ref) ||\n getResourceDetailsPages(detailsPageExtensions, dynamicResourceDetailsPageExtensions).get(\n referenceForExtensionModel({\n group: kindObj.apiGroup,\n version: kindObj.apiVersion,\n kind: kindObj.kind,\n }),\n );\n const defaultPage = () => Promise.resolve(DefaultDetailsPage);\n\n const titleProviderValues = {\n telemetryPrefix: props.kindObj?.kind,\n titlePrefix: `${props.params.name} ยท ${getTitleForNodeKind(props.kindObj?.kind)}`,\n };\n\n return (\n \n \n \n );\n});\n\nexport const ResourceDetailsPage = (props) => {\n const params = useParams();\n return ;\n};\n\nexport type ResourceListPageProps = {\n flags: any;\n kindObj: K8sKind;\n kindsInFlight: boolean;\n params?: any;\n modelRef: K8sResourceKindReference;\n};\n\nexport type ResourceDetailsPageProps = {\n kindObj: K8sKind;\n kindsInFlight: boolean;\n params?: any;\n modelRef: K8sResourceKindReference;\n};\n\nResourceListPage.displayName = 'ResourceListPage';\nResourceDetailsPage.displayName = 'ResourceDetailsPage';\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { CamelCaseWrap } from '@console/dynamic-plugin-sdk';\nimport { LinkifyExternal, Timestamp } from './utils';\nimport { ClusterServiceVersionCondition, K8sResourceCondition } from '../module/k8s';\n\n/**\n * Since ClusterServiceVersionCondition type is different from K8sResourceCondition, but InstallPlanCondition and SubscriptionCondition are identical, we will use the following enum to render the proper conditions table based on type.\n */\nexport enum ConditionTypes {\n ClusterServiceVersion = 'ClusterServiceVersion',\n K8sResource = 'K8sResource',\n}\n\nexport const Conditions: React.FC = ({\n conditions,\n type = ConditionTypes.K8sResource,\n}) => {\n const { t } = useTranslation();\n\n const getStatusLabel = (status: string) => {\n switch (status) {\n case 'True':\n return t('public~True');\n case 'False':\n return t('public~False');\n default:\n return status;\n }\n };\n\n const rows = (conditions as Array)?.map?.(\n (condition: K8sResourceCondition & ClusterServiceVersionCondition, i: number) => (\n \n {type === ConditionTypes.ClusterServiceVersion ? (\n
\n \n
\n ) : (\n <>\n
\n \n
\n
\n {getStatusLabel(condition.status)}\n
\n \n )}\n \n \n
\n
\n \n
\n {/* remove initial newline which appears in route messages */}\n \n {condition.message?.trim() || '-'}\n
\n
\n ),\n );\n\n return (\n <>\n {conditions?.length ? (\n
\n
\n {type === ConditionTypes.ClusterServiceVersion ? (\n
{t('public~Phase')}
\n ) : (\n <>\n
{t('public~Type')}
\n
{t('public~Status')}
\n \n )}\n
{t('public~Updated')}
\n
{t('public~Reason')}
\n
{t('public~Message')}
\n
\n
{rows}
\n
\n ) : (\n
\n
{t('public~No conditions found')}
\n
\n )}\n \n );\n};\nConditions.displayName = 'Conditions';\n\nexport type ConditionsProps = {\n conditions: K8sResourceCondition[] | ClusterServiceVersionCondition[];\n title?: string;\n subTitle?: string;\n type?: keyof typeof ConditionTypes;\n};\n","export const ALLOW_SERVICE_BINDING_FLAG = 'ALLOW_SERVICE_BINDING';\n","import * as React from 'react';\nimport * as _ from 'lodash-es';\nimport { Link, redirect } from 'react-router-dom-v5-compat';\nimport { Trans, useTranslation } from 'react-i18next';\nimport * as classNames from 'classnames';\nimport { sortable } from '@patternfly/react-table';\nimport {\n Alert,\n Grid,\n GridItem,\n Card,\n CardBody,\n CardHeader,\n CardTitle,\n} from '@patternfly/react-core';\n\nimport { ONE_HOUR, ONE_MINUTE, Status, usePrometheusGate } from '@console/shared';\nimport { ByteDataTypes } from '@console/shared/src/graph-helper/data-utils';\nimport { getGroupVersionKindForModel } from '@console/dynamic-plugin-sdk/src/utils/k8s/k8s-ref';\nimport {\n K8sResourceKindReference,\n referenceFor,\n K8sResourceKind,\n k8sPatch,\n K8sKind,\n} from '../module/k8s';\nimport { cloneBuild, getBuildNumber } from '../module/k8s/builds';\nimport { DetailsPage, ListPage, Table, TableData, RowFunctionArgs } from './factory';\nimport { errorModal, confirmModal } from './modals';\nimport {\n AsyncComponent,\n BuildHooks,\n BuildStrategy,\n DetailsItem,\n documentationURLs,\n ExternalLink,\n getDocumentationURL,\n humanizeBinaryBytes,\n humanizeCpuCores,\n isManaged,\n isUpstream,\n Kebab,\n KebabAction,\n navFactory,\n ResourceKebab,\n ResourceLink,\n resourceObjPath,\n resourcePath,\n ResourceSummary,\n SectionHeading,\n Timestamp,\n} from './utils';\nimport { BuildPipeline, BuildPipelineLogLink } from './build-pipeline';\nimport { BuildLogs } from './build-logs';\nimport { ResourceEventStream } from './events';\nimport { Area } from './graphs';\nimport { BuildConfigModel, BuildModel } from '../models';\nimport { timeFormatter, timeFormatterWithSeconds } from './utils/datetime';\nimport Dashboard from '@console/shared/src/components/dashboard/Dashboard';\nimport { displayDurationInWords } from './utils/build-utils';\n\nconst BuildsReference: K8sResourceKindReference = 'Build';\n\nconst CloneBuildAction: KebabAction = (kind: K8sKind, build: K8sResourceKind) => ({\n // t('public~Rebuild')\n labelKey: 'public~Rebuild',\n callback: () =>\n cloneBuild(build)\n .then((clone) => {\n redirect(resourceObjPath(clone, referenceFor(clone)));\n })\n .catch((err) => {\n const error = err.message;\n errorModal({ error });\n }),\n accessReview: {\n group: kind.apiGroup,\n resource: kind.plural,\n subresource: 'clone',\n name: build.metadata.name,\n namespace: build.metadata.namespace,\n verb: 'create',\n },\n});\n\nconst CancelAction: KebabAction = (kind: K8sKind, build: K8sResourceKind) => ({\n // t('public~Cancel build')\n labelKey: 'public~Cancel build',\n hidden:\n build.status.phase !== 'Running' &&\n build.status.phase !== 'Pending' &&\n build.status.phase !== 'New',\n callback: () =>\n confirmModal({\n // t('public~Cancel build'),\n // t('public~Are you sure you want to cancel this build?'),\n // t('public~Yes, cancel'),\n // t(\"public~No, don't cancel\"),\n titleKey: 'public~Cancel build',\n messageKey: 'public~Are you sure you want to cancel this build?',\n btnTextKey: 'public~Yes, cancel',\n cancelTextKey: \"public~No, don't cancel\",\n executeFn: () =>\n k8sPatch(kind, build, [{ op: 'add', path: '/status/cancelled', value: true }]),\n }),\n accessReview: {\n group: kind.apiGroup,\n resource: kind.plural,\n name: build.metadata.name,\n namespace: build.metadata.namespace,\n verb: 'patch',\n },\n});\n\nconst menuActions = [\n CloneBuildAction,\n CancelAction,\n ...Kebab.getExtensionsActionsForKind(BuildModel),\n ...Kebab.factory.common,\n];\n\nexport enum BuildStrategyType {\n Docker = 'Docker',\n Devfile = 'Devfile',\n Custom = 'Custom',\n JenkinsPipeline = 'JenkinsPipeline',\n Source = 'Source',\n}\n\nexport const BuildLogLink = ({ build }) => {\n const {\n metadata: { name, namespace },\n } = build;\n const isPipeline = _.get(build, 'spec.strategy.type') === BuildStrategyType.JenkinsPipeline;\n const { t } = useTranslation();\n return isPipeline ? (\n \n ) : (\n {t('public~View logs')}\n );\n};\n\nexport const BuildNumberLink = ({ build }) => {\n const {\n metadata: { name, namespace },\n } = build;\n const buildNumber = getBuildNumber(build);\n const title = _.isFinite(buildNumber) ? `#${buildNumber}` : name;\n\n return {title};\n};\n\n// TODO update to use QueryBrowser for each graph\nconst BuildMetrics = ({ obj }) => {\n const { t } = useTranslation();\n const podName = obj.metadata.annotations?.['openshift.io/build.pod-name'];\n const endTime = obj.status.completionTimestamp\n ? new Date(obj.status.completionTimestamp).getTime()\n : Date.now();\n const runTime = obj.status.startTimestamp\n ? endTime - new Date(obj.status.startTimestamp).getTime()\n : ONE_HOUR;\n const timespan = Math.max(runTime, ONE_MINUTE); // Minimum timespan of one minute\n const namespace = obj.metadata.namespace;\n const domain = React.useMemo(() => ({ x: [endTime - timespan, endTime] }), [endTime, timespan]);\n const areaProps = React.useMemo(\n () => ({\n namespace,\n endTime,\n timespan,\n formatDate: (d) =>\n timespan < 5 * ONE_MINUTE ? timeFormatterWithSeconds.format(d) : timeFormatter.format(d),\n domain, // force domain to match queried timespan\n }),\n [domain, endTime, namespace, timespan],\n );\n\n return podName ? (\n \n \n \n \n \n {t('public~Memory usage')}\n \n \n \n \n \n \n \n \n \n {t('public~CPU usage')}\n \n \n \n \n \n \n \n \n \n {t('public~Filesystem')}\n \n \n \n \n \n \n \n
\n
\n ) : null;\n};\n\nconst OpenShiftPipelines: React.FC = () => {\n const { t } = useTranslation();\n const text = t('public~OpenShift Pipelines based on Tekton');\n return isUpstream() || isManaged() ? (\n <>{text}\n ) : (\n \n );\n};\n\nexport const PipelineBuildStrategyAlert: React.FC = () => {\n const { t } = useTranslation();\n return (\n \n \n With the release of , the pipelines build strategy has been\n deprecated. Users should either use Jenkins files directly on Jenkins or use cloud-native\n CI/CD with Openshift Pipelines.{' '}\n \n \n \n );\n};\n\nexport const BuildsDetails: React.SFC = ({ obj: build }) => {\n const { logSnippet, message, startTimestamp, completionTimestamp } = build.status;\n const triggeredBy = _.map(build.spec.triggeredBy, 'message').join(', ');\n const hasPipeline = build.spec.strategy.type === BuildStrategyType.JenkinsPipeline;\n const { t } = useTranslation();\n const BUILDCONFIG_TO_BUILD_REFERENCE_LABEL = 'openshift.io/build-config.name';\n const buildConfigName =\n build.status.config?.name || build.metadata.labels?.[BUILDCONFIG_TO_BUILD_REFERENCE_LABEL];\n return (\n <>\n
\n {hasPipeline && }\n \n {hasPipeline && (\n
\n
\n \n
\n
\n )}\n
\n
\n \n \n {triggeredBy}\n \n \n
\n
\n \n \n \n \n\n {buildConfigName && (\n \n \n \n )}\n \n \n \n \n \n \n \n {displayDurationInWords(\n build?.status?.startTimestamp,\n build?.status?.completionTimestamp,\n )}\n \n \n {message}\n \n \n
{logSnippet}
\n \n
\n
\n
\n
\n \n \n );\n};\n\nexport const getStrategyType = (strategy: BuildStrategyType) => {\n switch (strategy) {\n case BuildStrategyType.Docker:\n return 'dockerStrategy';\n case BuildStrategyType.Devfile:\n return 'devfileStrategy';\n case BuildStrategyType.Custom:\n return 'customStrategy';\n case BuildStrategyType.JenkinsPipeline:\n return 'jenkinsPipelineStrategy';\n case BuildStrategyType.Source:\n return 'sourceStrategy';\n default:\n return null;\n }\n};\n\nexport const getEnvPath = (props) => {\n const strategyType = getStrategyType(props.obj.spec.strategy.type);\n return strategyType ? ['spec', 'strategy', strategyType] : null;\n};\n\nconst EnvironmentPage = (props) => (\n import('./environment.jsx').then((c) => c.EnvironmentPage)}\n {...props}\n />\n);\n\nexport const BuildEnvironmentComponent = (props) => {\n const { obj } = props;\n const readOnly = obj.kind === 'Build';\n const envPath = getEnvPath(props);\n const { t } = useTranslation();\n if (envPath) {\n return (\n \n );\n }\n return (\n
\n
\n {t('public~The environment variable editor does not support build strategy: {{ type }}', {\n type: obj.spec.strategy.type,\n })}\n .\n
\n
\n );\n};\n\nexport const BuildsDetailsPage: React.SFC = (props) => {\n const prometheusIsAvailable = usePrometheusGate();\n return (\n \n );\n};\nBuildsDetailsPage.displayName = 'BuildsDetailsPage';\n\nconst tableColumnClasses = [\n '',\n '',\n 'pf-m-hidden pf-m-visible-on-md',\n 'pf-m-hidden pf-m-visible-on-lg',\n Kebab.columnClass,\n];\n\nconst BuildsTableRow: React.FC> = ({ obj }) => {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n {displayDurationInWords(obj.status?.startTimestamp, obj.status?.completionTimestamp)}\n \n \n \n \n \n );\n};\n\nexport const BuildsList: React.SFC = (props) => {\n const { t } = useTranslation();\n const BuildsTableHeader = () => {\n return [\n {\n title: t('public~Name'),\n sortField: 'metadata.name',\n transforms: [sortable],\n props: { className: tableColumnClasses[0] },\n },\n {\n title: t('public~Namespace'),\n sortField: 'metadata.namespace',\n transforms: [sortable],\n props: { className: tableColumnClasses[1] },\n id: 'namespace',\n },\n {\n title: t('public~Status'),\n sortField: 'status.phase',\n transforms: [sortable],\n props: { className: tableColumnClasses[2] },\n },\n {\n title: t('public~Start time'),\n sortField: 'status.startTimestamp',\n transforms: [sortable],\n props: { className: tableColumnClasses[3] },\n },\n {\n title: t('public~Duration'),\n sortField: 'status.duration',\n transforms: [sortable],\n props: { className: tableColumnClasses[3] },\n },\n {\n title: '',\n props: { className: tableColumnClasses[4] },\n },\n ];\n };\n BuildsTableHeader.displayName = 'BuildsTableHeader';\n\n return (\n \n );\n};\n\nBuildsList.displayName = 'BuildsList';\n\nexport const buildPhase = (build) => build.status.phase;\n\nexport const allPhases = ['New', 'Pending', 'Running', 'Complete', 'Failed', 'Error', 'Cancelled'];\n\nexport const BuildsPage: React.SFC = (props) => {\n const { t } = useTranslation();\n return (\n ({\n id: phase,\n title: phase,\n })),\n },\n ]}\n />\n );\n};\nBuildsPage.displayName = 'BuildsListPage';\n\nexport type BuildsDetailsProps = {\n obj: any;\n};\n\nexport type BuildsPageProps = {\n showTitle?: boolean;\n namespace?: string;\n selector?: any;\n};\n","/* eslint-disable */\nimport { UseActivePerspective } from '../extensions/console-types';\n\n/**\n * Hook that provides the currently active perspective and a callback for setting the active perspective\n * @returns A tuple containing the current active perspective and setter callback.\n * @example\n * ```tsx\n * const Component: React.FC = (props) => {\n * const [activePerspective, setActivePerspective] = useActivePerspective();\n * return setActivePerspective(e.target.value)}\n * >\n * {\n * // ...perspective options\n * }\n * \n * }\n * ```\n */\nexport const useActivePerspective: UseActivePerspective = require('@console/dynamic-plugin-sdk/src/perspective/useActivePerspective')\n .default;\n\nexport * from '../perspective/perspective-context';\n\n// Dynamic plugin SDK core APIs\nexport * from './dynamic-core-api';\n","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom-v5-compat';\nimport { Button } from '@patternfly/react-core';\nimport { useTranslation, Trans } from 'react-i18next';\n\nimport { FLAGS } from '@console/shared/src/constants';\nimport { useActiveNamespace } from '@console/shared/src/hooks/useActiveNamespace';\nimport { useActivePerspective } from '@console/dynamic-plugin-sdk';\nimport { createProjectMessageStateToProps } from '../reducers/ui';\nimport { Disabled, HintBlock, ExternalLink, openshiftHelpBase, LinkifyExternal } from './utils';\nimport { connectToFlags } from '../reducers/connectToFlags';\nimport { ProjectModel } from '../models';\nimport { createNamespaceOrProjectModal } from './modals';\nimport { K8sResourceKind } from '../module/k8s/types';\n\nexport const OpenShiftGettingStarted = connect(createProjectMessageStateToProps)(\n ({ canCreate = true, createProjectMessage }: OpenShiftGettingStartedProps) => {\n const { t } = useTranslation();\n const [, setActiveNamespace] = useActiveNamespace();\n const [perspective] = useActivePerspective();\n\n return (\n <>\n {canCreate ? (\n

\n {t(\n 'public~OpenShift helps you quickly develop, host, and scale applications. To get started, create a project for your application.',\n )}\n

\n ) : (\n

\n {t(\n \"public~OpenShift helps you quickly develop, host, and scale applications. To get started, you'll need a project. Currently, you can't create or access any projects.\",\n )}\n {!createProjectMessage && (\n <> {t(\"public~You'll need to contact a cluster administrator for help.\")}\n )}\n

\n )}\n {createProjectMessage && (\n

\n {createProjectMessage}\n

\n )}\n

\n \n To learn more, visit the OpenShift{' '}\n documentation.\n \n

\n

\n \n Download the command-line tools\n \n

\n {canCreate ? (\n \n createNamespaceOrProjectModal({\n blocking: true,\n onSubmit:\n perspective !== 'admin'\n ? (project: K8sResourceKind) => {\n setActiveNamespace(project.metadata?.name);\n }\n : undefined,\n })\n }\n >\n {t('public~Create a new project')}\n \n ) : null}\n \n );\n },\n);\n\ntype WithStartGuide =

(\n WrappedComponent: React.ComponentType

,\n disable?: boolean,\n) => React.ComponentType

;\n\nexport const withStartGuide: WithStartGuide = (WrappedComponent, disable = true) =>\n connectToFlags(\n FLAGS.SHOW_OPENSHIFT_START_GUIDE,\n FLAGS.CAN_CREATE_NS,\n FLAGS.CAN_CREATE_PROJECT,\n )(({ flags, ...rest }: any) => {\n const { kindObj } = rest;\n const kind = _.get(kindObj, 'kind', rest.kind);\n\n // The start guide does not need to be shown on the Projects list page.\n if (kind === ProjectModel.kind) {\n return ;\n }\n\n if (flags[FLAGS.SHOW_OPENSHIFT_START_GUIDE]) {\n return (\n <>\n

\n \n \n \n
\n {!disable || (rest.kindObj && !rest.kindObj.namespaced) ? (\n \n ) : (\n \n \n \n )}\n \n );\n }\n return ;\n });\n\ntype OpenShiftGettingStartedProps = {\n canCreate: boolean;\n createProjectMessage: string;\n};\n\nexport type WithStartGuideProps = {\n noProjectsAvailable?: boolean;\n};\n","import * as _ from 'lodash-es';\nimport { createBrowserHistory, createMemoryHistory, History } from 'history';\n\nlet createHistory;\n\ntry {\n if (process.env.NODE_ENV === 'test') {\n // Running in node. Can't use browser history\n createHistory = createMemoryHistory;\n } else {\n createHistory = createBrowserHistory;\n }\n} catch (unused) {\n createHistory = createBrowserHistory;\n}\n\nexport const history: History = createHistory({ basename: window.SERVER_FLAGS.basePath });\n\nconst removeBasePath = (url = '/') =>\n _.startsWith(url, window.SERVER_FLAGS.basePath)\n ? url.slice(window.SERVER_FLAGS.basePath.length - 1)\n : url;\n\n// Monkey patch history to slice off the base path\n(history as any).__replace__ = history.replace;\nhistory.replace = (url: string) => (history as any).__replace__(removeBasePath(url));\n\n(history as any).__push__ = history.push;\nhistory.push = (url: string) => (history as any).__push__(removeBasePath(url));\n\nexport const getQueryArgument = (arg: string) =>\n new URLSearchParams(window.location.search).get(arg);\n\nexport const setQueryArgument = (k: string, v: string) => {\n const params = new URLSearchParams(window.location.search);\n if (params.get(k) !== v) {\n params.set(k, v);\n const url = new URL(window.location.href);\n history.replace(`${url.pathname}?${params.toString()}${url.hash}`);\n }\n};\n\nexport const setQueryArguments = (newParams: { [k: string]: string }) => {\n const params = new URLSearchParams(window.location.search);\n let update = false;\n _.each(newParams, (v, k) => {\n if (params.get(k) !== v) {\n update = true;\n params.set(k, v);\n }\n });\n if (update) {\n const url = new URL(window.location.href);\n history.replace(`${url.pathname}?${params.toString()}${url.hash}`);\n }\n};\n\nexport const setAllQueryArguments = (newParams: { [k: string]: string }) => {\n const params = new URLSearchParams();\n let update = false;\n _.each(newParams, (v, k) => {\n if (params.get(k) !== v) {\n update = true;\n params.set(k, v);\n }\n });\n if (update) {\n const url = new URL(window.location.href);\n history.replace(`${url.pathname}?${params.toString()}${url.hash}`);\n }\n};\n\nexport const removeQueryArgument = (k: string) => {\n const params = new URLSearchParams(window.location.search);\n if (params.has(k)) {\n params.delete(k);\n const url = new URL(window.location.href);\n history.replace(`${url.pathname}?${params.toString()}${url.hash}`);\n }\n};\n\nexport const removeQueryArguments = (...keys: string[]) => {\n const params = new URLSearchParams(window.location.search);\n let update = false;\n keys.forEach((k) => {\n if (params.has(k)) {\n update = true;\n params.delete(k);\n }\n });\n if (update) {\n const url = new URL(window.location.href);\n history.replace(`${url.pathname}?${params.toString()}${url.hash}`);\n }\n};\n\nexport const setOrRemoveQueryArgument = (k: string, v: string) =>\n v ? setQueryArgument(k, v) : removeQueryArgument(k);\n","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport * as classNames from 'classnames';\nimport * as PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { useTranslation, withTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router-dom-v5-compat';\nimport { Divider } from '@patternfly/react-core';\nimport { impersonateStateToProps, useSafetyFirst } from '@console/dynamic-plugin-sdk';\nimport { useUserSettingsCompatibility } from '@console/shared';\nimport { CaretDownIcon } from '@patternfly/react-icons/dist/esm/icons/caret-down-icon';\nimport { CheckIcon } from '@patternfly/react-icons/dist/esm/icons/check-icon';\nimport { StarIcon } from '@patternfly/react-icons/dist/esm/icons/star-icon';\n\nimport { checkAccess } from './rbac';\nimport { KebabItems } from './kebab';\nimport { ResourceName } from './resource-icon';\n\nclass DropdownMixin extends React.PureComponent {\n constructor(props) {\n super(props);\n this.listener = this._onWindowClick.bind(this);\n this.state = { active: !!props.active, selectedKey: props.selectedKey };\n this.toggle = this.toggle.bind(this);\n this.dropdownElement = React.createRef();\n this.dropdownList = React.createRef();\n }\n\n _onWindowClick(event) {\n if (!this.state.active) {\n return;\n }\n\n const { current } = this.dropdownElement;\n if (!current) {\n return;\n }\n\n if (event.target === current || (current && current.contains(event.target))) {\n return;\n }\n\n this.hide(event);\n }\n\n UNSAFE_componentWillReceiveProps({ selectedKey, items }) {\n if (selectedKey !== this.props.selectedKey) {\n const title = items[selectedKey] || this.props.title;\n this.setState({ selectedKey, title });\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('click', this.listener);\n }\n\n onClick_(selectedKey, e) {\n e.preventDefault();\n e.stopPropagation();\n e.nativeEvent?.stopImmediatePropagation?.();\n\n const { items, actionItems, onChange, noSelection, title } = this.props;\n\n if (onChange) {\n onChange(selectedKey, e);\n }\n\n const newTitle = items[selectedKey];\n\n if (!actionItems || !_.some(actionItems, { actionKey: selectedKey })) {\n this.setState({\n selectedKey,\n title: noSelection ? title : newTitle,\n });\n }\n\n this.hide();\n }\n\n toggle(e) {\n e.preventDefault();\n\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.active) {\n this.hide(e);\n } else {\n this.show(e);\n }\n }\n\n show() {\n /* If you're wondering why this isn't in componentDidMount, it's because\n * kebabs are dropdowns. A list of 200 pods would mean 200 global event\n * listeners. This is bad for performance. - ggreer\n */\n window.removeEventListener('click', this.listener);\n window.addEventListener('click', this.listener);\n this.setState({ active: true });\n }\n\n hide(e) {\n e && e.stopPropagation();\n window.removeEventListener('click', this.listener);\n this.setState({ active: false });\n }\n}\n\nclass DropDownRowWithTranslation extends React.PureComponent {\n render() {\n const {\n itemKey,\n content,\n onclick,\n className,\n selected,\n hover,\n autocompleteFilter,\n isBookmarked,\n onBookmark,\n favoriteKey,\n canFavorite,\n onFavorite,\n t,\n } = this.props;\n\n let prefix;\n const contentString = _.isString(content) ? content : '';\n\n if (!autocompleteFilter && !onBookmark) {\n //use pf4 markup if not using the autocomplete dropdown\n return (\n
  • \n onclick(itemKey, e)}\n >\n {content}\n \n
  • \n );\n }\n if (onBookmark) {\n prefix = (\n {\n e.preventDefault();\n e.stopPropagation();\n onBookmark(itemKey, !isBookmarked);\n }}\n aria-label={\n isBookmarked\n ? t('public~Remove bookmark {{content}}', { content: contentString })\n : t('public~Add bookmark {{content}}', { content: contentString })\n }\n >\n \n \n \n \n );\n }\n\n let suffix;\n if (isBookmarked && canFavorite) {\n const isFavorite = favoriteKey === itemKey;\n suffix = (\n {\n e.preventDefault();\n e.stopPropagation();\n onFavorite(isFavorite ? null : itemKey);\n }}\n aria-label={\n isFavorite\n ? t('public~Remove favorite {{content}}', { content: contentString })\n : t('public~Add favorite {{content}}', { content: contentString })\n }\n >\n \n \n );\n }\n\n return (\n
  • \n onclick(itemKey, e)}\n >\n \n {content}\n \n \n \n \n \n {prefix}\n {suffix}\n
  • \n );\n }\n}\n\nconst DropDownRow = withTranslation()(DropDownRowWithTranslation);\n\nclass Dropdown_ extends DropdownMixin {\n constructor(props) {\n super(props);\n this.onClick = (...args) => this.onClick_(...args);\n\n this.state.items = props.items;\n this.state.title = props.noSelection\n ? props.title\n : _.get(props.items, props.selectedKey, props.title);\n\n this.onKeyDown = (e) => this.onKeyDown_(e);\n this.changeTextFilter = (e) => this.applyTextFilter_(e.target.value, this.props.items);\n const { shortCut } = this.props;\n\n this.globalKeyDown = (e) => {\n if (e.key === 'Escape' && this.state.active) {\n this.hide(e);\n return;\n }\n\n const { nodeName } = e.target;\n\n if (nodeName === 'INPUT' || nodeName === 'TEXTAREA') {\n return;\n }\n\n if (!shortCut || e.key !== shortCut) {\n return;\n }\n\n if (e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n this.show(e);\n };\n }\n\n componentDidMount() {\n if (this.props.shortCut) {\n window.addEventListener('keydown', this.globalKeyDown);\n }\n }\n\n componentWillUnmount() {\n super.componentWillUnmount();\n window.removeEventListener('keydown', this.globalKeyDown);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n super.UNSAFE_componentWillReceiveProps(nextProps);\n const props = this.props;\n\n if (_.isEqual(nextProps.items, props.items) && nextProps.title === props.title) {\n return;\n }\n const title = nextProps.title || props.title;\n this.setState({ title });\n\n this.applyTextFilter_(this.state.autocompleteText, nextProps.items);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (!prevState.active && this.state.active && this.input) {\n // Clear any previous filter when reopening the dropdown.\n this.applyTextFilter_('', this.props.items);\n }\n }\n\n applyTextFilter_(autocompleteText, items) {\n const { autocompleteFilter } = this.props;\n if (autocompleteFilter && !_.isEmpty(autocompleteText)) {\n items = _.pickBy(items, (item, key) => autocompleteFilter(autocompleteText, item, key));\n }\n this.setState({ autocompleteText, items });\n }\n\n onKeyDown_(e) {\n const { key } = e;\n\n if (key !== 'ArrowDown' && key !== 'ArrowUp' && key !== 'Enter') {\n return;\n }\n\n const { keyboardHoverKey } = this.state;\n const { items } = this.props;\n\n if (key === 'Enter') {\n if (this.state.active && items[keyboardHoverKey]) {\n this.onClick(keyboardHoverKey, e);\n }\n return;\n }\n\n const keys = _.keys(items);\n\n let index = _.indexOf(keys, keyboardHoverKey);\n\n if (key === 'ArrowDown') {\n index += 1;\n } else {\n index -= 1;\n }\n\n // periodic boundaries\n if (index >= keys.length) {\n index = 0;\n }\n if (index < 0) {\n index = keys.length - 1;\n }\n\n const newKey = keys[index];\n this.setState({ keyboardHoverKey: newKey });\n e.stopPropagation();\n }\n\n renderActionItem() {\n const { actionItems } = this.props;\n if (actionItems) {\n const { selectedKey, keyboardHoverKey, noSelection } = this.props;\n return (\n <>\n {actionItems.map((ai) => (\n \n ))}\n \n \n );\n }\n return null;\n }\n\n render() {\n const { active, autocompleteText, selectedKey, items, title, keyboardHoverKey } = this.state;\n const {\n ariaLabel,\n autocompleteFilter,\n autocompletePlaceholder,\n className,\n buttonClassName,\n menuClassName,\n storageKey,\n dropDownClassName,\n titlePrefix,\n describedBy,\n disabled,\n bookmarks,\n onBookmark,\n favoriteKey,\n canFavorite,\n onFavorite,\n } = this.props;\n const spacerBefore = this.props.spacerBefore || new Set();\n const headerBefore = this.props.headerBefore || {};\n const rows = [];\n const bookMarkRows = [];\n\n const addItem = (key, content) => {\n const selected = key === selectedKey && !this.props.noSelection;\n const hover = key === keyboardHoverKey;\n const klass = classNames({ active: selected });\n if (storageKey && bookmarks && bookmarks[key]) {\n bookMarkRows.push(\n ,\n );\n return;\n }\n if (spacerBefore.has(key)) {\n rows.push(\n
  • \n
    \n
  • ,\n );\n }\n\n if (_.has(headerBefore, key)) {\n rows.push(\n
  • \n
    {headerBefore[key]}
    \n
  • ,\n );\n }\n rows.push(\n ,\n );\n };\n\n _.each(items, (v, k) => addItem(k, v));\n //render PF4 dropdown markup if this is not the autocomplete filter\n if (autocompleteFilter) {\n return (\n
    \n \n \n
    \n \n {titlePrefix && `${titlePrefix}: `}\n {title}\n \n \n
    \n \n {active && (\n // Style the Application menu to match the Project selection menu\n
    \n
    \n {autocompleteFilter && (\n <>\n
    \n (this.input = input)}\n onChange={this.changeTextFilter}\n placeholder={autocompletePlaceholder}\n value={autocompleteText || ''}\n autoCapitalize=\"none\"\n onKeyDown={this.onKeyDown}\n className=\"pf-v5-c-form-control pf-m-search\"\n onClick={(e) => e.stopPropagation()}\n data-test-id=\"dropdown-text-filter\"\n />\n
    \n \n \n )}\n {_.size(bookMarkRows) ? (\n

    Favorites

    \n ) : null}\n \n {this.renderActionItem()}\n {bookMarkRows}\n {_.size(bookMarkRows) && _.size(rows) ? : null}\n {rows}\n \n
    \n
    \n )}\n
    \n
    \n );\n }\n\n //pf4 markup\n return (\n
    \n \n \n \n {titlePrefix && `${titlePrefix}: `}\n {title}\n \n \n \n {active && (\n \n {rows}\n \n )}\n
    \n \n );\n }\n}\n\nexport const Dropdown = (props) => {\n const { userSettingsPrefix, storageKey } = props;\n\n // Should be undefined so that we don't save undefined-xxx.\n const favoriteUserSettingsKey = userSettingsPrefix ? `${userSettingsPrefix}.favorite` : undefined;\n const favoriteStorageKey = storageKey ? storageKey : undefined;\n const bookmarkUserSettingsKey = userSettingsPrefix\n ? `${userSettingsPrefix}.bookmarks`\n : undefined;\n const bookmarkStorageKey = storageKey ? `${storageKey}-bookmarks` : undefined;\n\n const [favoriteKey, setFavoriteKey] = useUserSettingsCompatibility(\n favoriteUserSettingsKey,\n favoriteStorageKey,\n undefined,\n true,\n );\n const [bookmarks, setBookmarks] = useUserSettingsCompatibility(\n bookmarkUserSettingsKey,\n bookmarkStorageKey,\n undefined,\n true,\n );\n\n const onBookmark = React.useCallback(\n (key, active) => {\n setBookmarks((oldBookmarks) => ({ ...oldBookmarks, [key]: active ? true : undefined }));\n },\n [setBookmarks],\n );\n\n return (\n \n );\n};\n\nDropdown.displayName = 'Dropdown';\n\nDropdown.propTypes = {\n actionItems: PropTypes.arrayOf(\n PropTypes.shape({\n actionKey: PropTypes.string,\n actionTitle: PropTypes.string,\n }),\n ),\n autocompleteFilter: PropTypes.func,\n autocompletePlaceholder: PropTypes.string,\n canFavorite: PropTypes.bool,\n className: PropTypes.string,\n dropDownClassName: PropTypes.string,\n enableBookmarks: PropTypes.bool,\n headerBefore: PropTypes.objectOf(PropTypes.string),\n items: PropTypes.object.isRequired,\n menuClassName: PropTypes.string,\n buttonClassName: PropTypes.string,\n noSelection: PropTypes.bool,\n userSettingsPrefix: PropTypes.string,\n storageKey: PropTypes.string,\n spacerBefore: PropTypes.instanceOf(Set),\n textFilter: PropTypes.string,\n title: PropTypes.node,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n onChange: PropTypes.func,\n selectedKey: PropTypes.string,\n titlePrefix: PropTypes.string,\n ariaLabel: PropTypes.string,\n name: PropTypes.string,\n autoSelect: PropTypes.bool,\n describedBy: PropTypes.string,\n required: PropTypes.bool,\n dataTest: PropTypes.string,\n};\n\nconst ActionsMenuDropdown = (props) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const [active, setActive] = React.useState(!!props.active);\n\n const dropdownElement = React.useRef();\n\n const show = () => {\n setActive(true);\n };\n\n const hide = (e) => {\n e?.stopPropagation();\n setActive(false);\n };\n\n const listener = React.useCallback(\n (event) => {\n if (!active) {\n return;\n }\n\n const { current } = dropdownElement;\n if (!current) {\n return;\n }\n\n if (event.target === current || current.contains(event.target)) {\n return;\n }\n\n hide(event);\n },\n [active, dropdownElement],\n );\n\n React.useEffect(() => {\n if (active) {\n window.addEventListener('click', listener);\n } else {\n window.removeEventListener('click', listener);\n }\n return () => {\n window.removeEventListener('click', listener);\n };\n }, [active, listener]);\n\n const toggle = (e) => {\n e.preventDefault();\n\n if (props.disabled) {\n return;\n }\n\n if (active) {\n hide(e);\n } else {\n show(e);\n }\n };\n\n const onClick = (event, option) => {\n event.preventDefault();\n\n if (option.callback) {\n option.callback();\n }\n\n if (option.href) {\n navigate(option.href);\n }\n\n hide();\n };\n\n return (\n \n \n {props.title || t('public~Actions')}\n \n \n {active && }\n \n );\n};\n\nconst ActionsMenu_ = ({ actions, impersonate, title = undefined }) => {\n const [isVisible, setVisible] = useSafetyFirst(false);\n\n // Check if any actions are visible when actions have access reviews.\n React.useEffect(() => {\n if (!actions.length) {\n setVisible(false);\n return;\n }\n const promises = actions.reduce((acc, action) => {\n if (action.accessReview) {\n acc.push(checkAccess(action.accessReview));\n }\n return acc;\n }, []);\n\n // Only need to resolve if all actions require access review\n if (promises.length !== actions.length) {\n setVisible(true);\n return;\n }\n Promise.all(promises)\n .then((results) => setVisible(_.some(results, 'status.allowed')))\n .catch(() => setVisible(true));\n }, [actions, impersonate, setVisible]);\n return isVisible ? : null;\n};\n\nexport const ActionsMenu = connect(impersonateStateToProps)(ActionsMenu_);\n\nActionsMenu.propTypes = {\n actions: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.node,\n labelKey: PropTypes.string,\n href: PropTypes.string,\n callback: PropTypes.func,\n accessReview: PropTypes.object,\n }),\n ).isRequired,\n title: PropTypes.node,\n};\n\nconst containerLabel = (container) => (\n \n);\n\nexport const ContainerDropdown = (props) => {\n const { t } = useTranslation();\n\n const getSpacer = (container) => {\n const spacerBefore = new Set();\n return container ? spacerBefore.add(container.name) : spacerBefore;\n };\n\n const getHeaders = (container, initContainer) => {\n return initContainer\n ? {\n [container.name]: t('public~Containers'),\n [initContainer.name]: t('public~Init containers'),\n }\n : {};\n };\n\n const { currentKey, containers, initContainers, onChange } = props;\n if (_.isEmpty(containers) && _.isEmpty(initContainers)) {\n return null;\n }\n const firstInitContainer = _.find(initContainers, { order: 0 });\n const firstContainer = _.find(containers, { order: 0 });\n const spacerBefore = getSpacer(firstInitContainer);\n const headerBefore = getHeaders(firstContainer, firstInitContainer);\n const dropdownItems = _.mapValues(_.merge(containers, initContainers), containerLabel);\n const title = _.get(dropdownItems, currentKey) || containerLabel(firstContainer);\n return (\n \n );\n};\n\nContainerDropdown.propTypes = {\n containers: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n currentKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n initContainers: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n};\n\nContainerDropdown.defaultProps = {\n currentKey: '',\n initContainers: {},\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport * as _ from 'lodash-es';\nimport * as React from 'react';\nimport * as classNames from 'classnames';\nimport { connect } from 'react-redux';\n/* eslint-disable import/named */\nimport { useTranslation } from 'react-i18next';\nimport i18next from 'i18next';\nimport { KeyTypes, Tooltip, FocusTrap } from '@patternfly/react-core';\nimport { AngleRightIcon } from '@patternfly/react-icons/dist/esm/icons/angle-right-icon';\nimport { EllipsisVIcon } from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';\nimport { useNavigate } from 'react-router-dom-v5-compat';\nimport { subscribeToExtensions } from '@console/plugin-sdk/src/api/pluginSubscriptionService';\nimport { KebabActions, isKebabActions } from '@console/plugin-sdk/src/typings/kebab-actions';\nimport Popper from '@console/shared/src/components/popper/Popper';\nimport {\n HelmChartRepositoryModel,\n ProjectHelmChartRepositoryModel,\n} from '@console/helm-plugin/src/models';\nimport { impersonateStateToProps, ImpersonateKind } from '@console/dynamic-plugin-sdk';\nimport {\n annotationsModalLauncher,\n configureReplicaCountModal,\n taintsModal,\n tolerationsModal,\n labelsModalLauncher,\n podSelectorModal,\n deleteModal,\n expandPVCModal,\n clonePVCModal,\n restorePVCModal,\n} from '../modals';\nimport { asAccessReview, checkAccess, resourceObjPath, useAccessReview } from './index';\nimport {\n AccessReviewResourceAttributes,\n K8sKind,\n K8sResourceKind,\n K8sResourceKindReference,\n referenceFor,\n referenceForModel,\n VolumeSnapshotKind,\n} from '../../module/k8s';\nimport { connectToModel } from '../../kinds';\nimport {\n BuildConfigModel,\n ConfigMapModel,\n DeploymentConfigModel,\n DeploymentModel,\n RouteModel,\n VolumeSnapshotModel,\n} from '../../models';\n\nexport const kebabOptionsToMenu = (options: KebabOption[]): KebabMenuOption[] => {\n const subs: { [key: string]: KebabSubMenu } = {};\n const menuOptions: KebabMenuOption[] = [];\n\n options.forEach((o) => {\n if (!o.hidden) {\n if (o.pathKey || o.path) {\n const parts = o.pathKey ? o.pathKey.split('/') : o.path.split('/');\n parts.forEach((p, i) => {\n let subMenu = subs[p];\n if (!subs[p]) {\n subMenu = o.pathKey\n ? {\n labelKey: p,\n children: [],\n }\n : {\n label: p,\n children: [],\n };\n subs[p] = subMenu;\n if (i === 0) {\n menuOptions.push(subMenu);\n } else {\n subs[parts[i - 1]].children.push(subMenu);\n }\n }\n });\n subs[parts[parts.length - 1]].children.push(o);\n } else {\n menuOptions.push(o);\n }\n }\n });\n return menuOptions;\n};\n\nconst KebabItem_: React.FC = ({\n option,\n onClick,\n onEscape,\n autoFocus,\n isAllowed,\n}) => {\n const { t } = useTranslation();\n const handleEscape = (e) => {\n if (e.keyCode === KeyTypes.Escape) {\n onEscape();\n }\n };\n const disabled = !isAllowed || option.isDisabled || (!option.href && !option.callback);\n const classes = classNames('pf-v5-c-dropdown__menu-item', { 'pf-m-disabled': disabled });\n return (\n !disabled && onClick(e, option)}\n autoFocus={autoFocus}\n onKeyDown={onEscape && handleEscape}\n disabled={disabled}\n data-test-action={option.labelKey ? t(option.labelKey, option.labelKind) : option.label}\n >\n {option.icon && {option.icon}}\n {option.labelKey ? t(option.labelKey, option.labelKind) : option.label}\n \n );\n};\nexport const KebabItemAccessReview_ = (\n props: KebabItemProps & { impersonate: ImpersonateKind },\n) => {\n const { option, impersonate } = props;\n const isAllowed = useAccessReview(option.accessReview, impersonate);\n return ;\n};\n\nconst KebabItemAccessReview = connect(impersonateStateToProps)(KebabItemAccessReview_);\n\ntype KebabSubMenuProps = {\n option: KebabSubMenu;\n onClick: KebabItemProps['onClick'];\n};\n\nconst KebabSubMenu: React.FC = ({ option, onClick }) => {\n const { t } = useTranslation();\n const [open, setOpen] = React.useState(false);\n const nodeRef = React.useRef(null);\n const subMenuRef = React.useRef(null);\n const referenceCb = React.useCallback(() => nodeRef.current, []);\n // use a callback ref because FocusTrap is old and doesn't support non-function refs\n const subMenuCbRef = React.useCallback((node) => (subMenuRef.current = node), []);\n\n return (\n <>\n setOpen(true)}\n onMouseLeave={(e) => {\n // if the mouse leaves this item, close the sub menu only if the mouse did not enter the sub menu itself\n if (!subMenuRef.current || !subMenuRef.current.contains(e.relatedTarget as Node)) {\n setOpen(false);\n }\n }}\n onKeyDown={(e) => {\n // open the sub menu on enter or right arrow\n if (e.keyCode === 39 || e.keyCode === 13) {\n setOpen(true);\n e.stopPropagation();\n }\n }}\n >\n {option.labelKey ? t(option.labelKey) : option.label}\n \n \n {\n // only close the sub menu if clicking anywhere outside the menu item that owns the sub menu\n if (!e || !nodeRef.current || !nodeRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }}\n reference={referenceCb}\n >\n subMenuRef.current, // fallback to popover content wrapper div if there are no tabbable elements\n }}\n >\n {\n // only close the sub menu if the mouse does not enter the item\n if (!nodeRef.current || !nodeRef.current.contains(e.relatedTarget as Node)) {\n setOpen(false);\n }\n }}\n onKeyDown={(e) => {\n // close the sub menu on left arrow\n if (e.keyCode === 37) {\n setOpen(false);\n e.stopPropagation();\n }\n }}\n >\n \n \n \n \n \n );\n};\n\nexport const isKebabSubMenu = (option: KebabMenuOption): option is KebabSubMenu => {\n // only a sub menu has children\n return Array.isArray((option as KebabSubMenu).children);\n};\n\nexport const KebabItem: React.FC = (props) => {\n const { option } = props;\n let item;\n\n if (option.accessReview) {\n item = ;\n } else {\n item = ;\n }\n const tooltip = option.tooltipKey ? i18next.t(option.tooltipKey) : option.tooltip;\n\n return tooltip ? (\n \n {item}\n \n ) : (\n item\n );\n};\n\ntype KebabMenuItemsProps = {\n options: KebabMenuOption[];\n onClick: (event: React.MouseEvent<{}>, option: KebabOption) => void;\n focusItem?: KebabOption;\n className?: string;\n};\n\nexport const KebabMenuItems: React.FC = ({\n className,\n options,\n onClick,\n focusItem,\n}) => (\n \n {_.map(options, (o, index) => (\n
  • \n {isKebabSubMenu(o) ? (\n \n ) : (\n \n )}\n
  • \n ))}\n \n);\n\nexport const KebabItems: React.FC = ({ options, ...props }) => {\n const menuOptions = kebabOptionsToMenu(options);\n return ;\n};\n\nconst kebabFactory: KebabFactory = {\n Delete: (kind, obj) => ({\n // t('public~Delete {{kind}}', {kind: kind.label})\n labelKey: 'public~Delete {{kind}}',\n labelKind: { kind: kind.labelKey ? i18next.t(kind.labelKey) : kind.label },\n callback: () =>\n deleteModal({\n kind,\n resource: obj,\n }),\n accessReview: asAccessReview(kind, obj, 'delete'),\n }),\n Edit: (kind, obj) => {\n let href: string;\n switch (kind.kind) {\n case ConfigMapModel.kind:\n case RouteModel.kind:\n case BuildConfigModel.kind:\n case DeploymentModel.kind:\n case DeploymentConfigModel.kind:\n href = `${resourceObjPath(obj, kind.crd ? referenceForModel(kind) : kind.kind)}/form`;\n break;\n case HelmChartRepositoryModel.kind:\n href = `/k8s/cluster/helmchartrepositories/${obj.metadata.name}/form?kind=${referenceFor(\n obj,\n )}`;\n break;\n case ProjectHelmChartRepositoryModel.kind:\n href = `/ns/${obj.metadata.namespace}/helmchartrepositories/${\n obj.metadata.name\n }/form?kind=${referenceFor(obj)}`;\n break;\n default:\n href = `${resourceObjPath(obj, kind.crd ? referenceForModel(kind) : kind.kind)}/yaml`;\n }\n return {\n // t('public~Edit {{kind}}', {kind: kind.label})\n labelKey: 'public~Edit {{kind}}',\n labelKind: { kind: kind.labelKey ? i18next.t(kind.labelKey) : kind.label },\n dataTest: `Edit ${kind.label}`,\n href,\n // TODO: Fallback to \"View YAML\"? We might want a similar fallback for annotations, labels, etc.\n accessReview: asAccessReview(kind, obj, 'update'),\n };\n },\n ModifyLabels: (kind, obj) => ({\n // t('public~Edit labels')\n labelKey: 'public~Edit labels',\n callback: () =>\n labelsModalLauncher({\n kind,\n resource: obj,\n blocking: true,\n }),\n accessReview: asAccessReview(kind, obj, 'patch'),\n }),\n ModifyPodSelector: (kind, obj) => ({\n // t('public~Edit Pod selector')\n labelKey: 'public~Edit Pod selector',\n callback: () =>\n podSelectorModal({\n kind,\n resource: obj,\n blocking: true,\n }),\n accessReview: asAccessReview(kind, obj, 'patch'),\n }),\n ModifyAnnotations: (kind, obj) => ({\n // t('public~Edit annotations')\n labelKey: 'public~Edit annotations',\n callback: () =>\n annotationsModalLauncher({\n kind,\n resource: obj,\n blocking: true,\n }),\n accessReview: asAccessReview(kind, obj, 'patch'),\n }),\n ModifyCount: (kind, obj) => ({\n // t('public~Edit Pod count')\n labelKey: 'public~Edit Pod count',\n callback: () =>\n configureReplicaCountModal({\n resourceKind: kind,\n resource: obj,\n }),\n accessReview: asAccessReview(kind, obj, 'patch', 'scale'),\n }),\n ModifyTaints: (kind, obj) => ({\n // t('public~Edit taints')\n labelKey: 'public~Edit taints',\n callback: () =>\n taintsModal({\n resourceKind: kind,\n resource: obj,\n modalClassName: 'modal-lg',\n }),\n accessReview: asAccessReview(kind, obj, 'patch'),\n }),\n ModifyTolerations: (kind, obj) => ({\n // t('public~Edit tolerations')\n labelKey: 'public~Edit tolerations',\n callback: () =>\n tolerationsModal({\n resourceKind: kind,\n resource: obj,\n modalClassName: 'modal-lg',\n }),\n accessReview: asAccessReview(kind, obj, 'patch'),\n }),\n AddStorage: (kind, obj) => ({\n // t('public~Add storage')\n labelKey: 'public~Add storage',\n href: `${resourceObjPath(obj, kind.crd ? referenceForModel(kind) : kind.kind)}/attach-storage`,\n accessReview: asAccessReview(kind, obj, 'patch'),\n }),\n ExpandPVC: (kind, obj) => ({\n // t('public~Expand PVC')\n labelKey: 'public~Expand PVC',\n callback: () =>\n expandPVCModal({\n kind,\n resource: obj,\n }),\n accessReview: asAccessReview(kind, obj, 'patch'),\n }),\n PVCSnapshot: (kind, obj) => ({\n // t('public~Create snapshot')\n labelKey: 'public~Create snapshot',\n isDisabled: obj?.status?.phase !== 'Bound',\n tooltip: obj?.status?.phase !== 'Bound' ? 'PVC is not Bound' : '',\n href: `/k8s/ns/${obj.metadata.namespace}/${VolumeSnapshotModel.plural}/~new/form?pvc=${obj.metadata.name}`,\n accessReview: asAccessReview(kind, obj, 'create'),\n }),\n ClonePVC: (kind, obj) => ({\n // t('public~Clone PVC')\n labelKey: 'public~Clone PVC',\n isDisabled: obj?.status?.phase !== 'Bound',\n tooltip: obj?.status?.phase !== 'Bound' ? 'PVC is not Bound' : '',\n callback: () =>\n clonePVCModal({\n kind,\n resource: obj,\n }),\n accessReview: asAccessReview(kind, obj, 'create'),\n }),\n RestorePVC: (kind, obj: VolumeSnapshotKind) => ({\n // t('public~Restore as new PVC')\n labelKey: 'public~Restore as new PVC',\n isDisabled: !obj?.status?.readyToUse,\n tooltip: !obj?.status?.readyToUse ? 'Volume Snapshot is not Ready' : '',\n callback: () =>\n restorePVCModal({\n kind,\n resource: obj,\n }),\n accessReview: asAccessReview(kind, obj, 'create'),\n }),\n};\n\n// The common menu actions that most resource share\nkebabFactory.common = [\n kebabFactory.ModifyLabels,\n kebabFactory.ModifyAnnotations,\n kebabFactory.Edit,\n kebabFactory.Delete,\n];\n\nlet kebabActionExtensions: KebabActions[] = [];\n\nsubscribeToExtensions((extensions) => {\n kebabActionExtensions = extensions;\n}, isKebabActions);\n\nexport const getExtensionsKebabActionsForKind = (kind: K8sKind) => {\n const actionsForKind: KebabAction[] = [];\n kebabActionExtensions.forEach((e) => {\n e.properties.getKebabActionsForKind(kind).forEach((kebabAction) => {\n actionsForKind.push(kebabAction);\n });\n });\n return actionsForKind;\n};\n\nexport const ResourceKebab = connectToModel((props: ResourceKebabProps) => {\n const { t } = useTranslation();\n const { actions, kindObj, resource, isDisabled, customData, terminatingTooltip } = props;\n\n if (!kindObj) {\n return null;\n }\n const options = _.reject(\n actions.map((a) => a(kindObj, resource, null, customData)),\n 'hidden',\n );\n return (\n \n );\n});\n\nexport const Kebab: KebabComponent = (props) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { options, isDisabled, terminatingTooltip } = props;\n const dropdownElement = React.useRef();\n const divElement = React.useRef();\n const [active, setActive] = React.useState(false);\n\n const onClick = (event, option: KebabOption) => {\n event.preventDefault();\n if (option.callback) {\n option.callback();\n }\n hide();\n if (option.href) {\n navigate(option.href);\n }\n };\n\n const hide = () => {\n dropdownElement.current && dropdownElement.current.focus();\n setActive(false);\n };\n\n const toggle = () => {\n setActive((prev) => !prev);\n };\n\n const onHover = () => {\n // Check access when hovering over a kebab to minimize flicker when opened.\n // This depends on `checkAccess` being memoized.\n _.each(options, (option: KebabOption) => {\n if (option.accessReview) {\n checkAccess(option.accessReview).catch((e) => {\n // eslint-disable-next-line no-console\n console.warn('Error while check action menu access review', e);\n });\n }\n });\n };\n\n const handleRequestClose = (e?: MouseEvent) => {\n if (!e || !dropdownElement.current || !dropdownElement.current.contains(e.target as Node)) {\n hide();\n }\n };\n\n const getPopperReference = () => dropdownElement.current;\n\n const getDivReference = () => divElement.current;\n\n const menuOptions = kebabOptionsToMenu(options);\n\n return (\n \n \n \n \n \n \n \n
    \n \n
    \n \n \n \n \n );\n};\nKebab.factory = kebabFactory;\nKebab.columnClass = 'dropdown-kebab-pf pf-v5-c-table__action';\nKebab.getExtensionsActionsForKind = getExtensionsKebabActionsForKind;\n\nexport type KebabOption = {\n hidden?: boolean;\n label?: React.ReactNode;\n labelKey?: string;\n labelKind?: { [key: string]: string | string[] };\n href?: string;\n callback?: () => any;\n accessReview?: AccessReviewResourceAttributes;\n isDisabled?: boolean;\n tooltip?: string;\n tooltipKey?: string;\n // a `/` separated string where each segment denotes a new sub menu entry\n // Eg. `Menu 1/Menu 2/Menu 3`\n path?: string;\n pathKey?: string;\n icon?: React.ReactNode;\n};\n\nexport type KebabAction = (\n kind: K8sKind,\n obj: K8sResourceKind,\n resources?: any,\n customData?: any,\n) => KebabOption;\n\nexport type ResourceKebabProps = {\n kindObj: K8sKind;\n actions: KebabAction[];\n kind: K8sResourceKindReference;\n resource: K8sResourceKind;\n isDisabled?: boolean;\n customData?: { [key: string]: any };\n terminatingTooltip?: string;\n};\n\n// eslint-disable-next-line no-redeclare\ntype KebabSubMenu = {\n label?: string;\n labelKey?: string;\n children: KebabMenuOption[];\n};\n\nexport type KebabMenuOption = KebabSubMenu | KebabOption;\n\ntype KebabProps = {\n options: KebabOption[];\n isDisabled?: boolean;\n terminatingTooltip?: string;\n active?: boolean;\n id?: string;\n};\n\ntype KebabItemProps = {\n option: KebabOption;\n onClick: (event: React.MouseEvent<{}>, option: KebabOption) => void;\n autoFocus?: boolean;\n onEscape?: () => void;\n};\n\nexport type KebabItemsProps = {\n options: KebabOption[];\n onClick: (event: React.MouseEvent<{}>, option: KebabOption) => void;\n focusItem?: KebabOption;\n className?: string;\n};\n\nexport type KebabFactory = { [name: string]: KebabAction } & { common?: KebabAction[] };\n\ntype KebabStaticProperties = {\n columnClass: string;\n factory: KebabFactory;\n getExtensionsActionsForKind: (kind: K8sKind) => KebabAction[];\n};\n\ntype KebabComponent = React.FC & KebabStaticProperties;\nKebabItems.displayName = 'KebabItems';\nResourceKebab.displayName = 'ResourceKebab';\n","import * as _ from 'lodash-es';\n\nexport const units = {};\nexport const validate = {};\n\nconst TYPES = {\n numeric: {\n units: ['', 'k', 'm', 'b'],\n space: false,\n divisor: 1000,\n },\n decimalBytes: {\n units: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB'],\n space: true,\n divisor: 1000,\n },\n decimalBytesWithoutB: {\n units: ['', 'k', 'M', 'G', 'T', 'P', 'E'],\n space: true,\n divisor: 1000,\n },\n binaryBytes: {\n units: ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'],\n space: true,\n divisor: 1024,\n },\n binaryBytesWithoutB: {\n units: ['i', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei'],\n space: true,\n divisor: 1024,\n },\n SI: {\n units: ['', 'k', 'M', 'G', 'T', 'P', 'E'],\n space: false,\n divisor: 1000,\n },\n decimalBytesPerSec: {\n units: ['Bps', 'KBps', 'MBps', 'GBps', 'TBps', 'PBps', 'EBps'],\n space: true,\n divisor: 1000,\n },\n packetsPerSec: {\n units: ['pps', 'kpps'],\n space: true,\n divisor: 1000,\n },\n seconds: {\n units: ['ns', 'ฮผs', 'ms', 's'],\n space: true,\n divisor: 1000,\n },\n};\n\nexport const getType = (name) => {\n const type = TYPES[name];\n if (!_.isPlainObject(type)) {\n return {\n units: [],\n space: false,\n divisor: 1000,\n };\n }\n return type;\n};\n\nconst convertBaseValueToUnits = (value, unitArray, divisor, initialUnit, preferredUnit) => {\n const sliceIndex = initialUnit ? unitArray.indexOf(initialUnit) : 0;\n const units_ = unitArray.slice(sliceIndex);\n\n if (preferredUnit || preferredUnit === '') {\n const unitIndex = units_.indexOf(preferredUnit);\n if (unitIndex !== -1) {\n return {\n value: value / divisor ** unitIndex,\n unit: preferredUnit,\n };\n }\n }\n\n let unit = units_.shift();\n while (value >= divisor && units_.length > 0) {\n value = value / divisor;\n unit = units_.shift();\n }\n return { value, unit };\n};\n\nconst convertValueWithUnitsToBaseValue = (value, unitArray, divisor) => {\n const defaultReturn = { value, unit: '' };\n if (typeof value !== 'string') {\n return defaultReturn;\n }\n\n let units_ = unitArray.slice().reverse();\n\n // find which unit we're given\n let truncateStringAt = -1;\n const startingUnitIndex = _.findIndex(units_, function (currentUnitValue) {\n const index = value.indexOf(currentUnitValue);\n if (index > -1) {\n truncateStringAt = index;\n return true;\n }\n return false;\n });\n if (startingUnitIndex <= 0) {\n // can't parse\n return defaultReturn;\n }\n\n // get the numeric value & prepare unit array for conversion\n units_ = units_.slice(startingUnitIndex);\n value = value.substring(0, truncateStringAt);\n value = _.toNumber(value);\n\n let unit = units_.shift();\n while (units_.length > 0) {\n value = value * divisor;\n unit = units_.shift();\n }\n\n return { value, unit };\n};\n\nconst getDefaultFractionDigits = (value) => {\n if (value < 1) {\n return 3;\n }\n if (value < 100) {\n return 2;\n }\n return 1;\n};\n\nconst formatValue = (value, options) => {\n const fractionDigits = getDefaultFractionDigits(value);\n const { locales, ...rest } = _.defaults(options, {\n maximumFractionDigits: fractionDigits,\n });\n\n // 2nd check converts -0 to 0.\n if (!isFinite(value) || value === 0) {\n value = 0;\n }\n return Intl.NumberFormat(locales, rest).format(value);\n};\n\nconst round = (units.round = (value, fractionDigits) => {\n if (!isFinite(value)) {\n return 0;\n }\n const multiplier = Math.pow(10, fractionDigits || getDefaultFractionDigits(value));\n return Math.round(value * multiplier) / multiplier;\n});\n\nconst humanize = (units.humanize = (\n value,\n typeName,\n useRound = false,\n initialUnit,\n preferredUnit,\n) => {\n const type = getType(typeName);\n\n if (!isFinite(value)) {\n value = 0;\n }\n\n let converted = convertBaseValueToUnits(\n value,\n type.units,\n type.divisor,\n initialUnit,\n preferredUnit,\n );\n\n if (useRound) {\n converted.value = round(converted.value);\n converted = convertBaseValueToUnits(\n converted.value,\n type.units,\n type.divisor,\n converted.unit,\n preferredUnit,\n );\n }\n\n const formattedValue = formatValue(converted.value);\n\n return {\n string: type.space ? `${formattedValue} ${converted.unit}` : formattedValue + converted.unit,\n unit: converted.unit,\n value: converted.value,\n };\n});\n\nconst formatPercentage = (value, options) => {\n const { locales, ...rest } = _.defaults(\n { style: 'percent' }, // Don't allow perent style to be overridden.\n options,\n {\n maximumFractionDigits: 1,\n },\n );\n return Intl.NumberFormat(locales, rest).format(value);\n};\n\nexport const humanizeBinaryBytesWithoutB = (v, initialUnit, preferredUnit) =>\n humanize(v, 'binaryBytesWithoutB', true, initialUnit, preferredUnit);\nexport const humanizeBinaryBytes = (v, initialUnit, preferredUnit) =>\n humanize(v, 'binaryBytes', true, initialUnit, preferredUnit);\nexport const humanizeDecimalBytes = (v, initialUnit, preferredUnit) =>\n humanize(v, 'decimalBytes', true, initialUnit, preferredUnit);\nexport const humanizeDecimalBytesPerSec = (v, initialUnit, preferredUnit) =>\n humanize(v, 'decimalBytesPerSec', true, initialUnit, preferredUnit);\nexport const humanizePacketsPerSec = (v, initialUnit, preferredUnit) =>\n humanize(v, 'packetsPerSec', true, initialUnit, preferredUnit);\nexport const humanizeNumber = (v, initialUnit, preferredUnit) =>\n humanize(v, 'numeric', true, initialUnit, preferredUnit);\nexport const humanizeNumberSI = (v, initialUnit, preferredUnit) =>\n humanize(v, 'SI', true, initialUnit, preferredUnit);\nexport const humanizeSeconds = (v, initialUnit, preferredUnit) =>\n humanize(v, 'seconds', true, initialUnit, preferredUnit);\nexport const humanizeCpuCores = (v) => {\n const value = v < 1 ? round(v * 1000) : v;\n const unit = v < 1 ? 'm' : '';\n return {\n string: `${formatValue(value)}${unit}`,\n unit,\n value,\n };\n};\nexport const humanizePercentage = (value) => {\n // 2nd check converts -0 to 0.\n if (!isFinite(value) || value === 0) {\n value = 0;\n }\n return {\n string: formatPercentage(value / 100),\n unit: '%',\n value: round(value, 1),\n };\n};\n\nunits.dehumanize = (value, typeName) => {\n const type = getType(typeName);\n return convertValueWithUnitsToBaseValue(value, type.units, type.divisor);\n};\n\nvalidate.split = (value) => {\n const index = value.search(/([a-zA-Z]+)/g);\n let number, unit;\n if (index === -1) {\n number = value;\n } else {\n number = value.slice(0, index);\n unit = value.slice(index);\n }\n return [parseFloat(number, 10), unit];\n};\n\nconst baseUnitedValidation = (value) => {\n if (value === null || value.length === 0) {\n return;\n }\n if (value.search(/\\s/g) !== -1) {\n return 'white space is not allowed';\n }\n};\n\nconst validateNumber = (float = '') => {\n if (float < 0) {\n return 'must be positive';\n }\n if (!isFinite(float)) {\n return 'must be a number';\n }\n};\nconst validCPUUnits = new Set(['m', '']);\nconst validateCPUUnit = (value = '') => {\n if (validCPUUnits.has(value)) {\n return;\n }\n return `unrecongnized unit: ${value}`;\n};\n\nvalidate.CPU = (value = '') => {\n if (!value) {\n return;\n }\n const error = baseUnitedValidation(value);\n if (error) {\n return error;\n }\n\n const [number, unit] = validate.split(value);\n\n if (!unit) {\n return validateNumber(number);\n }\n\n return validateNumber(number) || validateCPUUnit(unit);\n};\n\nconst validMemUnits = new Set(['E', 'P', 'T', 'G', 'M', 'k', 'Pi', 'Ti', 'Gi', 'Mi', 'Ki']);\nconst validateMemUnit = (value = '') => {\n if (validMemUnits.has(value)) {\n return;\n }\n return `unrecongnized unit: ${value}`;\n};\n\nconst validTimeUnits = new Set(['s', 'm', 'h', 'd', 'M', 'y']);\nconst validateTimeUnit = (value = '') => {\n if (validTimeUnits.has(value)) {\n return;\n }\n return `unrecongnized unit: ${value}`;\n};\n\nvalidate.time = (value = '') => {\n if (!value) {\n return;\n }\n const error = baseUnitedValidation(value);\n if (error) {\n return error;\n }\n\n const [number, unit] = validate.split(value);\n\n if (!unit) {\n return 'number and unit required';\n }\n\n return validateNumber(number) || validateTimeUnit(unit);\n};\n\nvalidate.memory = (value = '') => {\n if (!value) {\n return;\n }\n const error = baseUnitedValidation(value);\n if (error) {\n return error;\n }\n\n const [number, unit] = validate.split(value);\n\n if (!unit) {\n return validateNumber(value);\n }\n\n return validateNumber(number) || validateMemUnit(unit);\n};\n\n// Convert k8s compute resources values to a base value for comparison.\n// If the value has no unit, it just returns the number, so this function\n// can be used for any quota resource (resource counts). `units.dehumanize`\n// is problematic for comparing quota resources because you need to know\n// what unit you're dealing with already (e.g. decimal vs binary). Returns\n// null if value isn't recognized as valid.\nexport const convertToBaseValue = (value) => {\n if (!_.isString(value)) {\n return null;\n }\n\n const [number, unit] = validate.split(value);\n const validationError = validateNumber(number);\n if (validationError) {\n return null;\n }\n\n if (!unit) {\n return number;\n }\n\n // Handle CPU millicores specifically.\n if (unit === 'm') {\n return number / 1000;\n }\n\n if (TYPES.binaryBytesWithoutB.units.includes(unit)) {\n return units.dehumanize(value, 'binaryBytesWithoutB').value;\n }\n\n if (TYPES.decimalBytesWithoutB.units.includes(unit)) {\n return units.dehumanize(value, 'decimalBytesWithoutB').value;\n }\n\n // Unrecognized unit.\n return null;\n};\n\nexport const secondsToNanoSeconds = (value) => {\n const val = Number(value);\n return Number.isFinite(val) ? val * 1000 ** 3 : 0;\n};\n\nexport const formatToFractionalDigits = (value, digits) =>\n Intl.NumberFormat(undefined, {\n minimumFractionDigits: digits,\n maximumFractionDigits: digits,\n }).format(value);\n\nexport const formatBytesAsMiB = (bytes) => {\n const mib = bytes / 1024 / 1024;\n return formatToFractionalDigits(mib, 1);\n};\n\nexport const formatBytesAsGiB = (bytes) => {\n const gib = bytes / 1024 / 1024 / 1024;\n return formatToFractionalDigits(gib, 2);\n};\n\nexport const formatCores = (cores) => formatToFractionalDigits(cores, 3);\n","import { Map as ImmutableMap } from 'immutable';\nimport { ResourceDetailsPage, ResourcePage, ResourceListPage } from '@console/plugin-sdk';\nimport {\n ResourceDetailsPage as DynamicResourceDetailsPage,\n ResourceListPage as DynamicResourceListPage,\n} from '@console/dynamic-plugin-sdk';\nimport { referenceForModel, GroupVersionKind, referenceForExtensionModel } from '../module/k8s';\nimport {\n AlertmanagerModel,\n AppliedClusterResourceQuotaModel,\n BuildConfigModel,\n BuildModel,\n ClusterOperatorModel,\n ClusterRoleModel,\n ClusterVersionModel,\n ConfigMapModel,\n ContainerModel,\n CronJobModel,\n ClusterResourceQuotaModel,\n CustomResourceDefinitionModel,\n DaemonSetModel,\n DeploymentConfigModel,\n DeploymentModel,\n GroupModel,\n HorizontalPodAutoscalerModel,\n ImageStreamModel,\n ImageStreamTagModel,\n IngressModel,\n JobModel,\n LimitRangeModel,\n MachineAutoscalerModel,\n MachineConfigModel,\n MachineConfigPoolModel,\n MachineHealthCheckModel,\n MachineModel,\n MachineSetModel,\n NamespaceModel,\n NetworkPolicyModel,\n NodeModel,\n PersistentVolumeClaimModel,\n PersistentVolumeModel,\n PodModel,\n ProjectModel,\n PrometheusModel,\n ReplicaSetModel,\n ReplicationControllerModel,\n ResourceQuotaModel,\n RoleBindingModel,\n RoleModel,\n RouteModel,\n SecretModel,\n ServiceAccountModel,\n ServiceModel,\n ServiceMonitorModel,\n StatefulSetModel,\n StorageClassModel,\n TemplateInstanceModel,\n UserModel,\n VolumeSnapshotModel,\n VolumeSnapshotClassModel,\n ClusterRoleBindingModel,\n MultiNetworkPolicyModel,\n} from '../models';\nimport { PodDisruptionBudgetModel } from '@console/app/src/models';\n\nconst addResourcePage = (\n map: ImmutableMap,\n page: ResourcePage,\n) => {\n const key = page.properties?.modelParser\n ? page.properties?.modelParser(page.properties.model)\n : referenceForModel(page.properties.model);\n if (!map.has(key)) {\n map.set(key, page.properties.loader);\n }\n};\n\nconst addDynamicResourcePage = (\n map: ImmutableMap,\n page: DynamicResourcePage,\n) => {\n const key = referenceForExtensionModel(page.properties.model);\n if (!map.has(key)) {\n map.set(key, page.properties.component);\n }\n};\n\ntype ResourceMapKey = GroupVersionKind | string;\ntype ResourceMapValue = () => Promise>;\ntype DynamicResourcePage = DynamicResourceListPage | DynamicResourceDetailsPage;\n\nexport const baseDetailsPages = ImmutableMap()\n .set(referenceForModel(ConfigMapModel), () =>\n import('./configmap' /* webpackChunkName: \"configmap\" */).then((m) => m.ConfigMapsDetailsPage),\n )\n .set(referenceForModel(ContainerModel), () =>\n import('./container' /* webpackChunkName: \"container\" */).then((m) => m.ContainersDetailsPage),\n )\n .set(referenceForModel(DaemonSetModel), () =>\n import('./daemon-set' /* webpackChunkName: \"daemon-set\" */).then(\n (m) => m.DaemonSetsDetailsPage,\n ),\n )\n .set(referenceForModel(DeploymentConfigModel), () =>\n import('./deployment-config' /* webpackChunkName: \"deployment-config\" */).then(\n (m) => m.DeploymentConfigsDetailsPage,\n ),\n )\n .set(referenceForModel(DeploymentModel), () =>\n import('./deployment' /* webpackChunkName: \"deployment\" */).then(\n (m) => m.DeploymentsDetailsPage,\n ),\n )\n .set(referenceForModel(BuildConfigModel), () =>\n import('./build-config' /* webpackChunkName: \"build-config\" */).then(\n (m) => m.BuildConfigsDetailsPage,\n ),\n )\n .set(referenceForModel(BuildModel), () =>\n import('./build' /* webpackChunkName: \"build\" */).then((m) => m.BuildsDetailsPage),\n )\n .set(referenceForModel(ImageStreamModel), () =>\n import('./image-stream' /* webpackChunkName: \"image-stream\" */).then(\n (m) => m.ImageStreamsDetailsPage,\n ),\n )\n .set(referenceForModel(ImageStreamTagModel), () =>\n import('./image-stream-tag' /* webpackChunkName: \"image-stream-tag\" */).then(\n (m) => m.ImageStreamTagsDetailsPage,\n ),\n )\n .set(referenceForModel(JobModel), () =>\n import('./job' /* webpackChunkName: \"job\" */).then((m) => m.JobsDetailsPage),\n )\n .set(referenceForModel(CronJobModel), () =>\n import('./cron-job' /* webpackChunkName: \"cron-job\" */).then((m) => m.CronJobsDetailsPage),\n )\n .set(referenceForModel(ProjectModel), () =>\n import('./namespace' /* webpackChunkName: \"namespace\" */).then((m) => m.ProjectsDetailsPage),\n )\n .set(referenceForModel(NamespaceModel), () =>\n import('./namespace' /* webpackChunkName: \"namespace\" */).then((m) => m.NamespacesDetailsPage),\n )\n .set(referenceForModel(NetworkPolicyModel), () =>\n import('./network-policy' /* webpackChunkName: \"network-policy\" */).then(\n (m) => m.NetworkPoliciesDetailsPage,\n ),\n )\n .set(referenceForModel(MultiNetworkPolicyModel), () =>\n import('./network-policy' /* webpackChunkName: \"network-policy\" */).then(\n (m) => m.NetworkPoliciesDetailsPage,\n ),\n )\n .set(referenceForModel(NodeModel), () =>\n import(\n '@console/app/src/components/nodes/NodeDetailsPage' /* webpackChunkName: \"node-detail\" */\n ).then((m) => m.default),\n )\n .set(referenceForModel(MachineAutoscalerModel), () =>\n import('./machine-autoscaler' /* webpackChunkName: \"machine-autoscaler\" */).then(\n (m) => m.MachineAutoscalerDetailsPage,\n ),\n )\n .set(referenceForModel(MachineConfigModel), () =>\n import('./machine-config' /* webpackChunkName: \"machine-config\" */).then(\n (m) => m.MachineConfigDetailsPage,\n ),\n )\n .set(referenceForModel(MachineConfigPoolModel), () =>\n import('./machine-config-pool' /* webpackChunkName: \"machine-config-pool\" */).then(\n (m) => m.MachineConfigPoolDetailsPage,\n ),\n )\n .set(referenceForModel(MachineModel), () =>\n import('./machine' /* webpackChunkName: \"machine\" */).then((m) => m.MachineDetailsPage),\n )\n .set(referenceForModel(MachineSetModel), () =>\n import('./machine-set' /* webpackChunkName: \"machine-set\" */).then(\n (m) => m.MachineSetDetailsPage,\n ),\n )\n .set(referenceForModel(MachineHealthCheckModel), () =>\n import('./machine-health-check' /* webpackChunkName: \"machine-health-check\" */).then(\n (m) => m.MachineHealthCheckDetailsPage,\n ),\n )\n .set(referenceForModel(PodModel), () =>\n import('./pod' /* webpackChunkName: \"pod\" */).then((m) => m.PodsDetailsPage),\n )\n .set(referenceForModel(ReplicaSetModel), () =>\n import('./replicaset' /* webpackChunkName: \"replicaset\" */).then(\n (m) => m.ReplicaSetsDetailsPage,\n ),\n ) //TODO should be replica-set\n .set(referenceForModel(ReplicationControllerModel), () =>\n import('./replication-controller' /* webpackChunkName: \"replication-controller\" */).then(\n (m) => m.ReplicationControllersDetailsPage,\n ),\n )\n .set(referenceForModel(SecretModel), () =>\n import('./secret' /* webpackChunkName: \"secret\" */).then((m) => m.SecretsDetailsPage),\n )\n .set(referenceForModel(ServiceAccountModel), () =>\n import('./service-account' /* webpackChunkName: \"service-account\" */).then(\n (m) => m.ServiceAccountsDetailsPage,\n ),\n )\n .set(referenceForModel(ServiceModel), () =>\n import('./service' /* webpackChunkName: \"service\" */).then((m) => m.ServicesDetailsPage),\n )\n .set(referenceForModel(IngressModel), () =>\n import('./ingress' /* webpackChunkName: \"ingress\" */).then((m) => m.IngressesDetailsPage),\n )\n .set(referenceForModel(RouteModel), () =>\n import('./routes' /* webpackChunkName: \"routes\" */).then((m) => m.RoutesDetailsPage),\n )\n .set(referenceForModel(ClusterRoleModel), () =>\n import('./RBAC/role' /* webpackChunkName: \"role\" */).then((m) => m.ClusterRolesDetailsPage),\n )\n .set(referenceForModel(RoleModel), () =>\n import('./RBAC/role' /* webpackChunkName: \"role\" */).then((m) => m.RolesDetailsPage),\n )\n .set(referenceForModel(ClusterRoleBindingModel), () =>\n import('./RBAC/role' /* webpackChunkName: \"role\" */).then(\n (m) => m.ClusterRoleBindingsDetailsPage,\n ),\n )\n .set(referenceForModel(UserModel), () =>\n import('./user' /* webpackChunkName: \"user\" */).then((m) => m.UserDetailsPage),\n )\n .set(referenceForModel(GroupModel), () =>\n import('./group' /* webpackChunkName: \"group\" */).then((m) => m.GroupDetailsPage),\n )\n .set(referenceForModel(AlertmanagerModel), () =>\n import('./alert-manager' /* webpackChunkName: \"alert-manager\" */).then(\n (m) => m.AlertManagersDetailsPage,\n ),\n )\n .set(referenceForModel(StatefulSetModel), () =>\n import('./stateful-set' /* webpackChunkName: \"stateful-set\" */).then(\n (m) => m.StatefulSetsDetailsPage,\n ),\n )\n .set(referenceForModel(ResourceQuotaModel), () =>\n import('./resource-quota' /* webpackChunkName: \"resource-quota\" */).then(\n (m) => m.ResourceQuotasDetailsPage,\n ),\n )\n .set(referenceForModel(ClusterResourceQuotaModel), () =>\n import('./resource-quota' /* webpackChunkName: \"resource-quota\" */).then(\n (m) => m.ResourceQuotasDetailsPage,\n ),\n )\n .set(referenceForModel(AppliedClusterResourceQuotaModel), () =>\n import('./resource-quota' /* webpackChunkName: \"resource-quota\" */).then(\n (m) => m.AppliedClusterResourceQuotasDetailsPage,\n ),\n )\n .set(referenceForModel(LimitRangeModel), () =>\n import('./limit-range' /* webpackChunkName: \"limit-range\" */).then(\n (m) => m.LimitRangeDetailsPage,\n ),\n )\n .set(referenceForModel(HorizontalPodAutoscalerModel), () =>\n import('./hpa' /* webpackChunkName: \"hpa\" */).then(\n (m) => m.HorizontalPodAutoscalersDetailsPage,\n ),\n )\n .set(referenceForModel(PersistentVolumeModel), () =>\n import('./persistent-volume' /* webpackChunkName: \"persistent-volume\" */).then(\n (m) => m.PersistentVolumesDetailsPage,\n ),\n )\n .set(referenceForModel(PersistentVolumeClaimModel), () =>\n import('./persistent-volume-claim' /* webpackChunkName: \"persistent-volume-claim\" */).then(\n (m) => m.PersistentVolumeClaimsDetailsPage,\n ),\n )\n .set(referenceForModel(StorageClassModel), () =>\n import('./storage-class' /* webpackChunkName: \"storage-class\" */).then(\n (m) => m.StorageClassDetailsPage,\n ),\n )\n .set(referenceForModel(TemplateInstanceModel), () =>\n import('./template-instance' /* webpackChunkName: \"template-instance\" */).then(\n (m) => m.TemplateInstanceDetailsPage,\n ),\n )\n .set(referenceForModel(CustomResourceDefinitionModel), () =>\n import(\n './custom-resource-definition' /* webpackChunkName: \"custom-resource-definition\" */\n ).then((m) => m.CustomResourceDefinitionsDetailsPage),\n )\n .set(referenceForModel(ClusterOperatorModel), () =>\n import('./cluster-settings/cluster-operator' /* webpackChunkName: \"cluster-operator\" */).then(\n (m) => m.ClusterOperatorDetailsPage,\n ),\n )\n .set(referenceForModel(ClusterVersionModel), () =>\n import('./cluster-settings/cluster-version' /* webpackChunkName: \"cluster-version\" */).then(\n (m) => m.ClusterVersionDetailsPage,\n ),\n )\n .set(referenceForModel(PodDisruptionBudgetModel), () =>\n import('@console/app/src/components/pdb/PDBDetailsPage' /* webpackChunkName: \"pdb\" */).then(\n (m) => m.PodDisruptionBudgetDetailsPage,\n ),\n )\n .set(referenceForModel(VolumeSnapshotModel), () =>\n import(\n '@console/app/src/components/volume-snapshot/volume-snapshot-details' /* webpackChunkName: \"volume-snapshot-details\" */\n ).then((m) => m.default),\n )\n .set(referenceForModel(VolumeSnapshotClassModel), () =>\n import(\n '@console/app/src/components/volume-snapshot/volume-snapshot-class-details' /* webpackChunkName: \"volume-snapshot-class-details\" */\n ).then((m) => m.default),\n );\n\nexport const getResourceDetailsPages = (\n pluginPages: ResourceDetailsPage[] = [],\n dynamicPluginPages: DynamicResourceDetailsPage[] = [],\n) =>\n ImmutableMap()\n .merge(baseDetailsPages)\n .withMutations((map) => {\n pluginPages.forEach((page) => {\n addResourcePage(map, page);\n });\n dynamicPluginPages.forEach((page) => {\n addDynamicResourcePage(map, page);\n });\n });\n\nexport const baseListPages = ImmutableMap()\n .set(referenceForModel(ConfigMapModel), () =>\n import('./configmap' /* webpackChunkName: \"configmap\" */).then((m) => m.ConfigMapsPage),\n )\n .set(referenceForModel(DaemonSetModel), () =>\n import('./daemon-set' /* webpackChunkName: \"daemon-set\" */).then((m) => m.DaemonSetsPage),\n )\n .set(referenceForModel(DeploymentConfigModel), () =>\n import('./deployment-config' /* webpackChunkName: \"deployment-config\" */).then(\n (m) => m.DeploymentConfigsPage,\n ),\n )\n .set(referenceForModel(DeploymentModel), () =>\n import('./deployment' /* webpackChunkName: \"deployment\" */).then((m) => m.DeploymentsPage),\n )\n .set(referenceForModel(BuildConfigModel), () =>\n import('./build-config' /* webpackChunkName: \"build-config\" */).then((m) => m.BuildConfigsPage),\n )\n .set(referenceForModel(BuildModel), () =>\n import('./build' /* webpackChunkName: \"build\" */).then((m) => m.BuildsPage),\n )\n .set(referenceForModel(ImageStreamModel), () =>\n import('./image-stream' /* webpackChunkName: \"image-stream\" */).then((m) => m.ImageStreamsPage),\n )\n .set(referenceForModel(JobModel), () =>\n import('./job' /* webpackChunkName: \"job\" */).then((m) => m.JobsPage),\n )\n .set(referenceForModel(CronJobModel), () =>\n import('./cron-job' /* webpackChunkName: \"cron-job\" */).then((m) => m.CronJobsPage),\n )\n .set(referenceForModel(ProjectModel), () =>\n import('./namespace' /* webpackChunkName: \"namespace\" */).then((m) => m.ProjectsPage),\n )\n .set(referenceForModel(NamespaceModel), () =>\n import('./namespace' /* webpackChunkName: \"namespace\" */).then((m) => m.NamespacesPage),\n )\n .set(referenceForModel(NetworkPolicyModel), () =>\n import('./network-policy' /* webpackChunkName: \"network-policy\" */).then(\n (m) => m.NetworkPoliciesPage,\n ),\n )\n .set(referenceForModel(MultiNetworkPolicyModel), () =>\n import(\n '@console/app/src/components/network-policies/multi-network-policy/MultiNetworkPolicyListPage' /* webpackChunkName: \"multi-network-policy\" */\n ).then((m) => m.MultiNetworkPolicyListPage),\n )\n .set(referenceForModel(NodeModel), () =>\n import('@console/app/src/components/nodes/NodesPage' /* webpackChunkName: \"node\" */).then(\n (m) => m.default,\n ),\n )\n .set(referenceForModel(MachineAutoscalerModel), () =>\n import('./machine-autoscaler' /* webpackChunkName: \"machine-autoscaler\" */).then(\n (m) => m.MachineAutoscalerPage,\n ),\n )\n .set(referenceForModel(MachineConfigModel), () =>\n import('./machine-config' /* webpackChunkName: \"machine-config\" */).then(\n (m) => m.MachineConfigPage,\n ),\n )\n .set(referenceForModel(MachineConfigPoolModel), () =>\n import('./machine-config-pool' /* webpackChunkName: \"machine-config-pool\" */).then(\n (m) => m.MachineConfigPoolPage,\n ),\n )\n .set(referenceForModel(MachineModel), () =>\n import('./machine' /* webpackChunkName: \"machine\" */).then((m) => m.MachinePage),\n )\n .set(referenceForModel(MachineHealthCheckModel), () =>\n import('./machine-health-check' /* webpackChunkName: \"machine-health-check\" */).then(\n (m) => m.MachineHealthCheckPage,\n ),\n )\n .set(referenceForModel(MachineSetModel), () =>\n import('./machine-set' /* webpackChunkName: \"machine-set\" */).then((m) => m.MachineSetPage),\n )\n .set(referenceForModel(PodModel), () =>\n import('./pod' /* webpackChunkName: \"pod\" */).then((m) => m.PodsPage),\n )\n .set(referenceForModel(ReplicaSetModel), () =>\n import('./replicaset' /* webpackChunkName: \"replicaset\" */).then((m) => m.ReplicaSetsPage),\n ) //TODO should be replica-set\n .set(referenceForModel(ReplicationControllerModel), () =>\n import('./replication-controller' /* webpackChunkName: \"replication-controller\" */).then(\n (m) => m.ReplicationControllersPage,\n ),\n )\n .set(referenceForModel(SecretModel), () =>\n import('./secret' /* webpackChunkName: \"secret\" */).then((m) => m.SecretsPage),\n )\n .set(referenceForModel(ServiceAccountModel), () =>\n import('./service-account' /* webpackChunkName: \"service-account\" */).then(\n (m) => m.ServiceAccountsPage,\n ),\n )\n .set(referenceForModel(ServiceModel), () =>\n import('./service' /* webpackChunkName: \"service\" */).then((m) => m.ServicesPage),\n )\n .set(referenceForModel(IngressModel), () =>\n import('./ingress' /* webpackChunkName: \"ingress\" */).then((m) => m.IngressesPage),\n )\n .set(referenceForModel(RouteModel), () =>\n import('./routes' /* webpackChunkName: \"routes\" */).then((m) => m.RoutesPage),\n )\n .set(referenceForModel(RoleModel), () =>\n import('./RBAC/role' /* webpackChunkName: \"role\" */).then((m) => m.RolesPage),\n )\n .set(referenceForModel(RoleBindingModel), () =>\n import('./RBAC/bindings' /* webpackChunkName: \"bindings\" */).then((m) => m.RoleBindingsPage),\n )\n .set(referenceForModel(UserModel), () =>\n import('./user' /* webpackChunkName: \"user\" */).then((m) => m.UserPage),\n )\n .set(referenceForModel(GroupModel), () =>\n import('./group' /* webpackChunkName: \"group\" */).then((m) => m.GroupPage),\n )\n .set(referenceForModel(PrometheusModel), () =>\n import('./prometheus' /* webpackChunkName: \"prometheus\" */).then(\n (m) => m.PrometheusInstancesPage,\n ),\n )\n .set(referenceForModel(ServiceMonitorModel), () =>\n import('./service-monitor' /* webpackChunkName: \"service-monitor\" */).then(\n (m) => m.ServiceMonitorsPage,\n ),\n )\n .set(referenceForModel(AlertmanagerModel), () =>\n import('./alert-manager' /* webpackChunkName: \"alert-manager\" */).then(\n (m) => m.AlertManagersPage,\n ),\n )\n .set(referenceForModel(StatefulSetModel), () =>\n import('./stateful-set' /* webpackChunkName: \"stateful-set\" */).then((m) => m.StatefulSetsPage),\n )\n .set(referenceForModel(ResourceQuotaModel), () =>\n import('./resource-quota' /* webpackChunkName: \"resource-quota\" */).then(\n (m) => m.ResourceQuotasPage,\n ),\n )\n .set(referenceForModel(AppliedClusterResourceQuotaModel), () =>\n import('./resource-quota' /* webpackChunkName: \"resource-quota\" */).then(\n (m) => m.AppliedClusterResourceQuotasPage,\n ),\n )\n .set(referenceForModel(LimitRangeModel), () =>\n import('./limit-range' /* webpackChunkName: \"limit-range\" */).then((m) => m.LimitRangeListPage),\n )\n .set(referenceForModel(HorizontalPodAutoscalerModel), () =>\n import('./hpa' /* webpackChunkName: \"hpa\" */).then((m) => m.HorizontalPodAutoscalersPage),\n )\n .set(referenceForModel(PersistentVolumeModel), () =>\n import('./persistent-volume' /* webpackChunkName: \"persistent-volume\" */).then(\n (m) => m.PersistentVolumesPage,\n ),\n )\n .set(referenceForModel(PersistentVolumeClaimModel), () =>\n import('./persistent-volume-claim' /* webpackChunkName: \"persistent-volume-claim\" */).then(\n (m) => m.PersistentVolumeClaimsPage,\n ),\n )\n .set(referenceForModel(StorageClassModel), () =>\n import('./storage-class' /* webpackChunkName: \"storage-class\" */).then(\n (m) => m.StorageClassPage,\n ),\n )\n .set(referenceForModel(TemplateInstanceModel), () =>\n import('./template-instance' /* webpackChunkName: \"template-instance\" */).then(\n (m) => m.TemplateInstancePage,\n ),\n )\n .set(referenceForModel(CustomResourceDefinitionModel), () =>\n import(\n './custom-resource-definition' /* webpackChunkName: \"custom-resource-definition\" */\n ).then((m) => m.CustomResourceDefinitionsPage),\n )\n .set(referenceForModel(ClusterOperatorModel), () =>\n import('./cluster-settings/cluster-operator' /* webpackChunkName: \"cluster-operator\" */).then(\n (m) => m.ClusterOperatorPage,\n ),\n )\n .set(referenceForModel(PodDisruptionBudgetModel), () =>\n import('@console/app/src/components/pdb/PDBPage' /* webpackChunkName: \"pdb\" */).then(\n (m) => m.PodDisruptionBudgetsPage,\n ),\n )\n .set(referenceForModel(VolumeSnapshotModel), () =>\n import(\n '@console/app/src/components/volume-snapshot/volume-snapshot' /* webpackChunkName: \"volume-snapshot\" */\n ).then((m) => m.default),\n )\n .set(referenceForModel(VolumeSnapshotClassModel), () =>\n import(\n '@console/app/src/components/volume-snapshot/volume-snapshot-class' /* webpackChunkName: \"volume-snapshot-class\" */\n ).then((m) => m.default),\n );\n\nexport const getResourceListPages = (\n pluginPages: ResourceListPage[] = [],\n dynamicPluginPages: DynamicResourceListPage[] = [],\n) =>\n ImmutableMap()\n .merge(baseListPages)\n .withMutations((map) => {\n pluginPages.forEach((page) => {\n addResourcePage(map, page);\n });\n dynamicPluginPages.forEach((page) => {\n addDynamicResourcePage(map, page);\n });\n });\n","import i18next from 'i18next';\nimport { K8sKind } from '../../module/k8s';\nimport { LAST_NAMESPACE_NAME_LOCAL_STORAGE_KEY } from '@console/shared/src/constants';\nimport { ALL_NAMESPACES_KEY } from '@console/shared/src/constants/common';\nimport { breadcrumbsForGlobalConfig } from '../cluster-settings/global-config';\n\nexport const getLastNamespace = () => sessionStorage.getItem(LAST_NAMESPACE_NAME_LOCAL_STORAGE_KEY);\n\nexport const getBreadcrumbPath = (params: any, customPlural?: string) => {\n if (params.ns) {\n return getLastNamespace() === ALL_NAMESPACES_KEY\n ? `/k8s/all-namespaces/${customPlural || params.plural}`\n : `/k8s/ns/${params.ns}/${customPlural || params.plural}`;\n }\n return `/k8s/cluster/${customPlural || params.plural}`;\n};\n\nexport const breadcrumbsForDetailsPage = (kindObj: K8sKind, params: any, location: any) => () =>\n (kindObj.apiGroup === 'config.openshift.io' && params.name === 'cluster') ||\n kindObj.apiGroup === 'operator.openshift.io'\n ? breadcrumbsForGlobalConfig(i18next.t(kindObj.labelKey) || kindObj.label, location.pathname)\n : [\n {\n name:\n (kindObj.labelPluralKey && i18next.t(kindObj.labelPluralKey)) || kindObj.labelPlural,\n path: getBreadcrumbPath(params),\n },\n {\n name: i18next.t('public~{{kind}} details', {\n kind: (kindObj.labelKey && i18next.t(kindObj.labelKey)) || kindObj.label,\n }),\n path: `${location.pathname}`,\n },\n ];\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { useLocation } from 'react-router-dom-v5-compat';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useDispatch } from 'react-redux';\nimport {\n Badge,\n Button,\n Toolbar,\n ToolbarChip,\n ToolbarContent,\n ToolbarFilter,\n ToolbarGroup,\n ToolbarItem,\n ToolbarToggleGroup,\n Tooltip,\n} from '@patternfly/react-core';\nimport {\n Select as SelectDeprecated,\n SelectGroup as SelectGroupDeprecated,\n SelectOption as SelectOptionDeprecated,\n SelectVariant as SelectVariantDeprecated,\n} from '@patternfly/react-core/deprecated';\nimport { FilterIcon } from '@patternfly/react-icons/dist/esm/icons/filter-icon';\nimport { ColumnsIcon } from '@patternfly/react-icons/dist/esm/icons/columns-icon';\nimport {\n RowFilterItem,\n ColumnLayout,\n OnFilterChange,\n FilterValue,\n RowSearchFilter,\n} from '@console/dynamic-plugin-sdk';\nimport {\n Dropdown as DropdownInternal,\n setOrRemoveQueryArgument,\n} from '@console/internal/components/utils';\nimport { useTranslation } from 'react-i18next';\nimport AutocompleteInput from './autocomplete';\nimport { storagePrefix } from './row-filter';\nimport { createColumnManagementModal } from './modals';\nimport { useDebounceCallback, useDeepCompareMemoize } from '@console/shared/src';\nimport { TextFilter } from './factory';\nimport { filterList } from '@console/dynamic-plugin-sdk/src/app/k8s/actions/k8s';\nimport useRowFilterFix from './useRowFilterFix';\nimport useLabelSelectionFix from './useLabelSelectionFix';\nimport useSearchFilters from './useSearchFilters';\n\n/**\n * Housing both the row filter and name/label filter in the same file.\n */\n\nenum FilterType {\n NAME = 'Name',\n LABEL = 'Label',\n}\n\nexport const filterTypeMap = Object.freeze({\n [FilterType.LABEL]: 'labels',\n [FilterType.NAME]: 'name',\n});\n\ntype Filter = {\n [key: string]: string[];\n};\n\ntype FilterKeys = {\n [key: string]: string;\n};\n\nexport const FilterToolbar: React.FC = ({\n rowFilters,\n data,\n hideColumnManagement,\n hideLabelFilter,\n hideNameLabelFilters,\n columnLayout,\n nameFilterPlaceholder,\n nameFilterTitle,\n labelFilterPlaceholder,\n textFilter = filterTypeMap[FilterType.NAME],\n labelFilter = filterTypeMap[FilterType.LABEL],\n uniqueFilterName,\n reduxIDs,\n onFilterChange,\n labelPath,\n rowSearchFilters = [],\n}) => {\n const dispatch = useDispatch();\n const location = useLocation();\n\n const { t } = useTranslation();\n\n const translatedNameFilterTitle = nameFilterTitle ?? t('public~Name');\n\n const { searchFiltersObject, searchFiltersState, changeSearchFiltersState } = useSearchFilters(\n rowSearchFilters,\n uniqueFilterName,\n );\n\n const translateFilterType = (value: string) => {\n switch (value) {\n case 'Name':\n return translatedNameFilterTitle;\n case 'Label':\n return t('public~Label');\n default:\n return searchFiltersObject?.[value]?.filterGroupName || value;\n }\n };\n\n const filterDropdownItems: Record = {\n ...Object.keys(searchFiltersObject || {}).reduce(\n (acc, key) => ({\n ...acc,\n [key]: searchFiltersObject[key].filterGroupName,\n }),\n {},\n ),\n };\n\n if (!hideLabelFilter && !hideNameLabelFilters) {\n filterDropdownItems.LABEL = t('public~Label');\n }\n\n if (!hideNameLabelFilters) {\n filterDropdownItems.NAME = translatedNameFilterTitle;\n }\n\n // use unique name only when only when more than 1 table is in the view\n const nameFilterQueryArgumentKey = uniqueFilterName\n ? `${uniqueFilterName}-${textFilter}`\n : textFilter;\n const labelFilterQueryArgumentKey = uniqueFilterName\n ? `${uniqueFilterName}-${labelFilter}`\n : labelFilter;\n\n const params = new URLSearchParams(location.search);\n const [isOpen, setOpen] = React.useState(false);\n const [nameInputText, setNameInputText] = React.useState(\n params.get(nameFilterQueryArgumentKey) ?? '',\n );\n const [labelInputText, setLabelInputText] = React.useState('');\n\n const [filterType, setFilterType] = React.useState(\n nameInputText || !hideNameLabelFilters\n ? FilterType.NAME\n : Object.keys(searchFiltersState)?.[0] || rowSearchFilters?.[0]?.type,\n );\n\n // Generate rowFilter items and counts. Memoize to minimize re-renders.\n const generatedRowFilters = useDeepCompareMemoize(\n (rowFilters ?? []).map((rowFilter) => ({\n ...rowFilter,\n items: rowFilter.items.map((item) => ({\n ...item,\n count: (rowFilter as RowMatchFilter).isMatch\n ? _.filter(data, (d) => (rowFilter as RowMatchFilter).isMatch(d, item.id)).length\n : _.countBy(data, (rowFilter as RowReducerFilter).reducer)?.[item.id] ?? '0',\n })),\n })),\n );\n\n // Reduce generatedRowFilters once and memoize\n const [filters, filtersNameMap, filterKeys, defaultSelections] = React.useMemo<\n [Filter, FilterKeys, FilterKeys, string[]]\n >(\n () =>\n generatedRowFilters.reduce(\n (\n [filtersAcc, filtersNameMapAcc, filterKeysAcc, defaultSelectedAcc],\n { defaultSelected, filterGroupName, items, type },\n ) => [\n // (rowFilters) => {'rowFilterTypeA': ['staA', 'staB'], 'rowFilterTypeB': ['stbA'] }\n {\n ...filtersAcc,\n [filterGroupName]: (items ?? []).map(({ id }) => id),\n },\n // {id: 'a' , title: 'A'} => filterNameMap['a'] = A\n {\n ...filtersNameMapAcc,\n ...(items ?? []).reduce(\n (itemAcc, { id, title }) => ({\n ...itemAcc,\n [id]: title,\n }),\n {},\n ),\n },\n // (storagePrefix, rowFilters) => { 'rowFilterTypeA' = 'storagePrefix-filterTypeA' ...}\n {\n ...filterKeysAcc,\n [filterGroupName]: `${storagePrefix}${type}`,\n },\n // Default selections\n _.uniq([...defaultSelectedAcc, ...(defaultSelected ?? [])]),\n ],\n [{}, {}, {}, []],\n ),\n [generatedRowFilters],\n );\n const [selectedRowFilters, onRowFilterSearchParamChange, rowFiltersInitialized] = useRowFilterFix(\n params,\n filters,\n filterKeys,\n defaultSelections,\n );\n const [labelSelection, onLabelSelectionChange, labelSelectionInitialized] = useLabelSelectionFix(\n params,\n labelFilterQueryArgumentKey,\n );\n\n // Map row filters to select groups\n const dropdownItems = generatedRowFilters.map((rowFilter) => (\n \n {rowFilter.items?.map?.((item) =>\n item.hideIfEmpty && (item.count === 0 || item.count === '0') ? (\n \n ) : (\n \n {item.title}\n \n {item.count}\n \n \n ),\n )}\n \n ));\n\n const applyFilters = React.useCallback(\n (type: string, input: FilterValue) =>\n onFilterChange\n ? onFilterChange(type, input)\n : reduxIDs?.forEach?.((id) => dispatch(filterList(id, type, input))),\n [onFilterChange, reduxIDs, dispatch],\n );\n\n const applyTextFilter = React.useCallback(\n (value: string, filterName: string) => {\n applyFilters(filterName, { selected: [value] });\n },\n [applyFilters],\n );\n\n const searchRowFilters = rowSearchFilters.map((searchFilter) => (\n {\n changeSearchFiltersState(searchFilter.type, '');\n applyTextFilter('', searchFilter.type);\n }}\n chips={searchFiltersState[searchFilter.type] ? [searchFiltersState[searchFilter.type]] : []}\n >\n <>\n \n ));\n\n const applyRowFilter = (selected: string[]) => {\n generatedRowFilters?.forEach?.(({ items, type }) => {\n const all = items?.map?.(({ id }) => id) ?? [];\n const recognized = _.intersection(selected, all);\n applyFilters(type, { selected: [...new Set(recognized)], all });\n });\n };\n\n const updateRowFilterSelected = (id: string[]) => {\n const selectedNew = _.xor(selectedRowFilters, id);\n onRowFilterSearchParamChange(selectedNew);\n applyRowFilter(selectedNew);\n };\n\n const clearAllRowFilter = (f: string) => {\n updateRowFilterSelected(_.intersection(filters[f], selectedRowFilters));\n };\n\n const onRowFilterSelect = (event) => {\n updateRowFilterSelected([event?.target?.id]);\n };\n\n const applyLabelFilters = (values: string[]) => {\n setLabelInputText('');\n onLabelSelectionChange(values);\n applyFilters(labelFilter, { all: values });\n };\n\n const applyNameFilter = React.useCallback(\n (value: string) => {\n setOrRemoveQueryArgument(nameFilterQueryArgumentKey, value);\n applyFilters(textFilter, { selected: [value] });\n },\n [applyFilters, nameFilterQueryArgumentKey, textFilter],\n );\n\n const debounceApplyNameFilter = useDebounceCallback(applyNameFilter, 250);\n const debounceApplyTextFilter = useDebounceCallback(applyTextFilter, 250);\n\n const clearAll = () => {\n updateRowFilterSelected(selectedRowFilters);\n if (!hideNameLabelFilters) {\n setNameInputText('');\n applyNameFilter('');\n }\n if (!hideNameLabelFilters || !hideLabelFilter) {\n setLabelInputText('');\n applyLabelFilters([]);\n }\n\n if (rowSearchFilters.length > 0) {\n Object.keys(searchFiltersState).forEach((key) => {\n changeSearchFiltersState(key, '');\n applyTextFilter('', key);\n });\n }\n };\n\n // Run once on mount to apply filters from query params\n React.useEffect(() => {\n if (!hideNameLabelFilters || !hideLabelFilter) {\n applyFilters(labelFilter, { all: labelSelection });\n }\n if (!hideNameLabelFilters) {\n applyFilters(textFilter, { selected: [nameInputText] });\n }\n\n if (rowSearchFilters.length > 0) {\n Object.keys(searchFiltersState).forEach((key) => {\n applyFilters(key, { selected: [searchFiltersState[key]] });\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /**\n * Initialize any external data filters based on the hack-fix data when they are finished init\n * TODO: Remove during https://issues.redhat.com/browse/CONSOLE-3147\n */\n React.useEffect(() => {\n if (rowFiltersInitialized && labelSelectionInitialized) {\n applyFilters(labelFilter, { all: labelSelection });\n applyRowFilter(selectedRowFilters);\n }\n // Trigger the update only when we are initialized to sync the url params with the data\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [rowFiltersInitialized, labelSelectionInitialized]);\n\n const showSearchFilters = Object.keys(filterDropdownItems).length !== 0;\n\n const showSearchFiltersDropdown = Object.keys(filterDropdownItems).length > 1;\n return (\n \n \n {(rowFilters?.length > 0 || !hideNameLabelFilters) && (\n } breakpoint=\"md\">\n {rowFilters?.length > 0 && (\n \n {_.reduce(\n Object.keys(filters),\n (acc, key) => (\n {\n return {\n key: item,\n node: filtersNameMap[item],\n };\n })}\n deleteChip={(_filter, chip: ToolbarChip) =>\n updateRowFilterSelected([chip.key])\n }\n categoryName={key}\n deleteChipGroup={() => clearAllRowFilter(key)}\n chipGroupCollapsedText={t('public~{{numRemaining}} more', {\n numRemaining: '${remaining}',\n })}\n chipGroupExpandedText={t('public~Show less')}\n >\n {acc}\n \n ),\n
    \n \n \n {t('public~Filter')}\n \n }\n isOpen={isOpen}\n onToggle={(_toggleEvent, isExpanded) => setOpen(isExpanded)}\n onSelect={onRowFilterSelect}\n variant={SelectVariantDeprecated.checkbox}\n selections={selectedRowFilters}\n isCheckboxSelectionBadgeHidden\n isGrouped\n maxHeight=\"60vh\"\n >\n {dropdownItems}\n \n
    ,\n )}\n
    \n )}\n {showSearchFilters && (\n \n {searchRowFilters}\n {\n setLabelInputText('');\n applyLabelFilters([]);\n }}\n chips={labelSelection}\n deleteChip={(f, chip: string) => {\n setLabelInputText('');\n applyLabelFilters(_.difference(labelSelection, [chip]));\n }}\n categoryName={t('public~Label')}\n >\n {\n setNameInputText('');\n applyNameFilter('');\n }}\n categoryName={translatedNameFilterTitle}\n >\n
    \n {showSearchFiltersDropdown && (\n setFilterType(FilterType[type] || type)}\n selectedKey={filterType}\n title={translateFilterType(filterType)}\n />\n )}\n {filterType === FilterType.LABEL && (\n {\n applyLabelFilters(_.uniq([...labelSelection, selected]));\n }}\n showSuggestions\n textValue={labelInputText}\n setTextValue={setLabelInputText}\n placeholder={labelFilterPlaceholder ?? t('public~Search by label...')}\n data={data}\n labelPath={labelPath}\n />\n )}\n\n {filterType === FilterType.NAME && (\n {\n setNameInputText(value);\n debounceApplyNameFilter(value);\n }}\n placeholder={nameFilterPlaceholder ?? t('public~Search by name...')}\n />\n )}\n\n {searchFiltersObject[filterType] && (\n {\n changeSearchFiltersState(filterType, value);\n debounceApplyTextFilter(value, filterType);\n }}\n placeholder={searchFiltersObject[filterType].placeholder}\n />\n )}\n
    \n \n \n
    \n )}\n
    \n )}\n {columnLayout?.id && !hideColumnManagement && (\n \n \n \n \n createColumnManagementModal({\n columnLayout,\n })\n }\n aria-label={t('public~Column management')}\n data-test=\"manage-columns\"\n >\n \n \n \n \n \n )}\n
    \n \n );\n};\n\ntype RowFilterBase = {\n filterGroupName: string;\n type: string;\n items: RowFilterItem[];\n filter?: (input: FilterValue, obj: R) => boolean;\n defaultSelected?: string[];\n};\n\nexport type RowMatchFilter = RowFilterBase & {\n isMatch: (obj: R, id: string) => boolean;\n};\n\nexport type RowReducerFilter = RowFilterBase & {\n reducer: (obj: R) => React.ReactText;\n};\n\nexport type RowFilter = RowMatchFilter | RowReducerFilter;\n\ntype FilterToolbarProps = {\n rowFilters?: RowFilter[];\n data?: any;\n reduxIDs?: string[];\n textFilter?: string;\n hideColumnManagement?: boolean;\n hideLabelFilter?: boolean;\n hideNameLabelFilters?: boolean;\n labelFilter?: string;\n parseAutoComplete?: any;\n kinds?: any;\n labelPath?: string;\n columnLayout?: ColumnLayout;\n nameFilterPlaceholder?: string;\n nameFilterTitle?: string;\n labelFilterPlaceholder?: string;\n // Used when multiple tables are in the same page\n uniqueFilterName?: string;\n onFilterChange?: OnFilterChange;\n rowSearchFilters?: RowSearchFilter[];\n};\n\nFilterToolbar.displayName = 'FilterToolbar';\n","import { requirementFromString } from './selector-requirement';\nimport { MatchExpression } from './index';\n\ntype Options = { undefinedWhenEmpty?: boolean; basic?: boolean };\n\nexport const fromRequirements = (requirements: MatchExpression[], options = {} as Options) => {\n options = options || {};\n const selector = {\n matchLabels: {},\n matchExpressions: [],\n };\n\n if (options.undefinedWhenEmpty && requirements.length === 0) {\n return;\n }\n\n requirements.forEach((r) => {\n if (r.operator === 'Equals') {\n selector.matchLabels[r.key] = r.values[0];\n } else {\n selector.matchExpressions.push(r);\n }\n });\n\n // old selector format?\n if (options.basic) {\n return selector.matchLabels;\n }\n\n return selector;\n};\n\nexport const split = (str: string) => (str.trim() ? str.split(/,(?![^(]*\\))/) : []); // [''] -> []\n\nexport const selectorFromString = (str: string) => {\n const requirements = split(str || '').map(requirementFromString) as MatchExpression[];\n return fromRequirements(requirements);\n};\n","export * from '@console/dynamic-plugin-sdk/src/utils/k8s/ws-factory';\n","import * as React from 'react';\nimport * as _ from 'lodash-es';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom-v5-compat';\nimport { AlertVariant } from '@patternfly/react-core';\nimport { useTranslation } from 'react-i18next';\nimport { useResolvedExtensions } from '@console/dynamic-plugin-sdk/src/api/useResolvedExtensions';\nimport { RootState } from '../../redux';\nimport {\n K8sKind,\n k8sList,\n referenceForModel,\n getResourceDescription,\n modelFor,\n referenceForGroupVersionKind,\n} from '../../module/k8s';\nimport { EmptyBox, ExpandableAlert, Kebab, LoadingBox, resourcePathFromModel } from '../utils';\nimport { TextFilter } from '../factory';\nimport { fuzzyCaseInsensitive } from '../factory/table-filters';\nimport i18next from 'i18next';\nimport {\n ClusterGlobalConfig,\n isClusterGlobalConfig,\n} from '@console/dynamic-plugin-sdk/src/extensions/cluster-settings';\nimport { useCanClusterUpgrade } from '@console/shared';\nimport filterNonUpgradableResources from './filterNonUpgradableResources';\nimport { IDP_TYPES } from '@console/shared/src/constants/auth';\n\ntype ConfigDataType = { model: K8sKind; id: string; name: string; namespace: string };\n\nconst stateToProps = (state: RootState) => ({\n configResources: state.k8s.getIn(['RESOURCES', 'configResources']),\n clusterOperatorConfigResources: state.k8s.getIn(['RESOURCES', 'clusterOperatorConfigResources']),\n});\n\nexport const breadcrumbsForGlobalConfig = (detailsPageKind: string, detailsPagePath: string) => [\n {\n name: i18next.t('public~Configuration'),\n path: '/settings/cluster/globalconfig',\n },\n {\n name: i18next.t('public~{{kind}} details', { kind: detailsPageKind }),\n path: detailsPagePath,\n },\n];\n\nconst ItemRow = ({ item, showAPIGroup }) => {\n return (\n
    \n
    \n \n {item.label}\n \n {showAPIGroup &&
    {item.apiGroup}
    }\n
    \n
    \n
    {item.description || '-'}
    \n
    \n
    \n \n
    \n
    \n );\n};\n\nconst GlobalConfigPage_: React.FC = ({\n clusterOperatorConfigResources,\n configResources,\n globalConfigs,\n}) => {\n const [errors, setErrors] = React.useState([]);\n const [items, setItems] = React.useState([]);\n const [loading, setLoading] = React.useState(true);\n const [textFilter, setTextFilter] = React.useState('');\n const { t } = useTranslation();\n\n React.useEffect(() => {\n const oauthMenuItems = _.map(IDP_TYPES, (label: string, id: string) => ({\n label: t('public~{{label}}', { label }),\n href: `/settings/idp/${id}`,\n }));\n const editYAMLMenuItem = (name: string, resourceLink: string) => ({\n label: t('public~Edit {{name}} resource', { name }),\n href: `${resourceLink}/yaml`,\n });\n const viewAPIExplorerMenuItem = (name: string, apiExplorerLink: string) => ({\n label: t('public~Explore {{name}} API', { name }),\n href: apiExplorerLink,\n });\n let isSubscribed = true;\n Promise.all(\n [...configResources, ...clusterOperatorConfigResources].map((model: K8sKind) => {\n return k8sList(model)\n .catch(({ response: { status }, message = `Could not get resource ${model.kind}` }) => {\n if (status !== 403) {\n setErrors((current) => [...current, message]);\n }\n return [];\n })\n .then((resources) => resources.map((i: K8sKind) => ({ ...i, model })));\n }),\n ).then((responses) => {\n const flattenedResponses = _.flatten(responses);\n const winnowedResponses: ConfigDataType[] = flattenedResponses.map((item) => ({\n model: item.model,\n id: item.metadata.uid,\n name: item.metadata.name,\n namespace: item.metadata.namespace,\n }));\n const usableConfigs: ConfigDataType[] = globalConfigs.map(({ properties }) => {\n const { group, version, kind } = properties.model;\n return {\n ...properties,\n model: modelFor(referenceForGroupVersionKind(group)(version)(kind)),\n };\n });\n const allItems = [...winnowedResponses, ...usableConfigs]\n .flatMap((item) => {\n if (item.model) {\n const apiExplorerLink = `/api-resource/cluster/${referenceForModel(item.model)}`;\n const resourceLink = resourcePathFromModel(item.model, item.name, item.namespace);\n return {\n label: item.model.kind,\n apiGroup: item.model.apiGroup,\n id: item.id,\n description: getResourceDescription(item.model),\n path: resourceLink,\n menuItems: [\n editYAMLMenuItem(item.model.kind, resourceLink),\n viewAPIExplorerMenuItem(item.model.kind, apiExplorerLink),\n ...(item.model.kind === 'OAuth' ? oauthMenuItems : []),\n ],\n };\n }\n return [];\n })\n .concat([\n {\n label: 'Alertmanager',\n apiGroup: 'monitoring.coreos.com',\n id: 'alertmanager',\n description: 'Configure grouping and routing of alerts',\n path: '/monitoring/alertmanagerconfig',\n menuItems: [\n {\n label: t('public~Create Receiver'),\n href: '/monitoring/alertmanagerconfig/receivers/~new',\n },\n {\n label: t('public~Edit configuration YAML'),\n href: `/monitoring/alertmanageryaml`,\n },\n ],\n },\n ]);\n const sortedItems = _.sortBy(_.flatten(allItems), 'label', 'asc');\n if (isSubscribed) {\n setItems(sortedItems);\n setLoading(false);\n }\n });\n return () => (isSubscribed = false);\n }, [clusterOperatorConfigResources, configResources, globalConfigs, t]);\n const visibleItems = items.filter(({ label, description = '' }) => {\n return (\n fuzzyCaseInsensitive(textFilter, label) ||\n description.toLowerCase().indexOf(textFilter.toLowerCase()) !== -1\n );\n });\n const groupedItems = _.groupBy(visibleItems, _.property('label'));\n const showAPIGroup = (item) => groupedItems?.[item]?.length > 1;\n\n return (\n
    \n {!loading && (\n <>\n

    \n {t('public~Edit the following resources to manage the configuration of your cluster.')}\n

    \n
    \n setTextFilter(val)}\n />\n
    \n \n )}\n {!_.isEmpty(errors) && (\n (\n
    {error}
    \n ))}\n />\n )}\n {loading && }\n {!loading &&\n (_.isEmpty(visibleItems) ? (\n \n ) : (\n
    \n
    \n
    {t('public~Configuration resource')}
    \n
    {t('public~Description')}
    \n
    \n
    \n {_.map(visibleItems, (item) => (\n \n ))}\n
    \n
    \n ))}\n
    \n );\n};\n\nexport const GlobalConfigPage = connect(stateToProps)(({ configResources, ...props }) => {\n const [resolvedExtensions] = useResolvedExtensions(isClusterGlobalConfig);\n\n const canClusterUpgrade = useCanClusterUpgrade();\n const adjustedConfigResources = canClusterUpgrade\n ? configResources\n : configResources.filter(filterNonUpgradableResources);\n\n return (\n \n );\n});\n\ntype GlobalConfigPageExtensionProps = {\n globalConfigs: ClusterGlobalConfig[];\n};\n\ntype GlobalConfigPageProps = GlobalConfigPageExtensionProps & {\n clusterOperatorConfigResources: K8sKind[];\n configResources: K8sKind[];\n};\n","import { K8sKind } from '@console/internal/module/k8s';\n\nexport const LocalVolumeDiscoveryResult: K8sKind = {\n label: 'Local Volume Discovery Result',\n labelPlural: 'Local Volume Discovery Results',\n apiVersion: 'v1alpha1',\n apiGroup: 'local.storage.openshift.io',\n plural: 'localvolumediscoveryresults',\n abbr: 'LVDR',\n namespaced: true,\n kind: 'LocalVolumeDiscoveryResult',\n id: 'localvolumediscoveryresults',\n crd: true,\n};\n\nexport const LocalVolumeSetModel: K8sKind = {\n label: 'Local Volume Set',\n labelPlural: 'Local Volume Sets',\n apiVersion: 'v1alpha1',\n apiGroup: 'local.storage.openshift.io',\n plural: 'localvolumesets',\n abbr: 'LVS',\n namespaced: true,\n kind: 'LocalVolumeSet',\n id: 'localvolumeset',\n crd: true,\n};\n\nexport const LocalVolumeModel: K8sKind = {\n label: 'Local Volume',\n labelPlural: 'Local Volumes',\n apiVersion: 'v1',\n apiGroup: 'local.storage.openshift.io',\n plural: 'localvolumes',\n abbr: 'LV',\n namespaced: true,\n kind: 'LocalVolume',\n id: 'localvolume',\n crd: true,\n};\n\nexport const LocalVolumeDiscovery: K8sKind = {\n label: 'Local Volume Discovery',\n labelPlural: 'Local Volume Discoveries',\n apiVersion: 'v1alpha1',\n apiGroup: 'local.storage.openshift.io',\n plural: 'localvolumediscoveries',\n abbr: 'LVD',\n namespaced: true,\n kind: 'LocalVolumeDiscovery',\n id: 'localvolumediscovery',\n crd: true,\n};\n","import * as React from 'react';\nimport { useForceRender } from '@console/shared/src/hooks/useForceRender';\nimport { DynamicPluginInfo } from '../store';\nimport { subscribeToDynamicPlugins } from './pluginSubscriptionService';\n\n/**\n * React hook for consuming Console dynamic plugin runtime information.\n *\n * When the runtime status of a dynamic plugin changes, the React component\n * is re-rendered with the hook returning an up-to-date plugin information.\n *\n * Example usage:\n *\n * ```ts\n * const Example = () => {\n * const [pluginInfoEntries, allPluginsProcessed] = useDynamicPluginInfo();\n * // process plugin entries and render your component\n * };\n * ```\n *\n * The hook's result elements are guaranteed to be referentially stable across re-renders.\n *\n * @returns Console dynamic plugin runtime information.\n */\nexport const useDynamicPluginInfo = (): [DynamicPluginInfo[], boolean] => {\n const forceRender = useForceRender();\n\n const isMountedRef = React.useRef(true);\n const unsubscribeRef = React.useRef(null);\n const pluginInfoEntriesRef = React.useRef([]);\n const allPluginsProcessedRef = React.useRef(false);\n\n const trySubscribe = React.useCallback(() => {\n if (unsubscribeRef.current === null) {\n unsubscribeRef.current = subscribeToDynamicPlugins((pluginInfoEntries) => {\n pluginInfoEntriesRef.current = pluginInfoEntries;\n allPluginsProcessedRef.current = pluginInfoEntries.every((i) => i.status !== 'Pending');\n isMountedRef.current && forceRender();\n });\n }\n }, [forceRender]);\n\n const tryUnsubscribe = React.useCallback(() => {\n if (unsubscribeRef.current !== null) {\n unsubscribeRef.current();\n unsubscribeRef.current = null;\n }\n }, []);\n\n trySubscribe();\n\n React.useEffect(\n () => () => {\n isMountedRef.current = false;\n tryUnsubscribe();\n },\n [tryUnsubscribe],\n );\n\n return [pluginInfoEntriesRef.current, allPluginsProcessedRef.current];\n};\n","import * as React from 'react';\nimport * as _ from 'lodash';\n\nexport const useDeepCompareMemoize = (value: T, strinfigy?: boolean): T => {\n const ref = React.useRef();\n\n if (\n strinfigy\n ? JSON.stringify(value) !== JSON.stringify(ref.current)\n : !_.isEqual(value, ref.current)\n ) {\n ref.current = value;\n }\n\n return ref.current;\n};\n","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport * as fuzzy from 'fuzzysearch';\nimport { useLocation, useParams } from 'react-router-dom-v5-compat';\nimport { RoleModel, RoleBindingModel, ClusterRoleBindingModel } from '../../models';\nimport * as classNames from 'classnames';\nimport { useTranslation, withTranslation } from 'react-i18next';\nimport i18next from 'i18next';\nimport { sortable } from '@patternfly/react-table';\nimport { BindingName, BindingsList, flatten as bindingsFlatten } from './bindings';\nimport { RulesList } from './rules';\nimport { DetailsPage, MultiListPage, TextFilter, Table, TableData } from '../factory';\nimport {\n Kebab,\n SectionHeading,\n MsgBox,\n navFactory,\n ResourceKebab,\n ResourceLink,\n Timestamp,\n resourceListPathFromModel,\n} from '../utils';\nimport { DetailsForKind } from '../default-resource';\nimport { getLastNamespace } from '../utils/breadcrumbs';\nimport { ALL_NAMESPACES_KEY } from '@console/shared';\n\nconst { common } = Kebab.factory;\n\nexport const isSystemRole = (role) => _.startsWith(role.metadata.name, 'system:');\n\n// const addHref = (name, ns) => ns ? `/k8s/ns/${ns}/roles/${name}/add-rule` : `/k8s/cluster/clusterroles/${name}/add-rule`;\n\nexport const roleKind = (role) => (role.metadata.namespace ? 'Role' : 'ClusterRole');\n\nconst menuActions = [\n // This page is temporarily disabled until we update the safe resources list.\n // (kind, role) => ({\n // label: 'Add Rule',\n // href: addHref(role.metadata.name, role.metadata.namespace),\n // }),\n (kind, role) => ({\n label: i18next.t('public~Add RoleBinding'),\n href: `/k8s/${\n role.metadata.namespace\n ? `ns/${role.metadata.namespace}/rolebindings/~new?rolekind=${roleKind(role)}&rolename=${\n role.metadata.name\n }&namespace=${role.metadata.namespace}`\n : `cluster/rolebindings/~new?rolekind=${roleKind(role)}&rolename=${role.metadata.name}`\n }`,\n }),\n Kebab.factory.Edit,\n Kebab.factory.Delete,\n];\n\nconst roleColumnClasses = ['', '', Kebab.columnClass];\n\nconst RolesTableRow = ({ obj: role }) => {\n return (\n <>\n \n \n \n \n {role.metadata.namespace ? (\n \n ) : (\n i18next.t('public~All namespaces')\n )}\n \n \n \n \n \n );\n};\n\nclass Details extends React.Component {\n constructor(props) {\n super(props);\n this.state = {};\n this.changeFilter = (val) => this.setState({ ruleFilter: val });\n }\n\n render() {\n const ruleObj = this.props.obj;\n const { creationTimestamp, name, namespace } = ruleObj.metadata;\n const { ruleFilter } = this.state;\n\n let rules = ruleObj.rules;\n if (ruleFilter) {\n const fuzzyCaseInsensitive = (a, b) => fuzzy(_.toLower(a), _.toLower(b));\n const searchKeys = ['nonResourceURLs', 'resources', 'verbs'];\n rules = rules.filter((rule) =>\n searchKeys.some((k) => _.some(rule[k], (v) => fuzzyCaseInsensitive(ruleFilter, v))),\n );\n }\n const { t } = this.props;\n\n return (\n
    \n
    \n \n
    \n
    \n
    \n
    {t('public~Role name')}
    \n
    {name}
    \n {namespace && (\n
    \n
    {t('public~Namespace')}
    \n
    \n \n
    \n
    \n )}\n
    \n
    \n
    \n
    \n
    {t('public~Created at')}
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n {/* This page is temporarily disabled until we update the safe resources list.\n
    \n \n \n \n
    \n */}\n \n
    \n \n
    \n
    \n );\n }\n}\nconst DetailsWithTranslation = withTranslation()(Details);\n\nconst bindingsColumnClasses = [\n 'pf-v5-u-w-33-on-sm',\n 'pf-v5-u-w-16-on-sm',\n 'pf-v5-u-w-33-on-sm',\n 'pf-v5-u-w-16-on-sm',\n];\n\nconst BindingsTableRow = ({ obj: binding }) => {\n const { t } = useTranslation();\n return (\n <>\n \n \n \n {binding.subject.kind}\n {binding.subject.name}\n \n {binding.metadata.namespace ? (\n \n ) : (\n t('public~All namespaces')\n )}\n \n \n );\n};\n\nconst BindingsListComponent = (props) => {\n const { t } = useTranslation();\n const BindingsTableHeader = () => {\n return [\n {\n title: t('public~Name'),\n sortField: 'metadata.name',\n transforms: [sortable],\n props: { className: bindingsColumnClasses[0] },\n },\n {\n title: t('public~Subject kind'),\n sortField: 'subject.kind',\n transforms: [sortable],\n props: { className: bindingsColumnClasses[1] },\n },\n {\n title: t('public~Subject name'),\n sortField: 'subject.name',\n transforms: [sortable],\n props: { className: bindingsColumnClasses[2] },\n },\n {\n title: t('public~Namespace'),\n sortField: 'metadata.namespace',\n transforms: [sortable],\n props: { className: bindingsColumnClasses[3] },\n },\n ];\n };\n BindingsTableHeader.displayName = 'BindingsTableHeader';\n\n return ;\n};\n\nexport const BindingsForRolePage = (props) => {\n const { name, ns } = useParams();\n const {\n obj: { kind },\n } = props;\n const resources = [{ kind: 'RoleBinding', namespaced: true }];\n if (!ns) {\n resources.push({ kind: 'ClusterRoleBinding', namespaced: false, optional: true });\n }\n\n const { t } = useTranslation();\n return (\n \n );\n};\n\nconst getBreadcrumbs = (model, kindObj, location) => {\n const lastNamespace = getLastNamespace();\n return [\n {\n name: model.labelPluralKey ? i18next.t(model.labelPluralKey) : model.labelPlural,\n path: resourceListPathFromModel(\n model,\n !lastNamespace || lastNamespace === ALL_NAMESPACES_KEY ? null : lastNamespace,\n ),\n },\n {\n name: i18next.t('public~{{kind}} details', {\n kind: kindObj.labelKey ? i18next.t(kindObj.labelKey) : kindObj.label,\n }),\n path: `${location.pathname}`,\n },\n ];\n};\n\nexport const RolesDetailsPage = (props) => {\n const location = useLocation();\n return (\n getBreadcrumbs(RoleModel, props.kindObj, location)}\n />\n );\n};\n\nexport const ClusterRolesDetailsPage = RolesDetailsPage;\n\nexport const ClusterRoleBindingsDetailsPage = (props) => {\n const pages = [navFactory.details(DetailsForKind), navFactory.editYaml()];\n const actions = [...Kebab.getExtensionsActionsForKind(ClusterRoleBindingModel), ...common];\n const location = useLocation();\n\n return (\n getBreadcrumbs(RoleBindingModel, props.kindObj, location)}\n />\n );\n};\n\nconst EmptyMsg = () => {\n const { t } = useTranslation();\n return (\n \n );\n};\n\nconst RolesList = (props) => {\n const { t } = useTranslation();\n const RolesTableHeader = () => {\n return [\n {\n title: t('public~Name'),\n sortField: 'metadata.name',\n transforms: [sortable],\n props: { className: roleColumnClasses[0] },\n },\n {\n title: t('public~Namespace'),\n sortField: 'metadata.namespace',\n transforms: [sortable],\n props: { className: roleColumnClasses[1] },\n },\n { title: '', props: { className: roleColumnClasses[2] } },\n ];\n };\n return (\n \n );\n};\n\nexport const roleType = (role) => {\n if (!role) {\n return undefined;\n }\n if (isSystemRole(role)) {\n return 'system';\n }\n return role.metadata.namespace ? 'namespace' : 'cluster';\n};\n\nexport const RolesPage = ({ namespace, mock, showTitle }) => {\n const createNS = namespace || 'default';\n const accessReview = {\n model: RoleModel,\n namespace: createNS,\n };\n const { t } = useTranslation();\n return (\n _.flatMap(resources, 'data').filter((r) => !!r)}\n resources={[\n { kind: 'Role', namespaced: true, optional: mock },\n { kind: 'ClusterRole', namespaced: false, optional: true },\n ]}\n rowFilters={[\n {\n filterGroupName: t('public~Role'),\n type: 'role-kind',\n reducer: roleType,\n items: [\n { id: 'cluster', title: t('public~Cluster-wide Roles') },\n { id: 'namespace', title: t('public~Namespace Roles') },\n { id: 'system', title: t('public~System Roles') },\n ],\n },\n ]}\n title={t('public~Roles')}\n />\n );\n};\n","import * as React from 'react';\nimport { PerspectiveType } from '../extensions';\n\nexport type PerspectiveContextType = {\n activePerspective?: PerspectiveType;\n setActivePerspective?: React.Dispatch>;\n};\n/**\n * Creates the perspective context\n * @deprecated - use the provided `usePerspectiveContext` instead\n * @param {PerspectiveContextType} PerspectiveContextType - object with active perspective and setter\n * @returns React context\n */\nexport const PerspectiveContext = React.createContext({});\n","import { useEffect, useRef } from 'react';\n\n// Slightly modified from Dan Abramov's blog post about using React hooks for polling\n// https://overreacted.io/making-setinterval-declarative-with-react-hooks/\nexport const usePoll = (callback, delay, ...dependencies) => {\n const savedCallback = useRef(null);\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n const tick = () => savedCallback.current();\n\n tick(); // Run first tick immediately.\n\n if (delay) {\n // Only start interval if a delay is provided.\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [delay, ...dependencies]);\n};\n","/* eslint-disable tsdoc/syntax */\nimport * as _ from 'lodash-es';\nimport * as React from 'react';\nimport * as classNames from 'classnames';\nimport * as PropTypes from 'prop-types';\nimport { Alert, AlertGroup } from '@patternfly/react-core';\nimport { useTranslation } from 'react-i18next';\n\nimport { LoadingInline } from './status-box';\n\nconst injectDisabled = (children, disabled) => {\n return React.Children.map(children, (c) => {\n if (!_.isObject(c) || c.type !== 'button') {\n return c;\n }\n\n return React.cloneElement(c, { disabled: c.props.disabled || disabled });\n });\n};\n\nconst ErrorMessage = ({ message }) => {\n const { t } = useTranslation();\n return (\n \n
    {message}
    \n \n );\n};\nconst InfoMessage = ({ message }) => (\n \n);\nconst SuccessMessage = ({ message }) => (\n \n);\n\n// NOTE: DO NOT use elements within a ButtonBar.\n// They don't support the disabled attribute, and therefore\n// can't be disabled during a pending promise/request.\n/** @type {React.SFC<{children: any, className?: string, errorMessage?: React.ReactNode, infoMessage?: string, successMessage?: string, inProgress?: boolean}}>} */\nexport const ButtonBar = ({\n children,\n className,\n errorMessage,\n infoMessage,\n successMessage,\n inProgress,\n}) => {\n return (\n
    \n \n {successMessage && }\n {errorMessage && }\n {injectDisabled(children, inProgress)}\n {inProgress && }\n {infoMessage && }\n \n
    \n );\n};\n\nButtonBar.propTypes = {\n children: PropTypes.node.isRequired,\n successMessage: PropTypes.string,\n errorMessage: PropTypes.node,\n infoMessage: PropTypes.string,\n inProgress: PropTypes.bool,\n className: PropTypes.string,\n};\n","import { useEffect, useRef, useState, useCallback } from 'react';\n\nexport const useRefWidth = () => {\n const ref = useRef(null);\n const [width, setWidth] = useState();\n\n const setRef = useCallback((e: HTMLDivElement) => {\n const newWidth = e?.clientWidth;\n newWidth && ref.current?.clientWidth !== newWidth && setWidth(e.clientWidth);\n ref.current = e;\n }, []);\n\n useEffect(() => {\n const handleResize = () => setWidth(ref.current?.clientWidth);\n window.addEventListener('resize', handleResize);\n window.addEventListener('sidebar_toggle', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n window.removeEventListener('sidebar_toggle', handleResize);\n };\n }, []);\n\n const clientWidth = ref.current?.clientWidth;\n\n useEffect(() => {\n width !== clientWidth && setWidth(clientWidth);\n }, [clientWidth, width]);\n\n return [setRef, width] as [React.Ref, number];\n};\n","import { HorizontalPodAutoscalerKind, K8sResourceCommon } from '@console/internal/module/k8s';\n\nexport const doesHpaMatch = (workload: K8sResourceCommon) => (\n thisHPA: HorizontalPodAutoscalerKind,\n) => {\n const {\n apiVersion,\n kind,\n metadata: { name },\n } = workload;\n const ref = thisHPA?.spec?.scaleTargetRef;\n return ref && ref.apiVersion === apiVersion && ref.kind === kind && ref.name === name;\n};\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { useForceRender } from '@console/shared/src/hooks/useForceRender';\nimport { Extension, ExtensionTypeGuard, LoadedExtension } from '../typings';\nimport useTranslatedExtensions from '../utils/useTranslatedExtensions';\nimport { subscribeToExtensions } from './pluginSubscriptionService';\n\n/**\n * React hook for consuming Console extensions.\n *\n * This hook takes extension type guard(s) as its argument(s) and returns a list\n * of extension instances, narrowed by the given type guard(s), which are currently\n * in use.\n *\n * An extension is considered to be in use when\n *\n * - it is an always-on extension, i.e. not gated by any feature flags\n * - all feature flags referenced by its `flags` object are resolved to the right\n * values\n *\n * When the list of matching extensions changes, the React component is re-rendered\n * with the hook returning an up-to-date list of extensions.\n *\n * Example usage:\n *\n * ```ts\n * const Example = () => {\n * const navItemExtensions = useExtensions(isNavItem);\n * // process extensions and render your component\n * };\n * ```\n *\n * The hook's result is guaranteed to be referentially stable across re-renders.\n *\n * @param typeGuards Type guard(s) used to narrow the extension instances.\n *\n * @returns List of extension instances which are currently in use, narrowed by the\n * given type guard(s).\n */\nexport const useExtensions = (\n ...typeGuards: ExtensionTypeGuard[]\n): LoadedExtension[] => {\n if (typeGuards.length === 0) {\n throw new Error('You must pass at least one type guard to useExtensions');\n }\n\n const forceRender = useForceRender();\n\n const isMountedRef = React.useRef(true);\n const unsubscribeRef = React.useRef(null);\n const extensionsInUseRef = React.useRef[]>([]);\n const latestTypeGuardsRef = React.useRef[]>(typeGuards);\n\n const trySubscribe = React.useCallback(() => {\n if (unsubscribeRef.current === null) {\n unsubscribeRef.current = subscribeToExtensions((extensions) => {\n extensionsInUseRef.current = extensions;\n isMountedRef.current && forceRender();\n }, ...latestTypeGuardsRef.current);\n }\n }, [forceRender]);\n\n const tryUnsubscribe = React.useCallback(() => {\n if (unsubscribeRef.current !== null) {\n unsubscribeRef.current();\n unsubscribeRef.current = null;\n }\n }, []);\n\n if (!_.isEqual(latestTypeGuardsRef.current, typeGuards)) {\n latestTypeGuardsRef.current = typeGuards;\n tryUnsubscribe();\n }\n\n trySubscribe();\n\n React.useEffect(\n () => () => {\n isMountedRef.current = false;\n tryUnsubscribe();\n },\n [tryUnsubscribe],\n );\n\n return useTranslatedExtensions(extensionsInUseRef.current);\n};\n","export { useForceRender } from '@openshift-console/plugin-shared/src/hooks/useForceRender';\n","/* eslint-disable no-console */\n\nimport * as _ from 'lodash';\nimport { StandardConsolePluginManifest } from '@console/dynamic-plugin-sdk/src/build-types';\nimport { Extension, LoadedExtension, ActivePlugin } from './typings';\n\nexport const sanitizeExtension = (e: E): E => {\n e.flags = e.flags || {};\n e.flags.required = _.uniq(e.flags.required || []);\n e.flags.disallowed = _.uniq(e.flags.disallowed || []);\n return e;\n};\n\nexport const augmentExtension = (\n e: E,\n pluginID: string,\n pluginName: string,\n index: number,\n): LoadedExtension =>\n Object.assign(e, {\n pluginID,\n pluginName,\n uid: `${pluginID}[${index}]`,\n });\n\nexport const isExtensionInUse = (e: Extension, flags: FlagsObject): boolean =>\n e.flags.required.every((f) => flags[f]) && e.flags.disallowed.every((f) => !flags[f]);\n\nexport const getGatingFlagNames = (extensions: Extension[]): string[] =>\n _.uniq([\n ..._.flatMap(extensions.map((e) => e.flags.required)),\n ..._.flatMap(extensions.map((e) => e.flags.disallowed)),\n ]);\n\n/**\n * Provides access to Console plugins and their extensions.\n *\n * Only plugins listed via `allowedDynamicPluginNames` can be added dynamically at runtime.\n *\n * Subscribed `listeners` are invoked upon any of the following events:\n *\n * - when the list of extensions which are currently in use changes\n * - when the runtime status of a dynamic plugin changes\n *\n * In development, this object is exposed as `window.pluginStore` for easier debugging.\n */\nexport class PluginStore {\n // Extensions contributed by static plugins which are currently in use\n private staticPluginExtensions: LoadedExtension[];\n\n // Extensions contributed by dynamic plugins which are currently in use\n private dynamicPluginExtensions: LoadedExtension[];\n\n private i18nNamespaces: Set;\n\n private readonly staticPlugins: StaticPlugin[];\n\n // Static plugins that were disabled by loading replacement dynamic plugins\n private readonly disabledStaticPluginNames = new Set();\n\n private readonly allowedDynamicPluginNames: Set;\n\n // Dynamic plugins that were loaded successfully (keys are plugin IDs)\n private readonly loadedDynamicPlugins = new Map();\n\n // Dynamic plugins that failed to load properly (keys are plugin names)\n private readonly failedDynamicPlugins = new Map();\n\n private readonly listeners: VoidFunction[] = [];\n\n constructor(\n staticPlugins: ActivePlugin[] = [],\n allowedDynamicPluginNames: string[] = [],\n i18nNamespaces: string[] = [],\n ) {\n this.staticPlugins = staticPlugins.map((plugin) => ({\n name: plugin.name,\n extensions: plugin.extensions.map((e, index) =>\n Object.freeze(\n augmentExtension(sanitizeExtension({ ...e }), plugin.name, plugin.name, index),\n ),\n ),\n }));\n\n this.allowedDynamicPluginNames = new Set(allowedDynamicPluginNames);\n this.i18nNamespaces = new Set(i18nNamespaces);\n this.updateExtensions();\n }\n\n getExtensionsInUse() {\n return [...this.staticPluginExtensions, ...this.dynamicPluginExtensions];\n }\n\n getAllowedDynamicPluginNames() {\n return Array.from(this.allowedDynamicPluginNames);\n }\n\n getI18nNamespaces() {\n return Array.from(this.i18nNamespaces);\n }\n\n subscribe(listener: VoidFunction): VoidFunction {\n let isSubscribed = true;\n this.listeners.push(listener);\n\n return () => {\n if (isSubscribed) {\n isSubscribed = false;\n this.listeners.splice(this.listeners.indexOf(listener), 1);\n }\n };\n }\n\n private invokeListeners() {\n this.listeners.forEach((listener) => {\n listener();\n });\n }\n\n addDynamicPlugin(\n pluginID: string,\n manifest: StandardConsolePluginManifest,\n resolvedExtensions: Extension[],\n ) {\n if (this.loadedDynamicPlugins.has(pluginID)) {\n console.warn(`Attempt to re-add plugin ${pluginID}`);\n return;\n }\n\n if (!this.allowedDynamicPluginNames.has(manifest.name)) {\n console.warn(`Attempt to add unexpected plugin ${pluginID}`);\n return;\n }\n\n if (this.failedDynamicPlugins.has(manifest.name)) {\n console.warn(`Attempt to add plugin ${pluginID} previously marked as failed`);\n return;\n }\n\n this.loadedDynamicPlugins.set(pluginID, {\n manifest: Object.freeze(manifest),\n processedExtensions: resolvedExtensions.map((e, index) =>\n Object.freeze(augmentExtension(sanitizeExtension(e), pluginID, manifest.name, index)),\n ),\n enabled: false,\n });\n\n (manifest.customProperties?.console?.disableStaticPlugins ?? [])\n .filter(\n (pluginName) =>\n !this.disabledStaticPluginNames.has(pluginName) &&\n this.staticPlugins.some((plugin) => plugin.name === pluginName),\n )\n .forEach((pluginName) => {\n console.log(`Static plugin ${pluginName} will be disabled`);\n this.disabledStaticPluginNames.add(pluginName);\n });\n\n this.updateExtensions();\n this.invokeListeners();\n\n console.log(`Added plugin ${pluginID}`);\n }\n\n private updateExtensions() {\n const dynamicPlugins = Array.from(this.loadedDynamicPlugins.values());\n\n this.staticPluginExtensions = this.staticPlugins\n .filter((plugin) => !this.disabledStaticPluginNames.has(plugin.name))\n .reduce((acc, plugin) => [...acc, ...plugin.extensions], [] as LoadedExtension[]);\n\n this.dynamicPluginExtensions = dynamicPlugins.reduce(\n (acc, plugin) => (plugin.enabled ? [...acc, ...plugin.processedExtensions] : acc),\n [] as LoadedExtension[],\n );\n }\n\n setDynamicPluginEnabled(pluginID: string, enabled: boolean) {\n if (!this.loadedDynamicPlugins.has(pluginID)) {\n console.warn(\n `Attempt to ${\n enabled ? 'enable' : 'disable'\n } plugin ${pluginID} that has not been loaded yet`,\n );\n return;\n }\n\n const plugin = this.loadedDynamicPlugins.get(pluginID);\n\n if (plugin.enabled !== enabled) {\n plugin.enabled = enabled;\n\n this.updateExtensions();\n this.invokeListeners();\n\n console.log(`Plugin ${pluginID} is now ${enabled ? 'enabled' : 'disabled'}`);\n }\n }\n\n private isDynamicPluginLoaded(pluginName: string) {\n return Array.from(this.loadedDynamicPlugins.values()).some(\n (plugin) => plugin.manifest.name === pluginName,\n );\n }\n\n private isDynamicPluginFailed(pluginName: string) {\n return this.failedDynamicPlugins.has(pluginName);\n }\n\n registerFailedDynamicPlugin(pluginName: string, errorMessage: string, errorCause?: unknown) {\n if (!this.allowedDynamicPluginNames.has(pluginName)) {\n console.warn(`Attempt to register unexpected plugin ${pluginName} as failed`);\n return;\n }\n\n if (this.isDynamicPluginLoaded(pluginName)) {\n console.warn(`Attempt to register an already loaded plugin ${pluginName} as failed`);\n return;\n }\n\n this.failedDynamicPlugins.set(pluginName, { errorMessage, errorCause });\n this.invokeListeners();\n }\n\n getDynamicPluginInfo(): DynamicPluginInfo[] {\n const loadedPluginEntries = Array.from(this.loadedDynamicPlugins.entries()).reduce(\n (acc, [pluginID, plugin]) => {\n acc.push({\n status: 'Loaded',\n pluginID,\n metadata: _.omit(plugin.manifest, ['extensions', 'loadScripts', 'registrationMethod']),\n enabled: plugin.enabled,\n });\n return acc;\n },\n [] as LoadedDynamicPluginInfo[],\n );\n\n const failedPluginEntries = Array.from(this.failedDynamicPlugins.entries()).reduce(\n (acc, [pluginName, plugin]) => {\n acc.push({\n status: 'Failed',\n pluginName,\n errorMessage: plugin.errorMessage,\n errorCause: plugin.errorCause,\n });\n return acc;\n },\n [] as NotLoadedDynamicPluginInfo[],\n );\n\n const pendingPluginEntries = Array.from(this.allowedDynamicPluginNames.values())\n .filter(\n (pluginName) =>\n !this.isDynamicPluginLoaded(pluginName) && !this.isDynamicPluginFailed(pluginName),\n )\n .reduce((acc, pluginName) => {\n acc.push({\n status: 'Pending',\n pluginName,\n });\n return acc;\n }, [] as NotLoadedDynamicPluginInfo[]);\n\n return [...loadedPluginEntries, ...failedPluginEntries, ...pendingPluginEntries];\n }\n\n getStateForTestPurposes() {\n return {\n staticPluginExtensions: this.staticPluginExtensions,\n dynamicPluginExtensions: this.dynamicPluginExtensions,\n staticPlugins: this.staticPlugins,\n disabledStaticPluginNames: this.disabledStaticPluginNames,\n loadedDynamicPlugins: this.loadedDynamicPlugins,\n failedDynamicPlugins: this.failedDynamicPlugins,\n listeners: this.listeners,\n };\n }\n}\n\ntype FlagsObject = { [key: string]: boolean };\n\ntype StaticPlugin = {\n name: string;\n extensions: LoadedExtension[];\n};\n\ntype DynamicPluginManifest = Readonly;\n\ntype DynamicPluginMetadata = Omit<\n DynamicPluginManifest,\n 'extensions' | 'loadScripts' | 'registrationMethod'\n>;\n\ntype LoadedDynamicPlugin = {\n manifest: DynamicPluginManifest;\n processedExtensions: Readonly;\n enabled: boolean;\n};\n\ntype FailedDynamicPlugin = {\n errorMessage: string;\n errorCause?: unknown;\n};\n\nexport type LoadedDynamicPluginInfo = {\n status: 'Loaded';\n pluginID: string;\n metadata: DynamicPluginMetadata;\n enabled: boolean;\n};\n\nexport type NotLoadedDynamicPluginInfo =\n | {\n status: 'Pending';\n pluginName: string;\n }\n | {\n status: 'Failed';\n pluginName: string;\n errorMessage: string;\n errorCause?: unknown;\n };\n\nexport type DynamicPluginInfo = LoadedDynamicPluginInfo | NotLoadedDynamicPluginInfo;\n\nexport const isLoadedDynamicPluginInfo = (i: DynamicPluginInfo): i is LoadedDynamicPluginInfo =>\n i.status === 'Loaded';\n\nexport const isNotLoadedDynamicPluginInfo = (\n i: DynamicPluginInfo,\n): i is NotLoadedDynamicPluginInfo => i.status === 'Failed' || i.status === 'Pending';\n","import { getImpersonate } from '../../app/core/reducers';\nimport storeHandler from '../../app/storeHandler';\n\ntype ConsoleRequestHeaders = {\n 'Impersonate-Group'?: string;\n 'Impersonate-User'?: string;\n 'X-CSRFToken'?: string;\n};\n\nexport const getCSRFToken = () => {\n const cookiePrefix = 'csrf-token=';\n return (\n document &&\n document.cookie &&\n document.cookie\n .split(';')\n .map((c) => c.trim())\n .filter((c) => c.startsWith(cookiePrefix))\n .map((c) => c.slice(cookiePrefix.length))\n .pop()\n );\n};\n\n/**\n * A function that creates impersonation headers for API requests using current redux state.\n * @returns an object containing the appropriate impersonation requst headers, based on redux state\n */\nexport const getConsoleRequestHeaders = (): ConsoleRequestHeaders => {\n const store = storeHandler.getStore();\n if (!store) return undefined;\n const state = store.getState();\n\n const headers: ConsoleRequestHeaders = {\n 'X-CSRFToken': getCSRFToken(),\n };\n\n // Set impersonation headers\n const { kind, name } = getImpersonate(state) || {};\n if ((kind === 'User' || kind === 'Group') && name) {\n // Even if we are impersonating a group, we still need to set Impersonate-User to something or k8s will complain\n headers['Impersonate-User'] = name;\n if (kind === 'Group') {\n headers['Impersonate-Group'] = name;\n }\n }\n\n return headers;\n};\n","export * from './base';\n\n// specific extension types\nexport * from './dashboards';\nexport * from './features';\nexport * from './kebab-actions';\nexport * from './models';\nexport * from './overview';\nexport * from './pages';\nexport * from './global-configs';\nexport * from './horizontal-nav';\nexport * from './guided-tour';\nexport * from './post-form-submit';\nexport * from './detail-page-bread-crumbs';\n","import { K8sResourceKind } from '@console/internal/module/k8s';\n\nexport const getInfrastructurePlatform = (infrastructure: K8sResourceKind): string =>\n infrastructure && infrastructure.status ? infrastructure.status.platform : undefined;\nexport const getInfrastructureAPIURL = (infrastructure: K8sResourceKind): string =>\n infrastructure && infrastructure.status ? infrastructure.status.apiServerURL : undefined;\nexport const isSingleNode = (infrastructure: K8sResourceKind): boolean =>\n infrastructure?.status?.controlPlaneTopology === 'SingleReplica';\n","import * as React from 'react';\nimport { useFormikContext, FormikValues } from 'formik';\nimport { useDeepCompareMemoize } from './deep-compare-memoize';\n\nexport const useFormikValidationFix = (value: any) => {\n const { validateForm } = useFormikContext();\n const memoizedValue = useDeepCompareMemoize(value);\n const mounted = React.useRef(false);\n\n React.useEffect(() => {\n if (!mounted.current) {\n // skip auto validation when the component just mounted\n mounted.current = true;\n } else {\n validateForm();\n }\n }, [memoizedValue, validateForm]);\n};\n","export { useResizeObserver } from '@openshift-console/plugin-shared/src/hooks/useResizeObserver';\n","import { useEffect, useRef } from 'react';\nimport { coFetchJSON } from '../../co-fetch';\n\nexport const useSafeFetch = () => {\n const controller = useRef();\n useEffect(() => {\n controller.current = new AbortController();\n return () => controller.current.abort();\n }, []);\n\n return (url) => coFetchJSON(url, 'get', { signal: controller.current.signal as AbortSignal });\n};\n","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport * as classNames from 'classnames';\nimport { sortable } from '@patternfly/react-table';\nimport { useTranslation } from 'react-i18next';\nimport i18next from 'i18next';\nimport { DetailsPage, ListPage, Table, TableData } from './factory';\nimport { SecretData } from './configmap-and-secret-data';\nimport {\n Kebab,\n SectionHeading,\n ResourceKebab,\n ResourceLink,\n ResourceSummary,\n Timestamp,\n detailsPage,\n navFactory,\n resourceObjPath,\n} from './utils';\nimport { SecretType } from './secrets/create-secret';\nimport { configureAddSecretToWorkloadModal } from './modals/add-secret-to-workload';\nimport { DetailsItem } from './utils/details-item';\n\nexport const WebHookSecretKey = 'WebHookSecretKey';\n\nexport const addSecretToWorkload = (kindObj, secret) => {\n const { name: secretName, namespace } = secret.metadata;\n\n return {\n callback: () => configureAddSecretToWorkloadModal({ secretName, namespace, blocking: true }),\n label: i18next.t('public~Add Secret to workload'),\n };\n};\n\nconst actionButtons = [addSecretToWorkload];\n\nconst menuActions = [\n Kebab.factory.ModifyLabels,\n Kebab.factory.ModifyAnnotations,\n (kind, obj) => {\n return {\n // t('public~Edit Secret')\n labelKey: 'public~Edit Secret',\n href: `${resourceObjPath(obj, kind.kind)}/edit`,\n accessReview: {\n group: kind.apiGroup,\n resource: kind.plural,\n name: obj.metadata.name,\n namespace: obj.metadata.namespace,\n verb: 'update',\n },\n };\n },\n Kebab.factory.Delete,\n];\n\nconst kind = 'Secret';\n\nconst tableColumnClasses = [\n '',\n '',\n 'pf-m-hidden pf-m-visible-on-md',\n 'pf-m-hidden pf-m-visible-on-xl pf-v5-u-w-8-on-xl',\n 'pf-m-hidden pf-m-visible-on-lg',\n Kebab.columnClass,\n];\n\nconst SecretTableRow = ({ obj: secret }) => {\n const data = _.size(secret.data);\n return (\n <>\n \n \n \n \n \n \n \n {secret.type}\n \n {data}\n \n \n \n \n \n \n \n );\n};\n\nconst SecretDetails = ({ obj: secret }) => {\n const { t } = useTranslation();\n const { data, type } = secret;\n return (\n <>\n
    \n \n
    \n
    \n \n
    \n {type && (\n
    \n
    \n \n
    \n
    \n )}\n
    \n
    \n
    \n \n
    \n \n );\n};\n\nconst SecretsList = (props) => {\n const { t } = useTranslation();\n const SecretTableHeader = () => [\n {\n title: t('public~Name'),\n sortField: 'metadata.name',\n transforms: [sortable],\n props: { className: tableColumnClasses[0] },\n },\n {\n title: t('public~Namespace'),\n sortField: 'metadata.namespace',\n transforms: [sortable],\n props: { className: tableColumnClasses[1] },\n id: 'namespace',\n },\n {\n title: t('public~Type'),\n sortField: 'type',\n transforms: [sortable],\n props: { className: tableColumnClasses[2] },\n },\n {\n title: t('public~Size'),\n sortFunc: 'dataSize',\n transforms: [sortable],\n props: { className: tableColumnClasses[3] },\n },\n {\n title: t('public~Created'),\n sortField: 'metadata.creationTimestamp',\n transforms: [sortable],\n props: { className: tableColumnClasses[4] },\n },\n {\n title: '',\n props: { className: tableColumnClasses[5] },\n },\n ];\n\n return (\n \n );\n};\nSecretsList.displayName = 'SecretsList';\n\nconst IMAGE_FILTER_VALUE = 'Image';\nconst SOURCE_FILTER_VALUE = 'Source';\nconst TLS_FILTER_VALUE = 'TLS';\nconst SA_TOKEN_FILTER_VALUE = 'Service Account Token';\nconst OPAQUE_FILTER_VALUE = 'Opaque';\n\nexport const secretTypeFilterReducer = (secret) => {\n switch (secret.type) {\n case SecretType.dockercfg:\n case SecretType.dockerconfigjson:\n return IMAGE_FILTER_VALUE;\n\n case SecretType.basicAuth:\n case SecretType.sshAuth:\n return SOURCE_FILTER_VALUE;\n\n case SecretType.tls:\n return TLS_FILTER_VALUE;\n\n case SecretType.serviceAccountToken:\n return SA_TOKEN_FILTER_VALUE;\n\n default:\n // This puts all unrecognized types under \"Opaque\". Since unrecognized types should be uncommon,\n // it avoids an \"Other\" category that is usually empty.\n return OPAQUE_FILTER_VALUE;\n }\n};\n\nconst SecretsPage = (props) => {\n const { t } = useTranslation();\n const createItems = {\n generic: t('public~Key/value secret'),\n image: t('public~Image pull secret'),\n source: t('public~Source secret'),\n webhook: t('public~Webhook secret'),\n yaml: t('public~From YAML'),\n };\n\n const createProps = {\n items: createItems,\n createLink: (type) =>\n `/k8s/ns/${props.namespace || 'default'}/secrets/~new/${type !== 'yaml' ? type : ''}`,\n };\n\n const secretTypeFilterValues = [\n {\n id: IMAGE_FILTER_VALUE,\n title: t('public~Image'),\n },\n {\n id: SOURCE_FILTER_VALUE,\n title: t('public~Source'),\n },\n {\n id: TLS_FILTER_VALUE,\n title: t('public~TLS'),\n },\n {\n id: SA_TOKEN_FILTER_VALUE,\n title: t('public~Service Account Token'),\n },\n {\n id: OPAQUE_FILTER_VALUE,\n title: t('public~Opaque'),\n },\n ];\n\n const filters = [\n {\n filterGroupName: t('public~Type'),\n type: 'secret-type',\n reducer: secretTypeFilterReducer,\n items: secretTypeFilterValues,\n },\n ];\n\n return (\n \n );\n};\n\nconst SecretsDetailsPage = (props) => (\n \n);\n\nexport { SecretsList, SecretsPage, SecretsDetailsPage };\n","import * as React from 'react';\nimport * as _ from 'lodash-es';\nimport { useTranslation } from 'react-i18next';\nimport { K8sResourceKind, OwnerReference, referenceForOwnerRef } from '../../module/k8s';\nimport { ResourceLink } from './resource-link';\n\nexport const OwnerReferences: React.FC = ({ resource }) => {\n const { t } = useTranslation();\n const owners = (_.get(resource.metadata, 'ownerReferences') || []).map((o: OwnerReference) => (\n \n ));\n return owners.length ? <>{owners} : {t('public~No owner')};\n};\n\ntype OwnerReferencesProps = {\n resource: K8sResourceKind;\n};\n\nOwnerReferences.displayName = 'OwnerReferences';\n","import {\n Action,\n ActionGroup,\n GroupedMenuOption,\n MenuOption,\n MenuOptionType,\n} from '@console/dynamic-plugin-sdk';\nimport { LoadedExtension } from '@console/plugin-sdk';\n\nexport const createMenuOptions = (\n actions: Action[],\n groupExtensions: LoadedExtension[],\n): MenuOption[] => {\n const menuOptions = [];\n\n // Default menu groups $top and $bottom.\n const topGroup = {\n id: '$top',\n children: [],\n };\n const bottomGroup = {\n id: '$bottom',\n children: [],\n };\n\n const submenus = {\n [topGroup.id]: topGroup,\n [bottomGroup.id]: bottomGroup,\n };\n const groups = [topGroup, ...groupExtensions.map((group) => group.properties), bottomGroup];\n\n actions.forEach((action) => {\n if (action.path) {\n const parts = action.path.split('/');\n parts.forEach((part, index) => {\n let subMenu = submenus[part];\n const partGroup = groups.find((group) => group.id === part);\n if (partGroup && !submenus[part]) {\n subMenu = { ...partGroup, children: [] };\n submenus[part] = subMenu;\n if (index === 0) {\n menuOptions.push(subMenu);\n } else {\n submenus[parts[index - 1]].children.push(subMenu);\n }\n }\n });\n submenus[parts[parts.length - 1]].children.push(action);\n } else {\n menuOptions.push(action);\n }\n });\n\n if (topGroup.children.length > 0) menuOptions.unshift(topGroup);\n if (bottomGroup.children.length > 0) menuOptions.push(bottomGroup);\n\n return menuOptions;\n};\n\nexport const getMenuOptionType = (option: MenuOption) => {\n // a grouped menu has children\n const isGroupMenu = Array.isArray((option as GroupedMenuOption).children);\n // a submenu menu has children and submenu property true\n const isSubMenu = isGroupMenu && (option as GroupedMenuOption).submenu;\n\n if (isSubMenu) {\n return MenuOptionType.SUB_MENU;\n }\n\n if (isGroupMenu) {\n return MenuOptionType.GROUP_MENU;\n }\n\n return MenuOptionType.ATOMIC_MENU;\n};\n","export const addPubSubConnectionModal = (props) =>\n import('./PubSubController' /* webpackChunkName: \"pub-sub-connectors\" */).then((m) =>\n m.PubSubModalLauncher(props),\n );\n","export { default as Modal } from './Modal';\n","export { default as Popper } from './Popper';\n","import * as React from 'react';\nimport { AlertVariant } from '@patternfly/react-core';\n\nexport const ToastVariant = AlertVariant;\n\nexport type ToastOptions = {\n // Optional ID identifying this toast. If not provided, one will be generated.\n id?: string;\n // The toast title.\n title: string;\n // The toast variant, one of: success, danger, warning, info, default\n variant: AlertVariant;\n // The toast content.\n content: React.ReactNode;\n // Optional actions to display in the toast.\n actions?: {\n // The action label.\n label: string;\n // The action callback.\n callback: () => void;\n // If `true`, executing this action will dismiss the toast.\n dismiss?: boolean;\n // Sets the base component to render. defaults to button\n component?: React.ElementType | React.ComponentType;\n // The data test id\n dataTest?: string;\n }[];\n // The data test id\n dataTest?: string;\n // If `true`, displays a close button.\n dismissible?: boolean;\n // If set to true, the time out is 8000 milliseconds.\n // If a number is provided, alert will be dismissed after that amount of time in milliseconds.\n timeout?: number | boolean;\n // Callback when the toast is removed.\n onRemove?: (id: string) => void;\n // Callback to run when toast is dismissed with close button\n onClose?: () => void;\n};\n\nexport type ToastContextType = {\n // Add a toast alert. Returns the toast ID.\n addToast: (options: ToastOptions) => string;\n // Remove a toast alert.\n removeToast: (id: string) => void;\n};\n\nexport default React.createContext({} as any);\n","export * from './catalog-view';\nexport * from './details';\nexport * from './hooks';\nexport * from './service';\nexport * from './utils';\nexport { default as CatalogBadges } from './CatalogBadges';\nexport { default as CatalogController } from './CatalogController';\nexport { default as CatalogTile } from './CatalogTile';\n","import { Rule, PrometheusRulesResponse } from '../api/common-types';\nimport { CodeRef, Extension, ExtensionDeclaration } from '../types';\n\ntype AlertingRulesFetch = (namespace?: string) => Promise;\n\n/** Alerting rules from additional sources other than Prometheus */\nexport type AlertingRulesSourceExtension = ExtensionDeclaration<\n 'console.alerts/rules-source',\n {\n /** Id of the alerting rules source */\n id: string;\n /** ContextId on which this source of alerting rules should be used */\n contextId: string;\n /** Promise that returns Prometheus-compatible alerting rules */\n getAlertingRules: CodeRef;\n }\n>;\n\ntype AlertingRuleChartProps = { rule?: Rule };\n\n/** Metric charts for alerting rules from additional sources other than Prometheus */\nexport type AlertingRuleChartExtension = ExtensionDeclaration<\n 'console.alerts/rules-chart',\n {\n /** Source Id belonging to one 'console.alerts/rules-source' used to fetch alerting rule metrics */\n sourceId: string;\n /** Chart component to be rendered as alerting rule metrics */\n chart: CodeRef>;\n }\n>;\n\n// Type guards\n\nexport const isAlertingRulesSource = (e: Extension): e is AlertingRulesSourceExtension =>\n e.type === 'console.alerts/rules-source';\n\nexport const isAlertingRuleChart = (e: Extension): e is AlertingRuleChartExtension =>\n e.type === 'console.alerts/rules-chart';\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n\ntype GetContainer = Element | null | undefined | (() => Element);\n\ntype PortalProps = {\n container?: GetContainer;\n};\n\nconst getContainer = (container: GetContainer): Element | null | undefined =>\n typeof container === 'function' ? container() : container;\n\nconst Portal: React.FC = ({ children, container }) => {\n const [containerNode, setContainerNode] = React.useState();\n\n React.useLayoutEffect(() => {\n setContainerNode(getContainer(container) || document.body);\n }, [container]);\n\n return containerNode ? ReactDOM.createPortal(children, containerNode) : null;\n};\n\nexport default Portal;\n","import { Dispatch, SetStateAction } from 'react';\nimport { useUserSettings } from '@console/shared';\n\nexport const PREFERRED_NAMESPACE_USER_SETTING_KEY: string = 'console.namespace.favorite';\n\nexport const usePreferredNamespace = (): [string, Dispatch>, boolean] => {\n const [preferredNamespace, setPreferredNamespace, preferredNamespaceLoaded] = useUserSettings<\n string\n >(PREFERRED_NAMESPACE_USER_SETTING_KEY);\n\n // This toString is workaround because the useUserSettings hook returns a number or boolean\n // when the saved value represents a number (1234) or boolean (true/false).\n // This is a workaround for https://bugzilla.redhat.com/show_bug.cgi?id=2009345.\n // We will implement a more generic fix with https://issues.redhat.com/browse/ODC-6514\n return [preferredNamespace?.toString(), setPreferredNamespace, preferredNamespaceLoaded];\n};\n","import * as _ from 'lodash-es';\n\nimport {\n humanizeBinaryBytes,\n humanizeDecimalBytesPerSec,\n humanizeNumber,\n humanizePacketsPerSec,\n humanizeSeconds,\n} from '../utils';\n\nexport const formatNumber = (s: string, decimals = 2, format = 'short'): string => {\n const value = Number(s);\n if (_.isNil(s) || isNaN(value)) {\n return s || '-';\n }\n\n switch (format) {\n case 'percentunit':\n return Intl.NumberFormat(undefined, {\n style: 'percent',\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n }).format(value);\n case 'bytes':\n return humanizeBinaryBytes(value).string;\n case 'Bps':\n return humanizeDecimalBytesPerSec(value).string;\n case 'pps':\n return humanizePacketsPerSec(value).string;\n case 'ms':\n return humanizeSeconds(value, 'ms').string;\n case 's':\n return humanizeSeconds(value * 1000, 'ms').string;\n case 'short':\n // fall through\n default:\n return humanizeNumber(value).string;\n }\n};\n","export enum ValidationErrorType {\n Error = 'error',\n TrivialError = 'trivial-error', // should not be visible but affects data validation\n Warn = 'warning',\n Info = 'info',\n}\n\nexport type ValidationObject = {\n messageKey: string;\n type?: ValidationErrorType;\n};\n","import { ArrayHelpers } from 'formik';\nimport { FieldProps } from '../field-types';\n\nexport type OnChangeHandler = (newValue: string[]) => void;\nexport type TextColumnFieldChildParameterProps = {\n name: string;\n onChange?: OnChangeHandler;\n isReadOnly?: boolean;\n placeholder?: string;\n};\n\nexport type MergeNewValueUtil = (newValue: string) => string[];\nexport type TextColumnFieldChildProps = (\n data: TextColumnFieldChildParameterProps,\n mergeNewValue: MergeNewValueUtil,\n) => React.ReactNode;\n\nexport type TextColumnFieldProps = FieldProps & {\n required?: boolean;\n name: string;\n label: string;\n addLabel?: string;\n disableDeleteRow?: boolean;\n tooltipDeleteRow?: string;\n placeholder?: string;\n onChange?: OnChangeHandler;\n dndEnabled?: boolean;\n children?: TextColumnFieldChildProps;\n};\n\nexport type TextColumnItemProps = TextColumnFieldProps & {\n idx: number;\n rowValues: string[];\n arrayHelpers: ArrayHelpers;\n};\n\nexport const ItemTypes = {\n TextColumn: 'TextColumn',\n};\n\nexport type DragItem = {\n idx: number;\n id: string;\n type: string;\n};\n","import * as React from 'react';\nimport { NavItem } from '@patternfly/react-core';\nimport { ResourceNSNavItem } from '@console/dynamic-plugin-sdk';\nimport { referenceForExtensionModel } from '@console/internal/module/k8s';\nimport {\n formatNamespacedRouteForResource,\n LAST_NAMESPACE_NAME_LOCAL_STORAGE_KEY,\n ALL_NAMESPACES_KEY,\n} from '@console/shared';\nimport { useActiveNamespace } from '@console/shared/src/hooks/useActiveNamespace';\nimport { useK8sModel } from '@console/shared/src/hooks/useK8sModel';\nimport { useLocation } from '@console/shared/src/hooks/useLocation';\nimport { NavLink, NavLinkProps } from './NavLink';\nimport { navItemResourceIsActive } from './utils';\n\nexport const NavItemResource: React.FC = ({\n model,\n startsWith,\n namespaced,\n className,\n dataAttributes,\n ...navLinkProps\n}) => {\n const [activeNamespace] = useActiveNamespace();\n const location = useLocation();\n const lastNamespace = sessionStorage.getItem(LAST_NAMESPACE_NAME_LOCAL_STORAGE_KEY);\n const resourceReference = referenceForExtensionModel(model);\n const [k8sModel] = useK8sModel(resourceReference);\n const isActive = React.useMemo(() => navItemResourceIsActive(location, k8sModel, startsWith), [\n k8sModel,\n location,\n startsWith,\n ]);\n const to = React.useCallback(\n () =>\n namespaced\n ? formatNamespacedRouteForResource(\n resourceReference,\n lastNamespace === ALL_NAMESPACES_KEY ? lastNamespace : activeNamespace,\n )\n : `/k8s/cluster/${resourceReference}`,\n [namespaced, resourceReference, lastNamespace, activeNamespace],\n );\n return (\n \n \n \n );\n};\n\nexport type NavItemResourceProps = Omit &\n Pick & {\n namespaced: boolean;\n };\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore: FIXME missing exports due to out-of-sync @types/react-redux version\nimport { useSelector } from 'react-redux';\nimport { RootState } from '@console/internal/redux';\n\nexport const useLocation = (): string =>\n useSelector(({ UI }: RootState) => UI.get('location') ?? '');\n","import * as React from 'react';\nimport { useUserSettingsCompatibility } from '@console/shared/src/hooks/useUserSettingsCompatibility';\n\nexport const PREFERRED_LANGUAGE_USER_SETTING_KEY = 'console.preferredLanguage';\nconst PREFERRED_LANGUAGE_LOCAL_STORAGE_KEY = 'bridge/language';\n\nexport const usePreferredLanguage = (): [\n string,\n React.Dispatch>,\n boolean,\n] =>\n useUserSettingsCompatibility(\n PREFERRED_LANGUAGE_USER_SETTING_KEY,\n PREFERRED_LANGUAGE_LOCAL_STORAGE_KEY,\n null,\n true,\n );\n","import { action } from 'typesafe-actions';\n\nenum ActionType {\n SetCreateProjectMessage = 'setCreateProjectMessage',\n SetClusterID = 'setClusterID',\n}\n\nexport const setClusterID = (clusterID: string) => action(ActionType.SetClusterID, { clusterID });\nexport const setCreateProjectMessage = (message: string) =>\n action(ActionType.SetCreateProjectMessage, { message });\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom-v5-compat';\nimport * as _ from 'lodash-es';\nimport { BanIcon } from '@patternfly/react-icons/dist/esm/icons/ban-icon';\nimport { PendingIcon } from '@patternfly/react-icons/dist/esm/icons/pending-icon';\nimport { SyncAltIcon } from '@patternfly/react-icons/dist/esm/icons/sync-alt-icon';\n\nimport { resourcePath, ExternalLink } from './utils';\nimport { fromNow } from './utils/datetime';\nimport { K8sResourceKind } from '../module/k8s';\nimport { getBuildNumber } from '../module/k8s/builds';\nimport { GreenCheckCircleIcon, RedExclamationCircleIcon } from '@console/shared';\n\nconst getStages = (status): any[] => (status && status.stages) || [];\nconst getJenkinsStatus = (resource: K8sResourceKind) => {\n const json = _.get(resource, ['metadata', 'annotations', 'openshift.io/jenkins-status-json']);\n if (!json) {\n return {};\n }\n\n const status = _.attempt(JSON.parse, json);\n return _.isError(status) ? {} : status;\n};\n\nexport const getJenkinsLogURL = (resource: K8sResourceKind): string =>\n _.get(resource, ['metadata', 'annotations', 'openshift.io/jenkins-console-log-url']);\nexport const getJenkinsBuildURL = (resource: K8sResourceKind): string =>\n _.get(resource, ['metadata', 'annotations', 'openshift.io/jenkins-build-uri']);\n\nconst BuildSummaryStatusIcon: React.SFC = ({ status }) => {\n const statusClass = _.lowerCase(status);\n const icon = {\n new: '',\n pending: ,\n running: ,\n complete: ,\n failed: ,\n cancelled: ,\n }[statusClass];\n\n return icon ? (\n \n {icon}\n \n ) : null;\n};\n\nexport const BuildPipelineLogLink: React.SFC = ({ obj }) => {\n const { t } = useTranslation();\n const link = getJenkinsLogURL(obj);\n return link ? (\n \n ) : null;\n};\n\nconst StagesNotStarted: React.SFC = () => {\n const { t } = useTranslation();\n return (\n
    \n {t('public~No stages have started.')}\n
    \n );\n};\n\nconst BuildSummaryTimestamp: React.SFC = ({ timestamp }) => (\n {fromNow(timestamp)}\n);\n\nconst BuildPipelineSummary: React.SFC = ({ obj }) => {\n const { name, namespace } = obj.metadata;\n const buildNumber = getBuildNumber(obj);\n const path: string = resourcePath(obj.kind, name, namespace);\n const { t } = useTranslation();\n return (\n
    \n
    \n {' '}\n \n {t('public~Build {{buildNumber}}', { buildNumber })}\n \n
    \n \n \n
    \n );\n};\n\nconst BuildAnimation: React.SFC = ({ status }) => (\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n);\n\nconst JenkinsInputUrl: React.SFC = ({ obj, stage }) => {\n const pending = stage.status === 'PAUSED_PENDING_INPUT';\n const { t } = useTranslation();\n\n if (!pending) {\n return null;\n }\n\n const buildUrl = getJenkinsBuildURL(obj);\n return (\n
    \n \n
    \n );\n};\n\nconst BuildStageTimestamp: React.SFC = ({ timestamp }) => (\n
    {fromNow(timestamp)}
    \n);\n\nconst BuildStageName: React.SFC = ({ name }) => {\n return (\n
    \n {name}\n
    \n );\n};\n\nconst BuildStage: React.SFC = ({ obj, stage }) => {\n return (\n
    \n
    \n \n \n \n \n
    \n
    \n );\n};\n\nexport const BuildPipeline: React.SFC = ({ obj }) => {\n const jenkinsStatus: any = getJenkinsStatus(obj);\n const stages = getStages(jenkinsStatus);\n return (\n
    \n \n
    \n
    \n {_.isEmpty(stages) ? (\n \n ) : (\n stages.map((stage) => )\n )}\n
    \n
    \n
    \n );\n};\n\nexport type BuildPipelineProps = {\n obj: K8sResourceKind;\n};\n\nexport type BuildStageProps = {\n obj: K8sResourceKind;\n stage: any;\n};\n\nexport type BuildAnimationProps = {\n status: string;\n};\n\nexport type BuildPipelineSummaryProps = {\n obj: K8sResourceKind;\n};\n\nexport type BuildSummaryStatusIconProps = {\n status: string;\n};\n\nexport type BuildStageTimestampProps = {\n timestamp: string;\n};\n\nexport type BuildPipelineLogLinkProps = {\n obj: K8sResourceKind;\n};\n\nexport type BuildPipelineLinkProps = {\n obj: K8sResourceKind;\n title: string;\n};\n\nexport type BuildSummaryTimestampProps = {\n timestamp: string;\n};\n\nexport type BuildStageNameProps = {\n name: string;\n};\n\nexport type JenkinsInputUrlProps = {\n obj: K8sResourceKind;\n stage: any;\n};\n","import { StandardConsolePluginManifest } from '../build-types';\n\nexport const getPluginID = (m: StandardConsolePluginManifest) => `${m.name}@${m.version}`;\n","import * as React from 'react';\nimport { PlusCircleIcon } from '@patternfly/react-icons/dist/esm/icons/plus-circle-icon';\nimport { Trans, useTranslation } from 'react-i18next';\nimport * as semver from 'semver';\nimport { ExternalLink } from '@console/internal/components/utils';\nimport { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';\nimport { ConsoleLinkModel } from '@console/internal/models';\nimport { K8sResourceKind, referenceForModel } from '@console/internal/module/k8s';\nimport { useOpenShiftVersion } from '@console/shared/src/hooks/version';\n\nconst DevPerspectiveTourText: React.FC = () => {\n const { t } = useTranslation();\n const fullVersion = useOpenShiftVersion();\n const parsed = semver.parse(fullVersion);\n // Show only major and minor version.\n const version = parsed ? `${parsed.major}.${parsed.minor}` : '4.x';\n return (\n <>\n {t(\n \"devconsole~Get started with a tour of some of the key areas in OpenShift {{version}}'s Developer perspective that can help you complete workflows and be more productive.\",\n { version },\n )}\n \n );\n};\n\nexport const devPerspectiveTourText = ;\n\nconst PerspectiveSwitcherTourText: React.FC = () => {\n const { t } = useTranslation();\n return (\n <>\n

    {t('devconsole~Switch between the Developer and Administrator perspectives.')}

    \n

    \n {t(\n 'devconsole~Use the Administrator perspective to manage workload storage, networking, cluster settings, and more. This may require additional user access.',\n )}\n

    \n

    \n {t(\n 'devconsole~Use the Developer perspective to build applications and associated components and services, define how they work together, and monitor their health over time.',\n )}\n

    \n \n );\n};\n\nexport const perspectiveSwitcherTourText = ;\n\nconst WebTerminalGuidedTourText: React.FC = () => {\n const { t } = useTranslation();\n return (\n <>\n

    \n {t(\n 'devconsole~Use command line tools directly from the Console. CLIs are pre-installed and fully authenticated when you need them.',\n )}\n

    \n

    \n \n

    \n \n );\n};\n\nexport const webTerminalGuidedTourText = ;\n\nexport const SearchTourText: React.FC = () => {\n const { t } = useTranslation();\n return (\n <>\n

    \n {t(\n 'devconsole~Search for resources in your Project by simply starting to type or scrolling through a list of existing resources.',\n )}\n

    \n

    \n {t(\n 'devconsole~Add frequently accessed resources to your side navigation for quick access. Look for the',\n )}{' '}\n \n {t('devconsole~Add to navigation')}\n {' '}\n {t('devconsole~link next to your search result.')}\n

    \n \n );\n};\n\nexport const searchTourText = ;\n\nexport const FinishTourText: React.FC = () => {\n const [consoleLinks] = useK8sWatchResource({\n isList: true,\n kind: referenceForModel(ConsoleLinkModel),\n optional: true,\n });\n const { t } = useTranslation();\n const openshiftBlogLink =\n consoleLinks.filter((link: K8sResourceKind) => link.metadata.name === 'openshift-blog')[0]?.spec\n ?.href || 'https://developers.redhat.com/products/openshift/whats-new';\n // declaring openshiftHelpBase instead of importing because it throws error while using it as tour extension\n const openshiftHelpBase =\n window.SERVER_FLAGS.documentationBaseURL || 'https://docs.okd.io/latest/';\n return (\n \n Stay up-to-date with everything OpenShift on our{' '}\n \n blog\n
    {' '}\n or continue to learn more in our{' '}\n \n documentation\n \n .\n \n );\n};\n\nexport const finishTourText = ;\n","export const getOperatorTopologyDataModel = () =>\n import(\n './operators-data-transformer' /* webpackChunkName: \"operators-topology-components\" */\n ).then((m) => m.getOperatorTopologyDataModel);\n\nexport const getOperatorsComponentFactory = () =>\n import(\n './components/operatorsComponentFactory' /* webpackChunkName: \"operators-topology-components\" */\n ).then((m) => m.getOperatorsComponentFactory);\n\nexport const getDataModelReconciler = () =>\n import(\n './operatorsDataModelReconciler' /* webpackChunkName: \"operators-topology-components\" */\n ).then((m) => m.operatorsDataModelReconciler);\n\nexport const getTopologyFilters = () =>\n import('./operatorFilters' /* webpackChunkName: \"operators-topology-components\" */).then(\n (m) => m.getTopologyFilters,\n );\n\nexport const applyDisplayOptions = () =>\n import('./operatorFilters' /* webpackChunkName: \"operators-topology-components\" */).then((m) =>\n m.applyDisplayOptions(),\n );\n","import { useURLPoll } from '../utils/url-poll-hook';\nimport { getPrometheusURL } from './helpers';\nimport { DEFAULT_PROMETHEUS_SAMPLES, DEFAULT_PROMETHEUS_TIMESPAN, PrometheusResponse } from '.';\nimport { PrometheusPollProps } from '@console/dynamic-plugin-sdk/src/extensions/console-types';\n\ntype UsePrometheusPoll = (props: PrometheusPollProps) => [PrometheusResponse, unknown, boolean];\n\nexport const usePrometheusPoll: UsePrometheusPoll = ({\n delay,\n endpoint,\n endTime,\n namespace,\n query,\n samples = DEFAULT_PROMETHEUS_SAMPLES,\n timeout,\n timespan = DEFAULT_PROMETHEUS_TIMESPAN,\n customDataSource,\n}) => {\n const prometheusURLProps = { endpoint, endTime, namespace, query, samples, timeout, timespan };\n\n return useURLPoll(\n getPrometheusURL(prometheusURLProps, customDataSource?.basePath),\n delay,\n query,\n timespan,\n );\n};\n","import * as React from 'react';\nimport * as _ from 'lodash-es';\nimport { CopyToClipboard as CTC } from 'react-copy-to-clipboard';\nimport { Button, CodeBlock, CodeBlockAction, CodeBlockCode, Tooltip } from '@patternfly/react-core';\nimport { CopyIcon } from '@patternfly/react-icons/dist/esm/icons/copy-icon';\nimport { useTranslation } from 'react-i18next';\n\nexport const CopyToClipboard: React.FC = React.memo((props) => {\n const [copied, setCopied] = React.useState(false);\n\n const { t } = useTranslation();\n const tooltipText = copied ? t('public~Copied') : t('public~Copy to clipboard');\n const tooltipContent = [\n \n {tooltipText}\n ,\n ];\n\n // Default to value if no visible value was specified.\n const visibleValue = _.isNil(props.visibleValue) ? props.value : props.visibleValue;\n\n const actions = (\n \n \n setCopied(true)}>\n setCopied(false)}\n className=\"co-copy-to-clipboard__btn\"\n type=\"button\"\n >\n \n {t('public~Copy to clipboard')}\n \n \n \n \n );\n\n return (\n \n \n {visibleValue}\n \n \n );\n});\n\nexport type CopyToClipboardProps = {\n value: string;\n visibleValue?: React.ReactNode;\n};\n\nCopyToClipboard.displayName = 'CopyToClipboard';\n","import * as React from 'react';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useSelector, useDispatch } from 'react-redux';\nimport { UseUtilizationDuration } from '@console/dynamic-plugin-sdk/src/api/internal-types';\nimport * as UIActions from '@console/internal/actions/ui';\nimport { DEFAULT_DURATION, DEFAULT_DURATION_KEY } from '../constants';\n\nexport const useUtilizationDuration: UseUtilizationDuration = (\n adjustDuration?: (duration: number) => number,\n) => {\n const dispatch = useDispatch();\n const duration =\n useSelector(({ UI }) => UI.getIn(['utilizationDuration', 'duration'])) ?? DEFAULT_DURATION;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const endDate =\n useSelector(({ UI }) => UI.getIn(['utilizationDuration', 'endDate'])) ?? new Date();\n const selectedKey =\n useSelector(({ UI }) => UI.getIn(['utilizationDuration', 'selectedKey'])) ??\n DEFAULT_DURATION_KEY;\n const startDate = new Date(endDate.getTime() - duration);\n const updateEndDate = React.useCallback(\n (date: Date) => date > endDate && dispatch(UIActions.setUtilizationDurationEndTime(date)),\n [dispatch, endDate],\n );\n const updateDuration = React.useCallback(\n (newDuration: number) =>\n dispatch(UIActions.setUtilizationDuration(adjustDuration?.(newDuration) ?? newDuration)),\n [adjustDuration, dispatch],\n );\n const updateSelectedKey = React.useCallback(\n (key: string) => dispatch(UIActions.setUtilizationDurationSelectedKey(key)),\n [dispatch],\n );\n\n return {\n duration,\n endDate,\n selectedKey,\n startDate,\n updateDuration,\n updateEndDate,\n updateSelectedKey,\n };\n};\n","import { ObjectMetadata } from '@console/internal/module/k8s';\nimport { parseJSONAnnotation } from '@console/shared/src/utils/annotations';\nimport { INTERNAL_OBJECTS_ANNOTATION, OPERATOR_PLUGINS_ANNOTATION } from './const';\nimport { SubscriptionKind, SubscriptionState } from './types';\n\nexport const getClusterServiceVersionPlugins = (\n annotations: ObjectMetadata['annotations'],\n): string[] => parseJSONAnnotation(annotations, OPERATOR_PLUGINS_ANNOTATION) ?? [];\n\nexport const getInternalObjects = (annotations: ObjectMetadata['annotations']): string[] =>\n parseJSONAnnotation(annotations, INTERNAL_OBJECTS_ANNOTATION) ?? [];\n\nexport const isCatalogSourceTrusted = (catalogSource: string): boolean =>\n catalogSource === 'redhat-operators';\n\nexport const upgradeRequiresApproval = (subscription: SubscriptionKind): boolean =>\n subscription?.status?.state === SubscriptionState.SubscriptionStateUpgradePending &&\n (subscription.status?.conditions ?? []).filter(\n ({ status, reason }) => status === 'True' && reason === 'RequiresApproval',\n ).length > 0;\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { ListPageFilterProps } from '@console/dynamic-plugin-sdk';\n\nimport { FilterToolbar } from '../../filter-toolbar';\n\nconst ListPageFilter: React.FC = ({\n data,\n loaded,\n rowFilters,\n labelFilter,\n labelPath,\n nameFilterTitle,\n nameFilterPlaceholder,\n labelFilterPlaceholder,\n hideNameLabelFilters,\n hideLabelFilter,\n columnLayout,\n onFilterChange,\n hideColumnManagement,\n nameFilter,\n rowSearchFilters,\n}) =>\n loaded &&\n !_.isEmpty(data) && (\n \n );\n\nexport default ListPageFilter;\n","import * as React from 'react';\nimport * as classNames from 'classnames';\nimport { ListPageHeaderProps } from '@console/dynamic-plugin-sdk';\n\nimport { PageHeading } from '../../utils';\n\nconst ListPageHeader: React.FC = ({ helpText, title, children, badge }) => (\n <>\n {/* Badge rendered from PageHeading only when title is present */}\n \n \n {children}\n
    \n {!title && badge &&
    {badge}
    }\n \n {helpText &&

    {helpText}

    }\n \n);\n\nexport default ListPageHeader;\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { useLocation } from 'react-router-dom-v5-compat';\nimport { UseListPageFilter, FilterValue } from '@console/dynamic-plugin-sdk';\n\nimport { useExactSearch } from '@console/app/src/components/user-preferences/search';\nimport { getAllTableFilters, FilterMap } from '../table-filters';\n\nconst filterData = (\n data: D[],\n filter: { [key: string]: FilterValue } = {},\n rowFilters?: FilterMap,\n) => {\n const filterTypes = Object.keys(filter);\n return data?.filter((d) =>\n filterTypes.every((type) =>\n rowFilters[type] && !_.isEmpty(filter?.[type]) ? rowFilters[type](filter[type], d) : true,\n ),\n );\n};\n\nexport const useListPageFilter: UseListPageFilter = (data, rowFilters, staticFilters) => {\n const [filter, setFilter] = React.useState<{ [key: string]: FilterValue }>();\n const [isExactSearch] = useExactSearch();\n const location = useLocation();\n\n React.useEffect(() => {\n const params = new URLSearchParams(location.search);\n const name = params.get('name');\n if (!_.isNil(name) && name !== filter?.name?.selected?.[0]) {\n setFilter((state) => ({ ...state, name: { selected: [name] } }));\n }\n }, [filter, location]);\n\n const onFilterChange = React.useCallback(\n (type, value) => setFilter((state) => ({ ...state, [type]: value })),\n [],\n );\n\n return React.useMemo(() => {\n const tableFilters = getAllTableFilters(rowFilters, isExactSearch);\n\n const staticData = filterData(data, staticFilters, tableFilters);\n const filteredData = filterData(staticData, filter, tableFilters);\n\n return [staticData, filteredData, onFilterChange];\n }, [data, filter, isExactSearch, onFilterChange, rowFilters, staticFilters]);\n};\n","import * as React from 'react';\nimport { Navigate, useLocation } from 'react-router-dom-v5-compat';\nimport { useActiveNamespace } from '@console/shared/src/hooks/useActiveNamespace';\nimport { ALL_NAMESPACES_KEY } from '@console/shared/src/constants';\n\nconst appendActiveNamespace = (namespace: string, pathname: string): string => {\n const basePath = pathname.replace(/\\/$/, '');\n return namespace === ALL_NAMESPACES_KEY\n ? `${basePath}/all-namespaces`\n : `${basePath}/ns/${namespace}`;\n};\n\nexport const NamespaceRedirect: React.FC = () => {\n const location = useLocation();\n const [activeNamespace] = useActiveNamespace();\n return (\n \n );\n};\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nexport const GraphEmpty: React.FC = ({ height = 180, loading = false }) => {\n const { t } = useTranslation();\n\n return (\n \n {loading ? (\n
    \n ) : (\n
    \n {t('public~No datapoints found.')}\n
    \n )}\n
    \n );\n};\n\ntype GraphEmptyProps = {\n height?: number | string;\n loading?: boolean;\n};\n","import * as React from 'react';\nimport PopperJS, { PopperOptions } from 'popper.js';\nimport { useCombineRefs } from '../../utils/useCombineRefs';\nimport Portal from './Portal';\n\n// alignment with PopperJS reference API\ntype PopperJSReference = {\n getBoundingClientRect: PopperJS['reference']['getBoundingClientRect'];\n clientWidth: number;\n clientHeight: number;\n};\n\ntype ClientRectProp = { x: number; y: number; width?: number; height?: number };\n\ntype Reference = Element | PopperJSReference | ClientRectProp;\n\nclass VirtualReference implements PopperJSReference {\n private rect: DOMRect;\n\n constructor({ height = 0, width = 0, x, y }: ClientRectProp) {\n this.rect = {\n bottom: y + height,\n height,\n left: x,\n right: x + width,\n top: y,\n width,\n } as DOMRect;\n }\n\n getBoundingClientRect(): DOMRect {\n return this.rect;\n }\n\n get clientWidth(): number {\n return this.rect.width || 0;\n }\n\n get clientHeight(): number {\n return this.rect.height || 0;\n }\n}\n\nconst getReference = (reference: Reference): PopperJSReference =>\n 'getBoundingClientRect' in reference ? reference : new VirtualReference(reference);\n\ntype PopperProps = {\n closeOnEsc?: boolean;\n closeOnOutsideClick?: boolean;\n container?: React.ComponentProps['container'];\n className?: string;\n open?: boolean;\n onRequestClose?: (e?: MouseEvent) => void;\n placement?:\n | 'bottom-end'\n | 'bottom-start'\n | 'bottom'\n | 'left-end'\n | 'left-start'\n | 'left'\n | 'right-end'\n | 'right-start'\n | 'right'\n | 'top-end'\n | 'top-start'\n | 'top';\n popperOptions?: PopperOptions;\n popperRef?: React.Ref;\n reference: Reference | (() => Reference);\n zIndex?: number;\n returnFocus?: boolean;\n};\n\nconst DEFAULT_POPPER_OPTIONS: PopperOptions = {};\n\nconst Popper: React.FC = ({\n children,\n container,\n className,\n open,\n placement = 'bottom-start',\n reference,\n popperOptions = DEFAULT_POPPER_OPTIONS,\n closeOnEsc,\n closeOnOutsideClick,\n onRequestClose,\n popperRef: popperRefIn,\n zIndex = 9999,\n returnFocus,\n}) => {\n const controlled = typeof open === 'boolean';\n const openProp = controlled ? open || false : true;\n const nodeRef = React.useRef();\n const popperRef = React.useRef(null);\n const popperRefs = useCombineRefs(popperRef, popperRefIn);\n const [isOpen, setOpenState] = React.useState(openProp);\n const focusRef = React.useRef();\n const onRequestCloseRef = React.useRef(onRequestClose);\n onRequestCloseRef.current = onRequestClose;\n\n const setOpen = React.useCallback(\n (newOpen: boolean) => {\n if (returnFocus && newOpen !== isOpen) {\n if (newOpen) {\n if (document.activeElement) {\n focusRef.current = document.activeElement;\n }\n } else if (focusRef.current instanceof HTMLElement && focusRef.current.ownerDocument) {\n focusRef.current.focus();\n }\n }\n setOpenState(newOpen);\n },\n [returnFocus, isOpen],\n );\n\n React.useEffect(() => {\n setOpen(openProp);\n }, [openProp, setOpen]);\n\n const onKeyDown = React.useCallback(\n (e: KeyboardEvent) => {\n if (e.keyCode === 27) {\n controlled ? onRequestCloseRef.current && onRequestCloseRef.current() : setOpen(false);\n }\n },\n [controlled, setOpen],\n );\n\n const onClickOutside = React.useCallback(\n (e: MouseEvent) => {\n if (!nodeRef.current || (e.target instanceof Node && !nodeRef.current.contains(e.target))) {\n controlled ? onRequestCloseRef.current && onRequestCloseRef.current(e) : setOpen(false);\n }\n },\n [controlled, setOpen],\n );\n\n const destroy = React.useCallback(() => {\n if (popperRef.current) {\n popperRef.current.destroy();\n popperRefs(null);\n document.removeEventListener('keydown', onKeyDown, true);\n document.removeEventListener('mousedown', onClickOutside, true);\n document.removeEventListener('touchstart', onClickOutside, true);\n }\n }, [onClickOutside, onKeyDown, popperRefs]);\n\n const initialize = React.useCallback(() => {\n if (!nodeRef.current || !reference || !isOpen) {\n return;\n }\n\n destroy();\n\n popperRefs(\n new PopperJS(\n getReference(typeof reference === 'function' ? reference() : reference),\n nodeRef.current,\n {\n placement,\n ...popperOptions,\n modifiers: {\n preventOverflow: {\n boundariesElement: 'window',\n },\n ...popperOptions.modifiers,\n },\n },\n ),\n );\n\n // init document listenerrs\n if (closeOnEsc) {\n document.addEventListener('keydown', onKeyDown, true);\n }\n if (closeOnOutsideClick) {\n document.addEventListener('mousedown', onClickOutside, true);\n document.addEventListener('touchstart', onClickOutside, true);\n }\n }, [\n popperRefs,\n reference,\n isOpen,\n destroy,\n placement,\n popperOptions,\n closeOnEsc,\n closeOnOutsideClick,\n onKeyDown,\n onClickOutside,\n ]);\n\n const nodeRefCallback = React.useCallback(\n (node) => {\n nodeRef.current = node;\n initialize();\n },\n [initialize],\n );\n\n React.useEffect(() => {\n initialize();\n }, [initialize]);\n\n React.useEffect(() => {\n return () => {\n destroy();\n };\n }, [destroy]);\n\n React.useEffect(() => {\n if (!isOpen) {\n destroy();\n }\n }, [destroy, isOpen]);\n\n return isOpen ? (\n \n \n {children}\n
    \n \n ) : null;\n};\n\nexport default Popper;\n","export * from './common';\nexport * from './infrastructure';\nexport * from './pod';\nexport * from './machine';\nexport * from './machineSet';\nexport * from './namespace';\nexport * from './node';\nexport * from './storage';\n","import * as React from 'react';\nimport { Text, TextVariants } from '@patternfly/react-core';\nimport { useTranslation } from 'react-i18next';\nimport { ErrorBoundaryFallbackProps } from '@console/dynamic-plugin-sdk';\nimport { ExpandCollapse } from '@console/internal/components/utils/expand-collapse';\nimport ErrorDetailsBlock from './ErrorDetailsBlock';\n\n/**\n * Standard fallback catch -- expected to take up the whole page.\n */\nconst ErrorBoundaryFallbackPage: React.FC = (props) => {\n const { t } = useTranslation();\n return (\n
    \n \n {t('console-shared~Oh no! Something went wrong.')}\n \n \n \n \n
    \n );\n};\n\nexport default ErrorBoundaryFallbackPage;\n","import { ObjectMetadata } from '@console/internal/module/k8s';\n\nexport const parseJSONAnnotation = (\n annotations: ObjectMetadata['annotations'],\n annotationKey: string,\n onError?: (err: Error) => void,\n defaultReturn?: any,\n): any => {\n try {\n return annotations?.[annotationKey] ? JSON.parse(annotations?.[annotationKey]) : defaultReturn;\n } catch (e) {\n onError?.(e);\n // eslint-disable-next-line no-console\n console.warn(`Could not parse annotation ${annotationKey} as JSON: `, e);\n return defaultReturn;\n }\n};\n","import * as React from 'react';\nimport { Alert, Label, Skeleton } from '@patternfly/react-core';\nimport { NotificationEntry, NotificationTypes } from '@console/patternfly';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport * as UIActions from '@console/internal/actions/ui';\nimport { consoleFetchJSON } from '@console/dynamic-plugin-sdk/src/utils/fetch';\nimport { YellowExclamationTriangleIcon, RedExclamationCircleIcon } from '@console/shared';\nimport { getDuration, dateFormatter } from './datetime';\nimport { getOCMLink } from '../../module/k8s';\nimport { k8sGet } from '@console/dynamic-plugin-sdk/src/api/core-api';\nimport { SecretModel } from '../../models';\nimport { ExternalLink, FieldLevelHelp } from './index';\nimport { RootState } from '../../redux';\n\nconst useServiceLevelText = (level: string): string => {\n const { t } = useTranslation();\n const levels = {\n Premium: t('public~Premium'),\n Standard: t('public~Standard'),\n 'Self-Support': t('public~Self-support'),\n Eval: t('public~Self-support, 60 day trial'),\n None: t('public~None'), // Eval has ended\n Unknown: t('public~Unknown'), // Not officially returned from the API, but is used when no results are returned from the API\n };\n\n if (!level) {\n return levels.Unknown;\n }\n return levels[level] || level;\n};\n\nconst showServiceLevel = (clusterID: string) =>\n clusterID &&\n window.SERVER_FLAGS.branding !== 'okd' &&\n window.SERVER_FLAGS.branding !== 'azure' &&\n window.SERVER_FLAGS.branding !== 'dedicated';\n\nconst TrialDaysLeft: React.FC<{\n level: string;\n trialDaysLeft: number | null;\n label?: boolean;\n}> = ({ level, trialDaysLeft, label }) => {\n const { t } = useTranslation();\n\n if ((level !== 'Eval' && level !== 'None') || (level === 'Eval' && trialDaysLeft === null)) {\n return null;\n }\n\n let variant: 'warning' | 'danger' = 'warning';\n\n let alertText = t('public~{{count}} day remaining', { count: trialDaysLeft });\n if (trialDaysLeft === 0) {\n alertText = t('public~< 1 day remaining');\n }\n\n if (trialDaysLeft < 0 || level === 'None') {\n variant = 'danger';\n alertText = t('public~Trial expired');\n }\n\n if (label) {\n return (\n
    \n : \n }\n >\n {alertText}\n \n
    \n );\n }\n return (\n \n );\n};\n\nconst useLoadServiceLevel = (): [boolean, boolean, (clusterID: string) => void] => {\n const dispatch = useDispatch();\n const [loadingSecret, setLoadingSecret] = React.useState(false);\n const [loadingServiceLevel, setLoadingServiceLevel] = React.useState(false);\n\n let hasSecretAccess = false;\n\n const loadServiceLevel = (clusterID: string): void => {\n if (!showServiceLevel(clusterID)) {\n setLoadingSecret(false);\n setLoadingServiceLevel(false);\n dispatch(UIActions.setServiceLevel(null, null, clusterID, null, hasSecretAccess));\n return;\n }\n setLoadingSecret(true);\n k8sGet({ model: SecretModel, name: 'pull-secret', ns: 'openshift-config' })\n .then((response) => {\n // @ts-ignore Data is not recognized as part of response.\n const secret = JSON.parse(atob(response.data['.dockerconfigjson']));\n const token = secret.auths['cloud.openshift.com'].auth;\n const headers = {\n Authorization: `AccessToken ${clusterID}:${token}`,\n };\n const apiUrl = `/api/accounts_mgmt/v1/subscriptions?page=1&search=external_cluster_id%3D%27${clusterID}%27`;\n setLoadingSecret(false);\n if (!token) {\n throw new Error('Pull secret token is empty');\n }\n setLoadingServiceLevel(true);\n hasSecretAccess = true;\n\n consoleFetchJSON(apiUrl, 'GET', {\n headers,\n })\n .then((ocmResponse) => {\n if (!ocmResponse.items || ocmResponse.items?.length === 0) {\n throw new Error('Cluster ID used to get support level was not recognized');\n }\n\n const levelSetting = ocmResponse.items[0].support_level;\n const expirationDate = ocmResponse.items[0].eval_expiration_date;\n\n const trialEnd = expirationDate ? new Date(expirationDate) : null;\n const now = new Date();\n let daysLeft = trialEnd ? getDuration(trialEnd.getTime() - now.getTime()).days : null;\n\n daysLeft = trialEnd.getTime() < now.getTime() ? -1 : daysLeft;\n\n const trialDateEnd = trialEnd ? dateFormatter.format(trialEnd) : null;\n dispatch(\n UIActions.setServiceLevel(\n levelSetting,\n daysLeft,\n clusterID,\n trialDateEnd,\n hasSecretAccess,\n ),\n );\n })\n .catch((err) => {\n dispatch(UIActions.setServiceLevel(null, null, clusterID, null, hasSecretAccess));\n // eslint-disable-next-line no-console\n console.error('API call to get support level has failed', err);\n })\n .finally(() => {\n // done trying to get service level\n setLoadingServiceLevel(false);\n });\n })\n .catch(() => {\n // Error getting pull secret (this is expected if the user doesn't have access)\n setLoadingSecret(false);\n dispatch(UIActions.setServiceLevel(null, null, clusterID, null, hasSecretAccess));\n });\n };\n\n return [loadingSecret, loadingServiceLevel, loadServiceLevel];\n};\nconst useGetServiceLevel = (\n clusterIDParam: string,\n): {\n level: string;\n daysRemaining: number | null;\n trialDateEnd: string;\n hasSecretAccess: boolean;\n loadingSecret: boolean;\n loadingServiceLevel: boolean;\n} => {\n const {\n level,\n daysRemaining,\n clusterID,\n trialDateEnd,\n hasSecretAccess,\n } = useSelector(({ UI }: RootState) => UI.get('serviceLevel'));\n const [loadingSecret, loadingServiceLevel, loadServiceLevel] = useLoadServiceLevel();\n\n React.useEffect(() => {\n if (clusterID !== clusterIDParam && !loadingSecret && !loadingServiceLevel) {\n loadServiceLevel(clusterIDParam);\n }\n // only on clusterID change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clusterIDParam]);\n\n return {\n level,\n daysRemaining,\n trialDateEnd,\n hasSecretAccess,\n loadingSecret,\n loadingServiceLevel,\n };\n};\n\nexport const ServiceLevelLoading: React.FC = () => {\n const { t } = useTranslation();\n return ;\n};\n\nexport const ServiceLevel: React.FC<{\n clusterID: string;\n loading: React.ReactNode;\n children: React.ReactNode;\n}> = ({ clusterID, loading, children }) => {\n const { hasSecretAccess, loadingSecret, loadingServiceLevel } = useGetServiceLevel(clusterID);\n\n if (!showServiceLevel(clusterID)) {\n return null;\n }\n if (loadingSecret || !hasSecretAccess) {\n return null;\n }\n if (!loadingSecret && loadingServiceLevel) {\n return <>{loading};\n }\n\n return <>{children};\n};\ntype ServiceLevelTextProps = {\n clusterID?: string;\n inline?: boolean;\n};\nexport const ServiceLevelText: React.FC = ({ clusterID, inline }) => {\n const { t } = useTranslation();\n const { level, daysRemaining } = useGetServiceLevel(clusterID);\n const levelText = (\n <>\n {useServiceLevelText(level)}\n {!inline && !level ? (\n \n {t(\n 'public~API failed to return the Service Level Agreement setting for this cluster. Check again later.',\n )}\n \n ) : null}\n \n );\n if (inline) {\n return (\n <>\n {levelText}\n \n \n );\n }\n return (\n
    \n
    \n {levelText}\n
    \n \n
    \n
    \n {!inline ? (\n
    \n \n
    \n ) : null}\n
    \n );\n};\nexport const useServiceLevelTitle = (): string => {\n const { t } = useTranslation();\n return t('public~Service Level Agreement (SLA)');\n};\n\nexport const useShowServiceLevelNotifications = (clusterID: string): boolean => {\n const { level } = useGetServiceLevel(clusterID);\n return level && (level === 'Eval' || level === 'None');\n};\n\nexport const ServiceLevelNotification: React.FC<{\n clusterID?: string;\n toggleNotificationDrawer: () => void;\n}> = ({ clusterID, toggleNotificationDrawer }) => {\n const { t } = useTranslation();\n const { level, daysRemaining, trialDateEnd } = useGetServiceLevel(clusterID);\n const showServiceLevelNotification = useShowServiceLevelNotifications(clusterID);\n\n if (!showServiceLevelNotification) {\n return null;\n }\n let notificationStart = '';\n if (level === 'None' || (level === 'Eval' && daysRemaining < 0)) {\n notificationStart = t('public~Your 60-day self-support trial expired.');\n }\n\n notificationStart =\n daysRemaining === 0\n ? t('public~Your 60-day self-support trial will end in < 1 day.')\n : t('public~Your 60-day self-support trial will end in {{count}} day on {{date}}.', {\n count: daysRemaining,\n date: trialDateEnd,\n });\n\n return (\n \n {`${notificationStart} ${t(\n 'public~For continued support, upgrade your cluster or transfer cluster ownership to an account with an active subscription.',\n )}`}\n \n }\n type={NotificationTypes.warning}\n />\n );\n};\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport {\n Action,\n ActionGroup,\n ActionService,\n ActionServiceProviderProps,\n isActionGroup,\n MenuOption,\n} from '@console/dynamic-plugin-sdk';\nimport { useExtensions } from '@console/plugin-sdk';\nimport { useDeepCompareMemoize } from '../../hooks';\nimport ActionsLoader from './loader/ActionsLoader';\nimport { ActionContext } from './types';\nimport { createMenuOptions } from './utils';\n\nconst ActionServiceProvider: React.FC = ({ context, children }) => {\n const [contextMap, setContextMap] = React.useState(context);\n const [actionsMap, setActionsMap] = React.useState<{ [uid: string]: Action[] }>({});\n const [loadError, setLoadError] = React.useState();\n\n const memoizedContext = useDeepCompareMemoize(context);\n\n const onContextChange = React.useCallback((newContexId: string, newScope: any) => {\n setContextMap((prevContext) => ({ ...prevContext, [newContexId]: newScope }));\n }, []);\n\n const onActionsLoaded = React.useCallback((actions: Action[], uid: string) => {\n setActionsMap((prev) => ({ ...prev, [uid]: actions }));\n }, []);\n\n const actions: Action[] = React.useMemo(() => _.flatten(Object.values(actionsMap)), [actionsMap]);\n\n const groupExtensions = useExtensions(isActionGroup);\n\n const options: MenuOption[] = React.useMemo(() => createMenuOptions(actions, groupExtensions), [\n actions,\n groupExtensions,\n ]);\n\n const actionsLoaded = Object.keys(contextMap).every((contextId) => actionsMap[contextId]);\n\n const service: ActionService = React.useMemo(\n () => ({\n actions,\n options,\n loaded: actionsLoaded,\n error: loadError,\n }),\n [actions, actionsLoaded, loadError, options],\n );\n\n // Update the state whenever the context from props changes.\n React.useEffect(() => {\n setContextMap((prevContext) => ({ ...prevContext, ...memoizedContext }));\n }, [memoizedContext]);\n\n return (\n <>\n {Object.keys(contextMap).map((contextId) => (\n onActionsLoaded(value, contextId)}\n onContextChange={onContextChange}\n onLoadError={setLoadError}\n />\n ))}\n {children(service)}\n \n );\n};\n\nexport default ActionServiceProvider;\n","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport { SearchIcon } from '@patternfly/react-icons/dist/esm/icons/search-icon';\nimport { Link } from 'react-router-dom-v5-compat';\nimport { useTranslation } from 'react-i18next';\n\nimport { Selector as SelectorKind } from '../../module/k8s';\nimport { selectorToString } from '@console/dynamic-plugin-sdk/src/utils/k8s';\n\nconst Requirement: React.FC = ({ kind, requirements, namespace = '' }) => {\n // Strip off any trailing '=' characters for valueless selectors\n const requirementAsString = selectorToString(requirements).replace(/=,/g, ',').replace(/=$/g, '');\n const requirementAsUrlEncodedString = encodeURIComponent(requirementAsString);\n\n const to = namespace\n ? `/search/ns/${namespace}?kind=${kind}&q=${requirementAsUrlEncodedString}`\n : `/search/all-namespaces?kind=${kind}&q=${requirementAsUrlEncodedString}`;\n\n return (\n
    \n \n \n {requirementAsString.replace(/,/g, ', ')}\n \n
    \n );\n};\nRequirement.displayName = 'Requirement';\n\nexport const Selector: React.FC = ({\n kind = 'Pod',\n selector = {},\n namespace = undefined,\n}) => {\n const { t } = useTranslation();\n return (\n
    \n {_.isEmpty(selector) ? (\n

    {t('public~No selector')}

    \n ) : (\n \n )}\n
    \n );\n};\nSelector.displayName = 'Selector';\n\ntype RequirementProps = {\n kind: string;\n requirements: SelectorKind;\n namespace?: string;\n};\n\ntype SelectorProps = {\n kind?: string;\n selector: SelectorKind;\n namespace?: string;\n};\n","export * from './rhoas';\n","export { default as UserPreferencePage } from './UserPreferencePage';\nexport * from './perspective';\nexport * from './namespace';\nexport * from './language';\n","import { ExtensionK8sKindVersionModel } from '../api/common-types';\nimport { Extension, ExtensionDeclaration, CodeRef } from '../types';\nimport { K8sResourceCommon } from './console-types';\n\nexport type PageComponentProps = {\n filters?: any;\n selected?: any;\n match?: any;\n obj?: R;\n params?: any;\n customData?: any;\n showTitle?: boolean;\n fieldSelector?: string;\n};\n\n/** This extension can be used to add a tab on the resource details page. */\nexport type HorizontalNavTab = ExtensionDeclaration<\n 'console.tab/horizontalNav',\n {\n /** The model for which this provider show tab. */\n model: ExtensionK8sKindVersionModel;\n /** The page to be show in horizontal tab. It takes tab name as name and href of the tab */\n page: {\n name: string;\n href: string;\n };\n /** The component to be rendered when the route matches. */\n component: CodeRef>;\n }\n>;\n\n/** Adds a tab to a horizontal nav matching the `contextId`. */\nexport type NavTab = ExtensionDeclaration<\n 'console.tab',\n {\n /** Context ID assigned to the horizontal nav in which the tab will be injected.\n * Possible values:\n * - `dev-console-observe`\n */\n contextId: string;\n /** The display label of the tab */\n name: string;\n /** The href appended to the existing URL */\n href: string;\n /** Tab content component. */\n component: CodeRef>;\n }\n>;\n\n// Type Guards\nexport const isHorizontalNavTab = (e: Extension): e is HorizontalNavTab =>\n e.type === 'console.tab/horizontalNav';\nexport const isTab = (e: Extension): e is NavTab => e.type === 'console.tab';\n","import * as React from 'react';\n\n/**\n * @deprecated - This hook is not related to console functionality.\n * Hook that ensures a safe asynchronnous setting of the React state in case a given component could be unmounted.\n * (https://github.com/facebook/react/issues/14113)\n * @param initialState initial state value\n * @returns An array with a pair of state value and it's set function.\n */\nexport const useSafetyFirst = (\n initialState: S | (() => S),\n): [S, React.Dispatch>] => {\n const mounted = React.useRef(true);\n React.useEffect(() => () => (mounted.current = false), []);\n\n const [value, setValue] = React.useState(initialState);\n const setValueSafe = React.useCallback((newValue: S) => {\n if (mounted.current) {\n setValue(newValue);\n }\n }, []);\n\n return [value, setValueSafe];\n};\n","import * as React from 'react';\nimport { Alert, Button, Modal, ModalVariant, Split, SplitItem } from '@patternfly/react-core';\nimport { useTranslation } from 'react-i18next';\nimport { ErrorBoundaryFallbackProps } from '@console/dynamic-plugin-sdk';\nimport ErrorDetailsBlock from './ErrorDetailsBlock';\n\n/**\n * Support for error boundary content that won't consume the whole page.\n */\nconst ErrorBoundaryFallbackInline: React.FC = (props) => {\n const { t } = useTranslation();\n const [isOpen, setOpen] = React.useState(false);\n return (\n <>\n \n \n \n \n \n \n \n \n setOpen(false)}\n actions={[\n ,\n ]}\n >\n \n \n \n );\n};\n\nexport default ErrorBoundaryFallbackInline;\n","import * as React from 'react';\nimport ErrorBoundary from '../error-boundary';\n\ntype WithFallback =

    (\n Component: React.ComponentType

    ,\n FallbackComponent?: React.ComponentType,\n) => React.ComponentType

    ;\n\nconst withFallback: WithFallback = (WrappedComponent, FallbackComponent) => {\n const Component = (props) => (\n \n \n \n );\n Component.displayName = `withFallback(${WrappedComponent.displayName || WrappedComponent.name})`;\n return Component;\n};\n\nexport default withFallback;\n","import * as React from 'react';\nimport { Badge } from '@patternfly/react-core';\nimport './Badge.scss';\nimport { useTranslation } from 'react-i18next';\n\nexport const InlineTechPreviewBadge: React.FC = () => {\n const { t } = useTranslation();\n return (\n \n {t('console-shared~Tech preview')}\n \n );\n};\n\nexport const InlineDevPreviewBadge: React.FC = () => {\n const { t } = useTranslation();\n return (\n \n {t('console-shared~Dev preview')}\n \n );\n};\n","import { useEffect, useRef } from 'react';\n\nexport const usePrevious =

    (value: P, deps?: any[]): P => {\n const ref = useRef

    ();\n useEffect(() => {\n ref.current = value;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps || [value]);\n return ref.current;\n};\n","import { ChartThemeColor, getCustomTheme } from '@patternfly/react-charts';\nimport { global_palette_black_300 as globalBlack300 } from '@patternfly/react-tokens/dist/js/global_palette_black_300';\n\nconst pfDependentAxisTickLabels = {\n padding: 5,\n fontFamily: 'var(--pf-v5-chart-global--FontFamily)',\n letterSpacing: 'var(--pf-v5-chart-global--letter-spacing)',\n fill: 'var(--pf-v5-global--Color--200)',\n};\n\nconst theme = {\n chart: {\n padding: {\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n },\n },\n dependentAxis: {\n style: {\n axis: {\n stroke: 'none',\n },\n grid: {\n stroke: '#EDEDED',\n },\n tickLabels: pfDependentAxisTickLabels,\n },\n },\n independentAxis: {\n style: {\n ticks: {\n size: 5,\n strokeWidth: 1,\n stroke: globalBlack300.value,\n },\n tickLabels: Object.assign({}, pfDependentAxisTickLabels, { padding: 2 }),\n grid: {\n stroke: 'none',\n },\n },\n },\n line: {\n style: {\n data: {\n opacity: 0.75,\n },\n },\n },\n};\n\nexport const queryBrowserTheme = getCustomTheme(ChartThemeColor.multiUnordered, theme);\n","import {\n K8sResourceKindReference,\n K8sResourceCommon,\n} from '@console/dynamic-plugin-sdk/src/extensions/console-types';\nimport { Selector } from '@console/dynamic-plugin-sdk/src/api/common-types';\nimport { K8sResourceKind } from '../../module/k8s/types';\n\nexport type FirehoseResult<\n R extends K8sResourceCommon | K8sResourceCommon[] = K8sResourceKind[]\n> = {\n loaded: boolean;\n loadError: string;\n optional?: boolean;\n data: R;\n kind?: string;\n};\n\nexport type FirehoseResultObject = { [key: string]: K8sResourceCommon | K8sResourceCommon[] };\n\nexport type FirehoseResourcesResult<\n R extends FirehoseResultObject = { [key: string]: K8sResourceCommon | K8sResourceCommon[] }\n> = {\n [k in keyof R]: FirehoseResult;\n};\n\n/*\n Add the enum for NameValueEditorPair here and not in its namesake file because the editor should always be\n loaded asynchronously in order not to bloat the vendor file. The enum reference into the editor\n will cause it not to load asynchronously.\n */\nexport const enum NameValueEditorPair {\n Name = 0,\n Value,\n Index,\n}\n\nexport const enum EnvFromPair {\n Prefix = 0,\n Resource,\n Index,\n}\n/**\n * The environment editor manages two types of env variables env and envFrom. This const distinguishes the two.\n */\nexport const enum EnvType {\n ENV = 0,\n ENV_FROM = 1,\n}\n\nexport type FirehoseResource = {\n kind: K8sResourceKindReference;\n name?: string;\n namespace?: string;\n isList?: boolean;\n selector?: Selector;\n prop: string;\n namespaced?: boolean;\n optional?: boolean;\n limit?: number;\n fieldSelector?: string;\n};\n\nexport type HumanizeResult = {\n string: string;\n value: number;\n unit: string;\n};\n\nexport type Humanize = {\n (v: React.ReactText, initialUnit?: string, preferredUnit?: string): HumanizeResult;\n};\n","import * as React from 'react';\nimport * as _ from 'lodash-es';\n\nimport { modelFor, kindForReference } from '../../module/k8s';\n\nexport const inject = (children, props) => {\n const safeProps = _.omit(props, ['children']);\n return React.Children.map(children, (c) => {\n if (!_.isObject(c)) {\n return c;\n }\n return React.cloneElement(c, safeProps);\n });\n};\n\nconst lastKind = new Set();\n\n/**\n * @deprecated Use `modelFor` or `connectToModel`.\n * Provides a synchronous way to acquire a statically-defined Kubernetes model.\n * NOTE: This will not work for CRDs defined at runtime, use `connectToModels` instead.\n */\nexport const kindObj = (kind) => {\n if (kindForReference(kind) === kind && !lastKind.has(kind)) {\n // eslint-disable-next-line no-console\n console.warn(\n `Attempting to get Kubernetes object model using string kind: ${kind}, which is not guaranteed to be unique!`,\n );\n lastKind.add(kind);\n }\n const model = modelFor(kind);\n if (!model) {\n // eslint-disable-next-line no-console\n console.warn('kindObj: no model for kind', kind);\n }\n return model || {};\n};\n","import { K8sResourceCommon, OwnerReference, groupVersionFor } from './';\nimport {\n ClusterServiceVersionKind,\n ClusterServiceVersionModel,\n} from '@console/operator-lifecycle-manager';\n\n// Check if owner is an Operand under csv\nconst isOwnedByOperator = (csv: ClusterServiceVersionKind, owner: OwnerReference) => {\n const { group } = groupVersionFor(owner.apiVersion);\n return csv.spec?.customresourcedefinitions?.owned?.some((owned) => {\n const ownedGroup = owned.name.substring(owned.name.indexOf('.') + 1);\n return owned.kind === owner.kind && ownedGroup === group;\n });\n};\n\n// Check if csv === owner (there is no need to check namespace because ownerReferences must\n// be in the same namespace as the owned resource, or be cluster-scoped).\nconst isOwnedByCSV = (csv: ClusterServiceVersionKind, owner: OwnerReference) => {\n const { group } = groupVersionFor(owner.apiVersion);\n return (\n group === ClusterServiceVersionModel.apiGroup &&\n owner.kind === ClusterServiceVersionModel.kind &&\n csv.metadata.name === owner.name\n );\n};\n\n// Find an Operator CSV that either is the owner or owns the owner\nexport const matchOwnerAndCSV = (owner: OwnerReference, csvs: ClusterServiceVersionKind[] = []) => {\n return csvs.find((csv) => isOwnedByOperator(csv, owner) || isOwnedByCSV(csv, owner));\n};\n\n// Find onwerReference that is either a CSV or is an Operand managed by a CSV.\nexport const findOwner = (obj: K8sResourceCommon, csvs: ClusterServiceVersionKind[]) => {\n return obj?.metadata?.ownerReferences?.find((o) =>\n csvs?.some((csv) => isOwnedByOperator(csv, o) || isOwnedByCSV(csv, o)),\n );\n};\n","export * from './useForceRender';\nexport * from './useResizeObserver';\n","import * as React from 'react';\nimport { useUserSettings } from '@console/shared';\n\nexport const THEME_USER_SETTING_KEY = 'console.theme';\nexport const THEME_LOCAL_STORAGE_KEY = 'bridge/theme';\nconst THEME_SYSTEM_DEFAULT = 'systemDefault';\nconst THEME_DARK_CLASS = 'pf-v5-theme-dark';\nconst THEME_DARK_CLASS_LEGACY = 'pf-theme-dark'; // legacy class name needed to support PF4\nconst THEME_DARK = 'dark';\n\nexport const updateThemeClass = (htmlTagElement: HTMLElement, theme: string) => {\n let systemTheme: string;\n if (window.matchMedia('(prefers-color-scheme: dark)').matches) {\n systemTheme = THEME_DARK;\n }\n if (theme === THEME_DARK || (theme === THEME_SYSTEM_DEFAULT && systemTheme === THEME_DARK)) {\n htmlTagElement.classList.add(THEME_DARK_CLASS);\n htmlTagElement.classList.add(THEME_DARK_CLASS_LEGACY);\n } else {\n htmlTagElement.classList.remove(THEME_DARK_CLASS);\n htmlTagElement.classList.remove(THEME_DARK_CLASS_LEGACY);\n }\n};\n\nexport const ThemeContext = React.createContext('');\n\nexport const ThemeProvider: React.FC<{}> = ({ children }) => {\n const htmlTagElement = document.documentElement;\n const localTheme = localStorage.getItem(THEME_LOCAL_STORAGE_KEY);\n const [theme, , themeLoaded] = useUserSettings(\n THEME_USER_SETTING_KEY,\n THEME_SYSTEM_DEFAULT,\n true,\n );\n const mqListener = React.useCallback(\n (e) => {\n if (e.matches) {\n htmlTagElement?.classList.add(THEME_DARK_CLASS);\n htmlTagElement?.classList.add(THEME_DARK_CLASS_LEGACY);\n } else {\n htmlTagElement?.classList.remove(THEME_DARK_CLASS);\n htmlTagElement?.classList.remove(THEME_DARK_CLASS_LEGACY);\n }\n },\n [htmlTagElement],\n );\n React.useEffect(() => {\n const darkThemeMq = window.matchMedia('(prefers-color-scheme: dark)');\n if (theme === THEME_SYSTEM_DEFAULT) {\n darkThemeMq.addEventListener('change', mqListener);\n }\n if (themeLoaded) {\n updateThemeClass(htmlTagElement, theme);\n }\n return () => darkThemeMq.removeEventListener('change', mqListener);\n }, [htmlTagElement, mqListener, theme, themeLoaded]);\n\n React.useEffect(() => {\n themeLoaded && localStorage.setItem(THEME_LOCAL_STORAGE_KEY, theme);\n }, [theme, themeLoaded]);\n\n const value = themeLoaded ? theme : localTheme;\n return {children};\n};\n","import * as React from 'react';\nimport { ExtensionHook } from '@console/dynamic-plugin-sdk/src/api/common-types';\nimport { CatalogExtensionHookOptions } from '@console/dynamic-plugin-sdk/src/extensions';\n\ntype CatalogExtensionHookResolverProps = {\n id: string;\n useValue: ExtensionHook;\n options: CatalogExtensionHookOptions;\n onValueResolved: (value: T, id: string) => void;\n onValueError?: (error: any, id: string) => void;\n};\n\nconst CatalogExtensionHookResolver = function ({\n id,\n useValue,\n options,\n onValueResolved,\n onValueError,\n}: CatalogExtensionHookResolverProps) {\n const [value, loaded, loadError] = useValue(options);\n\n React.useEffect(() => {\n if (loaded) onValueResolved(value, id);\n // unnecessary to run effect again if the onValueResolved callback changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id, loaded, value]);\n\n React.useEffect(() => {\n if (loadError && onValueError) onValueError(loadError, id);\n // unnecessary to run effect again if the onValueError callback changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id, loadError]);\n\n return null;\n};\n\nexport default CatalogExtensionHookResolver;\n","import { PodModel } from '@console/internal/models';\n\n// The query used to compute the number of kube-apiserver instances that are up\n// is a bit different than the ones used for the other control plane components\n// because of how Kubernetes deal with the kube-apiserver Service endpoints.\n// When a node is down, the kube-apiserver address on that node is removed from\n// its Endpoint object which results in metrics for that kube-apiserver\n// instance to not be scraped anymore. Meaning that the `up` timeserie for that\n// kube-apiserver instance will not exist anymore and if we were to use the\n// same query as the other components we will always see the kube-apiserver\n// being 100% available when a node is down. The solution to that problem is\n// to rely on the number of kube-apiserver pods instead of the number of\n// Prometheus targets it has.\nexport const API_SERVERS_UP =\n '(sum(up{job=\"apiserver\"} == 1) / count(kube_pod_labels{label_app=\"openshift-kube-apiserver\",label_apiserver=\"true\",namespace=\"openshift-kube-apiserver\"})) * 100';\nexport const CONTROLLER_MANAGERS_UP =\n '(sum(up{job=\"kube-controller-manager\"} == 1) / count(up{job=\"kube-controller-manager\"})) * 100';\nexport const SCHEDULERS_UP = '(sum(up{job=\"scheduler\"} == 1) / count(up{job=\"scheduler\"})) * 100';\nexport const API_SERVER_REQUESTS_SUCCESS =\n '(1 - (sum(rate(apiserver_request_total{code=~\"5..\"}[5m])) or vector(0))/ sum(rate(apiserver_request_total[5m]))) * 100';\n\nexport const enum Condition {\n DISK_PRESSURE = 'DiskPressure',\n PID_PRESSURE = 'PIDPressure',\n MEM_PRESSURE = 'MemoryPressure',\n}\n\nexport const PressureQueries = {\n [Condition.DISK_PRESSURE]: (node: string) => [\n {\n model: PodModel,\n fieldSelector: `spec.nodeName=${node}`,\n metric: 'pod',\n query: `(sort_desc(topk(25,sum by(pod, namespace) (container_fs_reads_total{node=\"${node}\"}))))`,\n },\n ],\n\n [Condition.MEM_PRESSURE]: (node: string) => [\n {\n model: PodModel,\n fieldSelector: `spec.nodeName=${node}`,\n metric: 'pod',\n query: `(sort_desc(topk(25,sum by(pod, namespace) (container_memory_working_set_bytes{node=\"${node}\", container=\"\"}))))`,\n },\n ],\n\n [Condition.PID_PRESSURE]: (node: string) => [\n {\n model: PodModel,\n fieldSelector: `spec.nodeName=${node}`,\n metric: 'pod',\n query: `(sort_desc(topk(25,sum by(pod, namespace) (container_processes{node=\"${node}\"}))))`,\n },\n ],\n};\n","import { Dispatch, SetStateAction } from 'react';\nimport { useUserSettings } from '@console/shared';\n\nexport const PREFERRED_PERSPECTIVE_USER_SETTING_KEY = 'console.preferredPerspective';\n\nexport const usePreferredPerspective = (): [string, Dispatch>, boolean] => {\n const [\n preferredPerspective,\n setPreferredPerspective,\n preferredPerspectiveLoaded,\n ] = useUserSettings(PREFERRED_PERSPECTIVE_USER_SETTING_KEY);\n return [preferredPerspective, setPreferredPerspective, preferredPerspectiveLoaded];\n};\n","export { default as LanguageDropdown } from './LanguageDropdown';\nexport * from './usePreferredLanguage';\nexport * from './useLanguage';\n","import * as _ from 'lodash';\n\nconst isPlainNonReactObject = (obj: any) => _.isPlainObject(obj) && !obj.$$typeof;\n\nexport type ValueCallback = (value: T, key: string, container: {}, path: string) => void;\nexport type PredicateCheck = (value: unknown, path: string) => value is T;\n\n/**\n * Recursive equivalent of `_.forOwn` function that traverses plain objects and arrays.\n */\nexport const deepForOwn = (\n obj: {},\n predicate: PredicateCheck,\n valueCallback: ValueCallback,\n pathParts: string[] = [],\n) => {\n const visitValue = (value: any, key: string, container: {}, newPathParts: string[]) => {\n const path = newPathParts.join('.');\n if (predicate(value, path)) {\n valueCallback(value, key, container, path);\n } else if (isPlainNonReactObject(value)) {\n deepForOwn(value, predicate, valueCallback, newPathParts);\n }\n };\n\n Object.keys(obj).forEach((key) => {\n const value = obj[key];\n const newPathParts = [...pathParts, key];\n if (Array.isArray(value)) {\n value.forEach((arrayElement, index) => {\n const indexKey = index.toString();\n visitValue(arrayElement, indexKey, value, [...newPathParts, indexKey]);\n });\n } else {\n visitValue(value, key, obj, newPathParts);\n }\n });\n};\n","import { pluralize } from '@patternfly/react-core';\nimport { TFunction } from 'i18next';\nimport * as _ from 'lodash';\nimport { coFetch } from '@console/internal/co-fetch';\nimport { PrometheusResponse } from '@console/internal/components/graphs';\nimport { humanizePercentage } from '@console/internal/components/utils/units';\nimport {\n ClusterVersionKind,\n ClusterUpdateStatus,\n getClusterUpdateStatus,\n getClusterOperatorStatus,\n OperatorStatus,\n ClusterOperator,\n} from '@console/internal/module/k8s';\nimport {\n PrometheusHealthHandler,\n URLHealthHandler,\n SubsystemHealth,\n GetOperatorsWithStatuses,\n GetOperatorStatusPriority,\n} from '@console/plugin-sdk';\nimport { getOperatorsStatus } from '@console/shared/src/components/dashboard/status-card/state-utils';\nimport {\n HealthState,\n healthStateMapping,\n healthStateMessage,\n} from '@console/shared/src/components/dashboard/status-card/states';\nimport { isSingleNode } from '@console/shared/src/selectors/infrastructure';\n\nexport const fetchK8sHealth = async (url: string) => {\n const response = await coFetch(url);\n return response.text();\n};\n\nexport const getK8sHealthState: URLHealthHandler = (k8sHealth, error, resource) => {\n if (error) {\n return { state: HealthState.NOT_AVAILABLE };\n }\n if (!k8sHealth) {\n return { state: HealthState.LOADING };\n }\n if (\n getClusterUpdateStatus(_.get(resource, 'data') as ClusterVersionKind) ===\n ClusterUpdateStatus.Updating\n ) {\n return { state: HealthState.UPDATING, message: 'Updating' };\n }\n return { state: k8sHealth === 'ok' ? HealthState.OK : HealthState.ERROR };\n};\n\nexport const getControlPlaneComponentHealth = (\n response: PrometheusResponse,\n error,\n t: TFunction,\n): SubsystemHealth => {\n if (error) {\n return {\n state: HealthState.NOT_AVAILABLE,\n message: healthStateMessage(HealthState.NOT_AVAILABLE, t),\n };\n }\n if (!response) {\n return { state: HealthState.LOADING };\n }\n const value = response.data?.result?.[0]?.value?.[1];\n if (_.isNil(value)) {\n return { state: HealthState.UNKNOWN, message: healthStateMessage(HealthState.UNKNOWN, t) };\n }\n const perc = humanizePercentage(value);\n if (perc.value > 90) {\n return { state: HealthState.OK, message: perc.string };\n }\n if (perc.value > 70) {\n return { state: HealthState.WARNING, message: perc.string };\n }\n return { state: HealthState.ERROR, message: perc.string };\n};\n\nexport const getWorstStatus = (\n componentsHealth: SubsystemHealth[],\n t: TFunction,\n): { state: HealthState; message: string; count: number } => {\n const withPriority = componentsHealth.map((h) => healthStateMapping[h.state]);\n const mostImportantState = Math.max(...withPriority.map(({ priority }) => priority));\n const worstStatuses = withPriority.filter(({ priority }) => priority === mostImportantState);\n return {\n state: worstStatuses[0].health,\n message: healthStateMessage(worstStatuses[0].health, t),\n count: worstStatuses.length,\n };\n};\n\nexport const getControlPlaneHealth: PrometheusHealthHandler = (\n responses,\n t,\n resource,\n infrastructure,\n) => {\n const componentsHealth = responses.map(({ response, error }) =>\n getControlPlaneComponentHealth(response, error, t),\n );\n if (componentsHealth.some((c) => c.state === HealthState.LOADING)) {\n return { state: HealthState.LOADING };\n }\n const worstStatus = getWorstStatus(componentsHealth, t);\n\n const singleMasterMsg =\n worstStatus.state === HealthState.OK && isSingleNode(infrastructure)\n ? t('console-app~Single control plane node')\n : undefined;\n\n return {\n state: worstStatus.state,\n message:\n singleMasterMsg ||\n (worstStatus.message\n ? worstStatus.count === 4\n ? worstStatus.message\n : `${pluralize(worstStatus.count, 'component')} ${worstStatus.message.toLowerCase()}`\n : null),\n };\n};\n\nexport const getClusterOperatorStatusPriority: GetOperatorStatusPriority = (\n co,\n) => {\n const status = getClusterOperatorStatus(co);\n if (status === OperatorStatus.Degraded) {\n return { ...healthStateMapping[HealthState.WARNING], title: status };\n }\n if (status === OperatorStatus.Unknown) {\n return { ...healthStateMapping[HealthState.UNKNOWN], title: status };\n }\n if (status === OperatorStatus.Progressing) {\n return { ...healthStateMapping[HealthState.UPDATING], title: status };\n }\n return { ...healthStateMapping[HealthState.OK], title: status };\n};\n\nexport const getClusterOperatorHealthStatus: GetOperatorsWithStatuses = (\n resources,\n) => {\n return (resources.clusterOperators.data as ClusterOperator[]).map((co) =>\n getOperatorsStatus([co], getClusterOperatorStatusPriority),\n );\n};\n","import * as React from 'react';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore: FIXME missing exports due to out-of-sync @types/react-redux version\nimport { useDispatch } from 'react-redux';\nimport { useLocation, useNavigate } from 'react-router-dom-v5-compat';\nimport {\n setActiveNamespace as setActiveNamespaceForStore,\n formatNamespaceRoute,\n} from '@console/internal/actions/ui';\nimport { getNamespace } from '@console/internal/components/utils/link';\nimport { flagPending } from '@console/internal/reducers/features';\nimport { FLAGS } from '@console/shared';\nimport { useFlag } from '@console/shared/src/hooks/flag';\nimport { usePreferredNamespace } from '../user-preferences/namespace';\nimport { getValueForNamespace } from './getValueForNamespace';\nimport { useLastNamespace } from './useLastNamespace';\n\ntype NamespaceContextType = {\n namespace?: string;\n setNamespace?: (ns: string) => void;\n};\n\nexport const NamespaceContext = React.createContext({});\n\nconst useUrlNamespace = () => getNamespace(useLocation().pathname);\n\ntype UseValuesForNamespaceContext = () => {\n namespace: string;\n setNamespace: (ns: string) => void;\n loaded: boolean;\n};\n\nexport const useValuesForNamespaceContext: UseValuesForNamespaceContext = () => {\n const urlNamespace = useUrlNamespace();\n const navigate = useNavigate();\n const [activeNamespace, setActiveNamespace] = React.useState(urlNamespace);\n const [preferredNamespace, , preferredNamespaceLoaded] = usePreferredNamespace();\n const [lastNamespace, setLastNamespace, lastNamespaceLoaded] = useLastNamespace();\n const useProjects: boolean = useFlag(FLAGS.OPENSHIFT);\n const dispatch = useDispatch();\n\n const updateNamespace = (ns) => {\n if (ns !== activeNamespace) {\n setActiveNamespace(ns);\n const oldPath = window.location.pathname;\n const newPath = formatNamespaceRoute(ns, oldPath, window.location);\n if (newPath !== oldPath) {\n navigate(newPath);\n }\n }\n dispatch(setActiveNamespaceForStore(ns));\n };\n\n // Set namespace when all pending namespace infos are loaded.\n // Automatically check if preferred and last namespace still exist.\n const resourcesLoaded: boolean =\n !flagPending(useProjects) && preferredNamespaceLoaded && lastNamespaceLoaded;\n React.useEffect(() => {\n if (!urlNamespace && resourcesLoaded) {\n getValueForNamespace(preferredNamespace, lastNamespace, useProjects)\n .then((ns: string) => {\n updateNamespace(ns);\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.warn('Error fetching namespace', e);\n });\n }\n // Only run this hook after all resources have loaded.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resourcesLoaded, navigate]);\n\n // Updates active namespace (in context and redux state) when the url changes.\n // This updates the redux state also after the initial rendering.\n React.useEffect(() => {\n if (urlNamespace) {\n updateNamespace(urlNamespace);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [urlNamespace, activeNamespace, dispatch, navigate]);\n\n // Change active namespace (in context and redux state) as well as last used namespace\n // when a component calls setNamespace, for example via useActiveNamespace()\n const setNamespace = React.useCallback(\n (ns: string) => {\n ns !== lastNamespace && setLastNamespace(ns);\n updateNamespace(ns);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dispatch, activeNamespace, setActiveNamespace, lastNamespace, setLastNamespace, navigate],\n );\n\n return {\n namespace: activeNamespace,\n setNamespace,\n loaded: !!activeNamespace,\n };\n};\n","module.exports = __webpack_public_path__ + \"assets/public/imgs/logos/serverlessfx.svg\";","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Label as PfLabel, LabelGroup as PfLabelGroup } from '@patternfly/react-core';\n\nconst Label = ({ k, v }) => (\n \n {k}\n =\n {v}\n \n);\n\nexport const Labels = ({ kind, labels }) => {\n const { t } = useTranslation();\n\n return _.isEmpty(labels) ? (\n

    {t('public~No labels')}
    \n ) : (\n
    \n \n {_.map(labels, (v, k) => (\n \n
    \n );\n};\n","module.exports = __webpack_public_path__ + \"assets/public/imgs/logos/redhat.svg\";","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { LoadingBox } from '@console/internal/components/utils/status-box';\n\ntype TerminalLoadingBoxProps = {\n message?: string;\n};\n\nconst TerminalLoadingBox: React.FC = ({ message }) => {\n const { t } = useTranslation();\n return (\n \n );\n};\n\nexport default TerminalLoadingBox;\n","export const DRAGGABLE_TYPE = {\n ENV_ROW: 'env_row',\n ENV_FROM_ROW: 'env_from_row',\n};\n","export const getEditDecorator = () =>\n import('./defaultDecorators' /* webpackChunkName: \"topology\" */).then((m) => m.getEditDecorator);\n\nexport const getUrlDecorator = () =>\n import('./defaultDecorators' /* webpackChunkName: \"topology\" */).then((m) => m.getUrlDecorator);\n\nexport const getBuildDecorator = () =>\n import('./defaultDecorators' /* webpackChunkName: \"topology\" */).then((m) => m.getBuildDecorator);\n\nexport const getAlertsDecorator = () =>\n import('./defaultDecorators' /* webpackChunkName: \"topology\" */).then(\n (m) => m.getAlertsDecorator,\n );\n","import i18next from 'i18next';\nimport * as _ from 'lodash';\nimport { serviceBindingModal } from '@console/app/src/components/modals/service-binding';\nimport { DeploymentConfigModel, DeploymentModel } from '@console/internal/models';\nimport {\n k8sGet,\n k8sList,\n k8sPatch,\n K8sResourceKind,\n modelFor,\n referenceFor,\n referenceForModel,\n} from '@console/internal/module/k8s';\n\nexport type ConnectsToData = { apiVersion: string; kind: string; name: string };\n\nconst fetchResource = async (source: string, namespace: string) => {\n const [groupVersionKind, resourceName] = source.split('/');\n const contextualResource: K8sResourceKind = await k8sGet(\n modelFor(groupVersionKind),\n resourceName,\n namespace,\n );\n return contextualResource;\n};\n\nexport const edgesFromAnnotations = (annotations): (string | ConnectsToData)[] => {\n let edges: (string | ConnectsToData)[] = [];\n if (_.has(annotations, ['app.openshift.io/connects-to'])) {\n try {\n edges = JSON.parse(annotations['app.openshift.io/connects-to']);\n } catch (e) {\n // connects-to annotation should hold a JSON string value but failed to parse\n // treat value as a comma separated list of strings\n edges = annotations['app.openshift.io/connects-to'].split(',').map((v) => v.trim());\n }\n }\n\n return edges;\n};\n\nexport const listInstanceResources = (\n namespace: string,\n instanceName: string,\n labelSelector: any = {},\n): Promise => {\n const lists: Promise[] = [];\n const instanceLabelSelector = {\n 'app.kubernetes.io/instance': instanceName,\n ...labelSelector,\n };\n\n const kinds = ['ReplicationController', 'Route', 'Service', 'ReplicaSet', 'BuildConfig', 'Build'];\n _.forEach(kinds, (kind) => {\n lists.push(\n k8sList(modelFor(kind), {\n ns: namespace,\n labelSelector: instanceLabelSelector,\n }).then((values) => {\n return _.map(values, (value) => {\n value.kind = kind;\n return value;\n });\n }),\n );\n });\n\n return Promise.all(lists);\n};\n\n// Updates the item to add an new connect's to value replacing an old value if provided\nexport const updateItemAppConnectTo = (\n item: K8sResourceKind,\n connections: (string | ConnectsToData)[],\n connectValue: ConnectsToData,\n oldValueIndex: number,\n) => {\n const model = modelFor(referenceFor(item) || item.kind);\n\n if (!model) {\n return Promise.reject(\n new Error(i18next.t('topology~Unable to retrieve model for: {{kind}}', { kind: item.kind })),\n );\n }\n\n const tags = _.toPairs(item.metadata.annotations);\n let op = _.size(tags) ? 'replace' : 'add';\n\n const existingTag = _.find(tags, (tag) => tag[0] === 'app.openshift.io/connects-to');\n if (existingTag) {\n if (connections.includes(connectValue)) {\n return Promise.resolve();\n }\n\n if (!connectValue) {\n _.pullAt(connections, [oldValueIndex]);\n } else if (oldValueIndex >= 0) {\n connections[oldValueIndex] = connectValue;\n } else {\n connections.push(connectValue);\n }\n existingTag[1] = _.size(connections) && JSON.stringify(connections);\n\n if (!existingTag[1]) {\n _.remove(tags, (tag) => tag === existingTag);\n if (!_.size(tags)) {\n op = 'remove';\n }\n }\n } else {\n if (!connectValue) {\n // Removed connection not found, no need to remove\n return Promise.resolve();\n }\n\n const connectionTag: [string, string] = [\n 'app.openshift.io/connects-to',\n JSON.stringify([connectValue]),\n ];\n tags.push(connectionTag);\n }\n\n const patch = [{ path: '/metadata/annotations', op, value: _.fromPairs(tags) }];\n\n return k8sPatch(model, item, patch);\n};\n\n// Get the index of the replaced target of the visual connector\nconst getReplacedTargetIndex = (\n replacedTarget: K8sResourceKind,\n connections: (string | ConnectsToData)[],\n): number => {\n if (replacedTarget) {\n const replaceTargetName = replacedTarget.metadata?.name;\n const replaceTargetKind = replacedTarget.kind;\n const replaceTargetApiVersion = replacedTarget.apiVersion;\n const replaceValue = {\n apiVersion: replaceTargetApiVersion,\n kind: replaceTargetKind,\n name: replaceTargetName,\n };\n const replaceTargetInstanceName =\n replacedTarget.metadata?.labels?.['app.kubernetes.io/instance'];\n let index = _.findIndex(connections, replaceValue);\n if (index === -1) {\n index = _.findIndex(\n connections,\n (connection) => connection === (replaceTargetInstanceName || replaceTargetName),\n );\n }\n return index;\n }\n return -1;\n};\n\n// Create a connection from the source to the target replacing the connection to replacedTarget if provided\nexport const createResourceConnection = (\n source: K8sResourceKind,\n target: K8sResourceKind,\n replacedTarget: K8sResourceKind = null,\n): Promise => {\n if (!source || !target || source === target) {\n return Promise.reject();\n }\n\n const connectTargetName = target.metadata?.name;\n const connectTargetKind = target.kind;\n const connectTargetApiVersion = target.apiVersion;\n const connectValue = {\n apiVersion: connectTargetApiVersion,\n kind: connectTargetKind,\n name: connectTargetName,\n };\n\n const connections = edgesFromAnnotations(source.metadata?.annotations);\n\n const replacedTargetIndex = getReplacedTargetIndex(replacedTarget, connections);\n\n const instanceName = _.get(source, ['metadata', 'labels', 'app.kubernetes.io/instance']);\n\n const patches: Promise[] = [\n updateItemAppConnectTo(source, connections, connectValue, replacedTargetIndex),\n ];\n\n // If there is no instance label, only update this item\n if (!instanceName) {\n return Promise.all(patches);\n }\n\n // Update all the instance's resources that were part of the previous application\n return listInstanceResources(source.metadata.namespace, instanceName).then((listsValue) => {\n _.forEach(listsValue, (list) => {\n _.forEach(list, (item) => {\n patches.push(updateItemAppConnectTo(item, connections, connectValue, replacedTargetIndex));\n });\n });\n\n return Promise.all(patches);\n });\n};\n\n// Remove the connection from the source to the target\nexport const removeResourceConnection = (\n source: K8sResourceKind,\n target: K8sResourceKind,\n): Promise => {\n if (!source || !target || source === target) {\n return Promise.reject();\n }\n const connections = edgesFromAnnotations(source.metadata?.annotations);\n\n const replacedTargetIndex = getReplacedTargetIndex(target, connections);\n\n const instanceName = _.get(source, ['metadata', 'labels', 'app.kubernetes.io/instance']);\n\n const patches: Promise[] = [\n updateItemAppConnectTo(source, connections, null, replacedTargetIndex),\n ];\n\n // If there is no instance label, only update this item\n if (!instanceName) {\n return Promise.all(patches);\n }\n\n // Update all the instance's resources that were part of the previous application\n return listInstanceResources(source.metadata.namespace, instanceName).then((listsValue) => {\n _.forEach(listsValue, (list) => {\n _.forEach(list, (item) => {\n patches.push(updateItemAppConnectTo(item, connections, null, replacedTargetIndex));\n });\n });\n\n return Promise.all(patches);\n });\n};\n\nconst getSourceAndTargetForBinding = async (\n resources: K8sResourceKind[] | K8sResourceKind,\n contextualSource: string,\n serviceBindingAvailable?: boolean,\n): Promise<{ source: K8sResourceKind; target: K8sResourceKind }> => {\n if (!contextualSource) {\n return Promise.reject(\n new Error(i18next.t('topology~Cannot do a contextual binding without a source')),\n );\n }\n const linkingModelRefs = [\n referenceForModel(DeploymentConfigModel),\n referenceForModel(DeploymentModel),\n ];\n let target;\n if (serviceBindingAvailable || !Array.isArray(resources)) {\n target = resources;\n } else {\n target = (resources as K8sResourceKind[]).find((resource) =>\n linkingModelRefs.includes(referenceFor(resource)),\n );\n }\n const {\n metadata: { namespace },\n } = target;\n const source: K8sResourceKind = await fetchResource(contextualSource, namespace);\n if (!source) {\n return Promise.reject(\n new Error(\n i18next.t(\n 'topology~Cannot find resource ({{contextualSource}}) to do a contextual binding to',\n {\n contextualSource,\n },\n ),\n ),\n );\n }\n\n return { source, target };\n};\n\nexport const doConnectsToBinding = async (\n resources: K8sResourceKind[],\n contextualSource: string,\n): Promise => {\n const { source, target } = await getSourceAndTargetForBinding(resources, contextualSource);\n if (!target) {\n // Not a resource we want to connect to\n return resources;\n }\n await createResourceConnection(source, target);\n\n return resources;\n};\n\nexport const doContextualBinding = async (\n target: K8sResourceKind,\n contextualSource: string,\n): Promise => {\n const { source } = await getSourceAndTargetForBinding(target, contextualSource, true);\n serviceBindingModal({\n model: modelFor(referenceFor(source)),\n source,\n target,\n });\n return target;\n};\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport * as _ from 'lodash-es';\nimport * as classNames from 'classnames';\n\nimport { TemplateKind, PartialObjectMetadata } from '../../module/k8s';\nimport * as threeScaleImg from '../../imgs/logos/3scale.svg';\nimport * as aerogearImg from '../../imgs/logos/aerogear.svg';\nimport * as amqImg from '../../imgs/logos/amq.svg';\nimport * as angularjsImg from '../../imgs/logos/angularjs.svg';\nimport * as ansibleImg from '../../imgs/logos/ansible.svg';\nimport * as apacheImg from '../../imgs/logos/apache.svg';\nimport * as beakerImg from '../../imgs/logos/beaker.svg';\nimport * as buildIconImg from '../../imgs/logos/build-icon.svg';\nimport * as camelImg from '../../imgs/logos/camel.svg';\nimport * as capedwarfImg from '../../imgs/logos/capedwarf.svg';\nimport * as catalogImg from '../../imgs/logos/catalog-icon.svg';\nimport * as cassandraImg from '../../imgs/logos/cassandra.svg';\nimport * as clojureImg from '../../imgs/logos/clojure.svg';\nimport * as codeigniterImg from '../../imgs/logos/codeigniter.svg';\nimport * as cordovaImg from '../../imgs/logos/cordova.png';\nimport * as datagridImg from '../../imgs/logos/datagrid.svg';\nimport * as datavirtImg from '../../imgs/logos/datavirt.svg';\nimport * as debianImg from '../../imgs/logos/debian.svg';\nimport * as decisionserverImg from '../../imgs/logos/decisionserver.svg';\nimport * as djangoImg from '../../imgs/logos/django.svg';\nimport * as dotnetImg from '../../imgs/logos/dotnet.svg';\nimport * as drupalImg from '../../imgs/logos/drupal.svg';\nimport * as eapImg from '../../imgs/logos/eap.svg';\nimport * as elasticImg from '../../imgs/logos/elastic.svg';\nimport * as erlangImg from '../../imgs/logos/erlang.svg';\nimport * as fedoraImg from '../../imgs/logos/fedora.svg';\nimport * as freebsdImg from '../../imgs/logos/freebsd.svg';\nimport * as gitImg from '../../imgs/logos/git.svg';\nimport * as githubImg from '../../imgs/logos/github.svg';\nimport * as gitlabImg from '../../imgs/logos/gitlab.svg';\nimport * as glassfishImg from '../../imgs/logos/glassfish.svg';\nimport * as goLangImg from '../../imgs/logos/golang.svg';\nimport * as grailsImg from '../../imgs/logos/grails.svg';\nimport * as hadoopImg from '../../imgs/logos/hadoop.svg';\nimport * as haproxyImg from '../../imgs/logos/haproxy.svg';\nimport * as helmImg from '../../imgs/logos/helm.svg';\nimport * as infinispanImg from '../../imgs/logos/infinispan.svg';\nimport * as jbossImg from '../../imgs/logos/jboss.svg';\nimport * as jenkinsImg from '../../imgs/logos/jenkins.svg';\nimport * as jettyImg from '../../imgs/logos/jetty.svg';\nimport * as joomlaImg from '../../imgs/logos/joomla.svg';\nimport * as jrubyImg from '../../imgs/logos/jruby.svg';\nimport * as jsImg from '../../imgs/logos/js.svg';\nimport * as knativeImg from '../../imgs/logos/knative.svg';\nimport * as serverlessFuncImage from '../../imgs/logos/serverlessfx.svg';\nimport * as kubevirtImg from '../../imgs/logos/kubevirt.svg';\nimport * as laravelImg from '../../imgs/logos/laravel.svg';\nimport * as loadBalancerImg from '../../imgs/logos/load-balancer.svg';\nimport * as mariadbImg from '../../imgs/logos/mariadb.svg';\nimport * as mediawikiImg from '../../imgs/logos/mediawiki.svg';\nimport * as memcachedImg from '../../imgs/logos/memcached.svg';\nimport * as mongodbImg from '../../imgs/logos/mongodb.svg';\nimport * as mssqlImg from '../../imgs/logos/mssql.svg';\nimport * as mysqlDatabaseImg from '../../imgs/logos/mysql-database.svg';\nimport * as nginxImg from '../../imgs/logos/nginx.svg';\nimport * as nodejsImg from '../../imgs/logos/nodejs.svg';\nimport * as openjdkImg from '../../imgs/logos/openjdk.svg';\nimport * as redhatImg from '../../imgs/logos/redhat.svg';\nimport * as openlibertyImg from '../../imgs/logos/openliberty.svg';\nimport * as openshiftImg from '../../imgs/logos/openshift.svg';\nimport * as openstackImg from '../../imgs/logos/openstack.svg';\nimport * as otherLinuxImg from '../../imgs/logos/other-linux.svg';\nimport * as otherUnknownImg from '../../imgs/logos/other-unknown.svg';\nimport * as perlImg from '../../imgs/logos/perl.svg';\nimport * as phalconImg from '../../imgs/logos/phalcon.svg';\nimport * as phpImg from '../../imgs/logos/php.svg';\nimport * as playImg from '../../imgs/logos/play.svg';\nimport * as postgresqlImg from '../../imgs/logos/postgresql.svg';\nimport * as processserverImg from '../../imgs/logos/processserver.svg';\nimport * as pythonImg from '../../imgs/logos/python.svg';\nimport * as quarkusImg from '../../imgs/logos/quarkus.svg';\nimport * as rabbitmqImg from '../../imgs/logos/rabbitmq.svg';\nimport * as railsImg from '../../imgs/logos/rails.svg';\nimport * as reactImg from '../../imgs/logos/react.svg';\nimport * as redisImg from '../../imgs/logos/redis.svg';\nimport * as rhIntegrationImg from '../../imgs/logos/rh-integration.svg';\nimport * as rhSpringBoot from '../../imgs/logos/rh-spring-boot.svg';\nimport * as rhTomcatImg from '../../imgs/logos/rh-tomcat.svg';\nimport * as rubyImg from '../../imgs/logos/ruby.svg';\nimport * as rustImg from '../../imgs/logos/rust.svg';\nimport * as scalaImg from '../../imgs/logos/scala.svg';\nimport * as shadowmanImg from '../../imgs/logos/shadowman.svg';\nimport * as springImg from '../../imgs/logos/spring.svg';\nimport * as springBootImg from '../../imgs/logos/spring-boot.svg';\nimport * as ssoImg from '../../imgs/logos/sso.svg';\nimport * as stackoverflowImg from '../../imgs/logos/stackoverflow.svg';\nimport * as suseImg from '../../imgs/logos/suse.svg';\nimport * as symfonyImg from '../../imgs/logos/symfony.svg';\nimport * as tomcatImg from '../../imgs/logos/tomcat.svg';\nimport * as ubuntuImg from '../../imgs/logos/ubuntu.svg';\nimport * as vertxImg from '../../imgs/logos/vertx.svg';\nimport * as wildflyImg from '../../imgs/logos/wildfly.svg';\nimport * as windowsImg from '../../imgs/logos/windows.svg';\nimport * as wordpressImg from '../../imgs/logos/wordpress.svg';\nimport * as xamarinImg from '../../imgs/logos/xamarin.svg';\nimport * as zendImg from '../../imgs/logos/zend.svg';\nimport * as operatorImg from '../../imgs/logos/operator.svg';\n\nconst logos = new Map()\n .set('icon-3scale', threeScaleImg)\n .set('icon-aerogear', aerogearImg)\n .set('icon-amq', amqImg)\n .set('icon-angularjs', angularjsImg)\n .set('icon-ansible', ansibleImg)\n .set('icon-apache', apacheImg)\n .set('icon-beaker', beakerImg)\n .set('icon-build', buildIconImg)\n .set('icon-camel', camelImg)\n .set('icon-capedwarf', capedwarfImg)\n .set('icon-catalog', catalogImg)\n .set('icon-cassandra', cassandraImg)\n .set('icon-clojure', clojureImg)\n .set('icon-codeigniter', codeigniterImg)\n .set('icon-cordova', cordovaImg)\n .set('icon-datagrid', datagridImg)\n .set('icon-datavirt', datavirtImg)\n .set('icon-debian', debianImg)\n .set('icon-decisionserver', decisionserverImg)\n .set('icon-django', djangoImg)\n .set('icon-dotnet', dotnetImg)\n .set('icon-drupal', drupalImg)\n .set('icon-eap', eapImg)\n .set('icon-elastic', elasticImg)\n .set('icon-erlang', erlangImg)\n .set('icon-fedora', fedoraImg)\n .set('icon-freebsd', freebsdImg)\n .set('icon-git', gitImg)\n .set('icon-github', githubImg)\n .set('icon-gitlab', gitlabImg)\n .set('icon-glassfish', glassfishImg)\n .set('icon-go-gopher', goLangImg)\n .set('icon-golang', goLangImg)\n .set('icon-grails', grailsImg)\n .set('icon-hadoop', hadoopImg)\n .set('icon-haproxy', haproxyImg)\n .set('icon-helm', helmImg)\n .set('icon-infinispan', infinispanImg)\n .set('icon-jboss', jbossImg)\n .set('icon-jenkins', jenkinsImg)\n .set('icon-jetty', jettyImg)\n .set('icon-joomla', joomlaImg)\n .set('icon-jruby', jrubyImg)\n .set('icon-js', jsImg)\n .set('icon-knative', knativeImg)\n .set('icon-kubevirt', kubevirtImg)\n .set('icon-laravel', laravelImg)\n .set('icon-load-balancer', loadBalancerImg)\n .set('icon-mariadb', mariadbImg)\n .set('icon-mediawiki', mediawikiImg)\n .set('icon-memcached', memcachedImg)\n .set('icon-mongodb', mongodbImg)\n .set('icon-mssql', mssqlImg)\n .set('icon-mysql-database', mysqlDatabaseImg)\n .set('icon-nginx', nginxImg)\n .set('icon-nodejs', nodejsImg)\n .set('icon-openjdk', openjdkImg)\n .set('icon-openliberty', openlibertyImg)\n .set('icon-openshift', openshiftImg)\n .set('icon-openstack', openstackImg)\n .set('icon-other-linux', otherLinuxImg)\n .set('icon-other-unknown', otherUnknownImg)\n .set('icon-perl', perlImg)\n .set('icon-phalcon', phalconImg)\n .set('icon-php', phpImg)\n .set('icon-play', playImg)\n .set('icon-postgresql', postgresqlImg)\n .set('icon-processserver', processserverImg)\n .set('icon-python', pythonImg)\n .set('icon-quarkus', quarkusImg)\n .set('icon-rabbitmq', rabbitmqImg)\n .set('icon-rails', railsImg)\n .set('icon-react', reactImg)\n .set('icon-redis', redisImg)\n .set('icon-rh-integration', rhIntegrationImg)\n .set('icon-rh-spring-boot', rhSpringBoot)\n .set('icon-rust', rustImg)\n .set('icon-serverless-function', serverlessFuncImage)\n .set('icon-java', openjdkImg)\n // Use the upstream icon.\n .set('icon-redhat', redhatImg)\n .set('icon-rh-openjdk', openjdkImg)\n .set('icon-operator', operatorImg)\n .set('icon-rh-tomcat', rhTomcatImg)\n .set('icon-ruby', rubyImg)\n .set('icon-scala', scalaImg)\n .set('icon-shadowman', shadowmanImg)\n .set('icon-spring', springImg)\n .set('icon-spring-boot', springBootImg)\n .set('icon-sso', ssoImg)\n .set('icon-stackoverflow', stackoverflowImg)\n .set('icon-suse', suseImg)\n .set('icon-symfony', symfonyImg)\n .set('icon-tomcat', tomcatImg)\n .set('icon-ubuntu', ubuntuImg)\n .set('icon-vertx', vertxImg)\n .set('icon-wildfly', wildflyImg)\n .set('icon-windows', windowsImg)\n .set('icon-wordpress', wordpressImg)\n .set('icon-xamarin', xamarinImg)\n .set('icon-zend', zendImg);\n\nexport const getIcons = (): { label: string; url: string }[] => {\n return Array.from(logos.entries()).map(([iconClass, url]) => ({\n label: iconClass.replace(/^icon-/, ''),\n url,\n }));\n};\n\nexport const getIcon = (iconName: string) => {\n const url = logos.get(`icon-${iconName}`);\n return url ? { label: iconName, url } : null;\n};\n\nexport const hasIcon = (iconName: string) => {\n return logos.has(`icon-${iconName}`);\n};\n\nexport const normalizeIconClass = (iconClass: string): string => {\n return _.startsWith(iconClass, 'icon-') ? `font-icon ${iconClass}` : iconClass;\n};\n\nexport const getImageForIconClass = (iconClass: string): string => {\n return logos.get(iconClass);\n};\n\nexport const getImageStreamIcon = (tag: string): string => {\n return _.get(tag, 'annotations.iconClass');\n};\n\nexport const getTemplateIcon = (template: TemplateKind | PartialObjectMetadata): string => {\n return _.get(template, 'metadata.annotations.iconClass');\n};\n\nexport const ImageStreamIcon: React.FC = ({ tag, iconSize }) => {\n const { t } = useTranslation();\n const iconClass = getImageStreamIcon(tag);\n const iconClassImg = getImageForIconClass(iconClass);\n return (\n
    \n \n {iconClassImg ? (\n \n ) : (\n \n )}\n \n
    \n );\n};\n\nexport type ImageStreamIconProps = {\n tag: any;\n iconSize?: string;\n};\n","import '@console/internal/i18n.js';\n\nexport * from './const';\nexport * from './models';\nexport * from './types';\nexport * from './actions';\n","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport * as classNames from 'classnames';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Button, Popover } from '@patternfly/react-core';\nimport { sortable } from '@patternfly/react-table';\nimport { EyeIcon } from '@patternfly/react-icons/dist/esm/icons/eye-icon';\nimport { EyeSlashIcon } from '@patternfly/react-icons/dist/esm/icons/eye-slash-icon';\nimport { QuestionCircleIcon } from '@patternfly/react-icons/dist/esm/icons/question-circle-icon';\nimport i18next from 'i18next';\n\nimport { Status } from '@console/shared';\nimport { FLAGS } from '@console/shared/src/constants';\nimport { DetailsPage, ListPage, RowFunctionArgs, Table, TableData } from './factory';\nimport {\n CopyToClipboard,\n DetailsItem,\n Kebab,\n ResourceKebab,\n ResourceLink,\n ResourceSummary,\n SectionHeading,\n detailsPage,\n navFactory,\n ExternalLinkWithCopy,\n} from './utils';\nimport { MaskedData } from './configmap-and-secret-data';\nimport {\n K8sResourceKindReference,\n RouteKind,\n RouteIngress,\n RouteTarget,\n K8sResourceCondition,\n} from '../module/k8s';\nimport { RouteModel } from '../models';\nimport { connectToFlags, WithFlagsProps } from '../reducers/connectToFlags';\nimport { Conditions } from './conditions';\nimport { RouteMetrics } from './routes/route-metrics';\n\nconst RoutesReference: K8sResourceKindReference = 'Route';\nconst menuActions = [...Kebab.getExtensionsActionsForKind(RouteModel), ...Kebab.factory.common];\n\nexport type IngressStatusProps = {\n host: string;\n routerName: string;\n conditions: K8sResourceCondition[];\n wildcardPolicy: string;\n routerCanonicalHostname: string;\n};\n\nconst getRouteHost = (route: RouteKind, onlyAdmitted: boolean): string => {\n let oldestAdmittedIngress: RouteIngress;\n let oldestTransitionTime: string;\n _.each(route.status.ingress, (ingress) => {\n const admittedCondition = _.find(ingress.conditions, { type: 'Admitted', status: 'True' });\n if (\n admittedCondition &&\n (!oldestTransitionTime || oldestTransitionTime > admittedCondition.lastTransitionTime)\n ) {\n oldestAdmittedIngress = ingress;\n oldestTransitionTime = admittedCondition.lastTransitionTime;\n }\n });\n\n if (oldestAdmittedIngress) {\n return oldestAdmittedIngress.host;\n }\n\n return onlyAdmitted ? null : route.spec.host;\n};\n\nconst isWebRoute = (route: RouteKind): boolean => {\n return !!getRouteHost(route, true) && _.get(route, 'spec.wildcardPolicy') !== 'Subdomain';\n};\n\nexport const getRouteWebURL = (route: RouteKind): string => {\n const scheme = _.get(route, 'spec.tls.termination') ? 'https' : 'http';\n let url = `${scheme}://${getRouteHost(route, false)}`;\n if (route.spec.path) {\n url += route.spec.path;\n }\n return url;\n};\n\nconst getSubdomain = (route: RouteKind): string => {\n const hostname = _.get(route, 'spec.host', '');\n return hostname.replace(/^[a-z0-9]([-a-z0-9]*[a-z0-9])\\./, '');\n};\n\nexport const getRouteLabel = (route: RouteKind): string => {\n if (isWebRoute(route)) {\n return getRouteWebURL(route);\n }\n\n let label = getRouteHost(route, false);\n if (!label) {\n return i18next.t('public~unknown host');\n }\n\n if (_.get(route, 'spec.wildcardPolicy') === 'Subdomain') {\n label = `*.${getSubdomain(route)}`;\n }\n\n if (route.spec.path) {\n label += route.spec.path;\n }\n return label;\n};\n\nexport const RouteLinkAndCopy: React.FC = ({\n route,\n additionalClassName,\n}) => {\n const link = getRouteWebURL(route);\n return (\n \n );\n};\n\n// Renders LinkAndCopy for non subdomains\nexport const RouteLocation: React.FC = ({ obj }) => (\n
    \n {isWebRoute(obj) ? (\n \n ) : (\n getRouteLabel(obj)\n )}\n
    \n);\nRouteLocation.displayName = 'RouteLocation';\n\nexport const routeStatus = (route: RouteKind): string => {\n let atLeastOneAdmitted: boolean = false;\n\n if (!route.status || !route.status.ingress) {\n return 'Pending';\n }\n\n _.each(route.status.ingress, (ingress) => {\n const isAdmitted = _.some(ingress.conditions, { type: 'Admitted', status: 'True' });\n if (isAdmitted) {\n atLeastOneAdmitted = true;\n }\n });\n\n return atLeastOneAdmitted ? 'Accepted' : 'Rejected';\n};\n\nexport const RouteStatus: React.FC = ({ obj: route }) => {\n const status: string = routeStatus(route);\n return ;\n};\nRouteStatus.displayName = 'RouteStatus';\n\nconst tableColumnClasses = [\n '',\n '',\n // Status is less important than Location, so hide it earlier, but maintain its position for consistency with other tables\n classNames('pf-m-hidden', 'pf-m-visible-on-lg', 'pf-v5-u-w-16-on-lg'),\n classNames('pf-m-hidden', 'pf-m-visible-on-sm'),\n classNames('pf-m-hidden', 'pf-m-visible-on-lg'),\n Kebab.columnClass,\n];\n\nconst kind = 'Route';\n\nconst RouteTableRow: React.FC> = ({ obj: route }) => {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst TLSSettings: React.FC = ({ route }) => {\n const [showKey, setShowKey] = React.useState(false);\n const { t } = useTranslation();\n const { tls } = route.spec;\n if (!tls) {\n return <>{t('public~TLS is not enabled')}.;\n }\n\n const visibleKeyValue = showKey ? tls.key : ;\n return (\n
    \n \n \n \n {tls.certificate ? : '-'}\n \n
    \n {t('public~Key')}{' '}\n {tls.key && (\n setShowKey(!showKey)}\n variant=\"link\"\n >\n {showKey ? (\n <>\n \n {t('public~Hide')}\n \n ) : (\n <>\n \n {t('public~Reveal')}\n \n )}\n \n )}\n
    \n
    {tls.key ? : '-'}
    \n \n {tls.certificate ? : '-'}\n \n {tls.termination === 'reencrypt' && (\n \n {tls.destinationCACertificate ? (\n \n ) : (\n '-'\n )}\n
    \n )}\n
    \n );\n};\n\nconst calcTrafficPercentage = (weight: number, route: any) => {\n if (!weight) {\n return '-';\n }\n\n const totalWeight = _.reduce(\n route.spec.alternateBackends,\n (result, alternate) => {\n return (result += alternate.weight);\n },\n route.spec.to.weight,\n );\n\n const percentage = (weight / totalWeight) * 100;\n\n return `${percentage.toFixed(1)}%`;\n};\n\nconst getIngressStatusForHost = (\n hostname: string,\n ingresses: RouteIngress[],\n): IngressStatusProps => {\n return _.find(ingresses, { host: hostname }) as IngressStatusProps;\n};\n\nconst showCustomRouteHelp = (\n ingress: RouteIngress,\n annotations: RouteKind['metadata']['annotations'],\n) => {\n if (!ingress || !_.some(ingress.conditions, { type: 'Admitted', status: 'True' })) {\n return false;\n }\n\n if (_.get(annotations, 'openshift.io/host.generated') === 'true') {\n return false;\n }\n\n if (!ingress.host || !ingress.routerCanonicalHostname) {\n return false;\n }\n\n return true;\n};\n\nconst RouteTargetRow: React.FC = ({ route, target }) => (\n \n \n \n \n {target.weight}\n {calcTrafficPercentage(target.weight, route)}\n \n);\n\nconst CustomRouteHelp: React.FC = ({ host, routerCanonicalHostname }) => {\n const { t } = useTranslation();\n return (\n {t('public~Custom route')}}\n bodyContent={\n
    \n

    \n \n To use a custom route, you must update your DNS provider by creating a canonical name\n (CNAME) record. Your CNAME record should point to your custom domain{' '}\n {{ host }}, to the OpenShift canonical router hostname,{' '}\n {{ routerCanonicalHostname }}, as the alias.\n \n

    \n
    \n }\n >\n \n \n );\n};\n\nconst RouteIngressStatus: React.FC = ({ route }) => {\n const { t } = useTranslation();\n return (\n <>\n {_.map(route.status.ingress, (ingress: RouteIngress) => (\n
    \n \n
    \n \n {ingress.host}\n \n \n {ingress.wildcardPolicy}\n \n \n
    {ingress.routerCanonicalHostname || '-'}
    \n {showCustomRouteHelp(ingress, route.metadata.annotations) && (\n \n )}\n \n
    \n

    {t('public~Conditions')}

    \n \n
    \n ))}\n \n );\n};\n\nconst RouteDetails: React.FC = ({ obj: route }) => {\n const { t } = useTranslation();\n const primaryIngressStatus: IngressStatusProps = getIngressStatusForHost(\n route.spec.host,\n route.status.ingress,\n );\n return (\n <>\n
    \n \n
    \n
    \n \n \n \n \n \n \n
    \n
    \n
    \n
    {t('public~Location')}
    \n
    \n \n
    \n
    {t('public~Status')}
    \n
    \n \n
    \n \n \n {primaryIngressStatus && (\n \n
    {primaryIngressStatus.routerCanonicalHostname || '-'}
    \n {showCustomRouteHelp(primaryIngressStatus, route.metadata.annotations) && (\n \n )}\n
    \n )}\n
    \n
    \n
    \n
    \n
    \n \n \n
    \n {!_.isEmpty(route.spec.alternateBackends) && (\n
    \n \n

    \n {t('public~This route splits traffic across multiple services.')}\n

    \n
    \n \n \n \n \n \n \n \n \n \n \n {_.map(route.spec.alternateBackends, (alternate, i) => (\n \n ))}\n \n
    {t('public~Service')}{t('public~Weight')}{t('public~Percent')}
    \n
    \n
    \n )}\n {_.isEmpty(route.status.ingress) ? (\n
    \n
    {t('public~No route status')}
    \n
    \n ) : (\n
    \n \n
    \n )}\n \n );\n};\n\nexport const RoutesDetailsPage = connectToFlags(\n FLAGS.CAN_GET_NS,\n)((props) => (\n \n));\n\nexport const RoutesList: React.FC = (props) => {\n const { t } = useTranslation();\n const RouteTableHeader = () => {\n return [\n {\n title: t('public~Name'),\n sortField: 'metadata.name',\n transforms: [sortable],\n props: { className: tableColumnClasses[0] },\n },\n {\n title: t('public~Namespace'),\n sortField: 'metadata.namespace',\n transforms: [sortable],\n props: { className: tableColumnClasses[1] },\n id: 'namespace',\n },\n {\n title: t('public~Status'),\n props: { className: tableColumnClasses[2] },\n },\n {\n title: t('public~Location'),\n sortField: 'spec.host',\n transforms: [sortable],\n props: { className: tableColumnClasses[3] },\n },\n {\n title: t('public~Service'),\n sortField: 'spec.to.name',\n transforms: [sortable],\n props: { className: tableColumnClasses[4] },\n },\n {\n title: '',\n props: { className: tableColumnClasses[5] },\n },\n ];\n };\n return (\n \n );\n};\n\nexport const RoutesPage: React.FC = (props) => {\n const { t } = useTranslation();\n const createProps = {\n to: `/k8s/ns/${props.namespace || 'default'}/routes/~new/form`,\n };\n\n const filters = [\n {\n filterGroupName: t('public~Status'),\n type: 'route-status',\n reducer: routeStatus,\n items: [\n { id: 'Accepted', title: t('public~Accepted') },\n { id: 'Rejected', title: t('public~Rejected') },\n { id: 'Pending', title: t('public~Pending') },\n ],\n },\n ];\n\n return (\n \n );\n};\n\nexport type RouteHostnameProps = {\n obj: RouteKind;\n};\n\nexport type RouteStatusProps = {\n obj: RouteKind;\n};\n\nexport type RouteTargetRowProps = {\n route: RouteKind;\n target: RouteTarget;\n};\n\nexport type TLSSettingsProps = {\n route: RouteKind;\n};\n\nexport type RouteHeaderProps = {\n obj: RouteKind;\n};\n\nexport type RoutesPageProps = {\n obj: RouteKind;\n namespace: string;\n};\n\nexport type RoutesDetailsProps = {\n obj: RouteKind;\n};\n\nexport type RoutesDetailsPageProps = {\n match: any;\n} & WithFlagsProps;\n\nexport type RouteIngressStatusProps = {\n route: RouteKind;\n};\n\nexport type RouteLinkAndCopyProps = {\n route: RouteKind;\n additionalClassName?: string;\n};\n\nexport type CustomRouteHelpProps = {\n host: string;\n routerCanonicalHostname: string;\n};\n","import * as _ from 'lodash-es';\nimport i18n from 'i18next';\nimport { chart_color_orange_300 as requestedColor } from '@patternfly/react-tokens/dist/js/chart_color_orange_300';\n\nimport { PrometheusResponse, DataPoint, PrometheusResult } from '.';\nimport { Humanize } from '../utils';\n\nexport const defaultXMutator: XMutator = (x) => new Date(x * 1000);\nexport const defaultYMutator: YMutator = (y) => parseFloat(y);\n\nexport const getRangeVectorStats: GetRangeStats = (\n response,\n description,\n symbol,\n xMutator,\n yMutator,\n) => {\n const results = response?.data?.result;\n return results?.map((r, index) => {\n return r?.values?.map(([x, y]) => {\n return {\n x: xMutator?.(x) ?? defaultXMutator(x),\n y: yMutator?.(y) ?? defaultYMutator(y),\n description: _.isFunction(description) ? description(r, index) : description,\n symbol,\n } as DataPoint;\n });\n });\n};\n\nexport const getInstantVectorStats: GetInstantStats = (response, metric, humanize) => {\n const results = _.get(response, 'data.result', []);\n return results.map((r) => {\n const y = parseFloat(_.get(r, 'value[1]'));\n return {\n label: humanize ? humanize(y).string : null,\n x: _.get(r, ['metric', metric], ''),\n y,\n metric: r.metric,\n };\n });\n};\n\nexport const mapLimitsRequests = (\n utilization: PrometheusResponse,\n limit: PrometheusResponse,\n requested: PrometheusResponse,\n xMutator?: XMutator,\n): { data: DataPoint[][]; chartStyle: object[] } => {\n const utilizationData = getRangeVectorStats(utilization, 'usage', null, xMutator);\n const data = utilizationData ? [...utilizationData] : [];\n const chartStyle = [null];\n if (limit) {\n const limitData = getRangeVectorStats(\n limit,\n i18n.t('public~total limit'),\n { type: 'dash' },\n xMutator,\n );\n data.push(...limitData);\n if (limitData.length) {\n chartStyle.push({\n data: { strokeDasharray: '3,3', fillOpacity: 0 },\n });\n }\n }\n if (requested) {\n const reqData = getRangeVectorStats(\n requested,\n i18n.t('public~total requested'),\n {\n type: 'dash',\n fill: requestedColor.value,\n },\n xMutator,\n );\n data.push(...reqData);\n if (reqData.length) {\n chartStyle.push({\n data: { stroke: requestedColor.value, strokeDasharray: '3,3', fillOpacity: 0 },\n });\n }\n }\n\n return { data, chartStyle };\n};\n\ntype XMutator = (x: any) => Date;\ntype YMutator = (y: any) => number;\n\nexport type GetRangeStats = (\n response: PrometheusResponse,\n description?: string | ((result: PrometheusResult, index: number) => string),\n symbol?: { fill?: string; type?: string },\n xMutator?: XMutator,\n yMutator?: YMutator,\n) => DataPoint[][];\n\nexport type GetInstantStats = (\n response: PrometheusResponse,\n metric?: string,\n humanize?: Humanize,\n) => DataPoint[];\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { Trans, useTranslation } from 'react-i18next';\nimport {\n GroupVersionKind,\n referenceForGroupVersionKind,\n resourceURL,\n referenceFor,\n referenceForModel,\n K8sKind,\n K8sResourceKind,\n apiVersionCompare,\n} from '@console/internal/module/k8s';\nimport { PackageManifestModel } from '../models';\nimport {\n APIServiceDefinition,\n ClusterServiceVersionIcon,\n ClusterServiceVersionKind,\n CRDDescription,\n InstallPlanApproval,\n InstallPlanKind,\n PackageManifestKind,\n ProvidedAPI,\n StepResource,\n SubscriptionKind,\n} from '../types';\nimport { getInternalObjects } from '../utils';\n\nexport const visibilityLabel = 'olm-visibility';\n\nconst filteredAPIs = (providedAPIs: ProvidedAPI[], internalObjects: string[]): ProvidedAPI[] => {\n const filteredAndSorted = providedAPIs\n .filter((api) => !internalObjects.includes(api.name))\n .sort((a, b) => apiVersionCompare(a.version, b.version));\n return _.uniqBy(filteredAndSorted, 'name');\n};\n\n// Returns provided apis for a given csv, excluding internal objects and duplicate\nexport const providedAPIsForCSV = (csv: ClusterServiceVersionKind): ProvidedAPI[] => {\n const allProvidedAPIs: ProvidedAPI[] = [\n ...(csv?.spec?.apiservicedefinitions?.owned ?? []),\n ...(csv?.spec?.customresourcedefinitions?.owned ?? []),\n ];\n const internalObjects = getInternalObjects(csv?.metadata?.annotations);\n return filteredAPIs(allProvidedAPIs, internalObjects);\n};\n\nexport const providedAPIsForChannel = (pkg: PackageManifestKind) => (channel: string) => {\n const { currentCSVDesc } = pkg.status.channels.find((ch) => ch.name === channel);\n const allProvidedAPIs: ProvidedAPI[] = [\n ...(currentCSVDesc?.customresourcedefinitions?.owned ?? []),\n ...(currentCSVDesc?.apiservicedefinitions?.owned ?? []),\n ];\n const internalObjects = getInternalObjects(currentCSVDesc?.annotations);\n return filteredAPIs(allProvidedAPIs, internalObjects);\n};\n\nexport const referenceForProvidedAPI = (\n desc: CRDDescription | APIServiceDefinition,\n): GroupVersionKind =>\n _.get(desc, 'group')\n ? referenceForGroupVersionKind((desc as APIServiceDefinition).group)(desc.version)(desc.kind)\n : referenceForGroupVersionKind((desc as CRDDescription).name.slice(desc.name.indexOf('.') + 1))(\n desc.version,\n )(desc.kind);\nexport const referenceForStepResource = (resource: StepResource): GroupVersionKind =>\n referenceForGroupVersionKind(resource.group || 'core')(resource.version)(resource.kind);\n\nexport const defaultChannelFor = (packageManifest: PackageManifestKind) => {\n const channel = !_.isEmpty(packageManifest.status.defaultChannel)\n ? packageManifest.status.channels.find(\n (ch) => ch.name === packageManifest.status.defaultChannel,\n )\n : packageManifest.status.channels[0];\n return channel;\n};\nexport const defaultChannelNameFor = (pkg: PackageManifestKind) =>\n pkg.status.defaultChannel || pkg?.status?.channels?.[0]?.name;\nexport const installModesFor = (pkg: PackageManifestKind) => (channel: string) =>\n pkg.status.channels.find((ch) => ch.name === channel)?.currentCSVDesc?.installModes || [];\nexport const supportedInstallModesFor = (pkg: PackageManifestKind) => (channel: string) =>\n installModesFor(pkg)(channel).filter(({ supported }) => supported);\n\nexport const iconFor = (pkg: PackageManifestKind) => {\n const defaultChannel = pkg?.status?.defaultChannel\n ? pkg.status.channels?.find((ch) => ch.name === pkg.status.defaultChannel)\n : pkg?.status?.channels?.[0];\n if (!defaultChannel) {\n return null;\n }\n\n return resourceURL(PackageManifestModel, {\n ns: pkg?.status?.catalogSourceNamespace,\n name: pkg.metadata.name,\n path: 'icon',\n queryParams: {\n resourceVersion: [pkg.metadata.name, defaultChannel.name, defaultChannel.currentCSV].join(\n '.',\n ),\n },\n });\n};\n\nexport const providedAPIForReference = (csv, reference) => {\n const providedAPIs = providedAPIsForCSV(csv) ?? [];\n return providedAPIs.find((api) => referenceForProvidedAPI(api) === reference);\n};\n\nexport const providedAPIForModel = (csv: ClusterServiceVersionKind, model: K8sKind): ProvidedAPI =>\n providedAPIForReference(csv, referenceForModel(model));\n\nexport const parseALMExamples = (\n csv: ClusterServiceVersionKind,\n useInitializationResource: boolean,\n) => {\n try {\n if (useInitializationResource) {\n const resource = JSON.parse(\n csv?.metadata?.annotations?.['operatorframework.io/initialization-resource'],\n );\n return [resource];\n }\n return JSON.parse(csv?.metadata?.annotations?.['alm-examples'] ?? '[]');\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('Unable to parse ALM expamples\\n', e);\n return [];\n }\n};\n\nexport const exampleForModel = (csv: ClusterServiceVersionKind, model: K8sKind) =>\n _.defaultsDeep(\n {},\n {\n kind: model.kind,\n apiVersion: `${model.apiGroup}/${model.apiVersion}`,\n },\n _.find(\n parseALMExamples(\n csv,\n new URLSearchParams(window.location.search).has('useInitializationResource'),\n ),\n (s: K8sResourceKind) => referenceFor(s) === referenceForModel(model),\n ),\n );\n\nexport const getManualSubscriptionsInNamespace = (\n subscriptions: SubscriptionKind[],\n namespace: string,\n) => {\n return subscriptions?.filter(\n (subscription) =>\n subscription.metadata.namespace === namespace &&\n subscription.spec.installPlanApproval === InstallPlanApproval.Manual,\n );\n};\n\nexport const OperatorsWithManualApproval: React.FC = ({\n subscriptions,\n}) => {\n const { t } = useTranslation();\n const subs = subscriptions\n ?.map((subscription) => (\n {subscription.metadata.name}\n ))\n .map((sub, i) => (i > 0 ? [', ', sub] : sub));\n return (\n <>\n {t('olm~operator', { count: subscriptions?.length })} {subs}\n \n );\n};\n\nexport const NamespaceIncludesManualApproval: React.FC = ({\n subscriptions,\n namespace,\n}) => (\n \n Installation namespace {{ namespace }} contains{' '}\n installed with manual approval,\n and all operators installed in the same namespace will function as manual approval strategy. To\n allow automatic approval, all operators installed in the namespace must use automatic approval\n strategy.\n \n);\n\nconst InstallPlanCSVNames: React.FC = ({ installPlan }) =>\n installPlan?.spec.clusterServiceVersionNames\n .sort()\n // eslint-disable-next-line react/no-array-index-key\n .map((CSVName, i) => {CSVName})\n // eslint-disable-next-line react/no-array-index-key\n .map((CSVName, i) => (i > 0 ? , {CSVName} : CSVName));\n\nexport const InstallPlanReview: React.FC = ({ installPlan }) => (\n

    \n \n Review the manual install plan for operators \n . Once approved, the following resources will be created in order to satisfy the requirements\n for the components specified in the plan. Click the resource name to view the resource in\n detail.\n \n

    \n);\n\nexport type ClusterServiceVersionLogoProps = {\n displayName: string;\n icon: ClusterServiceVersionIcon | string;\n provider: { name: string } | string;\n version?: string;\n};\n\nexport type OperatorsWithManualApprovalProps = {\n subscriptions: SubscriptionKind[];\n};\n\nexport type NamespaceIncludesManualApprovalProps = {\n namespace: string;\n subscriptions: SubscriptionKind[];\n};\n\nexport type InstallPlanReviewProps = {\n installPlan: ClusterServiceVersionKind | InstallPlanKind;\n};\n\nOperatorsWithManualApproval.displayName = 'OperatorsWithManualApproval';\nNamespaceIncludesManualApproval.displayName = 'NamespaceIncludesManualApproval';\nInstallPlanReview.displayName = 'InstallPlanReview';\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport * as React from 'react';\n// FIXME upgrading redux types is causing many errors at this time\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Link } from 'react-router-dom-v5-compat';\nimport { sortable } from '@patternfly/react-table';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { TFunction } from 'i18next';\nimport * as classNames from 'classnames';\nimport * as _ from 'lodash-es';\nimport {\n Button,\n Divider,\n Popover,\n Grid,\n GridItem,\n Card,\n CardBody,\n CardHeader,\n CardTitle,\n Text,\n TextContent,\n TextVariants,\n} from '@patternfly/react-core';\nimport {\n Status,\n TableColumnsType,\n LazyActionMenu,\n ActionServiceProvider,\n ActionMenu,\n ActionMenuVariant,\n useUserSettingsCompatibility,\n usePrometheusGate,\n} from '@console/shared';\nimport { ByteDataTypes } from '@console/shared/src/graph-helper/data-utils';\nimport {\n COLUMN_MANAGEMENT_CONFIGMAP_KEY,\n COLUMN_MANAGEMENT_LOCAL_STORAGE_KEY,\n} from '@console/shared/src/constants/common';\nimport { ListPageBody, RowFilter, RowProps, TableColumn } from '@console/dynamic-plugin-sdk';\nimport * as UIActions from '../actions/ui';\nimport { coFetchJSON } from '../co-fetch';\nimport {\n ContainerSpec,\n K8sResourceKindReference,\n PodKind,\n referenceForModel,\n referenceFor,\n Selector,\n ContainerState,\n} from '../module/k8s';\nimport {\n getRestartPolicyLabel,\n podPhase,\n podPhaseFilterReducer,\n podReadiness,\n podRestarts,\n isWindowsPod,\n isContainerCrashLoopBackOff,\n} from '../module/k8s/pods';\nimport {\n getContainerRestartCount,\n getContainerState,\n getContainerStatus,\n} from '../module/k8s/container';\nimport { ResourceEventStream } from './events';\nimport { DetailsPage } from './factory';\nimport ListPageHeader from './factory/ListPage/ListPageHeader';\nimport ListPageFilter from './factory/ListPage/ListPageFilter';\nimport ListPageCreate from './factory/ListPage/ListPageCreate';\nimport {\n AsyncComponent,\n DetailsItem,\n Kebab,\n NodeLink,\n OwnerReferences,\n ResourceIcon,\n ResourceLink,\n ResourceSummary,\n ScrollToTopOnMount,\n SectionHeading,\n Timestamp,\n formatBytesAsMiB,\n formatCores,\n humanizeBinaryBytes,\n humanizeDecimalBytesPerSec,\n humanizeCpuCores,\n navFactory,\n units,\n LabelList,\n RuntimeClass,\n} from './utils';\nimport { PodLogs } from './pod-logs';\nimport {\n Area,\n Stack,\n PROMETHEUS_BASE_PATH,\n PROMETHEUS_TENANCY_BASE_PATH,\n PrometheusResult,\n} from './graphs';\nimport { VolumesTable } from './volumes-table';\nimport { PodModel } from '../models';\nimport { Conditions } from './conditions';\nimport Dashboard from '@console/shared/src/components/dashboard/Dashboard';\n\n// Key translations for oauth login templates\n// t('public~Log in to your account')\n// t('public~Log in')\n// t('public~Welcome to {{platformTitle}}')\n// t('public~Log in with {{providerName}}')\n// t('public~Login is required. Please try again.')\n// t('public~Could not check CSRF token. Please try again.')\n// t('public~Invalid login or password. Please try again.')\nimport { resourcePath } from './utils/resource-link';\nimport { useK8sWatchResource } from './utils/k8s-watch-hook';\nimport { useListPageFilter } from './factory/ListPage/filter-hook';\nimport VirtualizedTable, { TableData } from './factory/Table/VirtualizedTable';\nimport { sortResourceByValue } from './factory/Table/sort';\nimport { useActiveColumns } from './factory/Table/active-columns-hook';\nimport { PodDisruptionBudgetField } from '@console/app/src/components/pdb/PodDisruptionBudgetField';\nimport { PodTraffic } from './pod-traffic';\n// Only request metrics if the device's screen width is larger than the\n// breakpoint where metrics are visible.\nconst showMetrics =\n PROMETHEUS_BASE_PATH && PROMETHEUS_TENANCY_BASE_PATH && window.screen.width >= 1200;\n\nconst fetchPodMetrics = (namespace: string): Promise => {\n const metrics = [\n {\n key: 'memory',\n query: namespace\n ? `sum(container_memory_working_set_bytes{namespace='${namespace}',container=''}) BY (pod, namespace)`\n : \"sum(container_memory_working_set_bytes{container=''}) BY (pod, namespace)\",\n },\n {\n key: 'cpu',\n query: namespace\n ? `pod:container_cpu_usage:sum{namespace='${namespace}'}`\n : 'pod:container_cpu_usage:sum',\n },\n ];\n const promises = metrics.map(\n ({ key, query }): Promise => {\n const url = namespace\n ? `${PROMETHEUS_TENANCY_BASE_PATH}/api/v1/query?namespace=${namespace}&query=${query}`\n : `${PROMETHEUS_BASE_PATH}/api/v1/query?query=${query}`;\n return coFetchJSON(url).then(({ data: { result } }) => {\n return result.reduce((acc, data) => {\n const value = Number(data.value[1]);\n return _.set(acc, [key, data.metric.namespace, data.metric.pod], value);\n }, {});\n });\n },\n );\n return Promise.all(promises).then((data: any[]) => _.assign({}, ...data));\n};\n\nexport const menuActions = [\n ...Kebab.getExtensionsActionsForKind(PodModel),\n ...Kebab.factory.common,\n];\n\n// t('public~Name')\n// t('public~Namespace')\n// t('public~Status')\n// t('public~Ready')\n// t('public~Restarts')\n// t('public~Owner')\n// t('public~Node')\n// t('public~Memory')\n// t('public~CPU')\n// t('public~Created')\n// t('public~Labels')\n// t('public~IP address')\n\nconst podColumnInfo = Object.freeze({\n name: {\n classes: '',\n id: 'name',\n title: 'public~Name',\n },\n namespace: {\n classes: '',\n id: 'namespace',\n title: 'public~Namespace',\n },\n status: {\n classes: '',\n id: 'status',\n title: 'public~Status',\n },\n ready: {\n classes: classNames('pf-m-nowrap', 'pf-v5-u-w-10-on-lg', 'pf-v5-u-w-8-on-xl'),\n id: 'ready',\n title: 'public~Ready',\n },\n restarts: {\n classes: classNames('pf-m-nowrap', 'pf-v5-u-w-8-on-2xl'),\n id: 'restarts',\n title: 'public~Restarts',\n },\n owner: {\n classes: '',\n id: 'owner',\n title: 'public~Owner',\n },\n node: {\n classes: '',\n id: 'node',\n title: 'public~Node',\n },\n memory: {\n classes: classNames({ 'pf-v5-u-w-10-on-2xl': showMetrics }),\n id: 'memory',\n title: 'public~Memory',\n },\n cpu: {\n classes: classNames({ 'pf-v5-u-w-10-on-2xl': showMetrics }),\n id: 'cpu',\n title: 'public~CPU',\n },\n created: {\n classes: classNames('pf-v5-u-w-10-on-2xl'),\n id: 'created',\n title: 'public~Created',\n },\n labels: {\n classes: '',\n id: 'labels',\n title: 'public~Labels',\n },\n ipaddress: {\n classes: '',\n id: 'ipaddress',\n title: 'public~IP address',\n },\n traffic: {\n classes: '',\n id: 'trafficStatus',\n title: 'public~Receiving Traffic',\n },\n});\n\nconst kind = 'Pod';\nconst columnManagementID = referenceForModel(PodModel);\n\nconst getColumns = (showNodes: boolean, t: TFunction): TableColumn[] => [\n {\n title: t(podColumnInfo.name.title),\n id: podColumnInfo.name.id,\n sort: 'metadata.name',\n transforms: [sortable],\n props: { className: podColumnInfo.name.classes },\n },\n {\n title: t(podColumnInfo.namespace.title),\n id: podColumnInfo.namespace.id,\n sort: 'metadata.namespace',\n transforms: [sortable],\n props: { className: podColumnInfo.namespace.classes },\n },\n {\n title: t(podColumnInfo.status.title),\n id: podColumnInfo.status.id,\n sort: (data, direction) => data.sort(sortResourceByValue(direction, podPhase)),\n transforms: [sortable],\n props: { className: podColumnInfo.status.classes },\n },\n {\n title: t(podColumnInfo.ready.title),\n id: podColumnInfo.ready.id,\n sort: (data, direction) =>\n data.sort(sortResourceByValue(direction, (obj) => podReadiness(obj).readyCount)),\n transforms: [sortable],\n props: { className: podColumnInfo.ready.classes },\n },\n {\n title: t(podColumnInfo.restarts.title),\n id: podColumnInfo.restarts.id,\n sort: (data, direction) => data.sort(sortResourceByValue(direction, podRestarts)),\n transforms: [sortable],\n props: { className: podColumnInfo.restarts.classes },\n },\n {\n title: showNodes ? t(podColumnInfo.node.title) : t(podColumnInfo.owner.title),\n id: podColumnInfo.owner.id,\n sort: showNodes ? 'spec.nodeName' : 'metadata.ownerReferences[0].name',\n transforms: [sortable],\n props: { className: podColumnInfo.owner.classes },\n },\n {\n title: t(podColumnInfo.memory.title),\n id: podColumnInfo.memory.id,\n sort: (data, direction) =>\n data.sort(\n sortResourceByValue(direction, (obj) => UIActions.getPodMetric(obj, 'memory')),\n ),\n transforms: [sortable],\n props: { className: podColumnInfo.memory.classes },\n },\n {\n title: t(podColumnInfo.cpu.title),\n id: podColumnInfo.cpu.id,\n sort: (data, direction) =>\n data.sort(\n sortResourceByValue(direction, (obj) => UIActions.getPodMetric(obj, 'cpu')),\n ),\n transforms: [sortable],\n props: { className: podColumnInfo.cpu.classes },\n },\n {\n title: t(podColumnInfo.created.title),\n id: podColumnInfo.created.id,\n sort: 'metadata.creationTimestamp',\n transforms: [sortable],\n props: { className: podColumnInfo.created.classes },\n },\n {\n title: t(podColumnInfo.node.title),\n id: podColumnInfo.node.id,\n sort: 'spec.nodeName',\n transforms: [sortable],\n props: { className: podColumnInfo.node.classes },\n additional: true,\n },\n {\n title: t(podColumnInfo.labels.title),\n id: podColumnInfo.labels.id,\n sort: 'metadata.labels',\n transforms: [sortable],\n props: { className: podColumnInfo.labels.classes },\n additional: true,\n },\n {\n title: t(podColumnInfo.ipaddress.title),\n id: podColumnInfo.ipaddress.id,\n sort: 'status.podIP',\n transforms: [sortable],\n props: { className: podColumnInfo.ipaddress.classes },\n additional: true,\n },\n {\n title: t(podColumnInfo.traffic.title),\n id: podColumnInfo.traffic.id,\n props: { className: podColumnInfo.traffic.classes },\n additional: true,\n },\n {\n title: '',\n id: '',\n props: { className: Kebab.columnClass },\n },\n];\n\nconst PodTableRow: React.FC> = ({\n obj: pod,\n rowData: { showNodes },\n activeColumnIDs,\n}) => {\n const { t } = useTranslation();\n const { name, namespace, creationTimestamp, labels } = pod.metadata;\n const bytes: number = useSelector(({ UI }) => {\n const metrics = UI.getIn(['metrics', 'pod']);\n return metrics?.memory?.[namespace]?.[name];\n });\n const cores: number = useSelector(({ UI }) => {\n const metrics = UI.getIn(['metrics', 'pod']);\n return metrics?.cpu?.[namespace]?.[name];\n });\n const { readyCount, totalContainers } = podReadiness(pod);\n const phase = podPhase(pod);\n const restarts = podRestarts(pod);\n const resourceKind = referenceFor(pod);\n const context = { [resourceKind]: pod };\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n {readyCount}/{totalContainers}\n \n \n {restarts}\n \n \n {showNodes ? (\n \n ) : (\n \n )}\n \n \n {bytes ? `${formatBytesAsMiB(bytes)} MiB` : '-'}\n \n \n {cores ? t('public~{{numCores}} cores', { numCores: formatCores(cores) }) : '-'}\n \n \n \n \n \n \n \n \n \n \n \n {pod?.status?.podIP ?? '-'}\n \n \n \n \n \n \n \n \n );\n};\nPodTableRow.displayName = 'PodTableRow';\n\nexport const ContainerLink: React.FC = ({ pod, name }) => (\n \n \n \n {name}\n \n \n);\nContainerLink.displayName = 'ContainerLink';\n\nconst ContainerRunningSince: React.FC = ({ startedAt }) => {\n const { t } = useTranslation();\n return startedAt ? (\n \n since \n \n ) : null;\n};\n\nconst ContainerTerminatedAt: React.FC = ({ finishedAt }) => {\n const { t } = useTranslation();\n return finishedAt ? (\n \n at {' '}\n \n ) : null;\n};\n\nconst ContainerTerminatedExitCode: React.FC = ({ exitCode }) => {\n const { t } = useTranslation();\n return exitCode ? t('public~with exit code {{exitCode}} ', { exitCode }) : null;\n};\n\nconst ContainerTerminatedReason: React.FC = ({ reason }) => {\n const { t } = useTranslation();\n return reason ? t('public~({{reason}})', { reason }) : null;\n};\n\nexport const ContainerLastState: React.FC = ({ containerLastState }) => {\n const { t } = useTranslation();\n if (containerLastState?.waiting) {\n return t('public~Waiting {{reason}}', { reason: containerLastState.waiting?.reason });\n } else if (containerLastState?.running) {\n return (\n \n Running \n \n );\n } else if (containerLastState?.terminated) {\n return (\n \n Terminated \n \n \n \n );\n }\n return <>-;\n};\n\nconst podContainerClassNames = [\n 'col-lg-2 col-md-3 col-sm-4 col-xs-5',\n 'col-lg-2 col-md-3 col-sm-5 col-xs-7 ',\n 'col-lg-2 col-md-1 col-sm-3 hidden-xs',\n 'col-lg-2 hidden-md hidden-sm hidden-xs',\n 'col-lg-1 col-md-2 hidden-sm hidden-xs',\n 'col-lg-1 col-md-2 hidden-sm hidden-xs',\n 'col-lg-1 hidden-md hidden-sm hidden-xs',\n 'col-lg-1 hidden-md hidden-sm hidden-xs',\n];\n\nexport const ContainerRow: React.FC = ({ pod, container }) => {\n const cstatus = getContainerStatus(pod, container.name);\n const cstate = getContainerState(cstatus);\n const startedAt = _.get(cstate, 'startedAt');\n const finishedAt = _.get(cstate, 'finishedAt');\n\n return (\n
    \n
    \n \n
    \n
    \n {container.image || '-'}\n
    \n
    \n \n
    \n
    \n \n
    \n
    {getContainerRestartCount(cstatus)}
    \n
    \n \n
    \n
    \n \n
    \n
    {_.get(cstate, 'exitCode', '-')}
    \n
    \n );\n};\nContainerRow.displayName = 'ContainerRow';\n\nexport const PodContainerTable: React.FC = ({\n heading,\n containers,\n pod,\n}) => {\n const { t } = useTranslation();\n return (\n <>\n \n
    \n
    \n
    {t('public~Name')}
    \n
    {t('public~Image')}
    \n
    {t('public~State')}
    \n
    {t('public~Last State')}
    \n
    {t('public~Restarts')}
    \n
    {t('public~Started')}
    \n
    {t('public~Finished')}
    \n
    {t('public~Exit code')}
    \n
    \n
    \n {containers.map((c: any, i: number) => (\n \n ))}\n
    \n
    \n \n );\n};\n\nconst getNetworkName = (result: PrometheusResult) =>\n // eslint-disable-next-line camelcase\n result?.metric?.network_name || 'unnamed interface';\n\n// TODO update to use QueryBrowser for each graph\nconst PodMetrics: React.FC = ({ obj }) => {\n const { t } = useTranslation();\n return (\n \n \n \n \n \n {t('public~Memory usage')}\n \n \n \n \n \n \n \n \n \n {t('public~CPU usage')}\n \n \n \n \n \n \n \n \n \n {t('public~Filesystem')}\n \n \n \n \n \n \n \n \n \n {t('public~Network in')}\n \n \n \n \n \n \n \n \n \n {t('public~Network out')}\n \n \n \n \n \n \n \n \n );\n};\n\nconst PodStatusPopover: React.FC = ({\n bodyContent,\n headerContent,\n footerContent,\n status,\n}) => {\n return (\n \n \n \n );\n};\n\nexport const PodStatus: React.FC = ({ pod }) => {\n const status = podPhase(pod);\n const unschedulableCondition = pod.status?.conditions?.find(\n (condition) => condition.reason === 'Unschedulable' && condition.status === 'False',\n );\n const containerStatusStateWaiting = pod.status?.containerStatuses?.find(\n (cs) => cs.state?.waiting,\n );\n const { t } = useTranslation();\n\n if (status === 'Pending' && unschedulableCondition) {\n return (\n \n );\n }\n if (\n (status === 'CrashLoopBackOff' || status === 'ErrImagePull' || status === 'ImagePullBackOff') &&\n containerStatusStateWaiting\n ) {\n let footerLinks: React.ReactNode;\n let headerTitle = '';\n if (status === 'CrashLoopBackOff') {\n headerTitle = t('public~Pod crash loop back-off');\n const containers: ContainerSpec[] = pod.spec.containers;\n footerLinks = (\n \n \n {t(\n 'public~CrashLoopBackOff indicates that the application within the container is failing to start properly.',\n )}\n \n \n {t('public~To troubleshoot, view logs and events, then debug in terminal.')}\n \n \n \n {t('public~View logs')}\n \n  \n \n {t('public~View events')}\n \n \n \n {containers.map((container) => {\n if (isContainerCrashLoopBackOff(pod, container.name) && !isWindowsPod(pod)) {\n return (\n
    \n \n {t('public~Debug container {{name}}', { name: container.name })}\n \n
    \n );\n }\n })}\n
    \n );\n }\n\n return (\n \n );\n }\n\n return ;\n};\n\nexport const PodDetailsList: React.FC = ({ pod }) => {\n const { t } = useTranslation();\n const moreThanOnePodIPs = pod.status?.podIPs?.length > 1;\n const moreThanOneHostIPs = pod.status?.hostIPs?.length > 1;\n return (\n
    \n
    {t('public~Status')}
    \n
    \n \n
    \n \n {getRestartPolicyLabel(pod)}\n \n \n {pod.spec.activeDeadlineSeconds\n ? t('public~{{count}} second', { count: pod.spec.activeDeadlineSeconds })\n : t('public~Not configured')}\n \n \n {moreThanOnePodIPs\n ? pod.status.podIPs.map((podIP) => podIP.ip).join(', ')\n : pod.status.podIP}\n \n \n {moreThanOneHostIPs\n ? pod.status.hostIPs.map((hostIP) => hostIP.ip).join(', ')\n : pod.status.hostIP}\n \n \n \n \n {pod.spec.imagePullSecrets && (\n \n {pod.spec.imagePullSecrets.map((imagePullSecret) => (\n \n ))}\n \n )}\n \n \n \n \n \n
    \n );\n};\nPodDetailsList.displayName = 'PodDetailsList';\n\nexport const PodResourceSummary: React.FC = ({ pod }) => (\n \n);\n\nconst Details: React.FC = ({ obj: pod }) => {\n const limits = {\n cpu: null,\n memory: null,\n };\n limits.cpu = _.reduce(\n pod.spec.containers,\n (sum, container) => {\n const value = units.dehumanize(_.get(container, 'resources.limits.cpu', 0), 'numeric').value;\n return sum + value;\n },\n 0,\n );\n limits.memory = _.reduce(\n pod.spec.containers,\n (sum, container) => {\n const value = units.dehumanize(\n _.get(container, 'resources.limits.memory', 0),\n 'binaryBytesWithoutB',\n ).value;\n return sum + value;\n },\n 0,\n );\n const { t } = useTranslation();\n return (\n <>\n \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n {pod.spec.initContainers && (\n
    \n \n
    \n )}\n
    \n \n
    \n
    \n \n
    \n
    \n \n \n
    \n \n );\n};\n\nconst EnvironmentPage = (props: any) => (\n import('./environment.jsx').then((c) => c.EnvironmentPage)}\n {...props}\n />\n);\n\nconst envPath = ['spec', 'containers'];\nconst PodEnvironmentComponent = (props) => (\n \n);\n\nexport const PodExecLoader: React.FC = ({\n obj,\n message,\n initialContainer,\n infoMessage,\n}) => (\n
    \n
    \n
    \n
    \n import('./pod-exec').then((c) => c.PodExec)}\n obj={obj}\n message={message}\n infoMessage={infoMessage}\n initialContainer={initialContainer}\n />\n
    \n
    \n
    \n
    \n);\nexport const PodsDetailsPage: React.FC = (props) => {\n const prometheusIsAvailable = usePrometheusGate();\n const customActionMenu = (kindObj, obj) => {\n const resourceKind = referenceForModel(kindObj);\n const context = { [resourceKind]: obj };\n return (\n \n {({ actions, options, loaded }) =>\n loaded && (\n \n )\n }\n \n );\n };\n return (\n \n );\n};\nPodsDetailsPage.displayName = 'PodsDetailsPage';\n\nexport const PodList: React.FC = ({ showNamespaceOverride, showNodes, ...props }) => {\n const { t } = useTranslation();\n const columns = React.useMemo(() => getColumns(showNodes, t), [showNodes, t]);\n const [activeColumns, userSettingsLoaded] = useActiveColumns({\n columns,\n showNamespaceOverride,\n columnManagementID,\n });\n const rowData = React.useMemo(\n () => ({\n showNodes,\n }),\n [showNodes],\n );\n return (\n userSettingsLoaded && (\n \n {...props}\n aria-label={t('public~Pods')}\n label={t('public~Pods')}\n columns={activeColumns}\n Row={PodTableRow}\n rowData={rowData}\n />\n )\n );\n};\nPodList.displayName = 'PodList';\n\nexport const getFilters = (t: TFunction): RowFilter[] => [\n {\n filterGroupName: t('public~Status'),\n type: 'pod-status',\n filter: (phases, pod) => {\n if (!phases || !phases.selected || !phases.selected.length) {\n return true;\n }\n const phase = podPhaseFilterReducer(pod);\n return phases.selected.includes(phase) || !_.includes(phases.all, phase);\n },\n reducer: podPhaseFilterReducer,\n items: [\n { id: 'Running', title: t('public~Running') },\n { id: 'Pending', title: t('public~Pending') },\n { id: 'Terminating', title: t('public~Terminating') },\n { id: 'CrashLoopBackOff', title: t('public~CrashLoopBackOff') },\n // Use title \"Completed\" to match what appears in the status column for the pod.\n // The pod phase is \"Succeeded,\" but the container state is \"Completed.\"\n { id: 'Succeeded', title: t('public~Completed') },\n { id: 'Failed', title: t('public~Failed') },\n { id: 'Unknown', title: t('public~Unknown') },\n ],\n },\n];\n\nexport const PodsPage: React.FC = ({\n canCreate = true,\n namespace,\n showNodes,\n showTitle = true,\n selector,\n fieldSelector,\n hideNameLabelFilters,\n hideLabelFilter,\n hideColumnManagement,\n nameFilter,\n showNamespaceOverride,\n mock = false,\n}) => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const [tableColumns, , userSettingsLoaded] = useUserSettingsCompatibility(\n COLUMN_MANAGEMENT_CONFIGMAP_KEY,\n COLUMN_MANAGEMENT_LOCAL_STORAGE_KEY,\n undefined,\n true,\n );\n\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(() => {\n if (showMetrics) {\n const updateMetrics = () =>\n fetchPodMetrics(namespace)\n .then((result) => dispatch(UIActions.setPodMetrics(result)))\n .catch((e) => {\n // Just log the error here. Showing a warning alert could be more annoying\n // than helpful. It should be obvious there are no metrics in the list, and\n // if monitoring is broken, it'll be really apparent since none of the\n // graphs and dashboards will load in the UI.\n // eslint-disable-next-line no-console\n console.error('Unable to fetch pod metrics', e);\n });\n updateMetrics();\n const id = setInterval(updateMetrics, 30 * 1000);\n return () => clearInterval(id);\n }\n }, [namespace]);\n /* eslint-enable react-hooks/exhaustive-deps */\n\n const [pods, loaded, loadError] = useK8sWatchResource({\n kind,\n isList: true,\n namespaced: true,\n namespace,\n selector,\n fieldSelector,\n });\n\n const filters = React.useMemo(() => getFilters(t), [t]);\n\n const [data, filteredData, onFilterChange] = useListPageFilter(pods, filters, {\n name: { selected: [nameFilter] },\n });\n const resourceKind = referenceForModel(PodModel);\n const accessReview = {\n groupVersionKind: resourceKind,\n namespace: namespace || 'default',\n };\n return (\n userSettingsLoaded && (\n <>\n \n {canCreate && (\n \n {t('public~Create Pod')}\n \n )}\n \n \n \n _.pick(column, ['title', 'additional', 'id']),\n ),\n id: columnManagementID,\n selectedColumns:\n tableColumns?.[columnManagementID]?.length > 0\n ? new Set(tableColumns[columnManagementID])\n : null,\n showNamespaceOverride,\n type: t('public~Pod'),\n }}\n hideNameLabelFilters={hideNameLabelFilters}\n hideLabelFilter={hideLabelFilter}\n hideColumnManagement={hideColumnManagement}\n />\n \n \n \n )\n );\n};\n\ntype ContainerLinkProps = {\n pod: PodKind;\n name: string;\n};\n\ntype ContainerRunningSinceProps = {\n startedAt?: string | number | Date;\n};\n\ntype ContainerTerminatedAtProps = {\n finishedAt?: string | number | Date;\n};\n\ntype ContainerTerminatedExitCodeProps = {\n exitCode?: string;\n};\n\ntype ContainerTerminatedReasonProps = {\n reason?: string;\n};\n\ntype ContainerLastStateProps = {\n containerLastState?: ContainerState;\n};\n\ntype ContainerRowProps = {\n pod: PodKind;\n container: ContainerSpec;\n};\n\ntype PodContainerTableProps = {\n heading: string;\n containers: ContainerSpec[];\n pod: PodKind;\n};\n\ntype PodMetricsProps = {\n obj: PodKind;\n};\n\ntype PodStatusPopoverProps = {\n bodyContent: string;\n headerContent?: string;\n footerContent?: React.ReactNode | string;\n status: string;\n};\n\nexport type PodStatusProps = {\n pod: PodKind;\n};\n\ntype PodResourceSummaryProps = {\n pod: PodKind;\n};\n\nexport type PodDetailsListProps = {\n pod: PodKind;\n};\n\ntype PodExecLoaderProps = {\n obj: PodKind;\n message?: React.ReactElement;\n infoMessage?: React.ReactElement;\n initialContainer?: string;\n};\n\ntype PodDetailsProps = {\n obj: PodKind;\n};\n\ntype PodRowData = {\n showNodes?: boolean;\n};\n\ntype PodListProps = {\n data: PodKind[];\n unfilteredData: PodKind[];\n loaded: boolean;\n loadError: any;\n showNodes?: boolean;\n showNamespaceOverride?: boolean;\n namespace?: string;\n mock?: boolean;\n};\n\ntype PodPageProps = {\n canCreate?: boolean;\n fieldSelector?: string;\n namespace?: string;\n selector?: Selector;\n showTitle?: boolean;\n showNodes?: boolean;\n hideLabelFilter?: boolean;\n hideNameLabelFilters?: boolean;\n hideColumnManagement?: boolean;\n nameFilter?: string;\n showNamespaceOverride?: boolean;\n mock?: boolean;\n};\n\ntype PodDetailsPageProps = {\n kind: K8sResourceKindReference;\n};\n","import { TFunction } from 'i18next';\nimport * as _ from 'lodash';\nimport { K8sResourceCommon } from '@console/internal/module/k8s';\nimport {\n OperatorStatusWithResources,\n OperatorHealth,\n GetOperatorStatusPriority,\n} from '@console/plugin-sdk';\nimport { HealthState, healthStateMapping, healthStateMessage } from './states';\n\nexport const getMostImportantStatuses = (\n operatorStatuses: OperatorStatusWithResources[],\n): OperatorStatusWithResources[] => {\n const mostImportantStatus = Math.max(...operatorStatuses.map(({ status }) => status.priority));\n return operatorStatuses.filter(({ status }) => status.priority === mostImportantStatus);\n};\n\nexport const getOperatorsStatus = (\n operators: R[],\n getOperatorStatus: GetOperatorStatusPriority,\n): OperatorStatusWithResources => {\n if (!operators.length) {\n return {\n status: {\n ...healthStateMapping[HealthState.OK],\n title: 'Available',\n },\n operators: [],\n };\n }\n const operatorsByStatus: { [key: string]: OperatorStatusWithResources } = operators.reduce(\n (acc, o) => {\n const status = getOperatorStatus(o);\n if (!acc[status.health]) {\n acc[status.health] = {\n status: {\n ...status,\n },\n operators: [o],\n };\n } else {\n acc[status.health].operators.push(o);\n }\n return acc;\n },\n {},\n );\n\n const mostImportantStatus = Object.keys(operatorsByStatus).sort(\n (a, b) => operatorsByStatus[b].status.priority - operatorsByStatus[a].status.priority,\n )[0];\n\n return operatorsByStatus[mostImportantStatus];\n};\n\nexport const getOperatorsHealthState = (\n healthStatuses: OperatorHealth[],\n t: TFunction,\n): { health: HealthState; detailMessage: string } => {\n if (!healthStatuses.length) {\n return { health: HealthState.OK, detailMessage: undefined };\n }\n if (healthStatuses.some((s) => s.health === HealthState.NOT_AVAILABLE)) {\n return { health: HealthState.NOT_AVAILABLE, detailMessage: undefined };\n }\n if (healthStatuses.some((s) => HealthState.LOADING === s.health)) {\n return { health: HealthState.LOADING, detailMessage: undefined };\n }\n const sortedStatuses = healthStatuses.sort(\n (a, b) => healthStateMapping[b.health].priority - healthStateMapping[a.health].priority,\n );\n const groupedStatuses = _.groupBy(sortedStatuses, (s) => s.health);\n const statusKeys = Object.keys(groupedStatuses) as (keyof typeof HealthState)[];\n let finalCount = 0;\n groupedStatuses[statusKeys[0]].forEach((g) => {\n if (!_.isNil(g.count)) {\n finalCount += g.count;\n }\n });\n // warning and error statuses are counted together as degraded\n if (\n statusKeys.length > 1 &&\n statusKeys[0] === HealthState.ERROR &&\n statusKeys[1] === HealthState.WARNING\n ) {\n groupedStatuses[statusKeys[1]].forEach((g) => {\n if (!_.isNil(g.count)) {\n finalCount += g.count;\n }\n });\n }\n\n return {\n health: HealthState[statusKeys[0]],\n detailMessage: healthStateMessage(statusKeys[0], t)\n ? `${finalCount} ${healthStateMessage(statusKeys[0], t).toLowerCase()}`\n : undefined,\n };\n};\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport * as _ from 'lodash-es';\nimport { Button } from '@patternfly/react-core';\nimport { PencilAltIcon } from '@patternfly/react-icons/dist/esm/icons/pencil-alt-icon';\nimport { useCanClusterUpgrade } from '@console/shared/src/hooks/useCanClusterUpgrade';\nimport { useAnnotationsModal } from '@console/shared/src/hooks/useAnnotationsModal';\nimport { useLabelsModal } from '@console/shared/src/hooks/useLabelsModal';\nimport { DetailsItem } from './details-item';\nimport { Kebab } from './kebab';\nimport { LabelList } from './label-list';\nimport { OwnerReferences } from './owner-references';\nimport { ResourceLink } from './resource-link';\nimport { Selector } from './selector';\nimport { Timestamp } from './timestamp';\nimport { useAccessReview } from './rbac';\nimport {\n ClusterVersionKind,\n K8sResourceCommon,\n K8sResourceKind,\n modelFor,\n referenceFor,\n Toleration,\n} from '../../module/k8s';\nimport { configureClusterUpstreamModal } from '../modals';\n\nexport const pluralize = (\n i: number,\n singular: string,\n plural: string = `${singular}s`,\n includeCount: boolean = true,\n) => {\n const pluralized = `${i === 1 ? singular : plural}`;\n return includeCount ? `${i || 0} ${pluralized}` : pluralized;\n};\n\nexport const detailsPage = (Component: React.ComponentType) =>\n function DetailsPage(props: T) {\n return ;\n };\n\nconst getTolerationsPath = (obj: K8sResourceKind): string => {\n // FIXME: Is this correct for all types (jobs, cron jobs)? It would be better for the embedding page to pass in the path.\n return obj.kind === 'Pod' ? 'spec.tolerations' : 'spec.template.spec.tolerations';\n};\n\nexport const ResourceSummary: React.FC = ({\n children,\n resource,\n customPathName,\n showPodSelector = false,\n showNodeSelector = false,\n showAnnotations = true,\n showTolerations = false,\n showLabelEditor = true,\n canUpdateResource = true,\n podSelector = 'spec.selector',\n nodeSelector = 'spec.template.spec.nodeSelector',\n}) => {\n const { t } = useTranslation();\n const { metadata } = resource;\n const reference = referenceFor(resource);\n const model = modelFor(reference);\n const tolerationsPath = getTolerationsPath(resource);\n const tolerations: Toleration[] = _.get(resource, tolerationsPath);\n const annotationsModalLauncher = useAnnotationsModal(resource);\n const labelsModalLauncher = useLabelsModal(resource);\n const canUpdateAccess = useAccessReview({\n group: model.apiGroup,\n resource: model.plural,\n verb: 'patch',\n name: metadata.name,\n namespace: metadata.namespace,\n });\n const canUpdate = canUpdateAccess && canUpdateResource;\n\n return (\n
    \n \n {metadata.namespace && (\n \n \n \n )}\n \n \n \n {showPodSelector && (\n \n \n \n )}\n {showNodeSelector && (\n \n \n \n )}\n {showTolerations && (\n \n {canUpdate ? (\n \n {t('public~{{count}} toleration', { count: _.size(tolerations) })}\n \n \n ) : (\n t('public~{{count}} toleration', { count: _.size(tolerations) })\n )}\n \n )}\n {showAnnotations && (\n \n {canUpdate ? (\n \n {t('public~{{count}} annotation', { count: _.size(metadata.annotations) })}\n \n \n ) : (\n t('public~{{count}} annotation', { count: _.size(metadata.annotations) })\n )}\n \n )}\n {children}\n \n \n \n \n \n \n
    \n );\n};\n\nexport const ResourcePodCount: React.SFC = ({ resource }) => {\n const { t } = useTranslation();\n return (\n <>\n \n \n \n );\n};\n\nexport const RuntimeClass: React.FC = ({ obj, path }) => {\n const { t } = useTranslation();\n return (\n \n );\n};\n\nexport const UpstreamConfigDetailsItem: React.SFC = ({\n resource,\n}) => {\n const { t } = useTranslation();\n const canUpgrade = useCanClusterUpgrade();\n return (\n \n
    \n {\n e.preventDefault();\n e.stopPropagation();\n canUpgrade && configureClusterUpstreamModal({ cv: resource });\n }}\n variant=\"link\"\n isDisabled={!canUpgrade}\n >\n {resource?.spec?.upstream || t('public~Default update server')}\n {canUpgrade && }\n \n
    \n
    \n );\n};\n\nexport type ResourceSummaryProps = {\n resource: K8sResourceKind;\n showPodSelector?: boolean;\n showNodeSelector?: boolean;\n showAnnotations?: boolean;\n showTolerations?: boolean;\n showLabelEditor?: boolean;\n canUpdateResource?: boolean;\n podSelector?: string;\n nodeSelector?: string;\n children?: React.ReactNode;\n customPathName?: string;\n};\n\nexport type ResourcePodCountProps = {\n resource: K8sResourceKind;\n};\n\nexport type UpstreamConfigDetailsItemProps = {\n resource: ClusterVersionKind;\n};\n\nexport type RuntimeClassProps = {\n obj: K8sResourceCommon;\n path?: string;\n};\n\nResourceSummary.displayName = 'ResourceSummary';\nResourcePodCount.displayName = 'ResourcePodCount';\n","import * as _ from 'lodash';\nimport { WatchK8sResources } from '@console/dynamic-plugin-sdk';\nimport { FirehoseResource } from '@console/internal/components/utils';\nimport { K8sResourceKind, PodKind, referenceForModel } from '@console/internal/module/k8s';\nimport { KafkaConnectionModel } from '@console/rhoas-plugin/src/models';\nimport { GLOBAL_OPERATOR_NS, KNATIVE_SERVING_LABEL } from '../const';\nimport {\n CamelKameletModel,\n ServiceModel,\n RevisionModel,\n ConfigurationModel,\n RouteModel,\n EventingSubscriptionModel,\n EventingBrokerModel,\n EventingTriggerModel,\n KafkaModel,\n KafkaTopicModel,\n CamelIntegrationModel,\n CamelKameletBindingModel,\n DomainMappingModel,\n KafkaSinkModel,\n} from '../models';\nimport { Traffic } from '../types';\nimport {\n getDynamicEventSourcesWatchers,\n getDynamicEventingChannelWatchers,\n} from './fetch-dynamic-eventsources-utils';\n\nexport type KnativeItem = {\n revisions?: K8sResourceKind[];\n configurations?: K8sResourceKind[];\n ksroutes?: K8sResourceKind[];\n ksservices?: K8sResourceKind[];\n eventSources?: K8sResourceKind[];\n eventingsubscription?: K8sResourceKind[];\n eventSourceCronjob?: K8sResourceKind[];\n eventSourceContainers?: K8sResourceKind[];\n eventSourceApiserver?: K8sResourceKind[];\n eventSourceCamel?: K8sResourceKind[];\n eventSourceKafka?: K8sResourceKind[];\n eventSourceSinkbinding?: K8sResourceKind[];\n domainMappings?: K8sResourceKind[];\n pods?: PodKind[];\n associatedDeployment?: K8sResourceKind;\n};\n\nconst isKnativeDeployment = (dc: K8sResourceKind) => {\n return !!_.get(dc.metadata, `labels[\"${KNATIVE_SERVING_LABEL}\"]`);\n};\n\nconst getKsResource = (dc: K8sResourceKind, { data }: K8sResourceKind): K8sResourceKind[] => {\n let ksResource = [];\n if (isKnativeDeployment(dc)) {\n const name = dc.metadata.labels?.[KNATIVE_SERVING_LABEL];\n ksResource = _.filter(data, (config: K8sResourceKind) => {\n return name === _.get(config, 'metadata.name');\n });\n }\n return ksResource;\n};\n\nconst getRevisions = (dc: K8sResourceKind, { data }): K8sResourceKind[] => {\n let revisionResource = [];\n if (isKnativeDeployment(dc)) {\n const ownerUid = dc.metadata.ownerReferences?.[0]?.uid;\n revisionResource = _.filter(data, (revision: K8sResourceKind) => {\n return ownerUid && ownerUid === revision.metadata.uid;\n });\n }\n return revisionResource;\n};\n\nexport const getDomainMapping = (res: K8sResourceKind, { data }): K8sResourceKind[] => {\n const { apiVersion, kind, metadata } = res;\n let domainMappingResource = [];\n if (!metadata || !data.length) return domainMappingResource;\n if (\n kind === ServiceModel.kind &&\n apiVersion === `${ServiceModel.apiGroup}/${ServiceModel.apiVersion}`\n ) {\n domainMappingResource = data.filter((domainMapping) => {\n return (\n domainMapping.spec.ref.apiVersion === apiVersion &&\n domainMapping.spec.ref.kind === kind &&\n domainMapping.spec.ref.name === metadata.name\n );\n });\n }\n return domainMappingResource;\n};\n\nexport const getKnativeServingRevisions = (dc: K8sResourceKind, props): KnativeItem | undefined => {\n const revisions = props && props.revisions && getRevisions(dc, props.revisions);\n return revisions && revisions.length > 0 ? { revisions } : undefined;\n};\n\nexport const getKnativeServingConfigurations = (\n dc: K8sResourceKind,\n props,\n): KnativeItem | undefined => {\n const configurations = props && props.configurations && getKsResource(dc, props.configurations);\n return configurations && configurations.length > 0 ? { configurations } : undefined;\n};\n\nexport const getKnativeServingRoutes = (dc: K8sResourceKind, props): KnativeItem | undefined => {\n const ksroutes = props && props.ksroutes && getKsResource(dc, props.ksroutes);\n return ksroutes && ksroutes.length > 0 ? { ksroutes } : undefined;\n};\n\nexport const getKnativeServingDomainMapping = (res: K8sResourceKind, props) => {\n const domainMappings =\n props && props.domainmappings && getDomainMapping(res, props.domainmappings);\n return domainMappings?.length > 0 ? { domainMappings } : undefined;\n};\n\nexport const getKnativeServingServices = (dc: K8sResourceKind, props): KnativeItem | undefined => {\n const ksservices = props && props.ksservices && getKsResource(dc, props.ksservices);\n return ksservices && ksservices.length > 0 ? { ksservices } : undefined;\n};\n\nexport const knativeServingResourcesRevision = (namespace: string): FirehoseResource[] => {\n const knativeResource = [\n {\n isList: true,\n kind: referenceForModel(RevisionModel),\n namespace,\n prop: 'revisions',\n optional: true,\n },\n ];\n return knativeResource;\n};\n\nexport const knativeServingResourcesConfigurations = (namespace: string): FirehoseResource[] => {\n const knativeResource = [\n {\n isList: true,\n kind: referenceForModel(ConfigurationModel),\n namespace,\n prop: 'configurations',\n optional: true,\n },\n ];\n return knativeResource;\n};\n\nexport const knativeServingResourcesRoutes = (namespace: string): FirehoseResource[] => {\n const knativeResource = [\n {\n isList: true,\n kind: referenceForModel(RouteModel),\n namespace,\n prop: 'ksroutes',\n optional: true,\n },\n ];\n return knativeResource;\n};\n\nexport const k8sServices = (namespace: string, limit?: number): FirehoseResource[] => {\n const knativeResource = [\n {\n isList: true,\n kind: 'Service',\n namespace,\n prop: 'services',\n optional: true,\n ...(limit && { limit }),\n },\n ];\n return knativeResource;\n};\n\nexport const knativeServingResourcesServices = (\n namespace: string,\n limit?: number,\n): FirehoseResource[] => {\n const knativeResource = [\n {\n isList: true,\n kind: referenceForModel(ServiceModel),\n namespace,\n prop: 'ksservices',\n optional: true,\n ...(limit && { limit }),\n },\n ];\n return knativeResource;\n};\n\nexport const knativeKafkaSinks = (namespace: string, limit?: number): FirehoseResource[] => {\n const knativeResource = [\n {\n isList: true,\n kind: referenceForModel(KafkaSinkModel),\n namespace,\n prop: 'kafkasinks',\n optional: true,\n ...(limit && { limit }),\n },\n ];\n return knativeResource;\n};\n\nexport const knativeEventingResourcesSubscription = (namespace: string): FirehoseResource[] => {\n const knativeResource = [\n {\n isList: true,\n kind: referenceForModel(EventingSubscriptionModel),\n namespace,\n prop: 'eventingsubscription',\n optional: true,\n },\n ];\n return knativeResource;\n};\n\nexport const knativeEventingResourcesBroker = (\n namespace: string,\n limit?: number,\n): FirehoseResource[] => {\n const knativeResource = [\n {\n isList: true,\n kind: referenceForModel(EventingBrokerModel),\n namespace,\n prop: EventingBrokerModel.plural,\n optional: true,\n ...(limit && { limit }),\n },\n ];\n return knativeResource;\n};\n\nexport const knativeServingResourcesRevisionWatchers = (\n namespace: string,\n): WatchK8sResources => {\n const knativeResource = {\n revisions: {\n isList: true,\n kind: referenceForModel(RevisionModel),\n namespace,\n optional: true,\n },\n };\n return knativeResource;\n};\n\nexport const knativeServingResourcesConfigurationsWatchers = (\n namespace: string,\n): WatchK8sResources => {\n const knativeResource = {\n configurations: {\n isList: true,\n kind: referenceForModel(ConfigurationModel),\n namespace,\n optional: true,\n },\n };\n return knativeResource;\n};\n\nexport const knativeServingResourcesRoutesWatchers = (\n namespace: string,\n): WatchK8sResources => {\n const knativeResource = {\n ksroutes: {\n isList: true,\n kind: referenceForModel(RouteModel),\n namespace,\n optional: true,\n },\n };\n return knativeResource;\n};\n\nexport const knativeServingResourcesServicesWatchers = (\n namespace: string,\n): WatchK8sResources => {\n const knativeResource = {\n ksservices: {\n isList: true,\n kind: referenceForModel(ServiceModel),\n namespace,\n optional: true,\n },\n };\n return knativeResource;\n};\n\nexport const knativeEventingResourcesSubscriptionWatchers = (\n namespace: string,\n): WatchK8sResources => {\n const knativeResource = {\n eventingsubscription: {\n isList: true,\n kind: referenceForModel(EventingSubscriptionModel),\n namespace,\n optional: true,\n },\n };\n return knativeResource;\n};\n\nexport const knativeEventingBrokerResourceWatchers = (namespace: string) => {\n return {\n [EventingBrokerModel.plural]: {\n isList: true,\n kind: referenceForModel(EventingBrokerModel),\n namespace,\n optional: true,\n },\n };\n};\n\nexport const knativeEventingTriggerResourceWatchers = (namespace: string) => {\n return {\n [EventingTriggerModel.plural]: {\n isList: true,\n kind: referenceForModel(EventingTriggerModel),\n namespace,\n optional: true,\n },\n };\n};\n\nexport const knativeCamelIntegrationsResourceWatchers = (\n namespace: string,\n): WatchK8sResources => {\n return {\n [CamelIntegrationModel.plural]: {\n isList: true,\n kind: referenceForModel(CamelIntegrationModel),\n namespace,\n optional: true,\n },\n };\n};\n\nexport const knativeCamelKameletResourceWatchers = (namespace: string) => {\n return {\n [CamelKameletModel.plural]: {\n isList: true,\n kind: referenceForModel(CamelKameletModel),\n namespace,\n optional: true,\n },\n kameletGlobalNS: {\n isList: true,\n kind: referenceForModel(CamelKameletModel),\n namespace: GLOBAL_OPERATOR_NS,\n optional: true,\n },\n };\n};\n\nexport const kafkaBootStrapServerResourcesWatcher = (namespace: string): WatchK8sResources => {\n return {\n [KafkaModel.plural]: {\n isList: true,\n kind: referenceForModel(KafkaModel),\n optional: true,\n },\n [KafkaConnectionModel.plural]: {\n isList: true,\n kind: referenceForModel(KafkaConnectionModel),\n namespace,\n optional: true,\n },\n };\n};\n\nexport const kafkaTopicsResourcesWatcher = (): WatchK8sResources => {\n return {\n [KafkaTopicModel.plural]: {\n isList: true,\n kind: referenceForModel(KafkaTopicModel),\n optional: true,\n },\n };\n};\n\nexport const knativeCamelKameletBindingResourceWatchers = (\n namespace: string,\n): WatchK8sResources => {\n return {\n [CamelKameletBindingModel.plural]: {\n isList: true,\n kind: referenceForModel(CamelKameletBindingModel),\n namespace,\n optional: true,\n },\n };\n};\n\nexport const knativeCamelDomainMappingResourceWatchers = (\n namespace: string,\n): WatchK8sResources<{ [key: string]: K8sResourceKind[] }> => {\n return {\n [DomainMappingModel.plural]: {\n isList: true,\n kind: referenceForModel(DomainMappingModel),\n namespace,\n optional: true,\n },\n };\n};\n\nexport const getTrafficByRevision = (revName: string, service: K8sResourceKind) => {\n if (!service?.status?.traffic?.length) {\n return {};\n }\n const trafficPercent = service.status.traffic\n .filter((t: Traffic) => t.revisionName === revName)\n .reduce(\n (acc, tr: Traffic) => {\n acc.percent += tr.percent ? tr.percent : 0;\n if (tr.url) {\n acc.urls.push(tr.url);\n }\n return acc;\n },\n { urls: [], percent: 0 },\n );\n return {\n ...trafficPercent,\n percent: trafficPercent.percent ? `${trafficPercent.percent}%` : null,\n };\n};\n\nexport const getSinkableResources = (namespace: string): FirehoseResource[] => {\n return namespace\n ? [\n ...k8sServices(namespace),\n ...knativeServingResourcesServices(namespace),\n ...knativeKafkaSinks(namespace),\n ]\n : [];\n};\n\nexport const getKnativeServingResources = (namespace: string) => {\n return {\n ...knativeServingResourcesRevisionWatchers(namespace),\n ...knativeServingResourcesConfigurationsWatchers(namespace),\n ...knativeServingResourcesRoutesWatchers(namespace),\n ...knativeServingResourcesServicesWatchers(namespace),\n ...knativeCamelDomainMappingResourceWatchers(namespace),\n };\n};\n\nexport const getKnativeEventingResources = (namespace: string) => {\n return {\n ...knativeEventingResourcesSubscriptionWatchers(namespace),\n ...getDynamicEventSourcesWatchers(namespace),\n ...getDynamicEventingChannelWatchers(namespace),\n ...knativeEventingBrokerResourceWatchers(namespace),\n ...knativeEventingTriggerResourceWatchers(namespace),\n };\n};\n\nexport const getKnativeEventingKameletsResources = (namespace: string) => {\n return {\n ...knativeCamelIntegrationsResourceWatchers(namespace),\n ...knativeCamelKameletBindingResourceWatchers(namespace),\n ...knativeCamelDomainMappingResourceWatchers(namespace),\n ...knativeCamelKameletResourceWatchers(namespace),\n };\n};\n","import * as React from 'react';\nimport { Link } from 'react-router-dom-v5-compat';\nimport * as classNames from 'classnames';\nimport * as _ from 'lodash-es';\nimport { Label as PfLabel, LabelGroup as PfLabelGroup } from '@patternfly/react-core';\n\n/* eslint-disable import/named */\nimport { withTranslation, WithTranslation } from 'react-i18next';\n/* eslint-enable import/named */\nimport { K8sResourceKindReference, kindForReference } from '../../module/k8s';\n\nexport const Label: React.SFC = ({ kind, name, value, expand }) => {\n const href = `/search?kind=${kind}&q=${value ? encodeURIComponent(`${name}=${value}`) : name}`;\n const kindOf = `co-m-${kindForReference(kind.toLowerCase())}`;\n const klass = classNames(kindOf, { 'co-m-expand': expand }, 'co-label');\n\n return (\n <>\n \n \n \n {name}\n \n {value && =}\n {value && {value}}\n \n \n \n );\n};\n\nclass TranslatedLabelList extends React.Component {\n shouldComponentUpdate(nextProps) {\n return !_.isEqual(nextProps, this.props);\n }\n\n render() {\n const { labels, kind, t, expand = true } = this.props;\n const list = _.map(labels, (label, key) => (\n
    \n );\n};\n","export * from './node-maintenance';\nexport * from './baremetal-hosts';\n","import * as React from 'react';\nimport { Helmet } from 'react-helmet';\nimport * as classNames from 'classnames';\nimport * as _ from 'lodash-es';\n/* eslint-disable import/named */\nimport { useTranslation, withTranslation, WithTranslation } from 'react-i18next';\nimport { TFunction } from 'i18next';\nimport { Link, Routes, Route, useParams, Navigate, useLocation } from 'react-router-dom-v5-compat';\nimport {\n HorizontalNavTab as DynamicResourceNavTab,\n isHorizontalNavTab as DynamicIsResourceNavTab,\n NavTab as DynamicNavTab,\n isTab as DynamicIsNavTab,\n} from '@console/dynamic-plugin-sdk/src/extensions/horizontal-nav-tabs';\nimport { ExtensionK8sGroupModel } from '@console/dynamic-plugin-sdk/src/api/common-types';\nimport { PageTitleContext } from '@console/shared/src/components/pagetitle/PageTitleContext';\nimport { ErrorBoundaryPage } from '@console/shared/src/components/error';\nimport { K8sResourceKind, K8sResourceCommon } from '../../module/k8s';\nimport { referenceForModel, referenceFor, referenceForExtensionModel } from '../../module/k8s/k8s';\nimport { PodsPage } from '../pod';\nimport { AsyncComponent } from './async';\nimport { ResourceMetricsDashboard } from './resource-metrics';\nimport { EmptyBox, LoadingBox, StatusBox } from './status-box';\nimport {\n HorizontalNavProps as HorizontalNavFacadeProps,\n NavPage,\n} from '@console/dynamic-plugin-sdk/src/extensions/console-types';\nimport { useExtensions, HorizontalNavTab, isHorizontalNavTab } from '@console/plugin-sdk/src';\n\nconst removeLeadingSlash = (str: string | undefined) => str?.replace(/^\\//, '') || '';\n\nexport const editYamlComponent = (props) => (\n import('../edit-yaml').then((c) => c.EditYAML)} obj={props.obj} />\n);\nexport const viewYamlComponent = (props) => (\n import('../edit-yaml').then((c) => c.EditYAML)}\n obj={props.obj}\n readOnly={true}\n />\n);\n\nclass PodsComponentWithTranslation extends React.PureComponent<\n PodsComponentProps & WithTranslation\n> {\n render() {\n const {\n metadata: { namespace },\n spec: { selector },\n } = this.props.obj;\n const { showNodes, t } = this.props;\n if (_.isEmpty(selector)) {\n return ;\n }\n\n // Hide the create button to avoid confusion when showing pods for an object.\n // Otherwise it might seem like you click \"Create Pod\" to add replicas instead\n // of scaling the owner.\n return (\n \n );\n }\n}\n\nexport const PodsComponent = withTranslation()(PodsComponentWithTranslation);\n\ntype NavFactory = { [name: string]: (c?: React.ComponentType) => Page };\nexport const navFactory: NavFactory = {\n details: (component) => ({\n href: '',\n // t('public~Details')\n nameKey: 'public~Details',\n component,\n }),\n events: (component) => ({\n href: 'events',\n // t('public~Events')\n nameKey: 'public~Events',\n component,\n }),\n logs: (component) => ({\n href: 'logs',\n // t('public~Logs')\n nameKey: 'public~Logs',\n component,\n }),\n editYaml: (component) => ({\n href: 'yaml',\n // t('public~YAML')\n nameKey: 'public~YAML',\n component: component || editYamlComponent,\n }),\n pods: (component) => ({\n href: 'pods',\n // t('public~Pods')\n nameKey: 'public~Pods',\n component: component || PodsComponent,\n }),\n jobs: (component) => ({\n href: 'jobs',\n // t('public~Jobs')\n nameKey: 'public~Jobs',\n component,\n }),\n roles: (component) => ({\n href: 'roles',\n // t('public~RoleBindings')\n nameKey: 'public~RoleBindings',\n component,\n }),\n builds: (component) => ({\n href: 'builds',\n // t('public~Builds')\n nameKey: 'public~Builds',\n component,\n }),\n envEditor: (component) => ({\n href: 'environment',\n // t('public~Environment')\n nameKey: 'public~Environment',\n component,\n }),\n clusterOperators: (component) => ({\n href: 'clusteroperators',\n // t('public~Cluster Operators')\n nameKey: 'public~Cluster Operators',\n component,\n }),\n machineConfigs: (component) => ({\n href: 'machineconfigs',\n // t('public~MachineConfigs')\n nameKey: 'public~MachineConfigs',\n component,\n }),\n machines: (component) => ({\n href: 'machines',\n // t('public~Machines')\n nameKey: 'public~Machines',\n component,\n }),\n workloads: (component) => ({\n href: 'workloads',\n // t('public~Workloads')\n nameKey: 'public~Workloads',\n component,\n }),\n history: (component) => ({\n href: 'history',\n // t('public~History')\n nameKey: 'public~History',\n component,\n }),\n metrics: (component) => ({\n href: 'metrics',\n // t('public~Metrics')\n nameKey: 'public~Metrics',\n component: component ?? ResourceMetricsDashboard,\n }),\n terminal: (component) => ({\n href: 'terminal',\n // t('public~Terminal')\n nameKey: 'public~Terminal',\n component,\n }),\n};\n\nexport const NavBar: React.FC = ({ pages }) => {\n const { t } = useTranslation();\n const { telemetryPrefix, titlePrefix } = React.useContext(PageTitleContext);\n const location = useLocation();\n\n const sliced = location.pathname.split('/');\n const lastElement = sliced.pop();\n const defaultPage =\n pages.filter((p) => {\n return p.href === lastElement;\n }).length === 0;\n const baseURL = defaultPage ? location.pathname : sliced.join('/');\n\n const tabs = (\n <>\n {pages.map(({ name, nameKey, href }) => {\n const isURLMatch = defaultPage ? href === '' : lastElement === href;\n\n const klass = classNames('co-m-horizontal-nav__menu-item', {\n 'co-m-horizontal-nav-item--active': isURLMatch,\n });\n return (\n
  • \n \n {nameKey ? t(nameKey) : name}\n \n
  • \n );\n })}\n \n );\n\n const activePage = pages.find(({ href }) => {\n return defaultPage ? href === '' : lastElement === href;\n });\n\n const labelId = activePage?.nameKey?.split('~')[1] || activePage?.name || 'Details';\n return (\n <>\n \n \n {titlePrefix\n ? `${titlePrefix} ยท ${activePage?.nameKey ? t(activePage.nameKey) : activePage?.name}`\n : `${activePage?.nameKey ? t(activePage.nameKey) : activePage?.name}`}\n \n \n
      {tabs}
    \n \n );\n};\nNavBar.displayName = 'NavBar';\n\nexport const HorizontalNav = React.memo((props: HorizontalNavProps) => {\n const params = useParams();\n\n const renderContent = (routes: JSX.Element[]) => {\n const { noStatusBox, obj, EmptyMsg, label } = props;\n const content = (\n }>\n {routes}\n \n );\n\n const skeletonDetails = (\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n\n if (noStatusBox) {\n return content;\n }\n\n return (\n \n {content}\n \n );\n };\n\n const componentProps = {\n ..._.pick(props, ['filters', 'selected', 'loaded']),\n obj: _.get(props.obj, 'data'),\n };\n const extraResources = _.reduce(\n props.resourceKeys,\n (extraObjs, key) => ({ ...extraObjs, [key]: _.get(props[key], 'data') }),\n {},\n );\n\n const objReference = props.obj?.data ? referenceFor(props.obj.data) : '';\n const contextId = props.contextId;\n const dynamicResourceNavTabExtensions = useExtensions(\n DynamicIsResourceNavTab,\n );\n const dynamicTabExtensions = useExtensions(DynamicIsNavTab);\n const navTabExtensions = useExtensions(isHorizontalNavTab);\n\n const pluginPages = React.useMemo(\n () =>\n navTabExtensions\n .filter((tab) => referenceForModel(tab.properties.model) === objReference)\n .map((tab) => ({\n ...tab.properties.page,\n component: (pageProps: PageComponentProps) => (\n \n ),\n })),\n [navTabExtensions, objReference],\n );\n\n const dynamicPluginPages = React.useMemo(() => {\n const resolvedResourceNavTab = dynamicResourceNavTabExtensions\n .filter(\n (tab) =>\n referenceForExtensionModel(tab.properties.model as ExtensionK8sGroupModel) ===\n objReference,\n )\n .map((tab) => ({\n ...tab.properties.page,\n component: (pageProps: PageComponentProps) => (\n \n ),\n }));\n\n const resolvedNavTab = dynamicTabExtensions\n .filter((tab) => tab.properties.contextId === contextId)\n .map((tab) => ({\n name: tab.properties.name,\n href: tab.properties.href,\n component: (pageProps: PageComponentProps) => (\n \n ),\n }));\n\n return [...resolvedResourceNavTab, ...resolvedNavTab].sort((a, b) =>\n a.name.localeCompare(b.name),\n );\n }, [dynamicResourceNavTabExtensions, dynamicTabExtensions, objReference, contextId]);\n\n const pages: Page[] = [\n ...(props.pages || props.pagesFor(props.obj?.data)),\n ...pluginPages,\n ...dynamicPluginPages,\n ];\n\n const routes = pages.map((p) => {\n return (\n \n \n \n }\n />\n );\n });\n\n // Handle cases where matching Routes do not exist and show the details page instead of a blank page\n if (props.createRedirect && routes.length >= 1) {\n routes.push(\n } />,\n );\n }\n\n return (\n
    \n
    {!props.hideNav && }
    \n {renderContent(routes)}\n
    \n );\n}, _.isEqual);\n\n/*\n * Component consumed by the dynamic plugin SDK\n * Changes to the underlying component has to support props used in this facade\n */\nexport const HorizontalNavFacade: React.FC = ({ resource, pages }) => {\n const obj = { data: resource, loaded: true };\n\n return ;\n};\n\nexport type PodsComponentProps = {\n obj: K8sResourceKind;\n showNodes?: boolean;\n t: TFunction;\n};\n\nexport type PageComponentProps = {\n filters?: any;\n selected?: any;\n match?: any;\n obj?: R;\n params?: any;\n customData?: any;\n showTitle?: boolean;\n fieldSelector?: string;\n};\n\nexport type Page = Partial> & {\n component?: React.ComponentType;\n badge?: React.ReactNode;\n pageData?: D;\n nameKey?: string;\n};\n\nexport type NavBarProps = {\n pages: Page[];\n baseURL?: string;\n basePath?: string;\n};\n\nexport type HorizontalNavProps = Omit & {\n /* The facade support a limited set of properties for pages */\n className?: string;\n createRedirect?: boolean;\n contextId?: string;\n pages: Page[];\n label?: string;\n obj?: { data: K8sResourceCommon; loaded: boolean };\n pagesFor?: (obj: K8sResourceKind) => Page[];\n resourceKeys?: string[];\n hideNav?: boolean;\n EmptyMsg?: React.ComponentType;\n customData?: any;\n noStatusBox?: boolean;\n};\n\nHorizontalNav.displayName = 'HorizontalNav';\nHorizontalNavFacade.displayName = 'HorizontalNavFacade';\n","import * as React from 'react';\nimport { Accordion, Button } from '@patternfly/react-core';\nimport { PauseIcon } from '@patternfly/react-icons/dist/esm/icons/pause-icon';\nimport { PlayIcon } from '@patternfly/react-icons/dist/esm/icons/play-icon';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom-v5-compat';\nimport {\n ActivityBodyProps,\n OngoingActivityBodyProps,\n RecentEventsBodyProps,\n} from '@console/dynamic-plugin-sdk/src/api/internal-types';\nimport { ErrorLoadingEvents, sortEvents } from '@console/internal/components/events';\nimport { AsyncComponent } from '@console/internal/components/utils/async';\nimport { Timestamp } from '@console/internal/components/utils/timestamp';\nimport { EventKind } from '@console/internal/module/k8s';\nimport { ErrorBoundaryInline } from '@console/shared/src/components/error';\nimport EventItem from './EventItem';\n\nimport './activity-card.scss';\n\nexport const Activity: React.FC = ({ timestamp, children }) => {\n const { t } = useTranslation();\n return (\n
    \n {timestamp && (\n \n {t('console-shared~Started')}{' '}\n \n \n \n \n )}\n {children}\n
    \n );\n};\n\nexport const RecentEventsBodyContent: React.FC = ({\n events,\n filter,\n paused,\n setPaused,\n moreLink,\n}) => {\n const { t } = useTranslation();\n const ref = React.useRef([]);\n React.useEffect(() => {\n if (paused && events) {\n ref.current = events.data;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [paused]);\n if (!paused && events) {\n ref.current = events.data;\n }\n const eventsData = ref.current;\n const [expanded, setExpanded] = React.useState([]);\n const onToggle = React.useCallback(\n (uid: string) => {\n const isExpanded = expanded.includes(uid);\n const newExpanded = isExpanded ? expanded.filter((e) => e !== uid) : [...expanded, uid];\n setPaused(isExpanded ? !!newExpanded.length : !isExpanded);\n setExpanded(newExpanded);\n },\n [expanded, setPaused],\n );\n const isExpanded = React.useCallback(\n (uid: string) => {\n return expanded.includes(uid);\n },\n [expanded],\n );\n\n if (events && events.loadError) {\n return ;\n }\n if (!(events && events.loaded)) {\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n\n const filteredEvents = filter ? eventsData.filter(filter) : eventsData;\n const sortedEvents: EventKind[] = sortEvents(filteredEvents);\n const lastEvents = sortedEvents.slice(0, 50);\n if (sortedEvents.length === 0) {\n return (\n \n
    {t('console-shared~There are no recent events.')}
    \n
    \n );\n }\n return (\n <>\n \n {lastEvents.map((e) => (\n \n ))}\n \n {sortedEvents.length > 50 && !!moreLink && (\n \n {t('console-shared~View all events')}\n \n )}\n \n );\n};\n\nexport const PauseButton: React.FC = ({ paused, togglePause }) => {\n const { t } = useTranslation();\n return (\n : }\n data-test-id=\"events-pause-button\"\n data-test=\"events-pause-button\"\n >\n {paused ? t('console-shared~Resume') : t('console-shared~Pause')}\n \n );\n};\n\nexport const RecentEventsBody: React.FC = (props) => {\n const { t } = useTranslation();\n const [paused, setPaused] = React.useState(false);\n const togglePause = React.useCallback(() => setPaused(!paused), [paused]);\n return (\n <>\n
    \n {t('console-shared~Recent events')}\n \n
    \n \n \n );\n};\n\nexport const OngoingActivityBody: React.FC = ({\n loaded,\n resourceActivities = [],\n prometheusActivities = [],\n}) => {\n const { t } = useTranslation();\n const activitiesLoaded =\n loaded || resourceActivities.length > 0 || prometheusActivities.length > 0;\n let body: React.ReactNode;\n if (!activitiesLoaded) {\n body = (\n
    \n
    \n
    \n );\n } else {\n const allActivities = prometheusActivities.map(\n ({ results, loader, component: Component }, idx) => (\n // eslint-disable-next-line react/no-array-index-key\n \n \n {loader ? (\n \n ) : (\n \n )}\n \n \n ),\n );\n resourceActivities\n .sort((a, b) => +b.timestamp - +a.timestamp)\n .forEach(({ resource, timestamp, loader, component: Component }) =>\n allActivities.push(\n \n \n {loader ? (\n \n ) : (\n \n )}\n \n ,\n ),\n );\n body = allActivities.length ? (\n allActivities\n ) : (\n \n
    {t('console-shared~There are no ongoing activities.')}
    \n
    \n );\n }\n return (\n <>\n
    \n {t('console-shared~Ongoing')}\n
    \n
    {body}
    \n \n );\n};\n\nconst ActivityBody: React.FC = ({ children, className }) => (\n
    \n {children}\n
    \n);\n\nexport default ActivityBody;\n\ntype RecentEventsBodyContentProps = RecentEventsBodyProps & {\n paused?: boolean;\n setPaused?: (paused: boolean) => void;\n};\n\ntype ActivityProps = {\n timestamp?: Date;\n children: React.ReactNode;\n};\n\ntype PauseButtonProps = {\n paused: boolean;\n togglePause: () => void;\n};\n","export * from './helm';\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport * as _ from 'lodash-es';\nimport * as classNames from 'classnames';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport { DRAGGABLE_TYPE } from './draggable-item-types';\nimport { Button, Tooltip } from '@patternfly/react-core';\nimport { GripVerticalIcon } from '@patternfly/react-icons/dist/esm/icons/grip-vertical-icon';\nimport { MinusCircleIcon } from '@patternfly/react-icons/dist/esm/icons/minus-circle-icon';\nimport { PlusCircleIcon } from '@patternfly/react-icons/dist/esm/icons/plus-circle-icon';\n\nimport { withTranslation } from 'react-i18next';\n\nimport { NameValueEditorPair, EnvFromPair, EnvType } from './index';\nimport { ValueFromPair } from './value-from-pair';\nimport withDragDropContext from './drag-drop-context';\n\nconst NameValueEditor_ = withDragDropContext(\n class NameValueEditor extends React.Component {\n constructor(props) {\n super(props);\n this._append = this._append.bind(this);\n this._appendConfigMapOrSecret = this._appendConfigMapOrSecret.bind(this);\n this._change = this._change.bind(this);\n this._move = this._move.bind(this);\n this._remove = this._remove.bind(this);\n }\n\n _append() {\n const { updateParentData, nameValuePairs, nameValueId } = this.props;\n\n updateParentData(\n { nameValuePairs: nameValuePairs.concat([['', '', nameValuePairs.length]]) },\n nameValueId,\n );\n }\n\n _appendConfigMapOrSecret() {\n const { updateParentData, nameValuePairs, nameValueId } = this.props;\n const configMapSecretKeyRef = { name: '', key: '' };\n updateParentData(\n {\n nameValuePairs: nameValuePairs.concat([\n ['', { configMapSecretKeyRef }, nameValuePairs.length],\n ]),\n },\n nameValueId,\n );\n }\n\n _remove(i) {\n const { updateParentData, nameValueId, onLastItemRemoved } = this.props;\n const nameValuePairs = _.cloneDeep(this.props.nameValuePairs);\n nameValuePairs.splice(i, 1);\n nameValuePairs.forEach((values, index) => (values[2] = index)); // update the indices in order.\n\n updateParentData(\n { nameValuePairs: nameValuePairs.length ? nameValuePairs : [['', '', 0]] },\n nameValueId,\n );\n\n if (nameValuePairs.length === 0 && !!onLastItemRemoved) {\n onLastItemRemoved();\n }\n }\n\n _change(e, i, type) {\n const { updateParentData, nameValueId } = this.props;\n const nameValuePairs = _.cloneDeep(this.props.nameValuePairs);\n\n nameValuePairs[i][\n type === NameValueEditorPair.Name ? NameValueEditorPair.Name : NameValueEditorPair.Value\n ] = e.target.value;\n updateParentData({ nameValuePairs }, nameValueId);\n }\n\n _move(dragIndex, hoverIndex) {\n const { updateParentData, nameValueId } = this.props;\n const nameValuePairs = _.cloneDeep(this.props.nameValuePairs);\n const movedPair = nameValuePairs[dragIndex];\n\n nameValuePairs[dragIndex] = nameValuePairs[hoverIndex];\n nameValuePairs[hoverIndex] = movedPair;\n updateParentData({ nameValuePairs }, nameValueId);\n }\n\n render() {\n const {\n addString,\n nameValuePairs,\n allowSorting,\n readOnly,\n nameValueId,\n configMaps,\n secrets,\n addConfigMapSecret,\n toolTip,\n t,\n onLastItemRemoved,\n } = this.props;\n const nameString = this.props.nameString || t('public~Key');\n const valueString = this.props.valueString || t('public~Value');\n const pairElems = nameValuePairs.map((pair, i) => {\n const key = _.get(pair, [NameValueEditorPair.Index], i);\n const isEmpty = nameValuePairs.length === 1 && nameValuePairs[0].every((value) => !value);\n return (\n \n );\n });\n return (\n <>\n
    \n {!readOnly && allowSorting &&
    }\n
    {nameString}
    \n
    {valueString}
    \n
    \n
    \n {pairElems}\n
    \n
    \n {readOnly ? null : (\n
    \n \n \n {addString ? addString : t('public~Add more')}\n \n {addConfigMapSecret && (\n <>\n \n \n {t('public~Add from ConfigMap or Secret')}\n \n \n )}\n
    \n )}\n
    \n
    \n \n );\n }\n },\n);\n\nexport const NameValueEditor = withTranslation()(NameValueEditor_);\n\nNameValueEditor.propTypes = {\n nameString: PropTypes.string,\n valueString: PropTypes.string,\n addString: PropTypes.string,\n allowSorting: PropTypes.bool,\n readOnly: PropTypes.bool,\n nameValueId: PropTypes.number,\n nameValuePairs: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object])),\n PropTypes.arrayOf(\n PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.number]),\n ),\n ]),\n ).isRequired,\n updateParentData: PropTypes.func.isRequired,\n configMaps: PropTypes.object,\n secrets: PropTypes.object,\n addConfigMapSecret: PropTypes.bool,\n toolTip: PropTypes.string,\n onLastItemRemoved: PropTypes.func,\n};\nNameValueEditor.defaultProps = {\n allowSorting: false,\n readOnly: false,\n nameValueId: 0,\n addConfigMapSecret: false,\n};\n\nNameValueEditor.displayName = 'Name Value Editor';\n\nconst EnvFromEditor_ = withDragDropContext(\n class EnvFromEditor extends React.Component {\n constructor(props) {\n super(props);\n this._append = this._append.bind(this);\n this._change = this._change.bind(this);\n this._move = this._move.bind(this);\n this._remove = this._remove.bind(this);\n }\n\n _append() {\n const { updateParentData, nameValuePairs, nameValueId } = this.props;\n const configMapSecretRef = { name: '', key: '' };\n updateParentData(\n {\n nameValuePairs: nameValuePairs.concat([\n ['', { configMapSecretRef }, nameValuePairs.length],\n ]),\n },\n nameValueId,\n EnvType.ENV_FROM,\n );\n }\n\n _remove(i) {\n const { updateParentData, nameValueId } = this.props;\n const nameValuePairs = _.cloneDeep(this.props.nameValuePairs);\n nameValuePairs.splice(i, 1);\n const configMapSecretRef = { name: '', key: '' };\n\n updateParentData(\n { nameValuePairs: nameValuePairs.length ? nameValuePairs : [['', { configMapSecretRef }]] },\n nameValueId,\n EnvType.ENV_FROM,\n );\n }\n\n _change(e, i, type) {\n const { updateParentData, nameValueId } = this.props;\n const nameValuePairs = _.cloneDeep(this.props.nameValuePairs);\n nameValuePairs[i][type === EnvFromPair.Prefix ? EnvFromPair.Prefix : EnvFromPair.Resource] =\n e.target.value;\n updateParentData({ nameValuePairs }, nameValueId, EnvType.ENV_FROM);\n }\n\n _move(dragIndex, hoverIndex) {\n const { updateParentData, nameValueId } = this.props;\n const nameValuePairs = _.cloneDeep(this.props.nameValuePairs);\n const movedPair = nameValuePairs[dragIndex];\n\n nameValuePairs[dragIndex] = nameValuePairs[hoverIndex];\n nameValuePairs[hoverIndex] = movedPair;\n updateParentData({ nameValuePairs }, nameValueId, EnvType.ENV_FROM);\n }\n\n render() {\n const {\n nameValuePairs,\n readOnly,\n nameValueId,\n configMaps,\n secrets,\n serviceAccounts,\n firstTitle,\n secondTitle,\n addButtonDisabled,\n addButtonLabel,\n t,\n } = this.props;\n const pairElems = nameValuePairs.map((pair, i) => {\n const key = _.get(pair, [EnvFromPair.Index], i);\n\n return (\n \n );\n });\n\n return (\n <>\n
    \n {!readOnly &&
    }\n
    \n {firstTitle || t('public~ConfigMap/Secret')}\n
    \n
    \n {secondTitle || t('public~Prefix (optional)')}\n
    \n
    \n
    \n {pairElems}\n
    \n
    \n {!readOnly && (\n \n {' '}\n {addButtonLabel || t('public~Add all from ConfigMap or Secret')}\n \n )}\n
    \n
    \n \n );\n }\n },\n);\nexport const EnvFromEditor = withTranslation()(EnvFromEditor_);\nEnvFromEditor.propTypes = {\n readOnly: PropTypes.bool,\n nameValueId: PropTypes.number,\n nameValuePairs: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object])),\n PropTypes.arrayOf(\n PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.number]),\n ),\n ]),\n ).isRequired,\n updateParentData: PropTypes.func.isRequired,\n configMaps: PropTypes.object,\n secrets: PropTypes.object,\n serviceAccounts: PropTypes.object,\n firstTitle: PropTypes.string,\n secondTitle: PropTypes.string,\n addButtonDisabled: PropTypes.bool,\n};\nEnvFromEditor.defaultProps = {\n readOnly: false,\n nameValueId: 0,\n addButtonDisabled: false,\n};\nconst pairSource = {\n beginDrag(props) {\n return {\n index: props.index,\n rowSourceId: props.rowSourceId,\n };\n },\n};\nconst itemTarget = {\n hover(props, monitor, component) {\n const dragIndex = monitor.getItem().index;\n const hoverIndex = props.index;\n // Don't replace items with themselves or with other row groupings on the page\n if (dragIndex === hoverIndex || monitor.getItem().rowSourceId !== props.rowSourceId) {\n return;\n }\n // Determine rectangle on screen\n const hoverBoundingRect = component.node.getBoundingClientRect();\n // Get vertical middle\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n\n // Determine mouse position\n const clientOffset = monitor.getClientOffset();\n\n // Get pixels to the top\n const hoverClientY = clientOffset.y - hoverBoundingRect.top;\n\n // Only perform the move when the mouse has crossed half of the items height\n // When dragging downwards, only move when the cursor is below 50%\n // When dragging upwards, only move when the cursor is above 50%\n\n // Dragging downwards\n if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n\n // Time to actually perform the action\n props.onMove(dragIndex, hoverIndex);\n\n // Note: we're mutating the monitor item here!\n // Generally it's better to avoid mutations,\n // but it's good here for the sake of performance\n // to avoid expensive index searches.\n monitor.getItem().index = hoverIndex;\n },\n};\n\nconst collectSourcePair = (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n});\n\nconst collectTargetPair = (connect) => ({\n connectDropTarget: connect.dropTarget(),\n});\n\nconst PairElement_ = DragSource(\n DRAGGABLE_TYPE.ENV_ROW,\n pairSource,\n collectSourcePair,\n)(\n DropTarget(\n DRAGGABLE_TYPE.ENV_ROW,\n itemTarget,\n collectTargetPair,\n )(\n class PairElement extends React.Component {\n constructor(props) {\n super(props);\n\n this._onRemove = this._onRemove.bind(this);\n this._onChangeName = this._onChangeName.bind(this);\n this._onChangeValue = this._onChangeValue.bind(this);\n }\n\n _onRemove() {\n const { index, onRemove } = this.props;\n onRemove(index);\n }\n\n _onChangeName(e) {\n const { index, onChange } = this.props;\n onChange(e, index, NameValueEditorPair.Name);\n }\n\n _onChangeValue(e) {\n const { index, onChange } = this.props;\n onChange(e, index, NameValueEditorPair.Value);\n }\n\n render() {\n const {\n isDragging,\n connectDragSource,\n connectDragPreview,\n connectDropTarget,\n nameString,\n allowSorting,\n readOnly,\n pair,\n configMaps,\n secrets,\n isEmpty,\n disableReorder,\n toolTip,\n t,\n valueString,\n alwaysAllowRemove,\n } = this.props;\n const deleteIcon = (\n <>\n \n {t('public~Delete')}\n \n );\n const dragButton = (\n
    \n \n \n \n
    \n );\n return connectDropTarget(\n connectDragPreview(\n (this.node = node)}\n >\n {allowSorting && !readOnly && (\n
    \n {disableReorder ? dragButton : connectDragSource(dragButton)}\n
    \n )}\n
    \n \n
    \n {_.isPlainObject(pair[NameValueEditorPair.Value]) ? (\n
    \n \n
    \n ) : (\n
    \n \n
    \n )}\n {!readOnly && (\n
    \n \n \n {deleteIcon}\n \n \n
    \n )}\n
    ,\n ),\n );\n }\n },\n ),\n);\nconst PairElement = withTranslation()(PairElement_);\nPairElement.propTypes = {\n nameString: PropTypes.string,\n valueString: PropTypes.string,\n readOnly: PropTypes.bool,\n index: PropTypes.number.isRequired,\n pair: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object])),\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.number])),\n ]),\n allowSorting: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func,\n connectDropTarget: PropTypes.func,\n isDragging: PropTypes.bool,\n onMove: PropTypes.func.isRequired,\n rowSourceId: PropTypes.number.isRequired,\n configMaps: PropTypes.object,\n secrets: PropTypes.object,\n toolTip: PropTypes.string,\n alwaysAllowRemove: PropTypes.bool,\n};\nconst EnvFromPairElement_ = DragSource(\n DRAGGABLE_TYPE.ENV_FROM_ROW,\n pairSource,\n collectSourcePair,\n)(\n DropTarget(\n DRAGGABLE_TYPE.ENV_FROM_ROW,\n itemTarget,\n collectTargetPair,\n )(\n class EnvFromPairElement extends React.Component {\n constructor(props) {\n super(props);\n this._onRemove = this._onRemove.bind(this);\n this._onChangePrefix = this._onChangePrefix.bind(this);\n this._onChangeResource = this._onChangeResource.bind(this);\n }\n _onRemove() {\n const { index, onRemove } = this.props;\n onRemove(index);\n }\n _onChangePrefix(e) {\n const { index, onChange } = this.props;\n onChange(e, index, EnvFromPair.Prefix);\n }\n _onChangeResource(e) {\n const { index, onChange } = this.props;\n onChange(e, index, EnvFromPair.Resource);\n }\n render() {\n const {\n isDragging,\n connectDragSource,\n connectDragPreview,\n connectDropTarget,\n valueString,\n readOnly,\n pair,\n configMaps,\n secrets,\n serviceAccounts,\n t,\n } = this.props;\n const deleteButton = (\n <>\n \n {t('public~Delete')}\n \n );\n return connectDropTarget(\n connectDragPreview(\n (this.node = node)}\n >\n {!readOnly &&\n connectDragSource(\n
    \n \n \n \n
    ,\n )}\n
    \n \n
    \n
    \n \n
    \n {readOnly ? null : (\n
    \n \n \n {deleteButton}\n \n \n
    \n )}\n
    ,\n ),\n );\n }\n },\n ),\n);\nconst EnvFromPairElement = withTranslation()(EnvFromPairElement_);\nEnvFromPairElement.propTypes = {\n valueString: PropTypes.string,\n readOnly: PropTypes.bool,\n index: PropTypes.number.isRequired,\n pair: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object])),\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.number])),\n ]),\n onChange: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func,\n connectDropTarget: PropTypes.func,\n isDragging: PropTypes.bool,\n onMove: PropTypes.func.isRequired,\n rowSourceId: PropTypes.number.isRequired,\n configMaps: PropTypes.object,\n secrets: PropTypes.object,\n};\n","import * as React from 'react';\nimport {\n ALL_NAMESPACES_KEY,\n COLUMN_MANAGEMENT_CONFIGMAP_KEY,\n COLUMN_MANAGEMENT_LOCAL_STORAGE_KEY,\n useActiveNamespace,\n useUserSettingsCompatibility,\n} from '@console/shared';\nimport { TableColumn } from '@console/dynamic-plugin-sdk';\n\nexport const useActiveColumns = ({\n columns,\n showNamespaceOverride,\n columnManagementID,\n}: {\n columns: TableColumn[];\n showNamespaceOverride?: boolean;\n columnManagementID?: string;\n}): [TableColumn[], boolean] => {\n const [tableColumns, , userSettingsLoaded] = useUserSettingsCompatibility(\n COLUMN_MANAGEMENT_CONFIGMAP_KEY,\n COLUMN_MANAGEMENT_LOCAL_STORAGE_KEY,\n undefined,\n true,\n );\n const [namespace] = useActiveNamespace();\n\n return React.useMemo(() => {\n const activeColumnIDs: Set =\n tableColumns?.[columnManagementID]?.length > 0\n ? new Set(tableColumns[columnManagementID])\n : new Set(\n columns.map((col) => {\n if (col.id && !col.additional) {\n return col.id;\n }\n }),\n );\n\n if (showNamespaceOverride && !activeColumnIDs.has('namespace')) {\n activeColumnIDs.add('namespace');\n }\n\n let activeColumns = columns.filter((c) => activeColumnIDs.has(c.id) || c.title === '');\n if (namespace && namespace !== ALL_NAMESPACES_KEY && !showNamespaceOverride) {\n activeColumns = activeColumns.filter((column) => column.id !== 'namespace');\n }\n return [activeColumns, userSettingsLoaded];\n }, [\n tableColumns,\n columnManagementID,\n columns,\n namespace,\n showNamespaceOverride,\n userSettingsLoaded,\n ]);\n};\n","import { K8sResourceCommon, K8sResourceCondition } from '@console/internal/module/k8s';\n\nexport type ServiceBinding = K8sResourceCommon & {\n spec: {\n application: {\n group: string;\n version: string;\n resource: string;\n name?: string;\n labelSelector?: {\n matchLabels: {\n [key: string]: string;\n };\n };\n };\n services: {\n group: string;\n version: string;\n kind: string;\n name: string;\n }[];\n bindAsFiles?: boolean;\n detectBindingResources?: boolean;\n };\n status?: {\n conditions?: K8sResourceCondition[];\n };\n};\n\n// The enum values need to match the dynamic-plugin `Status` `status` prop.\n// A translation (title) is added in the ServiceBindingStatus component.\nexport enum ComputedServiceBindingStatus {\n CONNECTED = 'Connected',\n ERROR = 'Error',\n}\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Tooltip } from '@patternfly/react-core';\nimport { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';\nimport { EndpointSliceKind } from '../module/k8s';\nimport { ConnectedIcon } from '@patternfly/react-icons/dist/esm/icons/connected-icon';\nimport { DisconnectedIcon } from '@patternfly/react-icons/dist/esm/icons/disconnected-icon';\nimport { EndPointSliceModel } from '@console/app/src/models';\nimport { LoadingInline } from '@console/internal/components/utils';\nimport Status from '@console/dynamic-plugin-sdk/src/app/components/status/Status';\n\nexport type PodTrafficProp = {\n podName: string;\n namespace: string;\n tooltipFlag?: boolean;\n};\n\nexport const PodTraffic: React.FC = ({ podName, namespace, tooltipFlag }) => {\n const { t } = useTranslation();\n const [data, loaded, loadError] = useK8sWatchResource({\n groupVersionKind: {\n kind: EndPointSliceModel.kind,\n version: EndPointSliceModel.apiVersion,\n },\n isList: true,\n namespaced: true,\n namespace,\n });\n\n if (!loaded) {\n return ;\n } else if (loaded && loadError) {\n return ;\n }\n const allEndpoints = data?.reduce((prev, next) => prev.concat(next?.endpoints), []);\n const receivingTraffic = allEndpoints?.some((endPoint) => endPoint?.targetRef?.name === podName);\n if (tooltipFlag) {\n return (\n loaded &&\n !loadError && (\n
    \n \n {receivingTraffic ? : }\n \n
    \n )\n );\n }\n return loaded && !loadError && (receivingTraffic ? : );\n};\n","import * as React from 'react';\nimport { QuickStart } from '@patternfly/quickstarts';\nimport { QuickStartsLoaderProps } from '@console/dynamic-plugin-sdk/src/api/internal-types';\nimport { useQuickStarts } from '../utils/useQuickStarts';\nimport QuickStartPermissionChecker from './QuickStartPermissionChecker';\n\nconst QuickStartsLoader: React.FC = ({ children }) => {\n const [quickStarts, quickStartsLoaded] = useQuickStarts();\n\n const [allowedQuickStarts, setAllowedQuickStarts] = React.useState([]);\n const [permissionsLoaded, setPermissionsLoaded] = React.useState(false);\n const permissionChecks = React.useRef<{ [name: string]: boolean }>({});\n\n const handlePermissionCheck = React.useCallback(\n (quickStart, hasPermission) => {\n permissionChecks.current[quickStart.metadata.name] = hasPermission;\n if (Object.keys(permissionChecks.current).length === quickStarts.length) {\n const filteredQuickStarts = quickStarts.filter(\n (quickstart) => permissionChecks.current[quickstart.metadata.name],\n );\n setAllowedQuickStarts(filteredQuickStarts);\n setPermissionsLoaded(true);\n }\n },\n [quickStarts],\n );\n\n return (\n <>\n {quickStarts.map((quickstart) => {\n return (\n \n );\n })}\n {children(\n allowedQuickStarts,\n quickStartsLoaded && (quickStarts.length === 0 || permissionsLoaded),\n )}\n \n );\n};\n\nexport default QuickStartsLoader;\n","export * from './node';\nexport * from './snapshot';\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport {\n Action,\n Alert,\n AlertSeverity,\n AlertStates,\n BlueInfoCircleIcon,\n FormatSeriesTitle,\n GreenCheckCircleIcon,\n PrometheusAlert,\n PrometheusEndpoint,\n PrometheusLabels,\n RedExclamationCircleIcon,\n ResourceStatus,\n RowFilter,\n RowProps,\n Rule,\n Silence,\n SilenceStates,\n TableColumn,\n useResolvedExtensions,\n YellowExclamationTriangleIcon,\n} from '@console/dynamic-plugin-sdk';\nimport {\n AlertingRuleChartExtension,\n AlertingRulesSourceExtension,\n isAlertingRuleChart,\n isAlertingRulesSource,\n} from '@console/dynamic-plugin-sdk/src/extensions/alerts';\nimport {\n ActionServiceProvider,\n ListPageFilter,\n ResourceLink,\n Timestamp,\n useListPageFilter,\n VirtualizedTable,\n} from '@console/dynamic-plugin-sdk/src/lib-core';\nimport { consoleFetchJSON } from '@console/dynamic-plugin-sdk/src/utils/fetch';\nimport { withFallback } from '@console/shared/src/components/error';\nimport { QueryBrowser } from '@console/shared/src/components/query-browser';\nimport { formatPrometheusDuration } from '@openshift-console/plugin-shared/src/datetime/prometheus';\nimport { useExactSearch } from '@console/app/src/components/user-preferences/search';\nimport {\n Alert as PFAlert,\n Breadcrumb,\n BreadcrumbItem,\n Button,\n Checkbox,\n CodeBlock,\n CodeBlockCode,\n Flex,\n FlexItem,\n Label,\n Modal,\n ModalVariant,\n Popover,\n Toolbar,\n ToolbarContent,\n ToolbarGroup,\n ToolbarItem,\n} from '@patternfly/react-core';\nimport {\n Dropdown as DropdownDeprecated,\n DropdownItem as DropdownItemDeprecated,\n DropdownPosition as DropdownPositionDeprecated,\n DropdownToggle as DropdownToggleDeprecated,\n KebabToggle as KebabToggleDeprecated,\n KebabToggleProps as KebabTogglePropsDeprecated,\n} from '@patternfly/react-core/deprecated';\nimport { BanIcon } from '@patternfly/react-icons/dist/esm/icons/ban-icon';\nimport { BellIcon } from '@patternfly/react-icons/dist/esm/icons/bell-icon';\nimport { BellSlashIcon } from '@patternfly/react-icons/dist/esm/icons/bell-slash-icon';\nimport { HourglassHalfIcon } from '@patternfly/react-icons/dist/esm/icons/hourglass-half-icon';\nimport { OutlinedBellIcon } from '@patternfly/react-icons/dist/esm/icons/outlined-bell-icon';\nimport { sortable } from '@patternfly/react-table';\nimport classNames from 'classnames';\nimport i18next, { TFunction } from 'i18next';\nimport * as _ from 'lodash-es';\nimport * as React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { useTranslation } from 'react-i18next';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n Routes,\n Route,\n Navigate,\n useLocation,\n useParams,\n Link,\n useNavigate,\n} from 'react-router-dom-v5-compat';\nimport {\n alertingErrored,\n alertingLoaded,\n alertingLoading,\n alertingSetRules,\n} from '../../actions/observe';\nimport {\n ContainerModel,\n DaemonSetModel,\n DeploymentModel,\n JobModel,\n NamespaceModel,\n NodeModel,\n PodModel,\n StatefulSetModel,\n} from '../../models';\nimport { RootState } from '../../redux';\nimport { getPrometheusURL } from '../graphs/helpers';\nimport { refreshNotificationPollers } from '../notification-drawer';\nimport { SectionHeading } from '../utils/headings';\nimport { ExternalLink, getURLSearchParams, LinkifyExternal } from '../utils/link';\nimport { LoadingInline, StatusBox } from '../utils/status-box';\nimport MonitoringDashboardsPage from './dashboards';\nimport { fetchAlerts } from './fetch-alerts';\nimport { useBoolean } from './hooks/useBoolean';\nimport KebabDropdown from './kebab-dropdown';\nimport { Labels } from './labels';\nimport { ToggleGraph } from './metrics';\nimport { CreateSilence, EditSilence } from './silence-form';\nimport { TargetsUI } from './targets';\nimport { Alerts, AlertSource, MonitoringResource, Silences } from './types';\nimport {\n alertDescription,\n alertingRuleStateOrder,\n AlertResource,\n alertSeverityOrder,\n alertState,\n alertURL,\n getAlertsAndRules,\n labelsToParams,\n RuleResource,\n silenceMatcherEqualitySymbol,\n SilenceResource,\n silenceState,\n} from './utils';\nimport { exactMatch, fuzzyCaseInsensitive } from '../factory/table-filters';\nimport { AlertmanagerConfig } from './alertmanager/alertmanager-config';\nimport AlertmanagerYAML from './alertmanager/alertmanager-yaml-editor';\n\nconst SelectedSilencesContext = React.createContext({\n selectedSilences: new Set(),\n setSelectedSilences: undefined,\n});\n\nconst ruleURL = (rule: Rule, namespace: string) =>\n namespace\n ? `/dev-monitoring/ns/${namespace}/alertrules/${rule?.id}`\n : `/monitoring/alertrules/${rule?.id}`;\n\nconst alertingRuleSource = (rule: Rule): AlertSource | string => {\n if (rule.sourceId === undefined || rule.sourceId === 'prometheus') {\n return rule.labels?.prometheus === 'openshift-monitoring/k8s'\n ? AlertSource.Platform\n : AlertSource.User;\n }\n\n return rule.sourceId;\n};\n\nconst alertSource = (alert: Alert): AlertSource | string => alertingRuleSource(alert.rule);\n\nconst pollers = {};\nconst pollerTimeouts = {};\n\nconst silenceAlert = (alert: Alert, navigate: any, namespace?: string) =>\n navigate(\n namespace\n ? `/dev-monitoring/ns/${namespace}/silences/~new/?${labelsToParams(alert.labels)}`\n : `/monitoring/silences/~new/?${labelsToParams(alert.labels)}`,\n );\n\nconst MonitoringResourceIcon: React.FC = ({ className, resource }) => (\n \n {resource.abbr}\n \n);\n\nconst AlertStateIcon: React.FC<{ state: string }> = React.memo(({ state }) => {\n switch (state) {\n case AlertStates.Firing:\n return ;\n case AlertStates.Pending:\n return ;\n case AlertStates.Silenced:\n return ;\n default:\n return null;\n }\n});\n\nconst getAlertStateKey = (state) => {\n switch (state) {\n case AlertStates.Firing:\n return i18next.t('public~Firing');\n case AlertStates.Pending:\n return i18next.t('public~Pending');\n case AlertStates.Silenced:\n return i18next.t('public~Silenced');\n default:\n return i18next.t('public~Not Firing');\n }\n};\n\nexport const AlertState: React.FC = React.memo(({ state }) => {\n const icon = ;\n\n return icon ? (\n <>\n {icon} {getAlertStateKey(state)}\n \n ) : null;\n});\n\nconst SilenceState = ({ silence }) => {\n const { t } = useTranslation();\n\n const state = silenceState(silence);\n const icon = {\n [SilenceStates.Active]: ,\n [SilenceStates.Pending]: ,\n [SilenceStates.Expired]: ,\n }[state];\n\n const getStateKey = (stateData) => {\n switch (stateData) {\n case SilenceStates.Active:\n return t('public~Active');\n case SilenceStates.Pending:\n return t('public~Pending');\n default:\n return t('public~Expired');\n }\n };\n\n return icon ? (\n <>\n {icon} {getStateKey(state)}\n \n ) : null;\n};\n\nexport const StateTimestamp = ({ text, timestamp }) => (\n
    \n {text} \n \n
    \n);\n\nconst AlertStateDescription: React.FC<{ alert }> = ({ alert }) => {\n const { t } = useTranslation();\n\n if (alert && !_.isEmpty(alert.silencedBy)) {\n return (\n \n );\n }\n if (alert && alert.activeAt) {\n return ;\n }\n return null;\n};\n\nconst SeverityIcon: React.FC<{ severity: string }> = React.memo(({ severity }) => {\n const Icon =\n {\n [AlertSeverity.Critical]: RedExclamationCircleIcon,\n [AlertSeverity.Info]: BlueInfoCircleIcon,\n [AlertSeverity.None]: BlueInfoCircleIcon,\n [AlertSeverity.Warning]: YellowExclamationTriangleIcon,\n }[severity] || YellowExclamationTriangleIcon;\n return ;\n});\n\nexport const Severity: React.FC<{ severity: string }> = React.memo(({ severity }) => {\n const { t } = useTranslation();\n\n const getSeverityKey = (severityData: string) => {\n switch (severityData) {\n case AlertSeverity.Critical:\n return t('public~Critical');\n case AlertSeverity.Info:\n return t('public~Info');\n case AlertSeverity.Warning:\n return t('public~Warning');\n case AlertSeverity.None:\n return t('public~None');\n default:\n return severityData;\n }\n };\n\n return _.isNil(severity) ? (\n <>-\n ) : (\n <>\n {getSeverityKey(severity)}\n \n );\n});\n\nconst SeverityBadge: React.FC<{ severity: string }> = React.memo(({ severity }) =>\n _.isNil(severity) || severity === 'none' ? null : (\n \n \n \n ),\n);\n\nconst SeverityCounts: React.FC<{ alerts: Alert[] }> = ({ alerts }) => {\n if (_.isEmpty(alerts)) {\n return <>-;\n }\n\n const counts = _.countBy(alerts, (a) => {\n const { severity } = a.labels;\n return severity === AlertSeverity.Critical || severity === AlertSeverity.Warning\n ? severity\n : AlertSeverity.Info;\n });\n\n const severities = [AlertSeverity.Critical, AlertSeverity.Warning, AlertSeverity.Info].filter(\n (s) => counts[s] > 0,\n );\n\n return (\n <>\n {severities.map((s) => (\n \n {counts[s]}\n \n ))}\n \n );\n};\n\nexport const StateCounts: React.FC<{ alerts: PrometheusAlert[] }> = ({ alerts }) => {\n const counts = _.countBy(alerts, 'state');\n const states = [AlertStates.Firing, AlertStates.Pending, AlertStates.Silenced].filter(\n (s) => counts[s] > 0,\n );\n\n return (\n <>\n {states.map((s) => (\n
    \n {counts[s]} {getAlertStateKey(s)}\n
    \n ))}\n \n );\n};\n\nconst PopoverField: React.FC<{ bodyContent: React.ReactNode; label: string }> = ({\n bodyContent,\n label,\n}) => (\n \n \n \n);\n\nconst AlertStateHelp: React.FC<{}> = () => {\n const { t } = useTranslation();\n\n return (\n
    \n
    \n {t('public~Pending: ')}\n
    \n
    \n {t(\n 'public~The alert is active but is waiting for the duration that is specified in the alerting rule before it fires.',\n )}\n
    \n
    \n {t('public~Firing: ')}\n
    \n
    \n {t(\n 'public~The alert is firing because the alert condition is true and the optional `for` duration has passed. The alert will continue to fire as long as the condition remains true.',\n )}\n
    \n
    \n {t('public~Silenced: ')}\n
    \n
    \n
    \n {t(\n 'public~The alert is now silenced for a defined time period. Silences temporarily mute alerts based on a set of label selectors that you define. Notifications will not be sent for alerts that match all the listed values or regular expressions.',\n )}\n
    \n
    \n );\n};\n\nconst SeverityHelp: React.FC<{}> = () => {\n const { t } = useTranslation();\n\n return (\n
    \n
    \n {t('public~Critical: ')}\n
    \n
    \n {t(\n 'public~The condition that triggered the alert could have a critical impact. The alert requires immediate attention when fired and is typically paged to an individual or to a critical response team.',\n )}\n
    \n
    \n {t('public~Warning: ')}\n
    \n
    \n {t(\n 'public~The alert provides a warning notification about something that might require attention in order to prevent a problem from occurring. Warnings are typically routed to a ticketing system for non-immediate review.',\n )}\n
    \n
    \n {t('public~Info: ')}\n
    \n
    {t('public~The alert is provided for informational purposes only.')}
    \n
    \n {t('public~None: ')}\n
    \n
    {t('public~The alert has no defined severity.')}
    \n
    \n {t('public~You can also create custom severity definitions for user workload alerts.')}\n
    \n
    \n );\n};\n\nconst SourceHelp: React.FC<{}> = () => {\n const { t } = useTranslation();\n\n return (\n
    \n
    \n {t('public~Platform: ')}\n
    \n
    \n {t(\n 'public~Platform-level alerts relate only to OpenShift namespaces. OpenShift namespaces provide core OpenShift functionality.',\n )}\n
    \n
    \n {t('public~User: ')}\n
    \n
    \n {t(\n 'public~User workload alerts relate to user-defined namespaces. These alerts are user-created and are customizable. User workload monitoring can be enabled post-installation to provide observability into your own services.',\n )}\n
    \n
    \n );\n};\n\ntype ActionWithHref = Omit & { cta: { href: string; external?: boolean } };\n\nconst isActionWithHref = (action: Action): action is ActionWithHref => 'href' in action.cta;\n\nconst queryBrowserURL = (query: string, namespace: string) =>\n namespace\n ? `/dev-monitoring/ns/${namespace}/metrics?query0=${encodeURIComponent(query)}`\n : `/monitoring/query-browser?query0=${encodeURIComponent(query)}`;\n\nconst Graph: React.FC = ({\n filterLabels = undefined,\n formatSeriesTitle,\n namespace,\n query,\n ruleDuration,\n}) => {\n const { t } = useTranslation();\n\n // 3 times the rule's duration, but not less than 30 minutes\n const timespan = Math.max(3 * ruleDuration, 30 * 60) * 1000;\n\n const GraphLink = () =>\n query ? (\n \n {t('public~View in Metrics')}\n \n ) : null;\n\n return (\n \n );\n};\n\nconst tableSilenceClasses = [\n 'pf-v5-c-table__action', // Checkbox\n 'pf-v5-u-w-50 pf-v5-u-w-33-on-sm', // Name\n 'pf-m-hidden pf-m-visible-on-sm', // Firing alerts\n '', // State\n 'pf-m-hidden pf-m-visible-on-sm', // Creator\n 'dropdown-kebab-pf pf-v5-c-table__action',\n];\n\nconst SilenceMatchersList = ({ silence }) => (\n
    \n {_.map(silence.matchers, ({ name, isEqual, isRegex, value }, i) => (\n \n ))}\n
    \n);\n\ntype SilenceTableRowProps = {\n obj: Silence;\n showCheckbox?: boolean;\n};\n\nconst SilenceTableRow: React.FC = ({ obj, showCheckbox }) => {\n const { t } = useTranslation();\n\n const { createdBy, endsAt, firingAlerts, id, name, startsAt } = obj;\n const state = silenceState(obj);\n\n const { selectedSilences, setSelectedSilences } = React.useContext(SelectedSilencesContext);\n\n const onCheckboxChange = React.useCallback(\n (_event, isChecked: boolean) => {\n setSelectedSilences((oldSet) => {\n const newSet = new Set(oldSet);\n if (isChecked) {\n newSet.add(id);\n } else {\n newSet.delete(id);\n }\n return newSet;\n });\n },\n [id, setSelectedSilences],\n );\n\n const { ns: namespace } = useParams();\n\n return (\n <>\n {showCheckbox && (\n \n \n \n )}\n \n
    \n \n \n {name}\n \n
    \n
    \n \n
    \n \n \n \n \n \n \n {state === SilenceStates.Pending && (\n \n )}\n {state === SilenceStates.Active && (\n \n )}\n {state === SilenceStates.Expired && (\n \n )}\n \n {createdBy || '-'}\n \n \n \n \n );\n};\n\nconst SilenceTableRowWithCheckbox: React.FC> = ({ obj }) => (\n \n);\n\nexport const alertMessageResources: {\n [labelName: string]: { kind: string; namespaced?: boolean };\n} = {\n container: ContainerModel,\n daemonset: DaemonSetModel,\n deployment: DeploymentModel,\n job: JobModel,\n namespace: NamespaceModel,\n node: NodeModel,\n pod: PodModel,\n statefulset: StatefulSetModel,\n};\n\nconst matchCount = (haystack: string, regExpString: string) =>\n _.size(haystack.match(new RegExp(regExpString, 'g')));\n\nconst AlertMessage: React.FC = ({ alertText, labels, template }) => {\n if (_.isEmpty(alertText)) {\n return null;\n }\n\n let messageParts: React.ReactNode[] = [alertText];\n\n // Go through each recognized resource type and replace any resource names that exist in alertText\n // with a link to the resource's details page\n _.each(alertMessageResources, (model, label) => {\n const labelValue = labels[label];\n\n if (labelValue && !(model.namespaced && _.isEmpty(labels.namespace))) {\n const tagCount = matchCount(template, `\\\\{\\\\{ *\\\\$labels\\\\.${label} *\\\\}\\\\}`);\n const resourceNameCount = matchCount(alertText, _.escapeRegExp(labelValue));\n\n // Don't do the replacement unless the counts match. This avoids overwriting the wrong string\n // if labelValue happens to appear elsewhere in alertText\n if (tagCount > 0 && tagCount === resourceNameCount) {\n const link = (\n \n );\n messageParts = _.flatMap(messageParts, (part) => {\n if (_.isString(part) && part.indexOf(labelValue) !== -1) {\n // `part` contains at least one instance of the resource name, so replace each instance\n // with the link to the resource. Since the link is a component, we can't simply do a\n // string substitution. Instead, create an array that contains each of the string parts\n // and the resource links in the correct order.\n const splitParts = part.split(labelValue);\n return _.flatMap(splitParts, (p) => [p, link]).slice(0, -1);\n }\n return [part];\n });\n }\n }\n });\n\n return (\n
    \n

    \n {messageParts}\n

    \n
    \n );\n};\n\nconst HeaderAlertMessage: React.FC<{ alert: Alert; rule: Rule }> = ({ alert, rule }) => {\n const annotation = alert.annotations.description ? 'description' : 'message';\n return (\n \n );\n};\n\nconst getSourceKey = (t: TFunction, source: string) => {\n switch (source) {\n case 'Platform':\n return t('public~Platform');\n case 'User':\n return t('public~User');\n default:\n return source;\n }\n};\n\nconst SilencedByList: React.FC<{ silences: Silence[] }> = ({ silences }) => {\n const { t } = useTranslation();\n\n const columns = React.useMemo[]>(\n () => [\n {\n id: 'name',\n props: { className: tableSilenceClasses[1] },\n title: t('public~Name'),\n },\n {\n id: 'firingAlerts',\n props: { className: tableSilenceClasses[2] },\n title: t('public~Firing alerts'),\n },\n {\n id: 'state',\n props: { className: tableSilenceClasses[3] },\n title: t('public~State'),\n },\n {\n id: 'createdBy',\n props: { className: tableSilenceClasses[4] },\n title: t('public~Creator'),\n },\n {\n id: 'actions',\n props: { className: tableSilenceClasses[5] },\n title: '',\n },\n ],\n [t],\n );\n\n return (\n \n aria-label={t('public~Silenced by')}\n columns={columns}\n data={silences}\n loaded={true}\n loadError={undefined}\n Row={SilenceTableRow}\n unfilteredData={silences}\n />\n );\n};\n\nconst AlertsDetailsPage_: React.FC<{}> = () => {\n const { t } = useTranslation();\n const params = useParams();\n const navigate = useNavigate();\n\n const isDevPerspective = _.has(params, 'ns');\n const namespace = params?.ns;\n const hideGraphs = useSelector(({ observe }: RootState) => !!observe.get('hideGraphs'));\n\n const alerts: Alerts = useSelector(({ observe }: RootState) =>\n observe.get(isDevPerspective ? 'devAlerts' : 'alerts'),\n );\n\n const silencesLoaded = ({ observe }) =>\n observe.get(isDevPerspective ? 'devSilences' : 'silences')?.loaded;\n\n const ruleAlerts = _.filter(alerts?.data, (a) => a.rule.id === params?.ruleID);\n const rule = ruleAlerts?.[0]?.rule;\n const alert = _.find(ruleAlerts, (a) => _.isEqual(a.labels, getURLSearchParams()));\n\n const state = alertState(alert);\n\n const labelsMemoKey = JSON.stringify(alert?.labels);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const labels: PrometheusLabels = React.useMemo(() => alert?.labels, [labelsMemoKey]);\n\n // eslint-disable-next-line camelcase\n const runbookURL = alert?.annotations?.runbook_url;\n\n const sourceId = rule?.sourceId;\n\n // Load alert metrics chart from plugin\n const [alertsChartExtensions] = useResolvedExtensions(\n isAlertingRuleChart,\n );\n const alertsChart = alertsChartExtensions\n .filter((extension) => extension.properties.sourceId === sourceId)\n .map((extension) => extension.properties.chart);\n\n const AlertsChart = alertsChart?.[0];\n\n return (\n <>\n \n {t('public~{{alertName}} details', { alertName: labels?.alertname })}\n \n \n
    \n \n \n \n {t('public~Alerts')}\n \n \n {t('public~Alert details')}\n \n
    \n
    \n

    \n
    \n \n {labels?.alertname}\n \n
    \n {state !== AlertStates.Silenced && (\n
    \n silenceAlert(alert, navigate, namespace)}\n variant=\"primary\"\n >\n {t('public~Silence alert')}\n \n
    \n )}\n

    \n \n
    \n
    \n \n \n \n \n \n \n \n {({ actions, loaded }) =>\n loaded\n ? actions.filter(isActionWithHref).map((action) => (\n \n {action.label}\n \n ))\n : null\n }\n \n \n \n \n \n \n \n\n
    \n
    \n
    \n {!sourceId || sourceId === 'prometheus' ? (\n \n ) : AlertsChart && rule && !hideGraphs ? (\n \n ) : null}\n
    \n
    \n
    \n
    \n
    \n
    {t('public~Name')}
    \n
    {labels?.alertname}
    \n
    \n } label={t('public~Severity')} />\n
    \n
    \n \n
    \n {alert?.annotations?.description && (\n <>\n
    {t('public~Description')}
    \n
    \n \n
    \n \n )}\n {alert?.annotations?.summary && (\n <>\n
    {t('public~Summary')}
    \n
    {alert.annotations.summary}
    \n \n )}\n {alert?.annotations?.message && (\n <>\n
    {t('public~Message')}
    \n
    \n \n
    \n \n )}\n {runbookURL && (\n <>\n
    {t('public~Runbook')}
    \n
    \n \n
    \n \n )}\n
    \n
    \n
    \n
    \n
    \n } label={t('public~Source')} />\n
    \n
    {alert && getSourceKey(t, _.startCase(alertSource(alert)))}
    \n
    \n } label={t('public~State')} />\n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    {t('public~Labels')}
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    {t('public~Alerting rule')}
    \n
    \n
    \n \n \n {_.get(rule, 'name')}\n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n {silencesLoaded && !_.isEmpty(alert?.silencedBy) && (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n )}\n \n \n );\n};\nexport const AlertsDetailsPage = withFallback(AlertsDetailsPage_);\n\n// Renders Prometheus template text and highlights any {{ ... }} tags that it contains\nconst PrometheusTemplate = ({ text }) => (\n <>\n {text?.split(/(\\{\\{[^{}]*\\}\\})/)?.map((part: string, i: number) =>\n part.match(/^\\{\\{[^{}]*\\}\\}$/) ? (\n \n {part}\n \n ) : (\n part\n ),\n )}\n \n);\n\nconst ActiveAlerts: React.FC<{ alerts; ruleID: string; namespace: string }> = (props) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n\n const { alerts, ruleID, namespace } = props;\n\n return (\n
    \n
    \n
    {t('public~Description')}
    \n
    {t('public~Active since')}
    \n
    {t('public~State')}
    \n
    {t('public~Value')}
    \n
    \n
    \n {_.sortBy(alerts, alertDescription).map((a, i) => (\n
    \n
    \n \n {alertDescription(a)}\n \n
    \n
    \n \n
    \n
    \n \n
    \n
    {a.value}
    \n {a.state !== AlertStates.Silenced && (\n
    \n silenceAlert(a, navigate, namespace)}\n >\n {t('public~Silence alert')}\n ,\n ]}\n />\n
    \n )}\n
    \n ))}\n
    \n
    \n );\n};\n\nconst AlertRulesDetailsPage_: React.FC<{}> = () => {\n const { t } = useTranslation();\n const params = useParams();\n\n const isDevPerspective = _.has(params, 'ns');\n const namespace = params?.ns;\n\n const rules: Rule[] = useSelector(({ observe }: RootState) =>\n observe.get(isDevPerspective ? 'devRules' : 'rules'),\n );\n const rule = _.find(rules, { id: params?.id });\n\n const { loaded, loadError }: Alerts = useSelector(\n ({ observe }: RootState) => observe.get(isDevPerspective ? 'devAlerts' : 'alerts') || {},\n );\n\n const sourceId = rule?.sourceId;\n\n // Load alert metrics chart from plugin\n const [alertsChartExtensions] = useResolvedExtensions(\n isAlertingRuleChart,\n );\n const alertsChart = alertsChartExtensions\n .filter((extension) => extension.properties.sourceId === sourceId)\n .map((extension) => extension.properties.chart);\n\n const AlertsChart = alertsChart?.[0];\n\n const formatSeriesTitle = (alertLabels) => {\n const nameLabel = alertLabels.__name__ ?? '';\n const otherLabels = _.omit(alertLabels, '__name__');\n return `${nameLabel}{${_.map(otherLabels, (v, k) => `${k}=\"${v}\"`).join(',')}}`;\n };\n\n // eslint-disable-next-line camelcase\n const runbookURL = rule?.annotations?.runbook_url;\n\n return (\n <>\n \n {t('public~{{name}} details', { name: rule?.name || RuleResource.label })}\n \n \n
    \n \n \n \n {namespace ? t('public~Alerts') : t('public~Alerting rules')}\n \n \n {t('public~Alerting rule details')}\n \n
    \n
    \n

    \n
    \n \n {rule?.name}\n \n
    \n

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    {t('public~Name')}
    \n
    {rule?.name}
    \n
    \n } label={t('public~Severity')} />\n
    \n
    \n \n
    \n {rule?.annotations?.description && (\n <>\n
    {t('public~Description')}
    \n
    \n \n
    \n \n )}\n {rule?.annotations?.summary && (\n <>\n
    {t('public~Summary')}
    \n
    {rule.annotations.summary}
    \n \n )}\n {rule?.annotations?.message && (\n <>\n
    {t('public~Message')}
    \n
    \n \n
    \n \n )}\n {runbookURL && (\n <>\n
    {t('public~Runbook')}
    \n
    \n \n
    \n \n )}\n
    \n
    \n
    \n
    \n
    \n } label={t('public~Source')} />\n
    \n
    {rule && getSourceKey(t, _.startCase(alertingRuleSource(rule)))}
    \n {_.isInteger(rule?.duration) && (\n <>\n
    {t('public~For')}
    \n
    \n {rule.duration === 0 ? '-' : formatPrometheusDuration(rule.duration * 1000)}\n
    \n \n )}\n
    {t('public~Expression')}
    \n
    \n \n \n {rule?.query}\n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    {t('public~Labels')}
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n {!sourceId || sourceId === 'prometheus' ? (\n \n ) : AlertsChart && rule ? (\n \n ) : null}\n
    \n
    \n
    \n
    \n {_.isEmpty(rule?.alerts) ? (\n
    {t('public~None found')}
    \n ) : (\n \n )}\n
    \n
    \n
    \n
    \n
    \n \n );\n};\nexport const AlertRulesDetailsPage = withFallback(AlertRulesDetailsPage_);\n\ntype ExpireSilenceModalProps = {\n isOpen: boolean;\n setClosed: () => void;\n silenceID: string;\n};\n\nconst ExpireSilenceModal: React.FC = ({\n isOpen,\n setClosed,\n silenceID,\n}) => {\n const { t } = useTranslation();\n const { ns: namespace } = useParams();\n\n const [isInProgress, , setInProgress, setNotInProgress] = useBoolean(false);\n const [errorMessage, setErrorMessage] = React.useState();\n\n const expireSilence = () => {\n setInProgress();\n const url = namespace\n ? `api/alertmanager-tenancy/api/v2/silence/${silenceID}?namespace=${namespace}`\n : `${window.SERVER_FLAGS.alertManagerBaseURL}/api/v2/silence/${silenceID}`;\n consoleFetchJSON\n .delete(url)\n .then(() => {\n refreshNotificationPollers();\n setClosed();\n })\n .catch((err) => {\n setErrorMessage(_.get(err, 'json.error') || err.message || 'Error expiring silence');\n setNotInProgress();\n })\n .then(setNotInProgress);\n };\n\n return (\n \n \n {t('public~Are you sure you want to expire this silence?')}\n \n \n {errorMessage && (\n \n
    {errorMessage}
    \n \n )}\n
    \n \n {isInProgress && }\n \n \n \n \n \n \n \n
    \n
    \n \n );\n};\n\ntype SilenceDropdownProps = {\n className?: string;\n isPlain?: boolean;\n silence: Silence;\n Toggle: React.FC<{ onToggle: KebabTogglePropsDeprecated['onToggle'] }>;\n};\n\nconst SilenceDropdown: React.FC = ({\n className,\n isPlain,\n silence,\n Toggle,\n}) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n\n const { ns: namespace } = useParams();\n\n const [isOpen, setIsOpen, , setClosed] = useBoolean(false);\n const [isModalOpen, , setModalOpen, setModalClosed] = useBoolean(false);\n\n const editSilence = () => {\n navigate(\n namespace\n ? `/dev-monitoring/ns/${namespace}/silences/${silence.id}/edit`\n : `/monitoring/silences/${silence.id}/edit`,\n );\n };\n\n const dropdownItems =\n silenceState(silence) === SilenceStates.Expired\n ? [\n \n {t('public~Recreate silence')}\n ,\n ]\n : [\n \n {t('public~Edit silence')}\n ,\n \n {t('public~Expire silence')}\n ,\n ];\n\n return (\n <>\n }\n />\n \n \n );\n};\n\nconst SilenceDropdownKebab: React.FC<{ silence: Silence }> = ({ silence }) => (\n \n);\n\nconst ActionsToggle: React.FC<{ onToggle: KebabTogglePropsDeprecated['onToggle'] }> = ({\n onToggle,\n ...props\n}) => (\n \n Actions\n \n);\n\nconst SilenceDropdownActions: React.FC<{ silence: Silence }> = ({ silence }) => (\n \n);\n\nconst SilencedAlertsList = ({ alerts }) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n\n const { ns: namespace } = useParams();\n\n return _.isEmpty(alerts) ? (\n
    {t('public~None found')}
    \n ) : (\n
    \n
    \n
    {t('public~Name')}
    \n
    {t('public~Severity')}
    \n
    \n
    \n {_.sortBy(alerts, alertDescription).map((a, i) => (\n
    \n
    \n \n {a.labels.alertname}\n \n
    {alertDescription(a)}
    \n
    \n
    \n \n
    \n
    \n navigate(ruleURL(a.rule, namespace))}\n >\n {t('public~View alerting rule')}\n ,\n ]}\n />\n
    \n
    \n ))}\n
    \n
    \n );\n};\n\nconst SilencesDetailsPage_: React.FC<{}> = () => {\n const { t } = useTranslation();\n const params = useParams();\n const { ns: namespace } = params;\n\n const alertsLoaded = useSelector(\n ({ observe }: RootState) => observe.get(namespace ? 'devAlerts' : 'alerts')?.loaded,\n );\n\n const silences: Silences = useSelector(({ observe }: RootState) =>\n observe.get(namespace ? 'devSilences' : 'silences'),\n );\n const silence = _.find(silences?.data, { id: params?.id });\n\n return (\n <>\n \n \n {t('public~{{name}} details', { name: silence?.name || SilenceResource.label })}\n \n \n \n
    \n \n \n \n {t('public~Silences')}\n \n \n {t('public~Silence details')}\n \n
    \n
    \n

    \n
    \n \n {silence?.name}\n
    \n
    \n {silence && }\n
    \n

    \n
    \n
    \n \n
    \n
    \n
    \n
    \n {silence?.name && (\n <>\n
    {t('public~Name')}
    \n
    {silence?.name}
    \n \n )}\n
    {t('public~Matchers')}
    \n
    \n {_.isEmpty(silence?.matchers) ? (\n
    {t('public~No matchers')}
    \n ) : (\n \n )}\n
    \n
    {t('public~State')}
    \n
    \n \n
    \n
    {t('public~Last updated at')}
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    {t('public~Starts at')}
    \n
    \n \n
    \n
    {t('public~Ends at')}
    \n
    \n \n
    \n
    {t('public~Created by')}
    \n
    {silence?.createdBy || '-'}
    \n
    {t('public~Comment')}
    \n
    {silence?.comment || '-'}
    \n
    {t('public~Firing alerts')}
    \n
    \n {alertsLoaded ? (\n \n ) : (\n \n )}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n {alertsLoaded ? (\n \n ) : (\n \n )}\n
    \n
    \n
    \n
    \n \n \n );\n};\nexport const SilencesDetailsPage = withFallback(SilencesDetailsPage_);\n\nconst tableAlertClasses = [\n 'pf-v5-u-w-50 pf-v5-u-w-33-on-sm', // Name\n 'pf-m-hidden pf-m-visible-on-sm', // Severity\n '', // State\n 'pf-m-hidden pf-m-visible-on-sm', // Source\n 'dropdown-kebab-pf pf-v5-c-table__action',\n];\n\nconst AlertTableRow: React.FC> = ({ obj }) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n\n const { annotations = {}, labels } = obj;\n const description = annotations.description || annotations.message;\n const state = alertState(obj);\n\n const title: string = obj.annotations?.description || obj.annotations?.message;\n\n const { ns: namespace } = useParams();\n\n const dropdownItems = [\n navigate(ruleURL(obj.rule, namespace))}>\n {t('public~View alerting rule')}\n ,\n ];\n if (state !== AlertStates.Silenced) {\n dropdownItems.unshift(\n silenceAlert(obj, navigate)}>\n {t('public~Silence alert')}\n ,\n );\n }\n\n return (\n <>\n \n
    \n \n \n {labels?.alertname}\n \n
    \n
    {description}
    \n \n \n \n \n \n \n \n \n \n {getSourceKey(t, _.startCase(alertSource(obj)))}\n \n \n \n \n \n );\n};\n\nexport const severityRowFilter = (): RowFilter => ({\n filter: (filter, alert: Alert) =>\n filter.selected?.includes(alert.labels?.severity) || _.isEmpty(filter.selected),\n filterGroupName: i18next.t('public~Severity'),\n items: [\n { id: AlertSeverity.Critical, title: i18next.t('public~Critical') },\n { id: AlertSeverity.Warning, title: i18next.t('public~Warning') },\n { id: AlertSeverity.Info, title: i18next.t('public~Info') },\n { id: AlertSeverity.None, title: i18next.t('public~None') },\n ],\n reducer: ({ labels }: Alert | Rule) => labels?.severity,\n type: 'alert-severity',\n});\n\nconst SilencesNotLoadedWarning: React.FC<{ silencesLoadError: any }> = ({ silencesLoadError }) => {\n const { t } = useTranslation();\n\n return (\n \n {silencesLoadError.json?.error || silencesLoadError.message}\n \n );\n};\n\n// Sort alerts by their state (sort first by the state itself, then by the timestamp relevant to\n// the state)\nconst alertStateOrder = (alert: Alert) => [\n [AlertStates.Firing, AlertStates.Pending, AlertStates.Silenced].indexOf(alertState(alert)),\n alertState(alert) === AlertStates.Silenced\n ? _.max(_.map(alert.silencedBy, 'endsAt'))\n : _.get(alert, 'activeAt'),\n];\n\nconst getAdditionalSources = (\n data: Array,\n itemSource: (item: T) => string,\n) => {\n if (data) {\n const additionalSources = new Set();\n data.forEach((item) => {\n const source = itemSource(item);\n if (source !== AlertSource.Platform && source !== AlertSource.User) {\n additionalSources.add(source);\n }\n });\n return Array.from(additionalSources).map((item) => ({ id: item, title: _.startCase(item) }));\n }\n return [];\n};\n\nconst AlertsPage_: React.FC<{}> = () => {\n const { t } = useTranslation();\n\n const { data, loaded = false, loadError }: Alerts = useSelector(\n ({ observe }: RootState) => observe.get('alerts') || {},\n );\n const silencesLoadError = useSelector(\n ({ observe }: RootState) => observe.get('silences')?.loadError,\n );\n const [isExactSearch] = useExactSearch();\n const matchFn: Function = isExactSearch ? exactMatch : fuzzyCaseInsensitive;\n\n const nameFilter: RowFilter = {\n filter: (filter, alert: Alert) => matchFn(filter.selected?.[0], alert.labels?.alertname),\n items: [],\n type: 'name',\n } as RowFilter;\n\n const alertAdditionalSources = React.useMemo(() => getAdditionalSources(data, alertSource), [\n data,\n ]);\n\n const rowFilters: RowFilter[] = [\n {\n defaultSelected: [AlertStates.Firing],\n filter: (filter, alert: Alert) =>\n filter.selected?.includes(alertState(alert)) || _.isEmpty(filter.selected),\n filterGroupName: t('public~Alert State'),\n items: [\n { id: AlertStates.Firing, title: t('public~Firing') },\n { id: AlertStates.Pending, title: t('public~Pending') },\n { id: AlertStates.Silenced, title: t('public~Silenced') },\n ],\n reducer: alertState,\n type: 'alert-state',\n },\n severityRowFilter(),\n {\n defaultSelected: [AlertSource.Platform],\n filter: (filter, alert: Alert) =>\n filter.selected?.includes(alertSource(alert)) || _.isEmpty(filter.selected),\n filterGroupName: t('public~Source'),\n items: [\n { id: AlertSource.Platform, title: t('public~Platform') },\n { id: AlertSource.User, title: t('public~User') },\n ...alertAdditionalSources,\n ],\n reducer: alertSource,\n type: 'alert-source',\n },\n ];\n\n const allFilters: RowFilter[] = [nameFilter, ...rowFilters];\n const [staticData, filteredData, onFilterChange] = useListPageFilter(data, allFilters);\n\n const columns = React.useMemo[]>(\n () => [\n {\n id: 'name',\n props: { className: tableAlertClasses[0] },\n sort: 'labels.alertname',\n title: t('public~Name'),\n transforms: [sortable],\n },\n {\n id: 'severity',\n props: { className: tableAlertClasses[1] },\n sort: (alerts: Alert[], direction: 'asc' | 'desc') =>\n _.orderBy(alerts, alertSeverityOrder, [direction]) as Alert[],\n title: t('public~Severity'),\n transforms: [sortable],\n },\n {\n id: 'state',\n props: { className: tableAlertClasses[2] },\n sort: (alerts: Alert[], direction: 'asc' | 'desc') =>\n _.orderBy(alerts, alertStateOrder, [direction]),\n title: t('public~State'),\n transforms: [sortable],\n },\n {\n id: 'source',\n props: { className: tableAlertClasses[3] },\n sort: (alerts: Alert[], direction: 'asc' | 'desc') =>\n _.orderBy(alerts, alertSource, [direction]),\n title: t('public~Source'),\n transforms: [sortable],\n },\n {\n id: 'actions',\n props: { className: tableAlertClasses[4] },\n title: '',\n },\n ],\n [t],\n );\n\n return (\n <>\n \n Alerting\n \n
    \n \n {silencesLoadError && }\n
    \n
    \n \n aria-label={t('public~Alerts')}\n columns={columns}\n data={filteredData ?? []}\n loaded={loaded}\n loadError={loadError}\n Row={AlertTableRow}\n unfilteredData={data}\n />\n
    \n
    \n
    \n \n );\n};\nconst AlertsPage = withFallback(AlertsPage_);\n\nconst ruleHasAlertState = (rule: Rule, state: AlertStates): boolean =>\n state === AlertStates.NotFiring ? _.isEmpty(rule.alerts) : _.some(rule.alerts, { state });\n\nconst ruleAlertStateFilter = (filter, rule: Rule) =>\n (filter.selected?.includes(AlertStates.NotFiring) && _.isEmpty(rule.alerts)) ||\n _.some(rule.alerts, (a) => filter.selected?.includes(a.state)) ||\n _.isEmpty(filter.selected);\n\nexport const alertStateFilter = (): RowFilter => ({\n filter: ruleAlertStateFilter,\n filterGroupName: i18next.t('public~Alert State'),\n isMatch: ruleHasAlertState,\n items: [\n { id: AlertStates.Firing, title: i18next.t('public~Firing') },\n { id: AlertStates.Pending, title: i18next.t('public~Pending') },\n { id: AlertStates.Silenced, title: i18next.t('public~Silenced') },\n { id: AlertStates.NotFiring, title: i18next.t('public~Not Firing') },\n ],\n type: 'alerting-rule-has-alert-state',\n});\n\nconst tableRuleClasses = [\n 'pf-v5-u-w-50 pf-v5-u-w-33-on-sm', // Name\n 'pf-m-hidden pf-m-visible-on-sm', // Severity\n '', // Alert state\n 'pf-m-hidden pf-m-visible-on-sm', // Source\n];\n\nconst RuleTableRow: React.FC> = ({ obj }) => {\n const { t } = useTranslation();\n\n const title: string = obj.annotations?.description || obj.annotations?.message;\n\n const { ns: namespace } = useParams();\n\n return (\n <>\n \n
    \n \n \n {obj.name}\n \n
    \n \n \n \n \n \n {_.isEmpty(obj.alerts) ? '-' : }\n \n \n {getSourceKey(t, _.startCase(alertingRuleSource(obj)))}\n \n \n );\n};\n\nconst RulesPage_: React.FC<{}> = () => {\n const { t } = useTranslation();\n\n const [isExactSearch] = useExactSearch();\n const matchFn: Function = isExactSearch ? exactMatch : fuzzyCaseInsensitive;\n\n const data: Rule[] = useSelector(({ observe }: RootState) => observe.get('rules'));\n const { loaded = false, loadError }: Alerts = useSelector(\n ({ observe }: RootState) => observe.get('alerts') || {},\n );\n const silencesLoadError = useSelector(\n ({ observe }: RootState) => observe.get('silences')?.loadError,\n );\n\n const nameFilter: RowFilter = {\n filter: (filter, rule: Rule) => matchFn(filter.selected?.[0], rule.name),\n items: [],\n type: 'name',\n } as RowFilter;\n\n const ruleAdditionalSources = React.useMemo(\n () => getAdditionalSources(data, alertingRuleSource),\n [data],\n );\n\n const rowFilters: RowFilter[] = [\n alertStateFilter(),\n severityRowFilter(),\n {\n defaultSelected: [AlertSource.Platform],\n filter: (filter, rule: Rule) =>\n filter.selected?.includes(alertingRuleSource(rule)) || _.isEmpty(filter.selected),\n filterGroupName: t('public~Source'),\n items: [\n { id: AlertSource.Platform, title: t('public~Platform') },\n { id: AlertSource.User, title: t('public~User') },\n ...ruleAdditionalSources,\n ],\n reducer: alertingRuleSource,\n type: 'alerting-rule-source',\n },\n ];\n\n const allFilters: RowFilter[] = [nameFilter, ...rowFilters];\n const [staticData, filteredData, onFilterChange] = useListPageFilter(data, allFilters);\n\n const columns = React.useMemo[]>(\n () => [\n {\n id: 'name',\n props: { className: tableRuleClasses[0] },\n sort: 'name',\n title: t('public~Name'),\n transforms: [sortable],\n },\n {\n id: 'severity',\n props: { className: tableRuleClasses[1] },\n sort: (rules: Rule[], direction: 'asc' | 'desc') =>\n _.orderBy(rules, alertSeverityOrder, [direction]) as Rule[],\n title: t('public~Severity'),\n transforms: [sortable],\n },\n {\n id: 'state',\n props: { className: tableRuleClasses[2] },\n sort: (rules: Rule[], direction: 'asc' | 'desc') =>\n _.orderBy(rules, alertingRuleStateOrder, [direction]),\n title: t('public~Alert state'),\n transforms: [sortable],\n },\n {\n id: 'source',\n props: { className: tableRuleClasses[3] },\n sort: (rules: Rule[], direction: 'asc' | 'desc') =>\n _.orderBy(rules, alertingRuleSource, [direction]),\n title: t('public~Source'),\n transforms: [sortable],\n },\n ],\n [t],\n );\n\n return (\n <>\n \n Alerting\n \n
    \n \n {silencesLoadError && }\n
    \n
    \n \n aria-label={t('public~Alerting rules')}\n columns={columns}\n data={filteredData ?? []}\n loaded={loaded}\n loadError={loadError}\n Row={RuleTableRow}\n unfilteredData={data}\n />\n
    \n
    \n
    \n \n );\n};\nconst RulesPage = withFallback(RulesPage_);\n\nconst CreateSilenceButton: React.FC<{}> = React.memo(() => {\n const { t } = useTranslation();\n\n const { ns: namespace } = useParams();\n\n return (\n \n \n \n );\n});\n\ntype ExpireAllSilencesButtonProps = {\n setErrorMessage: (string) => void;\n};\n\nconst ExpireAllSilencesButton: React.FC = ({ setErrorMessage }) => {\n const { t } = useTranslation('public');\n\n const { ns: namespace } = useParams();\n\n const [isInProgress, , setInProgress, setNotInProgress] = useBoolean(false);\n\n const { selectedSilences, setSelectedSilences } = React.useContext(SelectedSilencesContext);\n\n const onClick = () => {\n setInProgress();\n Promise.allSettled(\n [...selectedSilences].map((silenceID) =>\n consoleFetchJSON.delete(\n namespace\n ? `api/alertmanager-tenancy/api/v2/silence/${silenceID}?namespace=${namespace}`\n : `${window.SERVER_FLAGS.alertManagerBaseURL}/api/v2/silence/${silenceID}`,\n ),\n ),\n ).then((values) => {\n setNotInProgress();\n setSelectedSilences(new Set());\n refreshNotificationPollers();\n const errors = values.filter((v) => v.status === 'rejected').map((v: any) => v.reason);\n if (errors.length > 0) {\n const messages = errors.map(\n (err) => _.get(err, 'json.error') || err.message || 'Error expiring silence',\n );\n setErrorMessage(messages.join(', '));\n }\n });\n };\n\n return (\n \n {t('Expire {{count}} silence', { count: selectedSilences.size })}\n \n );\n};\n\nconst silenceFiringAlertsOrder = (silence: Silence) => {\n const counts = _.countBy(silence.firingAlerts, 'labels.severity');\n return [\n Number.MAX_SAFE_INTEGER - (counts[AlertSeverity.Critical] ?? 0),\n Number.MAX_SAFE_INTEGER - (counts[AlertSeverity.Warning] ?? 0),\n silence.firingAlerts.length,\n ];\n};\n\nconst silenceStateOrder = (silence: Silence) => [\n [SilenceStates.Active, SilenceStates.Pending, SilenceStates.Expired].indexOf(\n silenceState(silence),\n ),\n _.get(silence, silenceState(silence) === SilenceStates.Pending ? 'startsAt' : 'endsAt'),\n];\n\nconst SelectAllCheckbox: React.FC<{ silences: Silence[] }> = ({ silences }) => {\n const { selectedSilences, setSelectedSilences } = React.useContext(SelectedSilencesContext);\n\n const activeSilences = _.filter(silences, (s) => silenceState(s) !== SilenceStates.Expired);\n const isAllSelected =\n activeSilences.length > 0 && _.every(activeSilences, (s) => selectedSilences.has(s.id));\n\n const onChange = React.useCallback(\n (_event, isChecked: boolean) => {\n const ids = isChecked ? activeSilences.map((s) => s.id) : [];\n setSelectedSilences(new Set(ids));\n },\n [activeSilences, setSelectedSilences],\n );\n\n return (\n \n );\n};\n\nconst SilencesPage_: React.FC<{}> = () => {\n const { t } = useTranslation();\n const { ns: namespace } = useParams();\n\n const [selectedSilences, setSelectedSilences] = React.useState(new Set());\n const [errorMessage, setErrorMessage] = React.useState();\n\n const [isExactSearch] = useExactSearch();\n const matchFn: Function = isExactSearch ? exactMatch : fuzzyCaseInsensitive;\n\n const { data, loaded = false, loadError }: Silences = useSelector(\n ({ observe }: RootState) => observe.get(namespace ? 'devSilences' : 'silences') || {},\n );\n\n const nameFilter: RowFilter = {\n filter: (filter, silence: Silence) => matchFn(filter.selected?.[0], silence.name),\n items: [],\n type: 'name',\n } as RowFilter;\n\n const rowFilters: RowFilter[] = [\n {\n defaultSelected: [SilenceStates.Active, SilenceStates.Pending],\n filter: (filter, silence: Silence) =>\n filter.selected?.includes(silenceState(silence)) || _.isEmpty(filter.selected),\n filterGroupName: t('public~Silence State'),\n items: [\n { id: SilenceStates.Active, title: t('public~Active') },\n { id: SilenceStates.Pending, title: t('public~Pending') },\n { id: SilenceStates.Expired, title: t('public~Expired') },\n ],\n reducer: silenceState,\n type: 'silence-state',\n },\n ];\n\n const allFilters: RowFilter[] = [nameFilter, ...rowFilters];\n let [staticData, filteredData, onFilterChange] = useListPageFilter(data, allFilters);\n\n if (namespace) {\n filteredData = filteredData?.filter((item) => {\n const matchers = item.matchers;\n const nsMatcher = matchers?.find((m) => m.name === 'namespace');\n return nsMatcher?.value === namespace;\n });\n }\n\n const columns = React.useMemo[]>(\n () => [\n {\n id: 'checkbox',\n props: { className: tableSilenceClasses[0] },\n title: () as any,\n },\n {\n id: 'name',\n props: { className: tableSilenceClasses[1] },\n sort: 'name',\n title: t('public~Name'),\n transforms: [sortable],\n },\n {\n id: 'firingAlerts',\n props: { className: tableSilenceClasses[2] },\n sort: (silences: Silence[], direction: 'asc' | 'desc') =>\n _.orderBy(silences, silenceFiringAlertsOrder, [direction]),\n title: t('public~Firing alerts'),\n transforms: [sortable],\n },\n {\n id: 'state',\n props: { className: tableSilenceClasses[3] },\n sort: (silences: Silence[], direction: 'asc' | 'desc') =>\n _.orderBy(silences, silenceStateOrder, [direction]),\n title: t('public~State'),\n transforms: [sortable],\n },\n {\n id: 'createdBy',\n props: { className: tableSilenceClasses[4] },\n sort: 'createdBy',\n title: t('public~Creator'),\n transforms: [sortable],\n },\n {\n id: 'actions',\n props: { className: tableSilenceClasses[5] },\n title: '',\n },\n ],\n [filteredData, t],\n );\n\n return (\n <>\n \n Alerting\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n {loadError && (\n \n {typeof loadError === 'string' ? loadError : loadError.message}\n \n )}\n {errorMessage && (\n \n {errorMessage}\n \n )}\n
    \n
    \n \n aria-label={t('public~Silences')}\n columns={columns}\n data={filteredData ?? []}\n loaded={loaded}\n loadError={loadError}\n Row={SilenceTableRowWithCheckbox}\n unfilteredData={data}\n />\n
    \n
    \n
    \n
    \n \n );\n};\nexport const SilencesPage = withFallback(SilencesPage_);\n\nconst Tab: React.FC<{ active: boolean; children: React.ReactNode }> = ({ active, children }) => (\n \n {children}\n \n);\n\nconst AlertingPage: React.FC<{}> = () => {\n const { t } = useTranslation();\n\n const alertsPath = '/monitoring/alerts';\n const rulesPath = '/monitoring/alertrules';\n const silencesPath = '/monitoring/silences';\n\n const { pathname: url } = useLocation();\n\n return (\n <>\n
    \n

    \n
    \n \n {t('public~Alerting')}\n \n
    \n

    \n
    \n
      \n \n {t('public~Alerts')}\n \n \n {t('public~Silences')}\n \n \n {t('public~Alerting rules')}\n \n
    \n {url === alertsPath && }\n {url === rulesPath && }\n {url === silencesPath && }\n \n );\n};\n\nconst PollerPages = () => {\n const dispatch = useDispatch();\n\n const [customExtensions] = useResolvedExtensions(\n isAlertingRulesSource,\n );\n\n const alertsSource = React.useMemo(\n () =>\n customExtensions\n .filter((extension) => extension.properties.contextId === 'observe-alerting')\n .map((extension) => extension.properties),\n [customExtensions],\n );\n\n React.useEffect(() => {\n const { prometheusBaseURL } = window.SERVER_FLAGS;\n\n if (prometheusBaseURL) {\n const alertsKey = 'alerts';\n const rulesKey = 'rules';\n dispatch(alertingLoading(alertsKey));\n const url = getPrometheusURL({ endpoint: PrometheusEndpoint.RULES });\n const poller = (): void => {\n fetchAlerts(url, alertsSource)\n .then(({ data }) => {\n const { alerts, rules } = getAlertsAndRules(data);\n dispatch(alertingLoaded(alertsKey, alerts));\n dispatch(alertingSetRules(rulesKey, rules));\n })\n .catch((e) => {\n dispatch(alertingErrored(alertsKey, e));\n })\n .then(() => {\n if (pollerTimeouts[alertsKey]) {\n clearTimeout(pollerTimeouts[alertsKey]);\n }\n pollerTimeouts[alertsKey] = setTimeout(poller, 15 * 1000);\n });\n };\n pollers[alertsKey] = poller;\n poller();\n } else {\n dispatch(alertingErrored('alerts', new Error('prometheusBaseURL not set')));\n }\n return () => _.each(pollerTimeouts, clearTimeout);\n }, [alertsSource, dispatch]);\n\n return (\n \n } />\n } />\n } />\n } />\n } />\n } />\n } />\n \n );\n};\n\n// Handles links that have the Prometheus UI's URL format (expected for links in alerts sent by\n// Alertmanager). The Prometheus UI specifies the PromQL query with the GET param `g0.expr`, so we\n// use that if it exists. Otherwise, just go to the query browser page with no query.\nconst PrometheusUIRedirect = () => {\n const params = getURLSearchParams();\n return ;\n};\n\nexport const MonitoringUI = () => (\n \n {/* This redirect also handles the `/monitoring/#/alerts?...` link URLs generated by\n Alertmanager (because the `#` is considered the end of the URL) */}\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n \n \n);\n\ntype AlertStateProps = {\n state: AlertStates;\n};\n\ntype AlertMessageProps = {\n alertText: string;\n labels: PrometheusLabels;\n template: string;\n};\n\ntype GraphProps = {\n filterLabels?: PrometheusLabels;\n formatSeriesTitle?: FormatSeriesTitle;\n namespace?: string;\n query: string;\n ruleDuration: number;\n showLegend?: boolean;\n};\n\ntype MonitoringResourceIconProps = {\n className?: string;\n resource: MonitoringResource;\n};\n","import * as React from 'react';\nimport { Menu, Popper, MenuContent, MenuList } from '@patternfly/react-core';\nimport * as _ from 'lodash';\nimport { Action } from '@console/dynamic-plugin-sdk';\nimport { LazyActionMenuProps } from '@console/dynamic-plugin-sdk/src/api/internal-types';\nimport { checkAccess } from '@console/internal/components/utils';\nimport ActionServiceProvider from './ActionServiceProvider';\nimport ActionMenuContent from './menu/ActionMenuContent';\nimport ActionMenuToggle from './menu/ActionMenuToggle';\nimport { ActionMenuVariant } from './types';\n\ntype LazyMenuRendererProps = {\n isOpen: boolean;\n actions: Action[];\n menuRef: React.RefObject;\n toggleRef: React.RefObject;\n} & React.ComponentProps;\n\nconst LazyMenuRenderer: React.FC = ({\n isOpen,\n actions,\n menuRef,\n toggleRef,\n ...restProps\n}) => {\n React.useEffect(() => {\n // Check access after loading actions from service over a kebab to minimize flicker when opened.\n // This depends on `checkAccess` being memoized.\n _.each(actions, (action: Action) => {\n if (action.accessReview) {\n checkAccess(action.accessReview).catch((e) =>\n // eslint-disable-next-line no-console\n console.warn('Could not check access for action menu', e),\n );\n }\n });\n }, [actions]);\n\n const menu = (\n \n \n \n \n \n \n \n );\n\n return ;\n};\n\nconst LazyActionMenu: React.FC = ({\n context,\n variant = ActionMenuVariant.KEBAB,\n label,\n isDisabled,\n}) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [initActionLoader, setInitActionLoader] = React.useState(false);\n const menuRef = React.useRef(null);\n const toggleRef = React.useRef(null);\n\n const hideMenu = () => {\n setIsOpen(false);\n };\n\n const handleHover = React.useCallback(() => {\n setInitActionLoader(true);\n }, []);\n\n return (\n <>\n \n {initActionLoader && (\n \n {({ actions, options, loaded }) =>\n loaded && (\n \n )\n }\n \n )}\n \n );\n};\n\nexport default LazyActionMenu;\n","/* eslint-disable tsdoc/syntax */\nimport * as _ from 'lodash-es';\nimport * as React from 'react';\nimport * as fuzzy from 'fuzzysearch';\nimport * as PropTypes from 'prop-types';\nimport { Alert } from '@patternfly/react-core';\nimport { useFlag } from '@console/shared/src/hooks/flag';\nimport { FLAGS } from '@console/shared/src/constants';\nimport { Dropdown } from './dropdown';\nimport { Firehose } from './firehose';\nimport { LoadingInline } from './status-box';\nimport { ResourceName } from './resource-icon';\nimport { flagPending } from '../../reducers/features';\nimport { createNamespaceModal, createProjectModal } from '../modals';\nimport { NamespaceModel, ProjectModel } from '@console/internal/models';\nimport { useTranslation, withTranslation } from 'react-i18next';\n\nconst getKey = (key, keyKind) => {\n return keyKind ? `${key}-${keyKind}` : key;\n};\n\nclass ListDropdownWithTranslation extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n items: {},\n };\n\n if (props.selectedKey) {\n this.state.selectedKey = getKey(props.selectedKey, props.selectedKeyKind);\n }\n\n this.state.title = props.loaded ? props.placeholder : ;\n\n this.autocompleteFilter = (text, item) => fuzzy(text, item.props.name);\n // Pass both the resource name and the resource kind to onChange()\n this.onChange = (key) => {\n if (_.find(this.props.actionItems, { actionKey: key })) {\n this.props.onChange(key);\n }\n const { name, kindLabel, resource } = _.get(this.state, ['items', key], {});\n this.setState({ selectedKey: key, title: });\n this.props.onChange?.(name, kindLabel, resource);\n };\n }\n\n UNSAFE_componentWillMount() {\n // we need to trigger state changes to get past shouldComponentUpdate...\n // but the entire working set of data can be loaded in memory at this point in time\n // in which case componentWillReceiveProps would not be called for a while...\n this.UNSAFE_componentWillReceiveProps(this.props);\n }\n\n UNSAFE_componentWillReceiveProps({\n desc,\n placeholder,\n loaded,\n loadError,\n resources,\n dataFilter,\n ...nextProps\n }) {\n if (!loaded) {\n return;\n }\n\n this.setState((currentState) => {\n if (loadError) {\n return {\n title: (\n
    \n {this.props.t('public~Error loading {{desc}}', desc)}\n
    \n ),\n };\n }\n\n const unsortedList = {};\n _.each(resources, ({ data }, kindLabel) => {\n _.reduce(\n data,\n (acc, resource) => {\n if (!dataFilter || dataFilter(resource)) {\n acc[`${resource.metadata.name}-${kindLabel}`] = {\n kindLabel,\n name: resource.metadata.name,\n resource,\n };\n }\n return acc;\n },\n unsortedList,\n );\n });\n\n const sortedList = {};\n _.keys(unsortedList)\n .sort()\n .forEach((key) => {\n sortedList[key] = unsortedList[key];\n });\n\n const keyChanged = currentState.selectedKey !== nextProps.selectedKey;\n const keyKindChanged = currentState.selectedKeyKind !== nextProps.selectedKeyKind;\n const selectedKey =\n keyChanged || keyKindChanged\n ? getKey(nextProps.selectedKey, nextProps.selectedKeyKind)\n : currentState.selectedKey;\n\n const selectedItem = sortedList[selectedKey];\n return {\n selectedKey,\n items: sortedList,\n title: selectedItem ? (\n \n ) : (\n placeholder\n ),\n };\n });\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n return !_.isEqual(this.state, nextState);\n }\n\n render() {\n const { desc, fixed, placeholder, id, loaded, disabled, t } = this.props;\n const items = {};\n\n _.keys(this.state.items).forEach((key) => {\n const item = this.state.items[key];\n items[key] = ;\n });\n\n const { selectedKey } = this.state;\n\n const Component = fixed ? (\n items[selectedKey]\n ) : (\n \n );\n\n return (\n
    \n {Component}\n {loaded && _.isEmpty(items) && (desc || this.props.selectedKeyKind) && (\n \n )}\n
    \n );\n }\n}\n\nconst ListDropdown_ = withTranslation()(ListDropdownWithTranslation);\n\nexport const ListDropdown = (props) => {\n const resources = _.map(props.resources, (resource) =>\n _.assign({ isList: true, prop: resource.kind }, resource),\n );\n return (\n \n \n \n );\n};\n\nListDropdown.propTypes = {\n dataFilter: PropTypes.func,\n desc: PropTypes.string,\n // specify both key/kind\n selectedKey: PropTypes.string,\n selectedKeyKind: PropTypes.string,\n fixed: PropTypes.bool,\n resources: PropTypes.arrayOf(\n PropTypes.shape({\n kind: PropTypes.string.isRequired,\n namespace: PropTypes.string,\n selector: PropTypes.object,\n }),\n ).isRequired,\n placeholder: PropTypes.string,\n onChange: PropTypes.func,\n id: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\n/** @type {() => [K8sModel?, boolean?]} */\nexport const useProjectOrNamespaceModel = () => {\n const openshiftFlag = useFlag(FLAGS.OPENSHIFT);\n const canCreateNs = useFlag(FLAGS.CAN_CREATE_NS);\n const canCreateProject = useFlag(FLAGS.CAN_CREATE_PROJECT);\n\n if (flagPending(openshiftFlag) || flagPending(canCreateNs) || flagPending(canCreateProject)) {\n return [];\n }\n\n // NamespaceModal is used when not on an openshift cluster\n const model = openshiftFlag ? ProjectModel : NamespaceModel;\n const canCreate = openshiftFlag ? canCreateProject : canCreateNs;\n return [model, canCreate];\n};\n\n/** @type {React.FC<{dataFilter?: (ns: any) => boolean, desc?: string, selectedKey?: string, fixed?: boolean, placeholder?: string, onChange?: (selectedKey: string, selectedKeyKind: string, selectedResource?: K8sResourceKind) => void, id?: string, dataTest?: string}}>} */\nexport const NsDropdown = (props) => {\n const { t } = useTranslation();\n const [selectedKey, setSelectedKey] = React.useState(props.selectedKey);\n const [model, canCreate] = useProjectOrNamespaceModel();\n\n const actionItems =\n model && canCreate\n ? [\n {\n actionTitle: t('public~Create {{resourceKindLabel}}', {\n resourceKindLabel: model.labelKey ? t(model.labelKey) : model.label,\n }),\n actionKey: `Create_${model.label}`,\n },\n ]\n : [];\n\n const onChange = (actionKey, kindLabel, resource) => {\n switch (actionKey) {\n case 'Create_Namespace':\n createNamespaceModal({\n blocking: true,\n onSubmit: (newNamespace) => {\n setSelectedKey(newNamespace.metadata.name);\n props.onChange?.(newNamespace.metadata.name, newNamespace.kind, newNamespace);\n },\n });\n break;\n case 'Create_Project':\n createProjectModal({\n blocking: true,\n onSubmit: (newProject) => {\n setSelectedKey(newProject.metadata.name);\n props.onChange?.(newProject.metadata.name, newProject.kind, newProject);\n },\n });\n break;\n default:\n props.onChange?.(actionKey, kindLabel, resource);\n break;\n }\n };\n\n const getPlaceholder = (placeholderModel) => {\n if (!placeholderModel.kind) {\n return t('public~Select item');\n }\n\n return t('public~Select {{kindLabel}}', {\n kindLabel: placeholderModel.labelKey ? t(placeholderModel.labelKey) : placeholderModel.label,\n });\n };\n\n return model ? (\n \n ) : null;\n};\n","import { useContext } from 'react';\nimport { UseActivePerspective } from '../extensions';\nimport { PerspectiveContext, PerspectiveContextType } from './perspective-context';\n\nconst useActivePerspective: UseActivePerspective = () => {\n const { activePerspective, setActivePerspective } = useContext(\n PerspectiveContext,\n );\n return [activePerspective, setActivePerspective];\n};\n\nexport default useActivePerspective;\n","import * as React from 'react';\nimport { ModalComponent } from '@console/dynamic-plugin-sdk/src/app/modal-support/ModalProvider';\nimport { useModal } from '@console/dynamic-plugin-sdk/src/app/modal-support/useModal';\nimport { UseLabelsModal } from '@console/dynamic-plugin-sdk/src/extensions/console-types';\nimport { useK8sModel } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks/useK8sModel';\nimport { getGroupVersionKindForResource } from '@console/dynamic-plugin-sdk/src/utils/k8s/k8s-ref';\nimport { ModalWrapper } from '@console/internal/components/factory/modal';\nimport { LabelsModal, LabelsModalProps } from '@console/internal/components/modals/labels-modal';\n\nconst LabelsModalComponent: ModalComponent = ({ closeModal, kind, resource }) => {\n return (\n \n \n \n );\n};\n\nexport const useLabelsModal: UseLabelsModal = (resource) => {\n const launcher = useModal();\n const groupVersionKind = getGroupVersionKindForResource(resource);\n const [kind] = useK8sModel(groupVersionKind);\n return React.useCallback(\n () => resource && kind && launcher(LabelsModalComponent, { kind, resource }),\n [launcher, kind, resource],\n );\n};\n","/* eslint-disable tsdoc/syntax */\nimport * as _ from 'lodash-es';\nimport * as React from 'react';\nimport * as classnames from 'classnames';\nimport { Link } from 'react-router-dom-v5-compat';\n\nimport { coFetchJSON } from '../../co-fetch';\nimport { PROMETHEUS_BASE_PATH, PROMETHEUS_TENANCY_BASE_PATH } from '.';\n\nexport const errorStatus = (err) => {\n if (_.get(err.response, 'ok') === false) {\n return {\n short: '?',\n status: '', // Gray\n long: err.message,\n };\n }\n // Generic network error handling.\n return {\n short: 'ERROR',\n long: err.message,\n status: 'ERROR',\n };\n};\n\nconst fetchQuery = (q, long, namespace) => {\n const nsParam = namespace ? `&namespace=${encodeURIComponent(namespace)}` : '';\n const basePath = namespace ? PROMETHEUS_TENANCY_BASE_PATH : PROMETHEUS_BASE_PATH;\n return coFetchJSON(`${basePath}/api/v1/query?query=${encodeURIComponent(q)}${nsParam}`)\n .then((res) => {\n const short = parseInt(_.get(res, 'data.result[0].value[1]'), 10) || 0;\n return {\n short,\n long,\n status: short === 0 ? 'OK' : 'WARN',\n };\n })\n .catch(errorStatus);\n};\n\n/** @augments {React.Component<{fetch?: () => Promise, query?: string, title: string, href?: string, rel?: string, target?: string}}>} */\nexport class Status extends React.Component {\n constructor(props) {\n super(props);\n this.interval = null;\n this.state = {\n status: '...',\n };\n this.clock = 0;\n }\n\n fetch(props = this.props) {\n const clock = this.clock;\n const promise = props.query\n ? fetchQuery(props.query, props.name, props.namespace)\n : props.fetch();\n\n const ignorePromise = (cb) => (...args) => {\n if (clock !== this.clock) {\n return;\n }\n cb(...args);\n };\n promise\n .then(ignorePromise(({ short, long, status }) => this.setState({ short, long, status })))\n .catch(ignorePromise(() => this.setState({ short: 'BAD', long: 'Error', status: 'ERROR' })))\n .then(\n ignorePromise(\n () =>\n (this.interval = setTimeout(() => {\n if (this.isMounted_) {\n this.fetch();\n }\n }, 30000)),\n ),\n );\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (_.isEqual(nextProps, this.props)) {\n return;\n }\n this.clock += 1;\n // Don't show stale data if we changed the query.\n this.setState({\n status: '...',\n short: undefined,\n long: undefined,\n });\n this.fetch(nextProps);\n }\n\n UNSAFE_componentWillMount() {\n clearInterval(this.interval);\n this.fetch();\n }\n\n componentWillUnmount() {\n clearInterval(this.interval);\n }\n\n render() {\n const title = this.props.title;\n const { short, long, status } = this.state;\n const shortStatusClassName = classnames('graph-status__short', {\n 'graph-status__short--ok': status === 'OK',\n 'graph-status__short--warn': status === 'WARN',\n 'graph-status__short--error': status === 'ERROR',\n });\n\n const statusElem = (\n
    \n {title &&
    {title}
    }\n
    \n

    {short}

    \n
    {long}
    \n
    \n
    \n );\n const linkProps = _.pick(this.props, ['rel', 'target', 'to']);\n if (_.isEmpty(linkProps)) {\n return statusElem;\n }\n return (\n \n {statusElem}\n \n );\n }\n}\n","import * as React from 'react';\nimport { ModalComponent } from '@console/dynamic-plugin-sdk/src/app/modal-support/ModalProvider';\nimport { useModal } from '@console/dynamic-plugin-sdk/src/app/modal-support/useModal';\nimport { UseAnnotationsModal } from '@console/dynamic-plugin-sdk/src/extensions/console-types';\nimport { useK8sModel } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks/useK8sModel';\nimport { getGroupVersionKindForResource } from '@console/dynamic-plugin-sdk/src/utils/k8s/k8s-ref';\nimport { ModalWrapper } from '@console/internal/components/factory/modal';\nimport { AnnotationsModal, AnnotationsModalProps } from '@console/internal/components/modals/tags';\n\nconst AnnotationsModalComponent: ModalComponent = ({\n closeModal,\n kind,\n resource,\n}) => {\n return (\n \n \n \n );\n};\n\nexport const useAnnotationsModal: UseAnnotationsModal = (resource) => {\n const launcher = useModal();\n const groupVersionKind = getGroupVersionKindForResource(resource);\n const [kind] = useK8sModel(groupVersionKind);\n return React.useCallback(\n () =>\n resource &&\n kind &&\n launcher(AnnotationsModalComponent, { kind, resource }),\n [launcher, kind, resource],\n );\n};\n","import * as classNames from 'classnames';\nimport * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n BlueArrowCircleUpIcon,\n BlueInfoCircleIcon,\n GreenCheckCircleIcon,\n RedExclamationCircleIcon,\n YellowExclamationTriangleIcon,\n} from '@console/shared';\nimport { history, Timestamp, ExternalLink } from '@console/internal/components/utils';\nimport { Button, ButtonVariant } from '@patternfly/react-core';\n\n// eslint-disable-next-line no-shadow\nexport enum NotificationTypes {\n info = 'info',\n warning = 'warning',\n critical = 'danger',\n success = 'success',\n update = 'update',\n}\n\nconst NotificationIcon: React.FC = ({ type }) => {\n switch (type) {\n case NotificationTypes.update:\n return ;\n case NotificationTypes.success:\n return ;\n case NotificationTypes.critical:\n return ;\n case NotificationTypes.warning:\n return ;\n case NotificationTypes.info:\n default:\n return ;\n }\n};\n\nconst NotificationAction: React.FC = ({\n onClick,\n text,\n actionExternalLinkURL,\n}) => {\n return (\n
    \n {actionExternalLinkURL ? (\n \n ) : (\n {\n e.stopPropagation();\n onClick(e);\n }}\n variant={ButtonVariant.link}\n isInline\n >\n {text}\n \n )}\n
    \n );\n};\n\nconst NotificationEntry: React.FC = ({\n alertAction,\n actionPath,\n actionText,\n actionExternalLinkURL,\n title,\n description,\n isRead = false,\n timestamp,\n targetPath,\n toggleNotificationDrawer,\n type,\n}) => {\n const { t } = useTranslation();\n const notificationTypeString = (notificationType: NotificationTypes): string => {\n switch (notificationType) {\n case NotificationTypes.warning:\n return t('notification-drawer~Warning notification:');\n case NotificationTypes.critical:\n return t('notification-drawer~Critical notification:');\n case NotificationTypes.success:\n return t('notification-drawer~Success notification:');\n case NotificationTypes.update:\n return t('notification-drawer~Update notification:');\n default:\n return t('notification-drawer~Info notification:');\n }\n };\n const onClick = () => {\n toggleNotificationDrawer();\n alertAction ? alertAction() : history.push(actionPath);\n };\n return (\n {\n history.push(targetPath);\n toggleNotificationDrawer();\n }\n : null\n }\n >\n
    \n \n \n \n

    \n {notificationTypeString(type)}\n {title}\n

    \n {actionText && (actionPath || alertAction || actionExternalLinkURL) && (\n \n )}\n
    \n
    {description}
    \n
    \n {timestamp && }\n
    \n \n );\n};\n\nexport type NotificationEntryProps = {\n alertAction?: () => void;\n actionText?: string;\n actionPath?: string;\n actionExternalLinkURL?: string;\n description: React.ReactNode;\n isRead?: boolean;\n targetPath?: string;\n timestamp?: string;\n title: string;\n toggleNotificationDrawer?: () => any;\n type: NotificationTypes;\n};\n\ntype NotificationIconTypes = {\n type: NotificationTypes;\n};\n\ntype NotificationActionProps = {\n onClick: (event: React.MouseEvent) => void;\n text?: string;\n actionExternalLinkURL?: string;\n};\n\nexport default NotificationEntry;\n","import * as React from 'react';\nimport { WindowScroller, AutoSizer, Size, CellMeasurerCache } from 'react-virtualized';\nimport { VirtualizedGridProps } from '@console/dynamic-plugin-sdk/src/api/internal-types';\nimport { WithScrollContainer } from '@console/internal/components/utils';\nimport Cell from './Cell';\nimport {\n IDEAL_SPACE_BW_TILES,\n IDEAL_CELL_WIDTH,\n DEFAULT_CELL_HEIGHT,\n OVERSCAN_ROW_COUNT,\n HEADER_FIXED_HEIGHT,\n ESTIMATED_ROW_SIZE,\n} from './const';\nimport Grid from './Grid';\nimport GroupByFilterGrid from './GroupByFilterGrid';\nimport { Item, GroupedItems, GridChildrenProps } from './types';\nimport { CellMeasurementContext } from './utils';\n\nconst VirtualizedGrid: React.FC = ({\n items,\n className,\n isItemsGrouped = false,\n cellMargin = IDEAL_SPACE_BW_TILES,\n cellWidth = IDEAL_CELL_WIDTH,\n celldefaultHeight = DEFAULT_CELL_HEIGHT,\n overscanRowCount = OVERSCAN_ROW_COUNT,\n headerHeight = HEADER_FIXED_HEIGHT,\n estimatedCellHeight = ESTIMATED_ROW_SIZE,\n renderCell,\n renderHeader,\n}) => {\n const cache: CellMeasurerCache = new CellMeasurerCache({\n defaultHeight: celldefaultHeight,\n minHeight: 200,\n fixedWidth: true,\n });\n return (\n \n \n {(scrollElement) => (\n \n {({ registerChild, ...props }) => (\n \n {({ width }: Size) => (\n
    \n {isItemsGrouped ? (\n \n {(gridProps: GridChildrenProps) => {\n const {\n data: { key, style },\n } = gridProps;\n return (\n \n );\n }}\n \n ) : (\n \n {(gridProps: GridChildrenProps) => {\n const {\n data: { key, style },\n } = gridProps;\n return (\n \n );\n }}\n \n )}\n
    \n )}\n
    \n )}\n
    \n )}\n
    \n \n );\n};\n\nexport default VirtualizedGrid;\n","import * as React from 'react';\nimport { ChartDonut } from '@patternfly/react-charts';\nimport { Stack, StackItem, pluralize } from '@patternfly/react-core';\nimport { ExclamationTriangleIcon } from '@patternfly/react-icons/dist/esm/icons/exclamation-triangle-icon';\nimport * as _ from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom-v5-compat';\nimport { WatchK8sResults } from '@console/dynamic-plugin-sdk';\nimport { ExternalLink } from '@console/internal/components/utils/link';\nimport { referenceForModel } from '@console/internal/module/k8s';\nimport { ResourceHealthHandler } from '@console/plugin-sdk';\nimport { HealthState } from '@console/shared/src/components/dashboard/status-card/states';\nimport { vulnPriority, priorityFor } from '../const';\nimport { ImageManifestVulnModel } from '../models';\nimport { ImageManifestVuln, WatchImageVuln } from '../types';\n\nexport const securityHealthHandler: ResourceHealthHandler = ({\n imageManifestVuln,\n}) => {\n const { data, loaded, loadError } = imageManifestVuln;\n\n if (loadError) {\n return { state: HealthState.UNKNOWN, message: 'Not available' };\n }\n if (!loaded) {\n return {\n state: HealthState.LOADING,\n message: 'Scanning in progress',\n };\n }\n if (!_.isEmpty(data)) {\n return {\n state: HealthState.ERROR,\n message: pluralize(data.length, 'vulnerable image'),\n };\n }\n return { state: HealthState.OK, message: '0 vulnerable images' };\n};\n\nexport const quayURLFor = (vuln: ImageManifestVuln) =>\n // The first part of the url is the base\n vuln?.spec?.image\n ? `//${vuln.spec.image\n .replace('@sha256', '')\n .split('/')\n .reduce((url, part, i) => [...url, part, ...(i === 0 ? ['repository'] : [])], [])\n .join('/')}/manifest/${vuln.spec?.manifest}?tab=vulnerabilities`\n : '';\n\nexport const SecurityBreakdownPopup: React.FC = ({\n imageManifestVuln,\n namespace,\n}) => {\n const { t } = useTranslation();\n const resource = imageManifestVuln.data;\n const vulnsFor = (severity: string) =>\n resource.filter((v) => v.status?.highestSeverity === severity);\n const fixableVulns = resource\n .filter((v) => v.status?.fixableCount > 0)\n .reduce((all, v) => all.set(v.metadata.name, v), new Map());\n const getVulnerabilityCountText = (v: ImageManifestVuln): string => {\n const {\n fixableCount = 0,\n highCount = 0,\n mediumCount = 0,\n lowCount = 0,\n unknownCount = 0,\n } = v.status;\n const totalCount = highCount + mediumCount + lowCount + unknownCount;\n return t('container-security~{{fixableCount, number}} of {{totalCount, number}} fixable', {\n fixableCount,\n totalCount,\n });\n };\n const imageNameClamped = (imageName: string): string =>\n imageName.length > 25 ? `${imageName.slice(0, 25)}...` : imageName;\n const baseVulnListUrl = namespace\n ? `/k8s/cluster/projects/${namespace}/vulnerabilities`\n : `/k8s/all-namespaces/${referenceForModel(ImageManifestVulnModel)}`;\n const vulnDetailsUrl = `/k8s/ns/${namespace}/${referenceForModel(ImageManifestVulnModel)}`;\n\n return (\n \n \n {namespace\n ? t(\n `container-security~This project's container images from Quay are analyzed to identify vulnerabilities. Images from other registries are not scanned.`,\n )\n : t(\n 'container-security~Container images from Quay are analyzed to identify vulnerabilities. Images from other registries are not scanned.',\n )}\n \n {!_.isEmpty(resource) ? (\n <>\n \n
    \n
    \n {t('container-security~Vulnerable Container Images')}\n
    \n
    \n
    \n
    \n {vulnPriority\n .map((priority) =>\n !_.isEmpty(vulnsFor(priority.value)) ? (\n
    \n
    \n \n  \n {vulnsFor(priority.value).length} {priority.title}\n
    \n
    \n ) : null,\n )\n .toArray()}\n
    \n
    \n \n priority.color.value).toArray()}\n data={vulnPriority\n .map((priority) => ({\n label: priority.title,\n x: priority.value,\n y: vulnsFor(priority.value).length,\n }))\n .toArray()}\n title={t('container-security~{{vulnImageCount, number}} total', {\n vulnImageCount: resource.length,\n })}\n />\n \n
    \n
    \n
    \n {!_.isEmpty(fixableVulns) && (\n \n
    \n
    \n \n {t('container-security~Fixable Container Images')}\n \n \n  \n {t('container-security~{{vulnImageCount, number}} total', {\n vulnImageCount: fixableVulns.size,\n })}\n \n
    \n
    \n
    \n \n {namespace ? t('container-security~Image') : t('container-security~Impact')}\n \n \n {t('container-security~Vulnerabilities')}\n \n
    \n {_.sortBy(_.take([...fixableVulns.values()], 5), [\n (v) => priorityFor(v.status?.highestSeverity).index,\n ]).map((v, key) => (\n
    \n \n {' '}\n \n {namespace\n ? imageNameClamped(v.spec.image)\n : pluralize(\n resource.filter(({ metadata }) => metadata.name === v.metadata.name)\n .length,\n 'namespace',\n )}\n \n \n
    \n {quayURLFor(v) ? (\n \n ) : (\n -\n )}\n
    \n
    \n ))}\n
    \n \n {t('container-security~View all')}\n \n
    \n
    \n )}\n \n ) : (\n \n \n {t('container-security~No vulnerabilities detected.')}\n \n \n )}\n
    \n );\n};\n\nexport type SecurityBreakdownPopupProps = WatchK8sResults & { namespace?: string };\n\nSecurityBreakdownPopup.displayName = 'SecurityBreakdownPopup';\n","import * as React from 'react';\nimport {\n Tabs,\n Tab,\n TabProps,\n TabTitleText,\n TabContent,\n TabContentProps,\n} from '@patternfly/react-core';\nimport Helmet from 'react-helmet';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom-v5-compat';\nimport {\n useResolvedExtensions,\n UserPreferenceGroup,\n isUserPreferenceGroup,\n UserPreferenceItem,\n isUserPreferenceItem,\n} from '@console/dynamic-plugin-sdk';\nimport { LoadingBox, history } from '@console/internal/components/utils';\nimport { useExtensions } from '@console/plugin-sdk/src';\nimport {\n isModifiedEvent,\n orderExtensionBasedOnInsertBeforeAndAfter,\n PageLayout,\n} from '@console/shared';\nimport { USER_PREFERENCES_BASE_URL } from './const';\nimport {\n UserPreferenceTabGroup,\n ResolvedUserPreferenceItem,\n ResolvedUserPreferenceGroup,\n} from './types';\nimport UserPreferenceForm from './UserPreferenceForm';\nimport { getUserPreferenceGroups } from './utils/getUserPreferenceGroups';\nimport './UserPreferencePage.scss';\n\nconst UserPreferencePage: React.FC = () => {\n // resources and calls to hooks\n const { t } = useTranslation();\n\n const userPreferenceGroupExtensions = useExtensions(isUserPreferenceGroup);\n const sortedUserPreferenceGroups = orderExtensionBasedOnInsertBeforeAndAfter<\n ResolvedUserPreferenceGroup\n >(userPreferenceGroupExtensions.map(({ properties }) => properties));\n\n const [userPreferenceItemExtensions, userPreferenceItemResolved] = useResolvedExtensions<\n UserPreferenceItem\n >(isUserPreferenceItem);\n const sortedUserPreferenceItems = orderExtensionBasedOnInsertBeforeAndAfter<\n ResolvedUserPreferenceItem\n >(userPreferenceItemExtensions.map(({ properties }) => properties));\n\n // fetch the default user preference group from the url params if available\n const { group: groupIdFromUrl } = useParams();\n const initialTabId =\n sortedUserPreferenceGroups.find((extension) => extension.id === groupIdFromUrl)?.id ||\n sortedUserPreferenceGroups[0]?.id;\n const [activeTabId, setActiveTabId] = React.useState(initialTabId);\n\n const [userPreferenceTabs, userPreferenceTabContents] = React.useMemo<\n [React.ReactElement[], React.ReactElement[]]\n >(() => {\n const populatedUserPreferenceGroups: UserPreferenceTabGroup[] = getUserPreferenceGroups(\n sortedUserPreferenceGroups,\n sortedUserPreferenceItems,\n );\n const [tabs, tabContents] = populatedUserPreferenceGroups.reduce(\n (acc, currGroup) => {\n const { id, label, items } = currGroup;\n const ref = React.createRef();\n acc[0].push(\n {label}}\n href={`${USER_PREFERENCES_BASE_URL}/${id}`}\n tabContentId={id}\n tabContentRef={ref}\n data-test={`tab ${id}`}\n />,\n );\n acc[1].push(\n
    \n );\n};\n\nconst AllVariableDropdowns = () => {\n const namespace = React.useContext(NamespaceContext);\n const variables = useSelector(({ observe }: RootState) =>\n observe.getIn(['dashboards', getActivePerspective(namespace), 'variables']),\n );\n\n return (\n <>\n {variables.keySeq().map((name: string) => (\n \n ))}\n \n );\n};\n\ntype TagColor = 'red' | 'purple' | 'blue' | 'green' | 'cyan' | 'orange';\nconst tagColors: TagColor[] = ['red', 'purple', 'blue', 'green', 'cyan', 'orange'];\n\nconst Tag: React.FC<{ color: TagColor; text: string }> = React.memo(({ color, text }) => (\n \n));\n\nconst DashboardDropdown: React.FC = React.memo(\n ({ items, onChange, selectedKey }) => {\n const { t } = useTranslation();\n\n const allTags = _.flatMap(items, 'tags');\n const uniqueTags = _.uniq(allTags);\n\n const OptionComponent = ({ itemKey }) => (\n \n {items[itemKey]?.title}\n {items[itemKey]?.tags?.map((tag, i) => (\n \n ))}\n \n );\n\n const selectItems = _.mapValues(items, 'title');\n\n return (\n \n \n {t('public~Dashboard')}\n \n \n
    \n );\n },\n);\n\nexport const PollIntervalDropdown: React.FC = ({ namespace }) => {\n const { t } = useTranslation();\n\n const refreshIntervalFromParams = getQueryArgument('refreshInterval');\n const activePerspective = getActivePerspective(namespace);\n const interval = useSelector(({ observe }: RootState) =>\n observe.getIn(['dashboards', activePerspective, 'pollInterval']),\n );\n\n const dispatch = useDispatch();\n const setInterval = React.useCallback(\n (v: number) => {\n if (v) {\n setQueryArgument('refreshInterval', v.toString());\n } else {\n removeQueryArgument('refreshInterval');\n }\n dispatch(dashboardsSetPollInterval(v, activePerspective));\n },\n [dispatch, activePerspective],\n );\n\n return (\n
    \n \n \n
    \n );\n};\n\nconst TimeDropdowns: React.FC<{}> = React.memo(() => {\n const namespace = React.useContext(NamespaceContext);\n return (\n
    \n \n \n
    \n );\n});\n\nconst HeaderTop: React.FC<{}> = React.memo(() => {\n const { t } = useTranslation();\n\n return (\n
    \n

    \n {t('public~Dashboards')}\n

    \n \n
    \n );\n});\n\nconst QueryBrowserLink = ({ queries }) => {\n const { t } = useTranslation();\n\n const params = new URLSearchParams();\n queries.forEach((q, i) => params.set(`query${i}`, q));\n const namespace = React.useContext(NamespaceContext);\n\n return (\n \n {t('public~Inspect')}\n \n );\n};\n\n// Determine how many columns a panel should span. If panel specifies a `span`, use that. Otherwise\n// look for a `breakpoint` percentage. If neither are specified, default to 12 (full width).\nconst getPanelSpan = (panel: Panel): number => {\n if (panel.span) {\n return panel.span;\n }\n const breakpoint = _.toInteger(_.trimEnd(panel.breakpoint, '%'));\n if (breakpoint > 0) {\n return Math.round(12 * (breakpoint / 100));\n }\n return 12;\n};\n\nconst getPanelClassModifier = (panel: Panel): string => {\n const span: number = getPanelSpan(panel);\n switch (span) {\n case 6:\n return 'max-2';\n case 2:\n // fallthrough\n case 4:\n // fallthrough\n case 5:\n return 'max-3';\n case 3:\n return 'max-4';\n default:\n return 'max-1';\n }\n};\n\nconst Card: React.FC = React.memo(({ panel }) => {\n const { t } = useTranslation();\n\n const namespace = React.useContext(NamespaceContext);\n const activePerspective = getActivePerspective(namespace);\n const pollInterval = useSelector(({ observe }: RootState) =>\n observe.getIn(['dashboards', activePerspective, 'pollInterval']),\n );\n const timespan = useSelector(({ observe }: RootState) =>\n observe.getIn(['dashboards', activePerspective, 'timespan']),\n );\n const variables = useSelector(({ observe }: RootState) =>\n observe.getIn(['dashboards', activePerspective, 'variables']),\n );\n\n const ref = React.useRef();\n const [, wasEverVisible] = useIsVisible(ref);\n\n const [isError, setIsError] = React.useState(false);\n const [dataSourceInfoLoading, setDataSourceInfoLoading] = React.useState(true);\n const [customDataSource, setCustomDataSource] = React.useState(undefined);\n const customDataSourceName = panel.datasource?.name;\n const [extensions] = useResolvedExtensions(isDataSource);\n const hasExtensions = !_.isEmpty(extensions);\n\n React.useEffect(() => {\n const getCustomDataSource = async () => {\n if (!customDataSourceName) {\n setDataSourceInfoLoading(false);\n setCustomDataSource(null);\n } else if (hasExtensions) {\n setDataSourceInfoLoading(true);\n const extension = extensions.find(\n (ext) => ext?.properties?.contextId === 'monitoring-dashboards',\n );\n const getDataSource = extension?.properties?.getDataSource;\n const dataSource = await getDataSource(customDataSourceName);\n setCustomDataSource(dataSource);\n setDataSourceInfoLoading(false);\n } else {\n setDataSourceInfoLoading(false);\n setIsError(true);\n }\n };\n getCustomDataSource().catch(() => {\n setIsError(true);\n });\n }, [extensions, customDataSourceName, hasExtensions]);\n\n const formatSeriesTitle = React.useCallback(\n (labels, i) => {\n const title = panel.targets?.[i]?.legendFormat;\n if (_.isNil(title)) {\n return _.isEmpty(labels) ? '{}' : '';\n }\n // Replace Prometheus labels surrounded by {{ }} in the graph legend label templates\n // Regex is based on https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels\n // with additional matchers to allow leading and trailing whitespace\n return title.replace(\n /{{\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*}}/g,\n (match, key) => labels[key] ?? '',\n );\n },\n [panel],\n );\n\n const handleZoom = React.useCallback((timeRange: number, endTime: number) => {\n setQueryArguments({\n endTime: endTime.toString(),\n timeRange: timeRange.toString(),\n });\n }, []);\n\n if (panel.type === 'row') {\n return (\n <>\n {_.map(panel.panels, (p) => (\n \n ))}\n \n );\n }\n\n if (!['gauge', 'grafana-piechart-panel', 'graph', 'singlestat', 'table'].includes(panel.type)) {\n return null;\n }\n\n const rawQueries = _.map(panel.targets, 'expr');\n if (!rawQueries.length) {\n return null;\n }\n const queries = rawQueries.map((expr) => evaluateTemplate(expr, variables, timespan));\n const isLoading =\n (_.some(queries, _.isUndefined) && dataSourceInfoLoading) || customDataSource === undefined;\n\n const panelClassModifier = getPanelClassModifier(panel);\n\n return (\n \n \n {!isLoading && },\n hasNoOffset: false,\n className: 'co-overview-card__actions',\n }}\n className=\"monitoring-dashboards__card-header\"\n >\n {panel.title}\n \n \n {isError ? (\n <>\n {t('public~Error loading card')}\n \n ) : (\n
    \n {isLoading || !wasEverVisible ? (\n
    \n \n
    \n ) : (\n <>\n {panel.type === 'grafana-piechart-panel' && (\n \n )}\n {panel.type === 'graph' && (\n \n )}\n {(panel.type === 'singlestat' || panel.type === 'gauge') && (\n \n )}\n {panel.type === 'table' && (\n \n )}\n \n )}\n
    \n )}\n
    \n \n
    \n );\n});\n\nconst PanelsRow: React.FC<{ row: Row }> = ({ row }) => {\n const showButton = row.showTitle && !_.isEmpty(row.title);\n\n const [isExpanded, toggleIsExpanded] = useBoolean(showButton ? !row.collapse : true);\n\n const Icon = isExpanded ? AngleDownIcon : AngleRightIcon;\n const title = isExpanded ? 'Hide' : 'Show';\n\n return (\n
    \n {showButton && (\n \n \n  {row.title}\n \n )}\n {isExpanded && (\n
    \n {_.map(row.panels, (panel) => (\n \n ))}\n
    \n )}\n
    \n );\n};\n\nconst Board: React.FC = ({ rows }) => (\n <>\n {_.map(rows, (row) => (\n \n ))}\n \n);\n\nconst MonitoringDashboardsPage: React.FC = () => {\n const { t } = useTranslation();\n const params = useParams();\n const navigate = useNavigate();\n\n const dispatch = useDispatch();\n const namespace = params?.ns;\n const activePerspective = getActivePerspective(namespace);\n const [board, setBoard] = React.useState();\n const [boards, isLoading, error] = useFetchDashboards(namespace);\n\n // Clear queries on unmount\n React.useEffect(() => () => dispatch(queryBrowserDeleteAllQueries()), [dispatch]);\n\n // Clear variables on unmount for dev perspective\n React.useEffect(\n () => () => {\n if (activePerspective === 'dev') {\n dispatch(DashboardsClearVariables(activePerspective));\n }\n },\n [activePerspective, dispatch],\n );\n\n const boardItems = React.useMemo(\n () =>\n _.mapValues(_.mapKeys(boards, 'name'), (b, name) => ({\n tags: b.data?.tags,\n title: b.data?.title ?? name,\n })),\n [boards],\n );\n\n const changeBoard = React.useCallback(\n (newBoard: string) => {\n let timeSpan: string;\n let endTime: string;\n let url = namespace\n ? `/dev-monitoring/ns/${namespace}?dashboard=${newBoard}`\n : `/monitoring/dashboards/${newBoard}`;\n\n const refreshInterval = getQueryArgument('refreshInterval');\n\n if (board) {\n timeSpan = null;\n endTime = null;\n // persist only the refresh Interval when dashboard is changed\n if (refreshInterval) {\n const urlParams = new URLSearchParams({ refreshInterval });\n url = `${url}?${urlParams.toString()}`;\n }\n } else {\n timeSpan = getQueryArgument('timeRange');\n endTime = getQueryArgument('endTime');\n // persist all query params on page reload\n if (window.location.search) {\n url = `${url}${window.location.search}`;\n }\n }\n if (newBoard !== board) {\n if (getQueryArgument('dashboard') !== newBoard) {\n navigate(url, { replace: true });\n }\n\n const allVariables = getAllVariables(boards, newBoard, namespace);\n dispatch(dashboardsPatchAllVariables(allVariables, activePerspective));\n\n // Set time range and poll interval options to their defaults or from the query params if\n // available\n if (refreshInterval) {\n dispatch(dashboardsSetPollInterval(_.toNumber(refreshInterval), activePerspective));\n }\n dispatch(dashboardsSetEndTime(_.toNumber(endTime) || null, activePerspective));\n dispatch(\n dashboardsSetTimespan(\n _.toNumber(timeSpan) || MONITORING_DASHBOARDS_DEFAULT_TIMESPAN,\n activePerspective,\n ),\n );\n\n setBoard(newBoard);\n }\n },\n [activePerspective, board, boards, dispatch, namespace, navigate],\n );\n\n // Display dashboard present in the params or show the first board\n React.useEffect(() => {\n if (!board && !_.isEmpty(boards)) {\n const boardName = getQueryArgument('dashboard');\n changeBoard((namespace ? boardName : params.board) || boards?.[0]?.name);\n }\n }, [board, boards, changeBoard, params.board, namespace]);\n\n React.useEffect(() => {\n const newBoard = getQueryArgument('dashboard');\n const allVariables = getAllVariables(boards, newBoard, namespace);\n dispatch(dashboardsPatchAllVariables(allVariables, activePerspective));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [namespace]);\n\n // If we don't find any rows, build the rows array based on what we have in `data.panels`\n const rows = React.useMemo(() => {\n const data = _.find(boards, { name: board })?.data;\n\n return data?.rows?.length\n ? data.rows\n : data?.panels?.reduce((acc, panel) => {\n if (panel.type === 'row') {\n acc.push(_.cloneDeep(panel));\n } else if (acc.length === 0) {\n acc.push({ panels: [panel] });\n } else {\n const row = acc[acc.length - 1];\n if (_.isNil(row.panels)) {\n row.panels = [];\n }\n row.panels.push(panel);\n }\n return acc;\n }, []);\n }, [board, boards]);\n\n if (error) {\n return ;\n }\n\n return (\n <>\n {!namespace && (\n \n {t('public~Metrics dashboards')}\n \n )}\n \n
    \n {!namespace && }\n
    \n
    \n {!_.isEmpty(boardItems) && (\n \n )}\n \n
    \n {namespace && }\n
    \n
    \n {isLoading ? : }\n
    \n \n );\n};\n\ntype Variable = {\n isHidden?: boolean;\n isLoading?: boolean;\n options?: string[];\n query?: string;\n value?: string;\n};\n\ntype FilterSelectProps = {\n items: { [key: string]: string };\n onChange: (v: string) => void;\n OptionComponent: React.FC<{ itemKey: string }>;\n selectedKey: string;\n};\n\ntype VariableDropdownProps = {\n id: string;\n name: string;\n namespace?: string;\n};\n\ntype DashboardDropdownProps = {\n items: {\n [key: string]: {\n tags: string[];\n title: string;\n };\n };\n onChange: (v: string) => void;\n selectedKey: string;\n};\n\ntype BoardProps = {\n rows: Row[];\n};\n\ntype CardProps = {\n panel: Panel;\n};\n\nexport default withFallback(MonitoringDashboardsPage, ErrorBoundaryFallbackPage);\n","import classNames from 'classnames';\nimport * as _ from 'lodash-es';\nimport {\n PrometheusData,\n PrometheusEndpoint,\n PrometheusLabels,\n YellowExclamationTriangleIcon,\n} from '@console/dynamic-plugin-sdk';\nimport { Alert, Button } from '@patternfly/react-core';\nimport { ChartLineIcon } from '@patternfly/react-icons/dist/esm/icons/chart-line-icon';\nimport { CompressIcon } from '@patternfly/react-icons/dist/esm/icons/compress-icon';\nimport {\n ISortBy,\n sortable,\n TableGridBreakpoint,\n TableVariant,\n wrappable,\n} from '@patternfly/react-table';\nimport {\n Table as TableDeprecated,\n TableHeader as TableHeaderDeprecated,\n TableBody as TableBodyDeprecated,\n} from '@patternfly/react-table/deprecated';\nimport * as React from 'react';\nimport { useTranslation } from 'react-i18next';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { queryBrowserTheme } from '@console/shared/src/components/query-browser';\n\nimport {\n queryBrowserToggleAllSeries,\n queryBrowserToggleSeries,\n toggleGraphs,\n} from '../../actions/observe';\nimport { RootState } from '../../redux';\nimport { getPrometheusURL } from '../graphs/helpers';\nimport { LoadingInline, usePoll, useSafeFetch } from '../utils';\nimport TablePagination from './table-pagination';\nimport { PrometheusAPIError } from './types';\n\nexport const ToggleGraph: React.FC = () => {\n const { t } = useTranslation();\n\n const hideGraphs = useSelector(({ observe }: RootState) => !!observe.get('hideGraphs'));\n\n const dispatch = useDispatch();\n const toggle = React.useCallback(() => dispatch(toggleGraphs()), [dispatch]);\n\n const icon = hideGraphs ? : ;\n\n return (\n \n {icon} {hideGraphs ? t('public~Show graph') : t('public~Hide graph')}\n \n );\n};\n\nconst SeriesButton: React.FC = ({ index, labels }) => {\n const { t } = useTranslation();\n\n const colors = queryBrowserTheme.line.colorScale;\n\n const [colorIndex, isDisabled, isSeriesEmpty] = useSelector(({ observe }: RootState) => {\n const disabledSeries = observe.getIn(['queryBrowser', 'queries', index, 'disabledSeries']);\n if (_.some(disabledSeries, (s) => _.isEqual(s, labels))) {\n return [null, true, false];\n }\n\n const series = observe.getIn(['queryBrowser', 'queries', index, 'series']);\n if (_.isEmpty(series)) {\n return [null, false, true];\n }\n\n const colorOffset = observe\n .getIn(['queryBrowser', 'queries'])\n .take(index)\n .filter((q) => q.get('isEnabled'))\n .reduce((sum, q) => sum + _.size(q.get('series')), 0);\n const seriesIndex = _.findIndex(series, (s) => _.isEqual(s, labels));\n return [(colorOffset + seriesIndex) % colors.length, false, false];\n });\n\n const dispatch = useDispatch();\n const toggleSeries = React.useCallback(() => dispatch(queryBrowserToggleSeries(index, labels)), [\n dispatch,\n index,\n labels,\n ]);\n\n if (isSeriesEmpty) {\n return
    ;\n }\n const title = isDisabled ? t('public~Show series') : t('public~Hide series');\n\n return (\n
    \n \n
    \n );\n};\n\nexport const QueryTable: React.FC = ({ index, namespace }) => {\n const { t } = useTranslation();\n\n const [data, setData] = React.useState();\n const [error, setError] = React.useState();\n const [page, setPage] = React.useState(1);\n const [perPage, setPerPage] = React.useState(50);\n const [sortBy, setSortBy] = React.useState({});\n\n const isEnabled = useSelector(({ observe }: RootState) =>\n observe.getIn(['queryBrowser', 'queries', index, 'isEnabled']),\n );\n const isExpanded = useSelector(({ observe }: RootState) =>\n observe.getIn(['queryBrowser', 'queries', index, 'isExpanded']),\n );\n const pollInterval = useSelector(({ observe }: RootState) =>\n observe.getIn(['queryBrowser', 'pollInterval'], 15 * 1000),\n );\n const query = useSelector(({ observe }: RootState) =>\n observe.getIn(['queryBrowser', 'queries', index, 'query']),\n );\n const series = useSelector(({ observe }: RootState) =>\n observe.getIn(['queryBrowser', 'queries', index, 'series']),\n );\n const span = useSelector(({ observe }: RootState) => observe.getIn(['queryBrowser', 'timespan']));\n\n const lastRequestTime = useSelector(({ observe }: RootState) =>\n observe.getIn(['queryBrowser', 'lastRequestTime']),\n );\n\n const dispatch = useDispatch();\n\n const toggleAllSeries = React.useCallback(() => dispatch(queryBrowserToggleAllSeries(index)), [\n dispatch,\n index,\n ]);\n\n const isDisabledSeriesEmpty = useSelector(({ observe }: RootState) =>\n _.isEmpty(observe.getIn(['queryBrowser', 'queries', index, 'disabledSeries'])),\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const safeFetch = React.useCallback(useSafeFetch(), []);\n\n const tick = () => {\n if (isEnabled && isExpanded && query) {\n safeFetch(getPrometheusURL({ endpoint: PrometheusEndpoint.QUERY, namespace, query }))\n .then((response) => {\n setData(_.get(response, 'data'));\n setError(undefined);\n })\n .catch((err) => {\n if (err.name !== 'AbortError') {\n setData(undefined);\n setError(err);\n }\n });\n }\n };\n\n usePoll(tick, pollInterval, namespace, query, span, lastRequestTime);\n\n React.useEffect(() => {\n setData(undefined);\n setError(undefined);\n setPage(1);\n setSortBy({});\n }, [namespace, query]);\n\n if (!isEnabled || !isExpanded || !query) {\n return null;\n }\n\n if (error) {\n return (\n
    \n \n {_.get(error, 'json.error', error.message)}\n \n
    \n );\n }\n\n if (!data) {\n return (\n
    \n \n
    \n );\n }\n\n // Add any data series from `series` (those displayed in the graph) that are not in `data.result`.\n // This happens for queries that exclude a series currently, but included that same series at some\n // point during the graph's range.\n const expiredSeries = _.differenceWith(series, data.result, (s, r) => _.isEqual(s, r.metric));\n const result = expiredSeries.length\n ? [...data.result, ...expiredSeries.map((metric) => ({ metric }))]\n : data.result;\n\n if (!result || result.length === 0) {\n return (\n
    \n {t('public~No datapoints found.')}\n
    \n );\n }\n\n const transforms = [sortable, wrappable];\n\n const buttonCell = (labels) => ({ title: });\n\n let columns, rows;\n if (data.resultType === 'scalar') {\n columns = ['', { title: t('public~Value'), transforms }];\n rows = [[buttonCell({}), _.get(result, '[1]')]];\n } else if (data.resultType === 'string') {\n columns = [{ title: t('public~Value'), transforms }];\n rows = [[result?.[1]]];\n } else {\n const allLabelKeys = _.uniq(_.flatMap(result, ({ metric }) => Object.keys(metric))).sort();\n\n columns = [\n '',\n ...allLabelKeys.map((k) => ({\n title: {k === '__name__' ? t('public~Name') : k},\n transforms,\n })),\n { title: t('public~Value'), transforms },\n ];\n\n let rowMapper;\n if (data.resultType === 'matrix') {\n rowMapper = ({ metric, values }) => [\n '',\n ..._.map(allLabelKeys, (k) => metric[k]),\n {\n title: (\n <>\n {_.map(values, ([time, v]) => (\n
    \n {v} @{time}\n
    \n ))}\n \n ),\n },\n ];\n } else {\n rowMapper = ({ metric, value }) => [\n buttonCell(metric),\n ..._.map(allLabelKeys, (k) => metric[k]),\n _.get(value, '[1]', { title: {t('public~None')} }),\n ];\n }\n\n rows = _.map(result, rowMapper);\n if (sortBy) {\n // Sort Values column numerically and sort all the other columns alphabetically\n const valuesColIndex = allLabelKeys.length + 1;\n const sort =\n sortBy.index === valuesColIndex\n ? (cells) => {\n const v = Number(cells[valuesColIndex]);\n return Number.isNaN(v) ? 0 : v;\n }\n : `${sortBy.index}`;\n rows = _.orderBy(rows, [sort], [sortBy.direction]);\n }\n }\n\n const onSort = (e, i, direction) => setSortBy({ index: i, direction });\n\n const tableRows = rows.slice((page - 1) * perPage, page * perPage).map((cells) => ({ cells }));\n\n return (\n <>\n
    \n
    \n \n {isDisabledSeriesEmpty ? t('public~Unselect all') : t('public~Select all')}\n \n \n \n \n \n
    \n
    \n \n \n );\n};\n\ntype QueryTableProps = {\n index: number;\n namespace?: string;\n};\n\ntype SeriesButtonProps = {\n index: number;\n labels: PrometheusLabels;\n};\n","import * as _ from 'lodash-es';\nimport { getUser, Silence, SilenceStates } from '@console/dynamic-plugin-sdk';\nimport {\n formatPrometheusDuration,\n parsePrometheusDuration,\n} from '@openshift-console/plugin-shared/src/datetime/prometheus';\nimport { Alert, ActionGroup, Button, TextArea, TextInput, Tooltip } from '@patternfly/react-core';\nimport {\n Dropdown as DropdownDeprecated,\n DropdownItem as DropdownItemDeprecated,\n DropdownToggle as DropdownToggleDeprecated,\n} from '@patternfly/react-core/deprecated';\nimport { MinusCircleIcon } from '@patternfly/react-icons/dist/esm/icons/minus-circle-icon';\nimport { PlusCircleIcon } from '@patternfly/react-icons/dist/esm/icons/plus-circle-icon';\nimport * as React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { useParams, useNavigate } from 'react-router-dom-v5-compat';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useSelector } from 'react-redux';\n\nimport { consoleFetchJSON } from '@console/dynamic-plugin-sdk/src/utils/fetch';\nimport { withFallback } from '@console/shared/src/components/error';\nimport { useActiveNamespace } from '@console/shared/src/hooks/useActiveNamespace';\nimport { RootState } from '../../redux';\nimport { refreshNotificationPollers } from '../notification-drawer';\nimport { ButtonBar } from '../utils/button-bar';\nimport { PageHeading, SectionHeading } from '../utils/headings';\nimport { ExternalLink, getURLSearchParams } from '../utils/link';\nimport { StatusBox } from '../utils/status-box';\nimport { useBoolean } from './hooks/useBoolean';\nimport { Silences } from './types';\nimport { SilenceResource, silenceState } from './utils';\n\nconst pad = (i: number): string => (i < 10 ? `0${i}` : String(i));\n\nconst formatDate = (d: Date): string =>\n `${d.getFullYear()}/${pad(d.getMonth() + 1)}/${pad(d.getDate())} ${pad(d.getHours())}:${pad(\n d.getMinutes(),\n )}:${pad(d.getSeconds())}`;\n\nconst DatetimeTextInput = (props) => {\n const { t } = useTranslation();\n\n const pattern =\n '\\\\d{4}/(0?[1-9]|1[012])/(0?[1-9]|[12]\\\\d|3[01]) (0?\\\\d|1\\\\d|2[0-3]):[0-5]\\\\d(:[0-5]\\\\d)?';\n const isValid = new RegExp(`^${pattern}$`).test(props.value);\n\n return (\n
    \n \n {isValid ? new Date(props.value).toISOString() : t('public~Invalid date / time')}\n ,\n ]}\n >\n \n \n
    \n );\n};\n\nconst NegativeMatcherHelp = () => {\n const { t } = useTranslation();\n\n return (\n
    \n
    \n {t('Select the negative matcher option to update the label value to a not equals matcher.')}\n
    \n
    \n {t(\n 'If both the RegEx and negative matcher options are selected, the label value must not match the regular expression.',\n )}\n
    \n
    \n );\n};\n\nconst SilenceForm_: React.FC = ({ defaults, Info, title }) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n\n const { ns: namespace } = useParams();\n\n const durationOff = '-';\n const durations = {\n [durationOff]: durationOff,\n '30m': t('public~30m'),\n '1h': t('public~1h'),\n '2h': t('public~2h'),\n '6h': t('public~6h'),\n '12h': t('public~12h'),\n '1d': t('public~1d'),\n '2d': t('public~2d'),\n '1w': t('public~1w'),\n };\n\n const now = new Date();\n\n // Default to starting now if we have no default start time or if the default start time is in the\n // past (because Alertmanager will change a time in the past to the current time on save anyway)\n const defaultIsStartNow = _.isEmpty(defaults.startsAt) || new Date(defaults.startsAt) < now;\n\n let defaultDuration = _.isEmpty(defaults.endsAt) ? '2h' : durationOff;\n\n // If we have both a default start and end time and the difference between them exactly matches\n // one of the duration options, automatically select that option in the duration menu\n if (!defaultIsStartNow && defaults.startsAt && defaults.endsAt) {\n const durationFromDefaults = formatPrometheusDuration(\n Date.parse(defaults.endsAt) - Date.parse(defaults.startsAt),\n );\n if (Object.keys(durations).includes(durationFromDefaults)) {\n defaultDuration = durationFromDefaults;\n }\n }\n\n const [isOpen, setIsOpen, , setClosed] = useBoolean(false);\n\n const [comment, setComment] = React.useState(defaults.comment ?? '');\n const [createdBy, setCreatedBy] = React.useState(defaults.createdBy ?? '');\n const [duration, setDuration] = React.useState(defaultDuration);\n const [endsAt, setEndsAt] = React.useState(\n defaults.endsAt ?? formatDate(new Date(new Date(now).setHours(now.getHours() + 2))),\n );\n const [error, setError] = React.useState();\n const [inProgress, setInProgress] = React.useState(false);\n const [isStartNow, setIsStartNow] = React.useState(defaultIsStartNow);\n const [matchers, setMatchers] = React.useState(\n defaults.matchers ?? [{ isRegex: false, name: '', value: '' }],\n );\n const [startsAt, setStartsAt] = React.useState(defaults.startsAt ?? formatDate(now));\n\n const user = useSelector(getUser);\n\n React.useEffect(() => {\n if (_.isEmpty(createdBy)) {\n setCreatedBy(user?.metadata?.name);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [user]);\n\n React.useEffect(() => {\n if (namespace) {\n setMatchers([\n { isRegex: false, name: 'namespace', value: namespace },\n ...matchers.filter((m) => m.name !== 'namespace'),\n ]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [namespace]);\n\n const getEndsAtValue = (): string => {\n const startsAtDate = Date.parse(startsAt);\n return startsAtDate\n ? formatDate(new Date(startsAtDate + parsePrometheusDuration(duration)))\n : '-';\n };\n\n const setMatcherField = (i: number, field: string, v: any): void => {\n const newMatchers = _.clone(matchers);\n _.set(newMatchers, [i, field], v);\n setMatchers(newMatchers);\n };\n\n const addMatcher = (): void => {\n setMatchers([...matchers, { isRegex: false, name: '', value: '' }]);\n };\n\n const removeMatcher = (i: number): void => {\n const newMatchers = _.clone(matchers);\n newMatchers.splice(i, 1);\n\n // If all matchers have been removed, add back a single blank matcher\n setMatchers(_.isEmpty(newMatchers) ? [{ isRegex: false, name: '', value: '' }] : newMatchers);\n };\n\n const onSubmit: React.FormEventHandler = (e) => {\n e.preventDefault();\n\n // Don't allow comments to only contain whitespace\n if (_.trim(comment) === '') {\n setError('Comment is required.');\n return;\n }\n\n const url = namespace\n ? `api/alertmanager-tenancy/api/v2/silences?namespace=${namespace}`\n : `${window.SERVER_FLAGS.alertManagerBaseURL}/api/v2/silences`;\n if (!url) {\n setError('Alertmanager URL not set');\n return;\n }\n\n setInProgress(true);\n\n const saveStartsAt: Date = isStartNow ? new Date() : new Date(startsAt);\n const saveEndsAt: Date =\n duration === durationOff\n ? new Date(endsAt)\n : new Date(saveStartsAt.getTime() + parsePrometheusDuration(duration));\n\n const body = {\n comment,\n createdBy,\n endsAt: saveEndsAt.toISOString(),\n id: defaults.id,\n matchers,\n startsAt: saveStartsAt.toISOString(),\n };\n\n consoleFetchJSON\n .post(url, body)\n .then(({ silenceID }) => {\n setError(undefined);\n refreshNotificationPollers();\n navigate(\n namespace\n ? `/dev-monitoring/ns/${namespace}/silences/${encodeURIComponent(silenceID)}`\n : `/monitoring/silences/${encodeURIComponent(silenceID)}`,\n );\n })\n .catch((err) => {\n const errorMessage =\n typeof _.get(err, 'json') === 'string'\n ? _.get(err, 'json')\n : err.message || 'Error saving Silence';\n setError(errorMessage);\n setInProgress(false);\n });\n };\n\n const dropdownItems = _.map(durations, (displayText, key) => (\n setDuration(key)}>\n {displayText}\n \n ));\n\n return (\n <>\n \n {title}\n \n \n\n {Info && }\n\n
    \n
    \n
    \n \n
    \n
    \n \n {isStartNow ? (\n \n ) : (\n setStartsAt(value)}\n value={startsAt}\n />\n )}\n
    \n
    \n \n \n {duration}\n \n }\n />\n
    \n
    \n \n {duration === durationOff ? (\n setEndsAt(value)}\n value={endsAt}\n />\n ) : (\n \n )}\n
    \n
    \n
    \n \n
    \n
    \n\n
    \n \n

    \n \n Alerts with labels that match these selectors will be silenced instead of firing.\n Label values can be matched exactly or with a{' '}\n \n \n

    \n\n {_.map(matchers, (matcher, i: number) => {\n const isNamespace = !!namespace && matcher.name === 'namespace';\n return (\n
    \n
    \n \n setMatcherField(i, 'name', v)}\n placeholder={t('public~Name')}\n value={matcher.name}\n />\n
    \n
    \n \n setMatcherField(i, 'value', v)}\n placeholder={t('public~Value')}\n value={matcher.value}\n />\n
    \n {!isNamespace && (\n
    \n
    \n \n }>\n \n \n \n removeMatcher(i)}\n aria-label={t('public~Remove')}\n variant=\"plain\"\n >\n \n \n \n
    \n
    \n )}\n
    \n );\n })}\n\n
    \n \n \n {t('public~Add label')}\n \n
    \n
    \n\n
    \n \n
    \n \n setCreatedBy(v)}\n value={createdBy}\n />\n
    \n
    \n \n setComment(v)}\n data-test=\"silence-comment\"\n value={comment}\n />\n
    \n \n \n \n \n \n \n
    \n
    \n
    \n \n );\n};\nconst SilenceForm = withFallback(SilenceForm_);\n\nconst EditInfo = () => {\n const { t } = useTranslation();\n\n return (\n \n {t(\n 'public~When changes are saved, the currently existing silence will be expired and a new silence with the new configuration will take its place.',\n )}\n \n );\n};\n\nexport const EditSilence = () => {\n const { t } = useTranslation();\n const params = useParams();\n\n const [namespace] = useActiveNamespace();\n\n const silences: Silences = useSelector(({ observe }: RootState) =>\n observe.get(namespace ? 'devSilences' : 'silences'),\n );\n\n const silence: Silence = _.find(silences?.data, { id: params.id });\n const isExpired = silenceState(silence) === SilenceStates.Expired;\n const defaults = _.pick(silence, [\n 'comment',\n 'createdBy',\n 'endsAt',\n 'id',\n 'matchers',\n 'startsAt',\n ]);\n defaults.startsAt = isExpired ? undefined : formatDate(new Date(defaults.startsAt));\n defaults.endsAt = isExpired ? undefined : formatDate(new Date(defaults.endsAt));\n\n return (\n \n \n \n );\n};\n\nexport const CreateSilence = () => {\n const { t } = useTranslation();\n\n const matchers = _.map(getURLSearchParams(), (value, name) => ({ name, value, isRegex: false }));\n\n return _.isEmpty(matchers) ? (\n \n ) : (\n \n );\n};\n\ntype SilenceFormProps = {\n defaults: any;\n Info?: React.ComponentType<{}>;\n title: string;\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport * as _ from 'lodash-es';\nimport * as fuzzy from 'fuzzysearch';\nimport { useTranslation } from 'react-i18next';\n\nimport { Dropdown, ResourceName } from './';\n\n// https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/#envvarsource-v1-core\n// valueFrom:\n// fieldRef:\n// fieldPath: spec.nodeName\n\n// valueFrom:\n// secretKeyRef:\n// name: mysecret\n// key: username\n\n// valueFrom:\n// configMapKeyRef:\n// name: tectonic-config\n// key: consoleBaseAddress\n\n// valueFrom:\n// resourceFieldRef:\n// containerName: test-container\n// resource: requests.cpu\n// divisor: 1 // 1 is default\n\nconst getSpacer = (configMap, secret) => {\n const spacerBefore = new Set();\n return _.isEmpty(configMap) || _.isEmpty(secret) ? spacerBefore : spacerBefore.add(secret);\n};\n\nconst getKeys = (keyMap) => {\n const itemKeys = {};\n _.mapKeys(keyMap, (value, key) => (itemKeys[key] = key));\n return itemKeys;\n};\n\nexport const NameKeyDropdownPair = ({\n name,\n pairKey,\n configMaps,\n secrets,\n serviceAccounts,\n onChange,\n kind,\n nameTitle,\n placeholderString,\n isKeyRef = true,\n}) => {\n const { t } = useTranslation();\n\n const getHeaders = (configMap, secret, serviceAccount) => {\n const headers = {};\n if (configMap && !_.isEmpty(configMap)) {\n headers[configMap] = t('public~ConfigMaps');\n }\n if (secret && !_.isEmpty(secret)) {\n headers[secret] = t('public~Secrets');\n }\n if (serviceAccount && !_.isEmpty(serviceAccount)) {\n headers[serviceAccount] = t('public~ServiceAccounts');\n }\n\n return headers;\n };\n\n let itemKeys = {};\n let refProperty;\n const cmItems = {};\n const secretItems = {};\n const saItems = {};\n const nameAutocompleteFilter = (text, item) => fuzzy(text, item.props.name);\n const keyAutocompleteFilter = (text, item) => fuzzy(text, item);\n const keyTitle = _.isEmpty(pairKey) ? t('public~Select a key') : pairKey;\n const cmRefProperty = isKeyRef ? 'configMapKeyRef' : 'configMapRef';\n const secretRefProperty = isKeyRef ? 'secretKeyRef' : 'secretRef';\n const serviceAccountRefProperty = isKeyRef ? 'serviceAccountKeyRef' : 'serviceAccountRef';\n\n _.each(configMaps.items, (v) => {\n cmItems[`${v.metadata.name}:${cmRefProperty}`] = (\n \n );\n if (kind === 'ConfigMap' && _.isEqual(v.metadata.name, name)) {\n refProperty = cmRefProperty;\n itemKeys = getKeys(v.data);\n }\n });\n _.each(secrets.items, (v) => {\n secretItems[`${v.metadata.name}:${secretRefProperty}`] = (\n \n );\n if (kind === 'Secret' && _.isEqual(v.metadata.name, name)) {\n refProperty = secretRefProperty;\n itemKeys = getKeys(v.data);\n }\n });\n serviceAccounts &&\n _.each(serviceAccounts.items, (v) => {\n saItems[`${v.metadata.name}:${serviceAccountRefProperty}`] = (\n \n );\n if (kind === 'ServiceAccount' && _.isEqual(v.metadata.name, name)) {\n refProperty = serviceAccountRefProperty;\n itemKeys = getKeys(v.data);\n }\n });\n\n const firstConfigMap = _.isEmpty(cmItems) ? {} : Object.keys(cmItems)[0];\n const firstSecret = _.isEmpty(secretItems) ? {} : Object.keys(secretItems)[0];\n const firstServiceAccount = saItems && !_.isEmpty(saItems) ? Object.keys(saItems)[0] : {};\n const headerBefore = getHeaders(firstConfigMap, firstSecret, firstServiceAccount);\n const spacerBefore = getSpacer(firstConfigMap, firstSecret);\n const items = _.assign({}, cmItems, secretItems, saItems);\n return (\n <>\n {\n const keyValuePair = _.split(val, ':');\n onChange({\n [keyValuePair[1]]: isKeyRef\n ? { name: keyValuePair[0], pairKey: '' }\n : { name: keyValuePair[0] },\n });\n }}\n />\n {isKeyRef && (\n onChange({ [refProperty]: { name, key: val } })}\n />\n )}\n \n );\n};\n\nconst FieldRef = ({ data: { fieldPath } }) => (\n <>\n
    \n \n
    \n
    \n \n
    \n \n);\n\nconst ConfigMapSecretKeyRef = ({\n data: { name, key },\n configMaps,\n secrets,\n serviceAccounts,\n onChange,\n disabled,\n kind,\n}) => {\n const { t } = useTranslation();\n const placeholderString = t('public~ConfigMap or Secret');\n const nameTitle = _.isEmpty(name) ? (\n t('public~Select a resource')\n ) : (\n \n );\n\n if (disabled) {\n return (\n <>\n
    \n \n
    \n
    \n \n
    \n \n );\n }\n return (\n \n );\n};\n\nconst ConfigMapSecretRef = ({\n data: { name, key },\n configMaps,\n secrets,\n serviceAccounts,\n onChange,\n disabled,\n kind,\n}) => {\n const { t } = useTranslation();\n const placeholderString = t('public~ConfigMap or Secret');\n const nameTitle = _.isEmpty(name) ? (\n t('public~Select a resource')\n ) : (\n \n );\n const isKeyRef = false;\n const nameString = _.isEmpty(name) ? '' : `${name} - ${kind}`;\n\n if (disabled) {\n return (\n
    \n \n
    \n );\n }\n return (\n \n );\n};\n\nconst ResourceFieldRef = ({ data: { containerName, resource } }) => (\n <>\n
    \n \n
    \n
    \n \n
    \n \n);\n\nconst keyStringToComponent = {\n fieldRef: {\n component: FieldRef,\n },\n secretKeyRef: {\n component: ConfigMapSecretKeyRef,\n kind: 'Secret',\n },\n configMapKeyRef: {\n component: ConfigMapSecretKeyRef,\n kind: 'ConfigMap',\n },\n configMapSecretKeyRef: {\n component: ConfigMapSecretKeyRef,\n },\n resourceFieldRef: {\n component: ResourceFieldRef,\n },\n configMapRef: {\n component: ConfigMapSecretRef,\n kind: 'ConfigMap',\n },\n secretRef: {\n component: ConfigMapSecretRef,\n kind: 'Secret',\n },\n serviceAccountRef: {\n component: ConfigMapSecretRef,\n kind: 'ServiceAccount',\n },\n configMapSecretRef: {\n component: ConfigMapSecretRef,\n },\n};\n\nexport class ValueFromPair extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.onChangeVal = (...args) => this._onChangeVal(...args);\n }\n\n _onChangeVal(value) {\n const { onChange } = this.props;\n const e = { target: { value } };\n return onChange(e);\n }\n\n render() {\n const { pair, configMaps, secrets, serviceAccounts, disabled } = this.props;\n const valueFromKey = Object.keys(this.props.pair)[0];\n const componentInfo = keyStringToComponent[valueFromKey];\n if (!componentInfo) {\n return null;\n }\n\n const Component = componentInfo.component;\n return (\n \n );\n }\n}\nValueFromPair.propTypes = {\n pair: PropTypes.object.isRequired,\n configMaps: PropTypes.object,\n secrets: PropTypes.object,\n onChange: PropTypes.func,\n disabled: PropTypes.bool,\n};\n","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom-v5-compat';\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionToggle,\n Button,\n ButtonVariant,\n Divider,\n PageSection,\n PageSectionVariants,\n Text,\n Toolbar,\n ToolbarChip,\n ToolbarContent,\n ToolbarFilter,\n ToolbarItem,\n} from '@patternfly/react-core';\nimport { PlusCircleIcon } from '@patternfly/react-icons/dist/esm/icons/plus-circle-icon';\nimport { MinusCircleIcon } from '@patternfly/react-icons/dist/esm/icons/minus-circle-icon';\nimport { getBadgeFromType, usePinnedResources } from '@console/shared';\nimport { connectToModel } from '../kinds';\nimport { DefaultPage } from './default-resource';\nimport { requirementFromString } from '../module/k8s/selector-requirement';\nimport { ResourceListDropdown } from './resource-dropdown';\nimport { getResourceListPages } from './resource-pages';\nimport { withStartGuide } from './start-guide';\nimport { split, selectorFromString } from '../module/k8s/selector';\nimport {\n kindForReference,\n modelFor,\n referenceForModel,\n K8sResourceKindReference,\n} from '../module/k8s';\nimport { LoadingBox, MsgBox, ResourceIcon, setQueryArgument, AsyncComponent } from './utils';\nimport confirmNavUnpinModal from '@console/app/src/components/nav/confirmNavUnpinModal';\nimport { SearchFilterDropdown, searchFilterValues } from './search-filter-dropdown';\nimport { useExtensions, isResourceListPage, ResourceListPage } from '@console/plugin-sdk';\nimport {\n ResourceListPage as DynamicResourceListPage,\n isResourceListPage as isDynamicResourceListPage,\n useActivePerspective,\n} from '@console/dynamic-plugin-sdk';\n\nconst ResourceList = connectToModel(({ kindObj, mock, namespace, selector, nameFilter }) => {\n const resourceListPageExtensions = useExtensions(isResourceListPage);\n const dynamicResourceListPageExtensions = useExtensions(\n isDynamicResourceListPage,\n );\n if (!kindObj) {\n return ;\n }\n\n const componentLoader = getResourceListPages(\n resourceListPageExtensions,\n dynamicResourceListPageExtensions,\n ).get(referenceForModel(kindObj), () => Promise.resolve(DefaultPage));\n const ns = kindObj.namespaced ? namespace : undefined;\n\n return (\n \n );\n});\n\nconst SearchPage_: React.FC = (props) => {\n const [perspective] = useActivePerspective();\n const [selectedItems, setSelectedItems] = React.useState(new Set([]));\n const [collapsedKinds, setCollapsedKinds] = React.useState(new Set([]));\n const [labelFilter, setLabelFilter] = React.useState([]);\n const [labelFilterInput, setLabelFilterInput] = React.useState('');\n const [typeaheadNameFilter, setTypeaheadNameFilter] = React.useState('');\n const [pinnedResources, setPinnedResources, pinnedResourcesLoaded] = usePinnedResources();\n const { noProjectsAvailable } = props;\n const { t } = useTranslation();\n const { ns: namespace } = useParams();\n // Set state variables from the URL\n React.useEffect(() => {\n let kind: string, q: string, name: string;\n\n if (window.location.search) {\n const sp = new URLSearchParams(window.location.search);\n kind = sp.get('kind');\n q = sp.get('q');\n name = sp.get('name');\n }\n // Ensure that the \"kind\" route parameter is a valid resource kind ID\n kind = kind || '';\n if (kind !== '') {\n setSelectedItems(new Set(kind.split(',')));\n }\n const tags = split(q || '');\n const validTags = _.reject(tags, (tag) => requirementFromString(tag) === undefined);\n setLabelFilter(validTags);\n setTypeaheadNameFilter(name || '');\n }, []);\n\n const updateSelectedItems = (selection: string) => {\n const updateItems = selectedItems;\n updateItems.has(selection) ? updateItems.delete(selection) : updateItems.add(selection);\n setSelectedItems(updateItems);\n setQueryArgument('kind', [...updateItems].join(','));\n };\n\n const updateNewItems = (filter: string, { key }: ToolbarChip) => {\n const updateItems = selectedItems;\n updateItems.has(key) ? updateItems.delete(key) : updateItems.add(key);\n setSelectedItems(updateItems);\n setQueryArgument('kind', [...updateItems].join(','));\n };\n\n const clearSelectedItems = () => {\n setSelectedItems(new Set([]));\n setQueryArgument('kind', '');\n };\n\n const clearNameFilter = () => {\n setTypeaheadNameFilter('');\n setQueryArgument('name', '');\n };\n\n const clearLabelFilter = () => {\n setLabelFilter([]);\n setQueryArgument('q', '');\n };\n\n const clearAll = () => {\n clearSelectedItems();\n clearNameFilter();\n clearLabelFilter();\n };\n\n const pinToggle = (e: React.MouseEvent, resource: string) => {\n e.preventDefault();\n e.stopPropagation();\n const index = pinnedResources.indexOf(resource);\n if (index >= 0) {\n confirmNavUnpinModal(resource, pinnedResources, setPinnedResources);\n return;\n }\n setPinnedResources([resource, ...pinnedResources]);\n };\n\n const toggleKindExpanded = (kindView: string) => {\n const newCollasped = new Set(collapsedKinds);\n newCollasped.has(kindView) ? newCollasped.delete(kindView) : newCollasped.add(kindView);\n setCollapsedKinds(newCollasped);\n };\n\n const updateNameFilter = (value: string) => {\n setTypeaheadNameFilter(value);\n setQueryArgument('name', value);\n };\n\n const updateLabelFilter = (value: string, endOfString: boolean) => {\n setLabelFilterInput(value);\n if (requirementFromString(value) !== undefined && endOfString) {\n const updatedLabels = _.uniq([...labelFilter, value]);\n setLabelFilter(updatedLabels);\n setQueryArgument('q', updatedLabels.join(','));\n setLabelFilterInput('');\n }\n };\n\n const updateSearchFilter = (type: string, value: string, endOfString: boolean) => {\n type === searchFilterValues.Label\n ? updateLabelFilter(value, endOfString)\n : updateNameFilter(value);\n };\n\n const removeLabelFilter = (filter: string, value: string) => {\n const newLabels = labelFilter.filter((keepItem: string) => keepItem !== value);\n setLabelFilter(newLabels);\n setQueryArgument('q', newLabels.join(','));\n };\n\n const getToggleText = (item: string) => {\n const model = modelFor(item);\n // API discovery happens asynchronously. Avoid runtime errors if the model hasn't loaded.\n if (!model) {\n return '';\n }\n const { labelPlural, labelPluralKey, apiVersion, apiGroup } = model;\n return (\n \n {labelPluralKey ? t(labelPluralKey) : labelPlural}{' '}\n
    \n {apiGroup || 'core'}/{apiVersion}\n
    \n
    \n );\n };\n\n const getChipText = (reference: K8sResourceKindReference) => {\n const model = modelFor(reference);\n // API discovery happens asynchronously. Avoid runtime errors if the model hasn't loaded.\n if (!model) {\n return kindForReference(reference);\n }\n return model.labelKey ? t(model.labelKey) : model.label;\n };\n\n return (\n <>\n \n {t('public~Search')}\n \n \n {t('public~Search')}\n \n \n \n ({\n key: resourceKind,\n node: (\n <>\n \n {getChipText(resourceKind)}\n \n ),\n }))}\n deleteChip={updateNewItems}\n categoryName={t('public~Resource')}\n chipGroupCollapsedText={t('public~{{numRemaining}} more', {\n numRemaining: '${remaining}',\n })}\n chipGroupExpandedText={t('public~Show less')}\n >\n \n \n \n \n \n 0 ? [typeaheadNameFilter] : []}\n deleteChip={clearNameFilter}\n categoryName={t('public~Name')}\n >\n \n \n \n \n \n \n \n \n \n \n {[...selectedItems].map((resource) => {\n const isCollapsed = collapsedKinds.has(resource);\n return (\n
    \n \n toggleKindExpanded(resource)}\n isExpanded={!isCollapsed}\n id={`${resource}-toggle`}\n >\n {getToggleText(resource)}\n {perspective !== 'admin' && pinnedResourcesLoaded && (\n pinToggle(e, resource)}\n >\n {pinnedResources.includes(resource) ? (\n <>\n \n {t('public~Remove from navigation')}\n \n ) : (\n <>\n \n {t('public~Add to navigation')}\n \n )}\n \n )}\n \n \n {!isCollapsed && (\n \n )}\n \n \n
    \n );\n })}\n
    \n {selectedItems.size === 0 && (\n {t('public~Select one or more resources from the dropdown.')}

    }\n />\n )}\n
    \n \n );\n};\n\nexport const SearchPage = withStartGuide(SearchPage_);\n\nexport type SearchProps = {\n namespace?: string;\n noProjectsAvailable?: boolean;\n};\n","const SDK_API_DISCOVERY_RESOURCES_LOCAL_STORAGE_KEY = 'sdk/api-discovery-resources';\n\nexport const cacheResources = (resources) => {\n try {\n localStorage.setItem(SDK_API_DISCOVERY_RESOURCES_LOCAL_STORAGE_KEY, JSON.stringify(resources));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('Error caching API resources in localStorage', e);\n throw new Error(e);\n }\n};\n\nexport const getCachedResources = async () => {\n const resourcesJSON = localStorage.getItem(SDK_API_DISCOVERY_RESOURCES_LOCAL_STORAGE_KEY);\n if (!resourcesJSON) {\n throw new Error(\n `No API resources found in localStorage for key ${SDK_API_DISCOVERY_RESOURCES_LOCAL_STORAGE_KEY}`,\n );\n }\n\n // Clear cached resources after load as a safeguard. If there's any errors\n // with the content that prevents the console from working, the bad data\n // will not be loaded when the user refreshes the console. The cache will\n // be refreshed when discovery completes.\n localStorage.removeItem(SDK_API_DISCOVERY_RESOURCES_LOCAL_STORAGE_KEY);\n\n const resources = JSON.parse(resourcesJSON);\n // eslint-disable-next-line no-console\n console.log('Loaded cached API resources from localStorage');\n return resources;\n};\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"SSARQuery\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"resource\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"verb\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"namespace\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"selfSubjectAccessReview\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"resource\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"resource\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"verb\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"verb\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"namespace\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"namespace\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"allowed\"},\"arguments\":[],\"directives\":[]}]}}]}}]}},{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"SSRQuery\"},\"variableDefinitions\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"selfSubjectReview\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userInfo\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"uid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"groups\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"extra\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":378}};\n doc.loc.source = {\"body\":\"query SSARQuery($resource: String, $verb: String, $group: String, $namespace: String) {\\n selfSubjectAccessReview(resource: $resource, verb: $verb, group: $group, namespace: $namespace) {\\n status {\\n allowed\\n }\\n }\\n}\\n\\nquery SSRQuery {\\n selfSubjectReview {\\n status {\\n userInfo {\\n uid,\\n username,\\n groups,\\n extra\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n\n module.exports = doc;\n \n module.exports[\"SSARQuery\"] = oneQuery(doc, \"SSARQuery\");\n \n module.exports[\"SSRQuery\"] = oneQuery(doc, \"SSRQuery\");\n \n","import {\n ClusterUpdateStatus,\n getClusterUpdateStatus,\n} from '@console/internal/module/k8s/cluster-settings';\nimport { ClusterVersionKind } from '@console/internal/module/k8s/types';\n\nexport const isClusterUpdateActivity = (cv: ClusterVersionKind) =>\n getClusterUpdateStatus(cv) === ClusterUpdateStatus.Updating;\n\nexport const getClusterUpdateTimestamp = (cv: ClusterVersionKind) =>\n cv && cv.status && cv.status.history[0] ? new Date(cv.status.history[0].startedTime) : null;\n","import * as React from 'react';\n\nexport const usePrevious =

    (value: P, deps?: any[]): P => {\n const ref = React.useRef

    ();\n React.useEffect(() => {\n ref.current = value;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps || [value]);\n return ref.current;\n};\n","import { NamespaceModel, ProjectModel } from '@console/internal/models';\nimport { k8sGet } from '@console/internal/module/k8s';\nimport { ALL_NAMESPACES_KEY } from '@console/shared/src/constants';\n\nexport const checkNamespaceExists = async (ns: string, useProjects: boolean): Promise => {\n if (!ns) {\n return false;\n }\n if (ns === ALL_NAMESPACES_KEY) {\n return true;\n }\n try {\n await k8sGet(useProjects ? ProjectModel : NamespaceModel, ns);\n return true;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('Error fetching namespace', e);\n return false;\n }\n};\n","import * as React from 'react';\nimport { useResolvedExtensions } from '@console/dynamic-plugin-sdk/src/api/useResolvedExtensions';\nimport { K8sResourceCommon } from '@console/dynamic-plugin-sdk/src/extensions/console-types';\nimport {\n isDetailsItem,\n DetailsItem,\n DetailsItemColumn,\n} from '@console/dynamic-plugin-sdk/src/extensions/details-item';\nimport { ResolvedExtension, ExtensionTypeGuard } from '@console/dynamic-plugin-sdk/src/types';\nimport { referenceFor, referenceForExtensionModel } from '@console/internal/module/k8s/k8s';\n\n/**\n * A hook to retrieve sorted details item extensions for a given resource and column.\n *\n * @param obj The k8s resource for which details are being rendered.\n * @param column The column in which the details item will be rendered.\n * @returns A sorted list of details item extensions for the given resource and column. Null safe.\n */\nexport const useDetailsItemExtensionsForResource: UseDetailsItemExtensionsForResource = (\n obj,\n column,\n) => {\n const typeGuard = React.useCallback>(\n (e): e is DetailsItem => {\n const columnMatches = e.properties.column === column;\n const modelMatches = referenceFor(obj) === referenceForExtensionModel(e.properties.model);\n return isDetailsItem(e) && modelMatches && columnMatches;\n },\n [obj, column],\n );\n\n const [extensions] = useResolvedExtensions(typeGuard);\n\n return React.useMemo(\n () =>\n (extensions ?? []).sort((a, b) => {\n const aWeight = Number(a.properties.sortWeight);\n const bWeight = Number(b.properties.sortWeight);\n if (Number.isNaN(aWeight)) {\n return 1;\n }\n if (Number.isNaN(bWeight)) {\n return -1;\n }\n return aWeight - bWeight;\n }),\n [extensions],\n );\n};\n\ntype UseDetailsItemExtensionsForResource = (\n obj: K8sResourceCommon,\n column: DetailsItemColumn,\n) => ResolvedExtension[];\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { K8sResourceCommon } from '@console/dynamic-plugin-sdk/src/extensions/console-types';\nimport { DetailsItem as DetailsItemExtension } from '@console/dynamic-plugin-sdk/src/extensions/details-item';\nimport { ResolvedExtension } from '@console/dynamic-plugin-sdk/src/types';\nimport { DetailsItem } from '@console/internal/components/utils/details-item';\n\nexport const ExtensionDetailsItem: ExtensionDetailsItemComponent = ({ extension, obj }) => {\n const { path, title, component: Component, id } = extension.properties;\n const sortWeight = extension.properties.sortWeight ?? 'none';\n const value = _.get(obj, path);\n if (!Component && typeof value === 'object') {\n // eslint-disable-next-line no-console\n console.warn(\n `Invalid 'console.resource/details-item' extension: '${id}'. The value referenced at path '${path}' must be primitive if not accompanied by a custom component.`,\n );\n }\n const content = Component ? (\n \n ) : (\n (value ?? '-').toString()\n );\n\n return (\n \n {content}\n \n );\n};\n\ntype ExtensionDetailsItemProps = {\n obj: K8sResourceCommon;\n extension: ResolvedExtension;\n};\ntype ExtensionDetailsItemComponent = (props: ExtensionDetailsItemProps) => React.ReactElement;\n","module.exports = __webpack_public_path__ + \"assets/packages/knative-plugin/src/imgs/event-sink.svg\";","module.exports = __webpack_public_path__ + \"assets/packages/knative-plugin/src/imgs/event-source.svg\";","import { Extension, ExtensionDeclaration, CodeRef } from '../types';\n\nexport type DataSource = ExtensionDeclaration<\n 'console.dashboards/datasource',\n {\n contextId: string;\n /** Returns a extension function that provides a custom data source object */\n getDataSource: CodeRef<(dataSourceID: string) => Promise>;\n }\n>;\n\nexport const isDataSource = (e: Extension): e is DataSource => {\n return e.type === 'console.dashboards/datasource';\n};\n\nexport type CustomDataSource = {\n basePath: string;\n dataSourceType: string;\n};\n","export * from './usePreferredCreateEditMethod';\n","import * as React from 'react';\nimport { CellMeasurer } from 'react-virtualized';\nimport { RenderCell, RenderHeader, GridChildrenProps, Item, CellItem } from './types';\nimport { CellMeasurementContext } from './utils';\n\ntype CellProps = {\n renderCell: RenderCell;\n renderHeader?: RenderHeader;\n style?: React.CSSProperties;\n} & GridChildrenProps;\n\nconst Cell: React.FC = ({\n data,\n columnCount,\n items,\n rowCount,\n style: { width, ...style },\n renderCell,\n renderHeader,\n}) => {\n const { cache, cellMargin } = React.useContext(CellMeasurementContext);\n const { key, columnIndex, rowIndex, parent } = data;\n const index = rowIndex * columnCount + columnIndex;\n const item: CellItem = items[index];\n const isItemString = typeof item === 'string';\n\n const cellStyle = {\n ...style,\n width: isItemString ? '100%' : width,\n padding: `${cellMargin}px ${cellMargin}px ${\n rowIndex === rowCount - 1 ? `${cellMargin}px` : 0\n } ${cellMargin}px`,\n };\n\n return item ? (\n \n

    \n {isItemString ? renderHeader(item as string) : renderCell(item as Item)}\n
    \n \n ) : null;\n};\n\nexport default Cell;\n","module.exports = __webpack_public_path__ + \"assets/public/imgs/logos/golang.svg\";","export * from './gitops';\n","import * as _ from 'lodash';\nimport { KebabAction } from '@console/internal/components/utils';\nimport { DeploymentConfigModel, DeploymentModel } from '@console/internal/models';\nimport { K8sKind, referenceForModel } from '@console/internal/module/k8s';\nimport { setKnatify, addTrigger, addSubscription, setSinkSource } from '../actions';\nimport { CamelKameletBindingModel, EventingBrokerModel } from '../models';\nimport {\n getDynamicEventSourcesModelRefs,\n isEventingChannelResourceKind,\n} from './fetch-dynamic-eventsources-utils';\n\nexport const getKebabActionsForKind = (resourceKind: K8sKind): KebabAction[] => {\n const menuActions: KebabAction[] = [];\n const eventSourceModelrefs: string[] = getDynamicEventSourcesModelRefs();\n if (resourceKind) {\n // remove this after migrating the menu actions in the DefaultDetailsPage and DefaultListPage\n if (\n _.includes(eventSourceModelrefs, referenceForModel(resourceKind)) ||\n referenceForModel(resourceKind) === referenceForModel(CamelKameletBindingModel)\n ) {\n menuActions.push(setSinkSource);\n }\n if (referenceForModel(resourceKind) === referenceForModel(EventingBrokerModel)) {\n menuActions.push(addTrigger);\n }\n if (isEventingChannelResourceKind(referenceForModel(resourceKind))) {\n menuActions.push(addSubscription);\n }\n }\n return menuActions;\n};\n\nexport const getKebabActionsForWorkload = (resourceKind: K8sKind): KebabAction[] => {\n const menuActions: KebabAction[] = [];\n if (\n resourceKind &&\n (referenceForModel(resourceKind) === referenceForModel(DeploymentModel) ||\n referenceForModel(resourceKind) === referenceForModel(DeploymentConfigModel))\n ) {\n menuActions.push(setKnatify);\n }\n return menuActions;\n};\n","import { WatchK8sResources } from '@console/dynamic-plugin-sdk';\nimport { referenceForModel } from '@console/internal/module/k8s';\nimport { ClusterServiceVersionModel } from '@console/operator-lifecycle-manager/src';\nimport { ServiceBindingModel } from '@console/service-binding-plugin/src/models';\n\nexport const getOperatorWatchedResources = (namespace: string): WatchK8sResources => {\n return {\n clusterServiceVersions: {\n isList: true,\n kind: referenceForModel(ClusterServiceVersionModel),\n namespace,\n optional: true,\n },\n };\n};\n\nexport const getServiceBindingWatchedResources = (namespace: string): WatchK8sResources => {\n return {\n serviceBindingRequests: {\n isList: true,\n kind: referenceForModel(ServiceBindingModel),\n namespace,\n optional: true,\n },\n };\n};\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n Dropdown as DropdownDeprecated,\n DropdownToggle as DropdownToggleDeprecated,\n DropdownItem as DropdownItemDeprecated,\n} from '@patternfly/react-core/deprecated';\nimport { CaretDownIcon } from '@patternfly/react-icons/dist/esm/icons/caret-down-icon';\nimport { FilterIcon } from '@patternfly/react-icons/dist/esm/icons/filter-icon';\nimport { TextFilter } from './factory';\n\nexport enum searchFilterValues {\n // t('public~Label')\n Label = 'Label',\n // t('public~Name')\n Name = 'Name',\n}\n\nexport const SearchFilterDropdown: React.SFC = (props) => {\n const [isOpen, setOpen] = React.useState(false);\n const [selected, setSelected] = React.useState(searchFilterValues.Label);\n\n const { onChange, nameFilterInput, labelFilterInput } = props;\n\n const { t } = useTranslation();\n\n const onToggle = (_event, open: boolean) => setOpen(open);\n const onSelect = (event: React.SyntheticEvent) => {\n setSelected((event.target as HTMLInputElement).name as searchFilterValues);\n setOpen(!isOpen);\n };\n const dropdownItems = [\n \n {t(searchFilterValues.Label)}\n ,\n \n {t(searchFilterValues.Name)}\n ,\n ];\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n const { value } = e.target as HTMLInputElement;\n onChange(selected, value, true);\n }\n };\n\n const handleInputValue = (_event, value: string) => {\n onChange(selected, value, false);\n };\n\n return (\n
    \n \n <>\n {t(selected)}\n \n \n }\n isOpen={isOpen}\n dropdownItems={dropdownItems}\n />\n \n
    \n );\n};\n\nexport type SearchFilterDropdownProps = {\n onChange: (type: string, value: string, endOfString: boolean) => void;\n nameFilterInput: string;\n labelFilterInput: string;\n};\n","import * as React from 'react';\nimport { useParams } from 'react-router-dom-v5-compat';\nimport { useCreateResourceExtension } from '@console/shared/src/hooks/create-resource-hook';\nimport { ErrorBoundaryPage } from '@console/shared/src/components/error';\nimport { AsyncComponent } from './utils';\n\nconst CreateResource: React.FC = () => {\n const params = useParams();\n const createResourceExtension = useCreateResourceExtension(params.plural);\n\n return createResourceExtension ? (\n \n \n \n ) : (\n \n import('./create-yaml' /* webpackChunkName: \"create-yaml\" */).then((m) => m.CreateYAML)\n }\n />\n );\n};\n\nexport default CreateResource;\n","import * as React from 'react';\nimport * as _ from 'lodash-es';\n\nimport { FLAGS } from '@console/shared';\nimport { connectToFlags } from '../reducers/connectToFlags';\nimport { Firehose, FirehoseResult } from './utils';\nimport { referenceForModel } from '../module/k8s';\nimport { ConsoleNotificationModel } from '../models/index';\n\nconst ConsoleNotifier_: React.FC = ({ obj, location }) => {\n if (_.isEmpty(obj)) {\n return null;\n }\n\n return (\n <>\n {_.map(_.get(obj, 'data'), (notification) =>\n notification.spec.location === location ||\n notification.spec.location === 'BannerTopBottom' ||\n // notification.spec.location is optional\n // render the notification BannerTop if location is not specified\n (!notification.spec.location && location === 'BannerTop') ? (\n \n
    \n

    \n {notification.spec.text}{' '}\n {_.get(notification.spec, ['link', 'href']) && (\n \n {notification.spec.link.text || 'More info'}\n \n )}\n

    \n
    \n
    \n ) : null,\n )}\n \n );\n};\nConsoleNotifier_.displayName = 'ConsoleNotifier_';\n\nexport const ConsoleNotifier = connectToFlags(FLAGS.CONSOLE_NOTIFICATION)(({ flags, ...props }) => {\n const resources = flags[FLAGS.CONSOLE_NOTIFICATION]\n ? [\n {\n kind: referenceForModel(ConsoleNotificationModel),\n isList: true,\n prop: 'obj',\n },\n ]\n : [];\n return (\n \n \n \n );\n});\nConsoleNotifier.displayName = 'ConsoleNotifier';\n\ntype ConsoleNotifierProps = {\n obj: FirehoseResult;\n location: 'BannerTop' | 'BannerBottom' | 'BannerTopBottom';\n};\n","import { STORAGE_PREFIX, CONFIG_STORAGE_CONSOLE } from '@console/shared';\n\nconst STORAGE_CLOUDSHELL = 'terminal';\n\nexport const CLOUD_SHELL_NAMESPACE = `${STORAGE_PREFIX}/command-line-terminal-namespace`;\nexport const CLOUD_SHELL_NAMESPACE_CONFIG_STORAGE_KEY = `${CONFIG_STORAGE_CONSOLE}.${STORAGE_CLOUDSHELL}.namespace`;\n","/* eslint-disable no-console */\n\nimport * as _ from 'lodash';\nimport * as semver from 'semver';\nimport { PluginStore } from '@console/plugin-sdk/src/store';\nimport { getRandomChars } from '@console/shared/src/utils/utils';\nimport {\n AnyConsolePluginManifest,\n StandardConsolePluginManifest,\n isStandardPluginManifest,\n} from '../build-types';\nimport { resolveEncodedCodeRefs } from '../coderefs/coderef-resolver';\nimport { initSharedPluginModules } from '../shared-modules-init';\nimport { RemoteEntryModule } from '../types';\nimport { ErrorWithCause } from '../utils/error/custom-error';\nimport { settleAllPromises } from '../utils/promise';\nimport { resolveURL } from '../utils/url';\nimport { resolvePluginDependencies } from './plugin-dependencies';\nimport { fetchPluginManifest } from './plugin-manifest';\nimport { getPluginID } from './plugin-utils';\n\ntype ConsolePluginData = {\n /** The manifest containing plugin metadata and extension declarations. */\n manifest: StandardConsolePluginManifest;\n /** Indicates if `window.loadPluginEntry` callback has been fired for this plugin. */\n entryCallbackFired: boolean;\n};\n\nconst pluginMap = new Map();\n\nexport const getScriptElementID = (pluginName: string, scriptName: string) =>\n `${pluginName}/${scriptName}`;\n\nconst injectScriptElement = (url: string, id: string) =>\n new Promise((resolve, reject) => {\n const script = document.createElement('script');\n\n script.async = true;\n script.src = url;\n script.id = id;\n\n script.onload = () => {\n resolve();\n };\n\n script.onerror = (event) => {\n reject(event);\n };\n\n document.head.appendChild(script);\n });\n\nexport const loadDynamicPlugin = (manifest: StandardConsolePluginManifest) =>\n new Promise((resolve, reject) => {\n const pluginID = getPluginID(manifest);\n\n const existingPluginData = Array.from(pluginMap.values()).find(\n (p) => p.manifest.name === manifest.name,\n );\n\n if (existingPluginData) {\n const existingPluginID = getPluginID(existingPluginData.manifest);\n reject(new Error(`Attempt to reload plugin ${existingPluginID} with ${pluginID}`));\n return;\n }\n\n if (manifest.registrationMethod !== 'callback') {\n reject(new Error(`Plugin ${pluginID} does not use callback registration method`));\n return;\n }\n\n pluginMap.set(pluginID, {\n manifest,\n entryCallbackFired: false,\n });\n\n console.info(`Loading scripts of plugin ${pluginID}`);\n\n // eslint-disable-next-line promise/catch-or-return\n settleAllPromises(\n manifest.loadScripts.map((scriptName) => {\n const scriptID = getScriptElementID(manifest.name, scriptName);\n\n const scriptURL = resolveURL(manifest.baseURL, scriptName, (url) => {\n url.search = `?cacheBuster=${getRandomChars()}`;\n return url;\n });\n\n console.info(`Loading plugin script from ${scriptURL}`);\n\n return injectScriptElement(scriptURL, scriptID);\n }),\n ).then(([, rejectedReasons]) => {\n if (rejectedReasons.length > 0) {\n reject(\n new ErrorWithCause(`Detected errors while loading plugin entry scripts`, rejectedReasons),\n );\n return;\n }\n\n if (!pluginMap.get(pluginID).entryCallbackFired) {\n reject(new Error(`Scripts of plugin ${pluginID} loaded without entry callback`));\n return;\n }\n\n resolve(pluginID);\n });\n });\n\nexport const getPluginEntryCallback = (\n pluginStore: PluginStore,\n initSharedPluginModulesCallback: typeof initSharedPluginModules,\n resolveEncodedCodeRefsCallback: typeof resolveEncodedCodeRefs,\n) => (pluginID: string, entryModule: RemoteEntryModule) => {\n if (!pluginMap.has(pluginID)) {\n console.error(`Received callback for unknown plugin ${pluginID}`);\n return;\n }\n\n const pluginData = pluginMap.get(pluginID);\n\n if (pluginData.entryCallbackFired) {\n console.error(`Received callback for already loaded plugin ${pluginID}`);\n return;\n }\n\n pluginData.entryCallbackFired = true;\n\n try {\n initSharedPluginModulesCallback(entryModule);\n } catch (error) {\n console.error(`Failed to initialize shared modules for plugin ${pluginID}`, error);\n return;\n }\n\n const resolvedExtensions = resolveEncodedCodeRefsCallback(\n pluginData.manifest.extensions,\n entryModule,\n pluginID,\n () => {\n console.error(`Code reference resolution failed for plugin ${pluginID}`);\n },\n );\n\n pluginStore.addDynamicPlugin(pluginID, pluginData.manifest, resolvedExtensions);\n};\n\nexport const registerPluginEntryCallback = (pluginStore: PluginStore) => {\n window.loadPluginEntry = getPluginEntryCallback(\n pluginStore,\n initSharedPluginModules,\n resolveEncodedCodeRefs,\n );\n};\n\nexport const adaptPluginManifest = (\n manifest: AnyConsolePluginManifest,\n baseURL: string,\n): StandardConsolePluginManifest => {\n if (isStandardPluginManifest(manifest)) {\n return manifest;\n }\n\n const {\n name,\n version,\n extensions,\n dependencies,\n displayName,\n description,\n disableStaticPlugins,\n } = manifest;\n\n return {\n name,\n version,\n extensions,\n dependencies,\n customProperties: { console: { displayName, description, disableStaticPlugins } },\n baseURL,\n loadScripts: ['plugin-entry.js'],\n registrationMethod: 'callback',\n };\n};\n\nexport const loadAndEnablePlugin = async (\n pluginName: string,\n pluginStore: PluginStore,\n onError: (errorMessage: string, errorCause?: unknown) => void = _.noop,\n) => {\n const baseURL = `${window.SERVER_FLAGS.basePath}api/plugins/${pluginName}/`;\n let manifest: StandardConsolePluginManifest;\n\n try {\n manifest = adaptPluginManifest(await fetchPluginManifest(baseURL), baseURL);\n } catch (e) {\n onError(`Failed to get a valid plugin manifest from ${baseURL}`, e);\n return;\n }\n\n try {\n await resolvePluginDependencies(\n manifest,\n semver.valid(window.SERVER_FLAGS.releaseVersion),\n pluginStore.getAllowedDynamicPluginNames(),\n );\n } catch (e) {\n onError(`Failed to resolve dependencies of plugin ${pluginName}`, e);\n return;\n }\n\n try {\n await loadDynamicPlugin(manifest);\n } catch (e) {\n onError(`Failed to load scripts of plugin ${pluginName}`, e);\n return;\n }\n\n pluginStore.setDynamicPluginEnabled(getPluginID(manifest), true);\n};\n\nexport const getStateForTestPurposes = () => ({\n pluginMap,\n});\n\nexport const resetStateAndEnvForTestPurposes = () => {\n pluginMap.clear();\n\n Array.from(document.scripts).forEach((element) => {\n element.remove();\n });\n\n window.loadPluginEntry = undefined;\n};\n","import { STORAGE_PREFIX } from '@console/shared/src/constants/common';\n\nexport const TYPE_WORKLOAD = 'workload';\nexport const TYPE_CONNECTS_TO = 'connects-to';\nexport const TYPE_AGGREGATE_EDGE = 'aggregate-edge';\nexport const TYPE_SERVICE_BINDING = 'service-binding';\nexport const TYPE_APPLICATION_GROUP = 'part-of';\nexport const TYPE_TRAFFIC_CONNECTOR = 'traffic-connector';\nexport const LAST_TOPOLOGY_VIEW_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/last-topology-view`;\nexport const TOPOLOGY_LAYOUT_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/topology-layout`;\nexport const LAST_TOPOLOGY_OVERVIEW_OPEN_STORAGE_KEY = `${STORAGE_PREFIX}/last-topology-overview-open`;\n\nconst STORAGE_TOPOLOGY = 'topology';\nconst CONFIG_STORAGE_DEVCONSOLE = 'devconsole';\n\nexport const TOPOLOGY_VIEW_CONFIG_STORAGE_KEY = `${CONFIG_STORAGE_DEVCONSOLE}.${STORAGE_TOPOLOGY}.lastView`;\nexport const TOPOLOGY_LAYOUT_CONFIG_STORAGE_KEY = `${CONFIG_STORAGE_DEVCONSOLE}.${STORAGE_TOPOLOGY}.layout`;\nexport const TOPOLOGY_SIDE_BAR_WIDTH_STORAGE_KEY = `${CONFIG_STORAGE_DEVCONSOLE}.${STORAGE_TOPOLOGY}.sideBarSize`;\n\nexport const DEFAULT_NODE_PAD = 20;\nexport const DEFAULT_GROUP_PAD = 40;\n\nexport const NODE_WIDTH = 104;\nexport const NODE_HEIGHT = 104;\nexport const NODE_PADDING = [0, DEFAULT_NODE_PAD];\n\nexport const GROUP_WIDTH = 300;\nexport const GROUP_HEIGHT = 180;\nexport const GROUP_PADDING = [\n DEFAULT_GROUP_PAD,\n DEFAULT_GROUP_PAD,\n DEFAULT_GROUP_PAD + 20,\n DEFAULT_GROUP_PAD,\n];\n\nexport const CREATE_APPLICATION_KEY = '#CREATE_APPLICATION_KEY#';\nexport const UNASSIGNED_KEY = '#UNASSIGNED_APP#';\n\nexport const ALLOW_EXPORT_APP = 'ALLOW_EXPORT_APP';\nexport const EXPORT_CR_NAME = 'primer';\nexport const EXPORT_JOB_PREFIX = 'primer-export-';\n\nexport const ROUTE_URL_ANNOTATION = 'app.openshift.io/route-url';\nexport const ROUTE_DISABLED_ANNOTATION = 'app.openshift.io/route-disabled';\n","export * from './pipelines';\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ResourceLink, DetailsItem } from '@console/internal/components/utils';\nimport { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';\nimport {\n K8sPodControllerKind,\n referenceForModel,\n PodKind,\n getResourceDescription,\n} from '@console/internal/module/k8s';\nimport { PodDisruptionBudgetModel } from '../../models';\nimport AvailabilityRequirement from './AvailabilityRequirement';\nimport { PodDisruptionBudgetKind } from './types';\nimport { getPDBResource } from './utils/get-pdb-resources';\n\nexport const PodDisruptionBudgetField: React.FC = ({ obj }) => {\n const { t } = useTranslation();\n const [pdbResources] = useK8sWatchResource({\n groupVersionKind: {\n group: PodDisruptionBudgetModel.apiGroup,\n kind: PodDisruptionBudgetModel.kind,\n version: PodDisruptionBudgetModel.apiVersion,\n },\n isList: true,\n namespaced: true,\n namespace: obj.metadata.namespace,\n });\n const pdb = getPDBResource(pdbResources, obj);\n const { replicas } = obj.spec ?? {};\n const pdbDescription = getResourceDescription(PodDisruptionBudgetModel);\n\n return (\n \n {pdb ? (\n <>\n \n {replicas && }\n \n ) : (\n t('console-app~No PodDisruptionBudget')\n )}\n \n );\n};\n\ntype PodDisruptionBudgetFieldProps = {\n obj: K8sPodControllerKind | PodKind;\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport * as React from 'react';\nimport { Link } from 'react-router-dom-v5-compat';\nimport * as _ from 'lodash-es';\nimport { useTranslation } from 'react-i18next';\nimport i18next from 'i18next';\nimport {\n ContainerSpec,\n K8sKind,\n K8sResourceKind,\n K8sResourceKindReference,\n PodKind,\n PodTemplate,\n Volume,\n VolumeMount,\n} from '../module/k8s';\nimport {\n asAccessReview,\n EmptyBox,\n Kebab,\n KebabOption,\n ResourceIcon,\n SectionHeading,\n VolumeType,\n} from './utils';\nimport { Table } from './factory';\nimport { sortable } from '@patternfly/react-table';\nimport { removeVolumeModal } from './modals';\nimport { connectToModel } from '../kinds';\n\nconst removeVolume = (kind: K8sKind, obj: K8sResourceKind, volume: RowVolumeData): KebabOption => {\n return {\n // t('public~Remove volume')\n labelKey: 'public~Remove volume',\n callback: () =>\n removeVolumeModal({\n kind,\n resource: obj,\n volume,\n }),\n accessReview: asAccessReview(kind, obj, 'patch'),\n };\n};\n\nconst menuActions = [removeVolume];\n\nconst getPodTemplate = (resource: K8sResourceKind): PodTemplate => {\n return resource.kind === 'Pod' ? (resource as PodKind) : resource.spec.template;\n};\n\nconst anyContainerWithVolumeMounts = (containers: ContainerSpec[]) => {\n return !!_.findKey(containers, 'volumeMounts');\n};\n\nconst getRowVolumeData = (resource: K8sResourceKind): RowVolumeData[] => {\n const pod: PodTemplate = getPodTemplate(resource);\n if (_.isEmpty(pod.spec.volumes) && !anyContainerWithVolumeMounts(pod.spec.containers)) {\n return [];\n }\n\n const data: RowVolumeData[] = [];\n const volumes = (pod.spec.volumes || []).reduce((p, v: Volume) => {\n p[v.name] = v;\n return p;\n }, {});\n\n _.forEach(pod.spec.containers, (c: ContainerSpec) => {\n _.forEach(c.volumeMounts, (v: VolumeMount) => {\n data.push({\n name: v.name,\n readOnly: !!v.readOnly,\n volumeDetail: volumes[v.name],\n container: c.name,\n mountPath: v.mountPath,\n subPath: v.subPath,\n resource,\n });\n });\n });\n return data;\n};\n\nconst ContainerLink: React.FC = ({ name, pod }) => (\n \n \n \n {name}\n \n \n);\nContainerLink.displayName = 'ContainerLink';\n\nconst volumeRowColumnClasses = [\n 'pf-v5-u-w-25-on-2xl',\n 'pf-v5-u-w-25-on-2xl',\n 'pf-m-hidden pf-m-visible-on-md',\n 'pf-m-hidden pf-m-visible-on-lg',\n 'pf-m-hidden pf-m-visible-on-lg',\n 'pf-m-hidden pf-m-visible-on-xl',\n Kebab.columnClass,\n];\n\nconst VolumesTableRows = ({ componentProps: { data } }) => {\n return _.map(data, (volume: RowVolumeData) => {\n const { container, mountPath, name, readOnly, resource, subPath, volumeDetail } = volume;\n const pod = getPodTemplate(resource);\n const podVolume = pod.spec?.volumes?.find((v) => name === v.name);\n const podVolumeIsReadOnly = podVolume\n ? Object.values(podVolume).some((v) => v.readOnly === 'true')\n : false;\n return [\n {\n title: name,\n props: {\n className: volumeRowColumnClasses[0],\n 'data-test-volume-name-for': name,\n },\n },\n {\n title: mountPath,\n props: {\n className: volumeRowColumnClasses[1],\n 'data-test-mount-path-for': name,\n },\n },\n {\n title: subPath || {i18next.t('public~No subpath')},\n props: {\n className: volumeRowColumnClasses[2],\n },\n },\n {\n title: ,\n props: {\n className: volumeRowColumnClasses[3],\n },\n },\n {\n title:\n readOnly || podVolumeIsReadOnly\n ? i18next.t('public~Read-only')\n : i18next.t('public~Read/Write'),\n props: {\n className: volumeRowColumnClasses[4],\n },\n },\n {\n title:\n _.get(pod, 'kind') === 'Pod' ? (\n \n ) : (\n container\n ),\n props: {\n className: volumeRowColumnClasses[5],\n },\n },\n {\n title: (\n \n ),\n props: {\n className: volumeRowColumnClasses[6],\n },\n },\n ];\n });\n};\n\nexport const VolumesTable = (props) => {\n const { t } = useTranslation();\n const { resource, ...tableProps } = props;\n const data: RowVolumeData[] = getRowVolumeData(resource);\n const pod: PodTemplate = getPodTemplate(resource);\n const VolumesTableHeader = () => [\n {\n title: t('public~Name'),\n sortField: 'name',\n transforms: [sortable],\n props: { className: volumeRowColumnClasses[0] },\n },\n {\n title: t('public~Mount path'),\n sortField: 'mountPath',\n transforms: [sortable],\n props: { className: volumeRowColumnClasses[1] },\n },\n {\n title: t('public~SubPath'),\n sortField: 'subPath',\n transforms: [sortable],\n props: { className: volumeRowColumnClasses[2] },\n },\n {\n title: t('public~Type'),\n props: { className: volumeRowColumnClasses[3] },\n },\n {\n title: t('public~Permissions'),\n sortField: 'readOnly',\n transforms: [sortable],\n props: { className: volumeRowColumnClasses[4] },\n },\n {\n title: t('public~Utilized by'),\n sortField: 'container',\n transforms: [sortable],\n props: { className: volumeRowColumnClasses[5] },\n },\n {\n title: '',\n props: { className: volumeRowColumnClasses[6] },\n },\n ];\n\n return (\n <>\n {props.heading && }\n {_.isEmpty(pod.spec.volumes) && !anyContainerWithVolumeMounts(pod.spec.containers) ? (\n \n ) : (\n \n )}\n \n );\n};\n\nVolumesTable.displayName = 'VolumesTable';\n\nconst VolumeKebab = connectToModel((props: VolumeKebabProps) => {\n const { actions, kindObj, resource, isDisabled, rowVolumeData } = props;\n if (!kindObj || kindObj.kind === 'Pod') {\n return null;\n }\n const options = actions.map((b) => b(kindObj, resource, rowVolumeData));\n return (\n 0\n }\n />\n );\n});\n\ntype VolumeKebabAction = (\n kind: K8sKind,\n obj: K8sResourceKind,\n rowVolumeData: RowVolumeData,\n) => KebabOption;\ntype VolumeKebabProps = {\n kindObj: K8sKind;\n actions: VolumeKebabAction[];\n kind: K8sResourceKindReference;\n resource: K8sResourceKind;\n isDisabled?: boolean;\n rowVolumeData: RowVolumeData;\n};\n\nexport type RowVolumeData = {\n name: string;\n readOnly: boolean;\n volumeDetail: Volume;\n container: string;\n mountPath: string;\n subPath?: string;\n resource: K8sResourceKind;\n};\n\ntype ContainerLinkProps = {\n pod: PodKind;\n name: string;\n};\n","import * as React from 'react';\nimport {\n StatusPopupSectionProps,\n StatusPopupItemProps,\n} from '@console/dynamic-plugin-sdk/src/extensions/dashboard-types';\n\nimport './status-popup.scss';\n\nexport const StatusPopupSection: React.FC = ({\n firstColumn,\n secondColumn,\n children,\n}) => (\n <>\n
    \n
    {firstColumn}
    \n {secondColumn &&
    {secondColumn}
    }\n
    \n {children}\n \n);\n\nconst Status: React.FC = ({ value, icon, children }) => (\n
    \n {children}\n {(value || icon) && (\n
    \n {value &&
    {value}
    }\n {icon &&
    {icon}
    }\n
    \n )}\n
    \n);\n\nexport default Status;\n","import { K8sResourceKind, K8sResourceCondition } from '@console/internal/module/k8s';\n\nexport type ConfigurationKind = K8sResourceKind;\n\nexport type RevisionKind = {\n status?: {\n conditions?: RevisionCondition[];\n };\n} & K8sResourceKind;\n\nexport type ServiceKind = K8sResourceKind & {\n metadata?: {\n generation?: number;\n };\n status?: {\n url?: string;\n traffic?: Traffic[];\n };\n};\n\nexport type RouteKind = {\n status: {\n url: string;\n traffic: Traffic[];\n };\n} & K8sResourceKind;\n\nexport enum ConditionTypes {\n Ready = 'Ready',\n Active = 'Active',\n ContainerHealthy = 'ContainerHealthy',\n ResourcesAvailable = 'ResourcesAvailable',\n}\n\nexport type RevisionCondition = {\n type: keyof typeof ConditionTypes;\n} & K8sResourceCondition;\n\nexport type Traffic = {\n revisionName: string;\n percent: number;\n latestRevision?: boolean;\n tag?: string;\n url?: string;\n};\n\nexport type RoutesOverviewListItem = {\n uid: string;\n url: string;\n percent: string;\n name: string;\n namespace: string;\n};\n\nexport type EventSourceKind = {\n status: {\n conditions: EventSourceCondition[];\n };\n} & K8sResourceKind;\n\nexport enum EventSourceConditionTypes {\n Ready = 'Ready',\n Deployed = 'Deployed',\n SinkProvided = 'SinkProvided',\n ValidSchedule = 'ValidSchedule',\n}\n\nexport type EventSourceCondition = {\n type: keyof typeof EventSourceConditionTypes;\n} & K8sResourceCondition;\n\nexport type EventSubscriptionKind = {\n metadata?: {\n generation?: number;\n };\n spec: {\n channel: {\n apiVersion: string;\n kind: string;\n name: string;\n };\n subscriber: {\n ref?: {\n apiVersion: string;\n kind: string;\n name: string;\n };\n };\n };\n status: {\n physicalSubscription: {\n subscriberURI: string;\n };\n };\n} & K8sResourceKind;\n\nexport type EventChannelKind = {\n metadata?: {\n generation?: number;\n };\n status: {\n address: {\n url: string;\n };\n };\n} & K8sResourceKind;\n\nexport enum ChannelConditionTypes {\n Ready = 'Ready',\n}\n\nexport type ChannelCondition = {\n type: keyof typeof ChannelConditionTypes;\n} & K8sResourceCondition;\n\nexport type EventBrokerKind = {\n metadata?: {\n generation?: number;\n };\n status: {\n address: {\n url: string;\n };\n };\n} & K8sResourceKind;\n\nexport enum TriggerConditionTypes {\n Ready = 'Ready',\n BrokerReady = 'BrokerReady',\n DependencyReady = 'DependencyReady',\n SubscriptionReady = 'SubscriptionReady',\n SubscriberResolved = 'SubscriberResolved',\n}\n\nexport type TriggerCondition = {\n type: keyof typeof TriggerConditionTypes;\n} & K8sResourceCondition;\n\nexport enum BrokerConditionTypes {\n Ready = 'Ready',\n Addressable = 'Addressable',\n FilterReady = 'FilterReady',\n IngressReady = 'IngressReady',\n TriggerChannelReady = 'TriggerChannelReady',\n}\n\nexport type BrokerCondition = {\n type: keyof typeof BrokerConditionTypes;\n} & K8sResourceCondition;\n\nexport enum SubscriptionConditionTypes {\n Ready = 'Ready',\n ChannelReady = 'ChannelReady',\n AddedToChannel = 'AddedToChannel',\n ReferencesResolved = 'ReferencesResolved',\n}\n\nexport type SubscriptionCondition = {\n type: keyof typeof SubscriptionConditionTypes;\n} & K8sResourceCondition;\n\nexport type EventTriggerKind = {\n metadata?: {\n generation?: number;\n };\n spec: {\n broker: string;\n filter: {\n attributes?: {\n [key: string]: string;\n };\n };\n subscriber: {\n ref: {\n apiVersion: string;\n kind: string;\n name: string;\n };\n };\n };\n status?: {\n conditions?: TriggerCondition[];\n };\n} & K8sResourceKind;\n\nexport type DomainMappingResponse = {\n action: string;\n resource: K8sResourceKind;\n};\n\nexport enum DomainMappingResponseAction {\n Create = 'Create',\n Update = 'Update',\n Delete = 'Delete',\n}\n\nexport enum ServerlessBuildStrategyType {\n ServerlessFunction = 'ServerlessFunction',\n}\n\nexport enum ServiceTypeValue {\n Function = 'Function',\n Service = 'Service',\n}\n","import { NodeKind } from '@console/internal/module/k8s';\nimport { isNodeReady } from '@console/shared/src/selectors/node';\n\nexport const nodeStatus = (node: NodeKind) => (isNodeReady(node) ? 'Ready' : 'Not Ready');\n","export const CONSOLE_OPERATOR_CONFIG_NAME = 'cluster';\n\n// List of container status waiting reason values that we should call out as errors in project status rows.\nexport const CONTAINER_WAITING_STATE_ERROR_REASONS = [\n 'CrashLoopBackOff',\n 'ErrImagePull',\n 'ImagePullBackOff',\n];\n\n// Annotation key for deployment config latest version\nexport const DEPLOYMENT_CONFIG_LATEST_VERSION_ANNOTATION =\n 'openshift.io/deployment-config.latest-version';\n\nexport const DEPLOYMENT_CONFIG_NAME_ANNOTATION = 'openshift.io/deployment-config.name';\n\n// Annotation key for deployment phase\nexport const DEPLOYMENT_PHASE_ANNOTATION = 'openshift.io/deployment.phase';\n\n// Annotaton key for deployment revision\nexport const DEPLOYMENT_REVISION_ANNOTATION = 'deployment.kubernetes.io/revision';\n\n// Display name for default overview group.\n// Should not be a valid label key to avoid conflicts. https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-setexport\nexport const DEFAULT_GROUP_NAME = 'other resources';\n\n// Interval at which metrics are retrieved and updated\nexport const METRICS_POLL_INTERVAL = 30 * 1000;\n\n// Annotation key for image triggers\nexport const TRIGGERS_ANNOTATION = 'image.openshift.io/triggers';\n\nexport enum DEPLOYMENT_STRATEGY {\n rolling = 'Rolling',\n recreate = 'Recreate',\n rollingUpdate = 'RollingUpdate',\n}\n\nexport enum DEPLOYMENT_PHASE {\n new = 'New',\n running = 'Running',\n pending = 'Pending',\n complete = 'Complete',\n failed = 'Failed',\n cancelled = 'Cancelled',\n}\n","import * as React from 'react';\n\nexport const usePromiseHandler: PromiseHandlerHook = () => {\n const [inProgress, setInProgress] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState('');\n const handlePromise: PromiseHandlerCallback = (promise) => {\n setInProgress(true);\n return promise\n .then((res) => {\n setErrorMessage('');\n return res;\n })\n .catch((error) => {\n setErrorMessage(error.toString?.() || 'An error occurred. Please try again.');\n return Promise.reject(error);\n })\n .finally(() => setInProgress(false));\n };\n return [handlePromise, inProgress, errorMessage];\n};\n\ntype PromiseHandlerCallback = (promise: Promise) => Promise;\ntype PromiseHandlerHook = () => [PromiseHandlerCallback, boolean, string];\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { MarkdownView, MarkdownProps } from '@openshift-console/plugin-shared/src';\nimport { ThemeContext, updateThemeClass } from './ThemeProvider';\n\ntype SyncMarkdownProps = Omit & {\n emptyMsg?: string;\n theme?: string;\n};\n\nexport const SyncMarkdownView: React.FC = ({ emptyMsg, theme, ...rest }) => {\n const { t } = useTranslation();\n emptyMsg = emptyMsg || t('public~Not available');\n const contextTheme = React.useContext(ThemeContext);\n const markDownTheme = theme || contextTheme;\n return (\n \n );\n};\n","import { TFunction } from 'i18next';\nimport { RowFilter } from '@console/dynamic-plugin-sdk/src/extensions/console-types';\nimport { VolumeSnapshotStatus } from '@console/internal/module/k8s';\n\nexport const volumeSnapshotStatus = ({ status }: { status?: VolumeSnapshotStatus }) => {\n const readyToUse = status?.readyToUse;\n const isError = !!status?.error?.message;\n return readyToUse ? 'Ready' : isError ? 'Error' : 'Pending';\n};\n\nexport const snapshotStatusFilters = (t: TFunction): RowFilter[] => {\n return [\n {\n filterGroupName: t('console-app~Status'),\n type: 'snapshot-status',\n reducer: volumeSnapshotStatus,\n filter: () => null,\n items: [\n { id: 'Ready', title: 'Ready' },\n { id: 'Pending', title: 'Pending' },\n { id: 'Error', title: 'Error' },\n ],\n },\n ];\n};\n","export const serviceBindingModal = (props) =>\n import(\n './ServiceBindingModalLauncher' /* webpackChunkName: \"create-service-binding-modal\" */\n ).then((m) => m.createServiceBindingModal(props));\n","export * from './application';\nexport * from './gitops-primer';\n","import * as React from 'react';\nimport { Button, Split, SplitItem, Bullseye } from '@patternfly/react-core';\nimport { AngleDownIcon } from '@patternfly/react-icons/dist/esm/icons/angle-down-icon';\nimport { AngleUpIcon } from '@patternfly/react-icons/dist/esm/icons/angle-up-icon';\nimport { AutomationIcon } from '@patternfly/react-icons/dist/esm/icons/automation-icon';\nimport * as _ from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { ImpersonateKind } from '@console/dynamic-plugin-sdk';\nimport { K8sResourceKind, k8sPatch, K8sKind } from '@console/internal/module/k8s';\nimport { useRelatedHPA } from '../../hooks/hpa-hooks';\nimport { ExtPodKind } from '../../types';\nimport { usePodRingLabel, usePodScalingAccessStatus } from '../../utils';\nimport PodStatus from './PodStatus';\nimport './PodRing.scss';\n\ninterface PodRingProps {\n pods: ExtPodKind[];\n obj: K8sResourceKind;\n rc?: K8sResourceKind;\n resourceKind: K8sKind;\n path?: string;\n impersonate?: ImpersonateKind;\n enableScaling?: boolean;\n}\n\nconst PodRing: React.FC = ({\n pods,\n obj,\n resourceKind,\n path,\n impersonate,\n rc,\n enableScaling = true,\n}) => {\n const [clickCount, setClickCount] = React.useState(obj.spec.replicas);\n const { t } = useTranslation();\n const isAccessScalingAllowed = usePodScalingAccessStatus(\n obj,\n resourceKind,\n pods,\n enableScaling,\n impersonate,\n );\n\n React.useEffect(\n () => {\n if (clickCount !== obj.spec.replicas) {\n setClickCount(obj.spec.replicas);\n }\n },\n // disabling exhaustive-deps because I do not want to add clickCount to\n // dependency array. I only want to trigger useEffect when `obj.spec.replicas` changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [obj.spec.replicas],\n );\n\n const handleScaling = _.debounce(\n (operation: number) => {\n const patch = [{ op: 'replace', path, value: operation }];\n const opts = { path: 'scale' };\n const promise: Promise = k8sPatch(resourceKind, obj, patch, opts);\n promise.catch((error) => {\n throw error;\n });\n },\n 1000,\n {\n leading: true,\n trailing: false,\n },\n );\n\n const handleClick = (operation: number) => {\n setClickCount(clickCount + operation);\n handleScaling(clickCount + operation);\n };\n\n const {\n apiVersion,\n kind,\n metadata: { name, namespace },\n } = obj;\n const [hpa] = useRelatedHPA(apiVersion, kind, name, namespace);\n const hpaControlledScaling = !!hpa;\n\n const isScalingAllowed = isAccessScalingAllowed && !hpaControlledScaling;\n\n const enableAutoscaling = !isScalingAllowed && clickCount === 0;\n const resourceObj = rc || obj;\n const { title, subTitle, titleComponent } = usePodRingLabel(\n resourceObj,\n kind,\n pods,\n hpaControlledScaling,\n t,\n hpa,\n );\n\n return (\n \n \n
    \n \n
    \n
    \n {enableAutoscaling && (\n \n }\n onClick={() => handleClick(1)}\n >\n {t('console-shared~Enable Autoscale')}\n \n \n )}\n {isScalingAllowed && (\n \n \n
    \n handleClick(1)}\n isBlock\n >\n \n \n handleClick(-1)}\n isBlock\n isDisabled={clickCount <= 0}\n >\n \n \n
    \n
    \n
    \n )}\n
    \n );\n};\n\nexport default PodRing;\n","export * from './components';\nexport * from './datetime';\nexport * from './hooks';\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom-v5-compat';\nimport { getActiveNamespace } from '@console/internal/actions/ui';\nimport { AsyncComponent } from '@console/internal/components/utils/async';\nimport { MsgBox } from '@console/internal/components/utils/status-box';\nimport {\n K8sResourceKind,\n GroupVersionKind,\n referenceForModel,\n referenceForGroupVersionKind,\n} from '@console/internal/module/k8s';\nimport { OPERATOR_NAMESPACE_ANNOTATION } from '../const';\nimport { OperatorGroupModel } from '../models';\nimport {\n OperatorGroupKind,\n SubscriptionKind,\n InstallModeType,\n PackageManifestKind,\n} from '../types';\n\nexport const targetNamespacesFor = (obj: K8sResourceKind) =>\n obj?.metadata?.annotations?.['olm.targetNamespaces']; // FIXME magic string\nexport const operatorNamespaceFor = (obj: K8sResourceKind) =>\n obj?.metadata?.annotations?.[OPERATOR_NAMESPACE_ANNOTATION];\nexport const operatorGroupFor = (obj: K8sResourceKind) =>\n obj?.metadata?.annotations?.['olm.operatorGroup']; // FIXME magic string\n\nexport const NoOperatorGroupMsg: React.FC = () => {\n const { t } = useTranslation();\n return (\n \n {t(\n 'olm~The Operator Lifecycle Manager will not watch this Namespace because it is not configured with an OperatorGroup.',\n )}\n  \n \n {t('olm~Create one here.')}\n \n

    \n }\n />\n );\n};\n\nexport const OperatorGroupSelector: React.FC = (props) => {\n const { t } = useTranslation();\n return (\n \n import('@console/internal/components/utils/list-dropdown').then((m) => m.ListDropdown)\n }\n onChange={\n props.onChange ||\n function () {\n return null;\n }\n }\n desc={OperatorGroupModel.plural}\n placeholder={t('olm~Select OperatorGroup')}\n selectedKeyKind={referenceForModel(OperatorGroupModel)}\n dataFilter={props.dataFilter}\n resources={[\n {\n kind: referenceForModel(OperatorGroupModel),\n fieldSelector: `metadata.name!=${props.excludeName}`,\n },\n ]}\n />\n );\n};\n\nexport const requireOperatorGroup =

    (\n Component: React.ComponentType

    ,\n) => {\n return class RequireOperatorGroup extends React.Component

    {\n static WrappedComponent = Component;\n\n render() {\n const namespaceEnabled =\n !_.get(this.props.operatorGroup, 'loaded') || !_.isEmpty(this.props.operatorGroup.data);\n\n return namespaceEnabled ? : ;\n }\n } as React.ComponentClass

    & { WrappedComponent: React.ComponentType

    };\n};\n\nexport type InstallModeSet = { type: InstallModeType; supported: boolean }[];\n\n/**\n * Logic consistent with https://github.com/operator-framework/operator-lifecycle-manager/blob/4ef074e4207f5518d95ddf8c378036dfc4270dda/pkg/api/apis/operators/v1alpha1/clusterserviceversion.go#L165.\n */\nexport const supports = (set: InstallModeSet) => (obj: OperatorGroupKind) => {\n const namespaces = obj?.status?.namespaces ?? [];\n const supportedModes = set.filter(({ supported }) => supported).map(({ type }) => type);\n\n if (namespaces.length === 0) {\n return false;\n }\n if (namespaces.length === 1) {\n if (namespaces[0] === obj.metadata.namespace) {\n return supportedModes.includes(InstallModeType.InstallModeTypeOwnNamespace);\n }\n if (namespaces[0] === '') {\n return supportedModes.includes(InstallModeType.InstallModeTypeAllNamespaces);\n }\n return supportedModes.includes(InstallModeType.InstallModeTypeSingleNamespace);\n }\n if (\n namespaces.length > 1 &&\n !supportedModes.includes(InstallModeType.InstallModeTypeMultiNamespace)\n ) {\n return false;\n }\n if (namespaces.length > 1) {\n if (\n namespaces.includes(obj.metadata.namespace) &&\n !supportedModes.includes(InstallModeType.InstallModeTypeOwnNamespace)\n ) {\n return false;\n }\n if (namespaces.includes('')) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const isGlobal = (obj: OperatorGroupKind) =>\n supports([{ type: InstallModeType.InstallModeTypeAllNamespaces, supported: true }])(obj);\nexport const isSingle = (obj: OperatorGroupKind) =>\n supports([{ type: InstallModeType.InstallModeTypeSingleNamespace, supported: true }])(obj);\n\n/**\n * Determines if a given Operator package has a `Subscription` that makes it available in the given namespace.\n * Finds any `Subscriptions` for the given package, matches them to their `OperatorGroup`, and checks if the `OperatorGroup` is targeting the given namespace or if it is global.\n */\nexport const subscriptionFor = (allSubscriptions: SubscriptionKind[] = []) => (\n allGroups: OperatorGroupKind[] = [],\n) => (pkg: PackageManifestKind) => (ns = '') => {\n return allSubscriptions\n .filter(\n (sub) =>\n sub.spec.name === pkg.status.packageName &&\n sub.spec.source === pkg.status.catalogSource &&\n sub.spec.sourceNamespace === pkg.status.catalogSourceNamespace,\n )\n .find((sub) =>\n allGroups.some(\n (og) =>\n og.metadata.namespace === sub.metadata.namespace &&\n (isGlobal(og) || og.status?.namespaces?.includes(ns)),\n ),\n );\n};\n\nexport const installedFor = (allSubscriptions: SubscriptionKind[] = []) => (\n allGroups: OperatorGroupKind[] = [],\n) => (pkg: PackageManifestKind) => (ns = '') => {\n return !_.isNil(subscriptionFor(allSubscriptions)(allGroups)(pkg)(ns));\n};\n\nexport const providedAPIsForOperatorGroup = (og: OperatorGroupKind) =>\n (og?.metadata?.annotations?.['olm.providedAPIs'] ?? '')\n .split(',')\n .map((api) => ({\n group: api.split('.').slice(2).join('.'),\n version: api.split('.')[1],\n kind: api.split('.')[0],\n }))\n .map(({ group, version, kind }) => referenceForGroupVersionKind(group)(version)(kind));\n\ntype RequireOperatorGroupProps = {\n operatorGroup: { loaded: boolean; data?: OperatorGroupKind[] };\n};\n\nexport type OperatorGroupSelectorProps = {\n onChange?: (name: string, kind: GroupVersionKind) => void;\n excludeName?: string;\n dataFilter?: (obj: OperatorGroupKind) => boolean;\n};\n\nNoOperatorGroupMsg.displayName = 'NoOperatorGroupMsg';\n","import * as React from 'react';\nimport { FormGroup, FormHelperText, HelperText, HelperTextItem } from '@patternfly/react-core';\nimport { FormikValues, useFormikContext, useField } from 'formik';\nimport { SelectorInput } from '@console/internal/components/utils';\nimport { FieldProps } from './field-types';\nimport { getFieldId } from './field-utils';\n\ninterface SelectorInputFieldProps extends FieldProps {\n placeholder?: string;\n}\n\n/**\n * Formik field wrapper around `SelectorInput` which renders a \"tag editor\" implemented with `react-tagsinput`.\n *\n * Values are saved as string dictionary (Record).\n */\nconst SelectorInputField: React.FC = ({\n name,\n label,\n helpText,\n required,\n dataTest,\n ...otherProps\n}) => {\n const { setFieldValue, setFieldTouched } = useFormikContext();\n const [{ value }] = useField(name);\n\n const fieldId = getFieldId(name, 'selector');\n const tags = SelectorInput.arrayify(value || '');\n const onChange = (newValue: string[]) => {\n setFieldValue(name, SelectorInput.objectify(newValue), false);\n setFieldTouched(name, true, true);\n };\n\n return (\n \n \n\n \n \n {helpText}\n \n \n \n );\n};\n\nexport default SelectorInputField;\n","export { default as FormFooter } from './FormFooter';\nexport { default as FormHeader } from './FormHeader';\nexport { default as PageBody } from './PageBody';\nexport { default as FlexForm } from './FlexForm';\nexport { default as ActionGroupWithIcons } from './ActionGroupWithIcons';\nexport { default as FormBody } from './FormBody';\n","import { Map as ImmutableMap } from 'immutable';\n\nimport { GroupVersionKind, referenceForModel, referenceForExtensionModel } from '../module/k8s';\nimport * as k8sModels from '../models';\nimport * as appModels from '@console/app/src/models/';\nimport { YAMLTemplate } from '@console/dynamic-plugin-sdk/src/extensions/yaml-templates';\nimport { ResolvedExtension } from '@console/dynamic-plugin-sdk';\nimport { PodDisruptionBudgetModel } from '@console/app/src/models';\n\n/**\n * Sample YAML manifests for some of the statically-defined Kubernetes models.\n */\n\nexport const baseTemplates = ImmutableMap>()\n .setIn(\n ['DEFAULT', 'default'],\n `\napiVersion: ''\nkind: ''\nmetadata:\n name: example\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.NetworkPolicyModel), 'default'],\n `\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n name: example\n namespace: default\nspec:\n podSelector:\n matchLabels:\n role: db\n ingress:\n - from:\n - namespaceSelector:\n matchLabels:\n project: myproject\n - podSelector:\n matchLabels:\n role: somerole\n ports:\n - protocol: TCP\n port: 6379\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.NetworkPolicyModel), 'deny-other-namespaces'],\n `\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n name: deny-other-namespaces\n namespace: target-ns\nspec:\n podSelector:\n ingress:\n - from:\n - podSelector: {}\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.NetworkPolicyModel), 'db-or-api-allow-app'],\n `\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n name: db-or-api-allow-app\n namespace: target-ns\nspec:\n podSelector:\n matchLabels:\n role: db\n ingress:\n - from:\n - podSelector:\n matchLabels:\n app: mail\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.NetworkPolicyModel), 'api-allow-http-and-https'],\n `\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n name: api-allow-http-and-https\n namespace: target-ns\nspec:\n podSelector:\n matchLabels:\n app: api\n ingress:\n - from:\n - podSelector:\n matchLabels:\n role: monitoring\n ports:\n - protocol: TCP\n port: 80\n - protocol: TCP\n port: 443\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.NetworkPolicyModel), 'default-deny-all'],\n `\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n name: default-deny-all\n namespace: target-ns\nspec:\n podSelector:\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.NetworkPolicyModel), 'web-allow-external'],\n `\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n name: web-allow-external\n namespace: target-ns\nspec:\n podSelector:\n matchLabels:\n app: web\n ingress:\n - {}\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.NetworkPolicyModel), 'web-db-allow-all-ns'],\n `\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n name: web-db-allow-all-ns\n namespace: target-ns\nspec:\n podSelector:\n matchLabels:\n role: web-db\n ingress:\n - from:\n - namespaceSelector: {}\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.NetworkPolicyModel), 'web-allow-production'],\n `\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n name: web-allow-production\n namespace: target-ns\nspec:\n podSelector:\n matchLabels:\n app: web\n ingress:\n - from:\n - namespaceSelector:\n matchLabels:\n env: production\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.BuildConfigModel), 'default'],\n `\napiVersion: build.openshift.io/v1\nkind: BuildConfig\nmetadata:\n name: example\nspec:\n source:\n git:\n ref: master\n uri: https://github.com/openshift/ruby-ex.git\n type: Git\n strategy:\n type: Source\n sourceStrategy:\n from:\n kind: ImageStreamTag\n name: ruby:2.7\n namespace: openshift\n env: []\n triggers:\n - type: ImageChange\n imageChange: {}\n - type: ConfigChange\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.DeploymentModel), 'default'],\n `\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: example\nspec:\n selector:\n matchLabels:\n app: httpd\n replicas: 3\n template:\n metadata:\n labels:\n app: httpd\n spec:\n containers:\n - name: httpd\n image: image-registry.openshift-image-registry.svc:5000/openshift/httpd:latest\n ports:\n - containerPort: 8080\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ConfigMapModel), 'default'],\n `\napiVersion: v1\nkind: ConfigMap\nmetadata:\n name: example\n namespace: default\ndata:\n example.property.1: hello\n example.property.2: world\n example.property.file: |-\n property.1=value-1\n property.2=value-2\n property.3=value-3\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.CronJobModel), 'default'],\n `\napiVersion: batch/v1\nkind: CronJob\nmetadata:\n name: example\nspec:\n schedule: \"@daily\"\n jobTemplate:\n spec:\n template:\n spec:\n containers:\n - name: hello\n image: busybox\n args:\n - /bin/sh\n - -c\n - date; echo Hello from the Kubernetes cluster\n restartPolicy: OnFailure\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.CustomResourceDefinitionModel), 'default'],\n `\n apiVersion: apiextensions.k8s.io/v1\n kind: CustomResourceDefinition\n metadata:\n # name must match the spec fields below, and be in the form: .\n name: crontabs.stable.example.com\n spec:\n # group name to use for REST API: /apis//\n group: stable.example.com\n # list of versions supported by this CustomResourceDefinition\n versions:\n - name: v1\n # Each version can be enabled/disabled by Served flag.\n served: true\n # One and only one version must be marked as the storage version.\n storage: true\n schema:\n openAPIV3Schema:\n type: object\n properties:\n spec:\n type: object\n properties:\n cronSpec:\n type: string\n image:\n type: string\n replicas:\n type: integer\n # either Namespaced or Cluster\n scope: Namespaced\n names:\n # plural name to be used in the URL: /apis///\n plural: crontabs\n # singular name to be used as an alias on the CLI and for display\n singular: crontab\n # kind is normally the CamelCased singular type. Your resource manifests use this.\n kind: CronTab\n # shortNames allow shorter string to match your resource on the CLI\n shortNames:\n - ct\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.DeploymentConfigModel), 'default'],\n `\napiVersion: apps.openshift.io/v1\nkind: DeploymentConfig\nmetadata:\n name: example\nspec:\n selector:\n app: httpd\n replicas: 3\n template:\n metadata:\n labels:\n app: httpd\n spec:\n containers:\n - name: httpd\n image: image-registry.openshift-image-registry.svc:5000/openshift/httpd:latest\n ports:\n - containerPort: 8080\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.PersistentVolumeModel), 'default'],\n `\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n name: example\nspec:\n capacity:\n storage: 5Gi\n accessModes:\n - ReadWriteOnce\n persistentVolumeReclaimPolicy: Retain\n storageClassName: slow\n nfs:\n path: /tmp\n server: 172.17.0.2\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.HorizontalPodAutoscalerModel), 'default'],\n `\napiVersion: autoscaling/v2\nkind: HorizontalPodAutoscaler\nmetadata:\n name: example\nspec:\n scaleTargetRef:\n apiVersion: apps/v1\n kind: Deployment\n name: example\n minReplicas: 1\n maxReplicas: 3\n metrics:\n - type: Resource\n resource:\n name: cpu\n target:\n averageUtilization: 50\n type: Utilization\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.PodModel), 'default'],\n `\napiVersion: v1\nkind: Pod\nmetadata:\n name: example\n labels:\n app: httpd\nspec:\n securityContext:\n runAsNonRoot: true\n seccompProfile:\n type: RuntimeDefault\n containers:\n - name: httpd\n image: image-registry.openshift-image-registry.svc:5000/openshift/httpd:latest\n ports:\n - containerPort: 8080\n securityContext:\n allowPrivilegeEscalation: false\n capabilities:\n drop:\n - ALL\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.IngressModel), 'default'],\n `\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n name: example\nspec:\n rules:\n - host: example.com\n http:\n paths:\n - path: /testpath\n pathType: Prefix\n backend:\n service:\n name: test\n port:\n number: 80\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.JobModel), 'default'],\n `\napiVersion: batch/v1\nkind: Job\nmetadata:\n name: example\nspec:\n selector: {}\n template:\n metadata:\n name: pi\n spec:\n containers:\n - name: pi\n image: perl\n command: [\"perl\", \"-Mbignum=bpi\", \"-wle\", \"print bpi(2000)\"]\n restartPolicy: Never\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ImageStreamModel), 'default'],\n `\napiVersion: image.openshift.io/v1\nkind: ImageStream\nmetadata:\n name: example\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.RoleBindingModel), 'default'],\n `\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n name: example\nsubjects:\n- kind: Group\n name: \"my-sample-group\"\n apiGroup: rbac.authorization.k8s.io\nroleRef:\n kind: ClusterRole\n name: view\n apiGroup: rbac.authorization.k8s.io\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.RoleModel), 'default'],\n `apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n name: example\nrules:\n- apiGroups: [\"\"] # \"\" indicates the core API group\n resources: [\"pods\"]\n verbs: [\"get\", \"watch\", \"list\"]\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.RoleModel), 'read-pods-within-ns'],\n `\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n name: read-pods-within-ns\n namespace: default\nrules:\n- apiGroups: [\"\"]\n resources: [\"pods\"]\n verbs: [\"get\", \"list\", \"watch\"]\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.RoleModel), 'read-write-deployment-in-ext-and-apps-apis'],\n `\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n name: read-write-deployment-in-ext-and-apps-apis\n namespace: default\nrules:\n- apiGroups: [\"extensions\", \"apps\"]\n resources: [\"deployments\"]\n verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"patch\", \"delete\"]\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.RoleModel), 'read-pods-and-read-write-jobs'],\n `apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n name: read-pods-and-read-write-jobs\n namespace: default\nrules:\n- apiGroups: [\"\"]\n resources: [\"pods\"]\n verbs: [\"get\", \"list\", \"watch\"]\n- apiGroups: [\"batch\", \"extensions\"]\n resources: [\"jobs\"]\n verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"patch\", \"delete\"]\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.RoleModel), 'read-configmap-within-ns'],\n `\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n name: read-configmap-within-ns\n namespace: default\nrules:\n- apiGroups: [\"\"]\n resources: [\"configmaps\"]\n resourceNames: [\"my-config\"]\n verbs: [\"get\"]\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ClusterRoleModel), 'read-nodes'],\n `\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n # \"namespace\" omitted since ClusterRoles are not namespaced\n name: read-nodes\nrules:\n- apiGroups: [\"\"]\n resources: [\"nodes\"]\n verbs: [\"get\", \"list\", \"watch\"]\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ClusterRoleModel), 'get-and-post-to-non-resource-endpoints'],\n `\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n # \"namespace\" omitted since ClusterRoles are not namespaced\n name: get-and-post-to-non-resource-endpoints\nrules:\n- nonResourceURLs: [\"/healthz\", \"/healthz/*\"] # '*' in a nonResourceURL is a suffix glob match\n verbs: [\"get\", \"post\"]\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ServiceModel), 'default'],\n `\napiVersion: v1\nkind: Service\nmetadata:\n name: example\nspec:\n selector:\n app: MyApp\n ports:\n - protocol: TCP\n port: 80\n targetPort: 9376\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.DaemonSetModel), 'default'],\n `\napiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n name: example\nspec:\n selector:\n matchLabels:\n app: httpd\n template:\n metadata:\n labels:\n app: httpd\n spec:\n containers:\n - name: httpd\n image: image-registry.openshift-image-registry.svc:5000/openshift/httpd:latest\n ports:\n - containerPort: 8080\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.PersistentVolumeClaimModel), 'default'],\n `\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n name: example\nspec:\n accessModes:\n - ReadWriteOnce\n volumeMode: Filesystem\n resources:\n requests:\n storage: 1Gi\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ResourceQuotaModel), 'default'],\n `\napiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: example\nspec:\n hard:\n pods: \"4\"\n requests.cpu: \"1\"\n requests.memory: 1Gi\n limits.cpu: \"2\"\n limits.memory: 2Gi\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.LimitRangeModel), 'default'],\n `\napiVersion: v1\nkind: LimitRange\nmetadata:\n name: mem-limit-range\nspec:\n limits:\n - default:\n memory: 512Mi\n defaultRequest:\n memory: 256Mi\n type: Container\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.StatefulSetModel), 'default'],\n `\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n name: example\nspec:\n serviceName: \"httpd\"\n replicas: 3\n selector:\n matchLabels:\n app: httpd\n template:\n metadata:\n labels:\n app: httpd\n spec:\n terminationGracePeriodSeconds: 10\n containers:\n - name: httpd\n image: image-registry.openshift-image-registry.svc:5000/openshift/httpd:latest\n ports:\n - containerPort: 8080\n name: web\n volumeMounts:\n - name: www\n mountPath: /var/www/html\n volumeClaimTemplates:\n - metadata:\n name: www\n spec:\n accessModes: [ \"ReadWriteOnce\" ]\n storageClassName: my-storage-class\n resources:\n requests:\n storage: 1Gi\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.StorageClassModel), 'default'],\n `\napiVersion: storage.k8s.io/v1\nkind: StorageClass\nmetadata:\n name: example\nprovisioner: my-provisioner\nreclaimPolicy: Delete\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ServiceAccountModel), 'default'],\n `\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n name: example\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.SecretModel), 'default'],\n `\napiVersion: v1\nkind: Secret\nmetadata:\n name: example\ntype: Opaque\nstringData:\n username: admin\n password: opensesame\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ReplicaSetModel), 'default'],\n `\napiVersion: apps/v1\nkind: ReplicaSet\nmetadata:\n name: example\nspec:\n replicas: 2\n selector:\n matchLabels:\n app: httpd\n template:\n metadata:\n name: httpd\n labels:\n app: httpd\n spec:\n containers:\n - name: httpd\n image: image-registry.openshift-image-registry.svc:5000/openshift/httpd:latest\n ports:\n - containerPort: 8080\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.RouteModel), 'default'],\n `\napiVersion: route.openshift.io/v1\nkind: Route\nmetadata:\n name: example\nspec:\n path: /\n to:\n kind: Service\n name: example\n port:\n targetPort: 80\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ReplicationControllerModel), 'default'],\n `\napiVersion: v1\nkind: ReplicationController\nmetadata:\n name: example\nspec:\n replicas: 2\n selector:\n app: httpd\n template:\n metadata:\n name: httpd\n labels:\n app: httpd\n spec:\n containers:\n - name: httpd\n image: image-registry.openshift-image-registry.svc:5000/openshift/httpd:latest\n ports:\n - containerPort: 8080\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.BuildConfigModel), 'docker-build'],\n `\napiVersion: build.openshift.io/v1\nkind: BuildConfig\nmetadata:\n name: docker-build\n namespace: default\n labels:\n name: docker-build\nspec:\n triggers:\n - type: GitHub\n github:\n secret: secret101\n - type: ImageChange\n imageChange: {}\n - type: ConfigChange\n source:\n type: Git\n git:\n uri: https://github.com/openshift/ruby-hello-world.git\n strategy:\n type: Docker\n dockerStrategy:\n from:\n kind: ImageStreamTag\n name: ruby:latest\n namespace: openshift\n env:\n - name: EXAMPLE\n value: sample-app\n output:\n to:\n kind: ImageStreamTag\n name: origin-ruby-sample:latest\n postCommit:\n args:\n - bundle\n - exec\n - rake\n - test\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.BuildConfigModel), 's2i-build'],\n `apiVersion: build.openshift.io/v1\nkind: BuildConfig\nmetadata:\n name: s2i-build\n namespace: default\nspec:\n output:\n to:\n kind: ImageStreamTag\n name: s2i-build:latest\n source:\n git:\n ref: master\n uri: https://github.com/openshift/ruby-ex.git\n type: Git\n strategy:\n type: Source\n sourceStrategy:\n from:\n kind: ImageStreamTag\n name: ruby:2.4\n namespace: openshift\n env: []\n triggers:\n - type: ImageChange\n imageChange: {}\n - type: ConfigChange\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.GroupModel), 'default'],\n `\napiVersion: user.openshift.io/v1\nkind: Group\nmetadata:\n name: example\nusers:\n- user1\n- user2\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ResourceQuotaModel), 'rq-compute'],\n `\napiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: compute-quota\n namespace:\nspec:\n hard:\n requests.cpu: '1'\n requests.memory: 1Gi\n limits.cpu: '2'\n limits.memory: 2Gi\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ResourceQuotaModel), 'rq-storageclass'],\n `\napiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: storage-class-quota\n namespace:\nspec:\n hard:\n requests.storage: 100Gi\n persistentvolumeclaims: '100'\n # For quota specific to a storage class, the storage class must have the same name\n gold.storage-class.kubernetes.io/requests.storage: 3Gi\n gold.storage-class.kubernetes.io/persistentvolumeclaims: '5'\n silver.storage-class.kubernetes.io/requests.storage: 2Gi\n silver.storage-class.kubernetes.io/persistentvolumeclaims: '3'\n bronze.storage-class.kubernetes.io/requests.storage: 1Gi\n bronze.storage-class.kubernetes.io/persistentvolumeclaims: '1'\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ResourceQuotaModel), 'rq-counts'],\n `\napiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: object-counts\n namespace:\nspec:\n hard:\n configmaps: \"10\"\n persistentvolumeclaims: \"4\"\n replicationcontrollers: \"20\"\n secrets: \"10\"\n services: \"10\"\n services.loadbalancers: \"2\"\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ClusterAutoscalerModel), 'default'],\n `\napiVersion: \"autoscaling.openshift.io/v1\"\nkind: \"ClusterAutoscaler\"\nmetadata:\n name: \"default\"\nspec: {}\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.MachineDeploymentModel), 'default'],\n `\napiVersion: \"machine.openshift.io/v1beta1\"\nkind: MachineDeployment\nmetadata:\n name: example\nspec:\n replicas: 3\n selector:\n matchLabels:\n foo: bar\n template:\n metadata:\n labels:\n foo: bar\n spec:\n providerSpec: {}\n versions:\n kubelet: \"\"\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.MachineSetModel), 'default'],\n `\napiVersion: \"machine.openshift.io/v1beta1\"\nkind: MachineSet\nmetadata:\n name: example\nspec:\n replicas: 3\n selector:\n matchLabels:\n foo: bar\n template:\n metadata:\n labels:\n foo: bar\n spec:\n providerSpec: {}\n versions:\n kubelet: \"\"\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.MachineModel), 'default'],\n `\napiVersion: \"machine.openshift.io/v1beta1\"\nkind: Machine\nmetadata:\n name: example\nspec:\n providerSpec: {}\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.MachineConfigPoolModel), 'default'],\n `\napiVersion: machineconfiguration.openshift.io/v1\nkind: MachineConfigPool\nmetadata:\n name: example\nspec:\n machineConfigSelector:\n matchLabels:\n machineconfiguration.openshift.io/role: master\n nodeSelector:\n matchLabels:\n node-role.kubernetes.io/master: \"\"\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.MachineAutoscalerModel), 'default'],\n `\napiVersion: \"autoscaling.openshift.io/v1beta1\"\nkind: \"MachineAutoscaler\"\nmetadata:\n name: \"worker-us-east-1a\"\n namespace: \"openshift-machine-api\"\nspec:\n minReplicas: 1\n maxReplicas: 12\n scaleTargetRef:\n apiVersion: machine.openshift.io/v1beta1\n kind: MachineSet\n name: worker\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.MachineHealthCheckModel), 'default'],\n `\napiVersion: machine.openshift.io/v1beta1\nkind: MachineHealthCheck\nmetadata:\n name: example\n namespace: openshift-machine-api\nspec:\n selector:\n matchLabels:\n machine.openshift.io/cluster-api-cluster: my-cluster\n machine.openshift.io/cluster-api-machine-role: worker\n machine.openshift.io/cluster-api-machine-type: worker\n machine.openshift.io/cluster-api-machineset: my-machine-set\n unhealthyConditions:\n - type: \"Ready\"\n status: \"Unknown\"\n timeout: \"300s\"\n - type: \"Ready\"\n status: \"False\"\n timeout: \"300s\"\n maxUnhealthy: \"40%\"\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ConsoleLinkModel), 'default'],\n `\napiVersion: console.openshift.io/v1\nkind: ConsoleLink\nmetadata:\n name: example\nspec:\n href: 'https://www.example.com'\n location: HelpMenu\n text: Help Menu Link\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ConsoleLinkModel), 'cl-user-menu'],\n `\napiVersion: console.openshift.io/v1\nkind: ConsoleLink\nmetadata:\n name: example-user-menu\nspec:\n href: 'https://www.example.com'\n location: UserMenu\n text: User Menu Link\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ConsoleLinkModel), 'cl-application-menu'],\n `\napiVersion: console.openshift.io/v1\nkind: ConsoleLink\nmetadata:\n name: example-application-menu\nspec:\n href: 'https://www.example.com'\n location: ApplicationMenu\n text: Application Menu Link\n applicationMenu:\n section: Example Section\n imageURL: data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTE4LjkgMi4xdjIuMWgtMS43di0yLjFjMC0uMSAwLS4yLS4xLS4zcy0uMi0uMS0uMy0uMWgtMTQuN2MtLjEgMC0uMiAwLS4zLjEgMCAuMS0uMS4yLS4xLjN2MTQuNmMwIC4xIDAgLjIuMS4zcy4yLjEuMy4xaDIuMXYxLjdoLTIuMWMtLjYgMC0xLjEtLjItMS41LS42LS40LS40LS42LS45LS42LTEuNXYtMTQuNmMwLS41LjItMS4xLjYtMS41czEtLjYgMS41LS42aDE0LjZjLjYgMCAxLjEuMiAxLjUuNnMuNyAxIC43IDEuNXptNS4xIDUuMnYxNC42YzAgLjYtLjIgMS4xLS42IDEuNXMtMSAuNi0xLjUuNmgtMTQuNmMtLjYgMC0xLjEtLjItMS41LS42cy0uNi0uOS0uNi0xLjV2LTE0LjZjMC0uNi4yLTEuMS42LTEuNXMuOS0uNiAxLjUtLjZoMTQuNmMuNiAwIDEuMS4yIDEuNS42cy42LjkuNiAxLjV6bS0xLjcgMTQuNnYtMTQuNmMwLS4xIDAtLjItLjEtLjNzLS4yLS4xLS4zLS4xaC0xNC42Yy0uMSAwLS4yIDAtLjMuMXMtLjEuMi0uMS4zdjE0LjZjMCAuMSAwIC4yLjEuM3MuMi4xLjMuMWgxNC42Yy4xIDAgLjIgMCAuMy0uMXMuMS0uMi4xLS4zeiIvPjwvc3ZnPg==\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ConsoleLinkModel), 'cl-namespace-dashboard'],\n `\napiVersion: console.openshift.io/v1\nkind: ConsoleLink\nmetadata:\n name: example-namespace-dashboard\nspec:\n href: 'https://www.example.com'\n location: NamespaceDashboard\n text: Namespace Dashboard Link\n namespaceDashboard:\n namespaces:\n - default\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ConsoleCLIDownloadModel), 'default'],\n `\napiVersion: console.openshift.io/v1\nkind: ConsoleCLIDownload\nmetadata:\n name: example\nspec:\n displayName: examplecli\n description: |\n This is an example CLI download description that can include markdown such as paragraphs, unordered lists, code, [links](https://www.example.com), etc.\n\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce a lobortis justo, eu suscipit purus.\n links:\n - href: 'https://www.example.com'\n text: Download Example CLI\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ConsoleNotificationModel), 'default'],\n `\napiVersion: console.openshift.io/v1\nkind: ConsoleNotification\nmetadata:\n name: example\nspec:\n text: This is an example notification message with an optional link.\n location: BannerTop\n link:\n href: 'https://www.example.com'\n text: Optional link text\n color: '#fff'\n backgroundColor: '#0088ce'\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ConsoleExternalLogLinkModel), 'default'],\n `\napiVersion: console.openshift.io/v1\nkind: ConsoleLogLink\nmetadata:\n name: example\nspec:\n hrefTemplate: 'https://example.com/logs?resourceName=\\${resourceName}&containerName=\\${containerName}&resourceNamespace=\\${resourceNamespace}&podLabels=\\${podLabels}'\n text: Example Logs\n`,\n )\n .setIn(\n [referenceForModel(appModels.QuickStartModel), 'default'],\n `\napiVersion: console.openshift.io/v1\nkind: ConsoleQuickStart\nmetadata:\n name: example\nspec:\n displayName: Deploy image\n tags:\n - example\n - image\n - deployment\n durationMinutes: 5\n description: Deploy an example application from an image.\n introduction: |-\n ### In this example quick start, you'll deploy an existing image to OpenShift. For more information on writing quick starts, see our [quick start guidelines.](http://openshift.github.io/openshift-origin-design/conventions/documentation/quick-starts.html)\n tasks:\n - title: Deploy an existing image from an image registry\n description: |-\n ### To deploy the **httpd-24-centos7** image, follow these steps:\n 1. Enter the developer perspective: In the main navigation menu, click the [dropdown menu]{{highlight tour-perspective-dropdown}} and select **Developer**.\n 2. In the main navigation menu, click **Add.**\n 3. Using the project dropdown menu, select the project you would like to deploy the image in.\n 4. Click the **Container Image** tile.\n 5. In the **Image name from external registry** field, enter **quay.io/centos7/httpd-24-centos7**.\n 6. Fill in the remaining image deployment details, and then click **Create.**\n The **Topology** view will load with your **httpd-24-centos7-app** application. The outer rim of the larger circle represents your application, and the small circle represents the deployment.\n review:\n instructions: |-\n #### Verify the image was successfully deployed:\n Do you see a **httpd-24-centos7** deployment?\n failedTaskHelp: This task isnโ€™t verified yet. Try the task again.\n summary:\n success: Great work! You deployed an example application using the **quay.io/centos7/httpd-24-centos7** image.\n failed: Try the steps again.\n - title: Run the deployed application\n description: |-\n ### To run the **httpd-24-centos7** deployment application, follow these steps:\n 1. In the **Topology** view, click the **httpd-24-centos7** deployment circle.\n 2. In the panel that slides out, click the link in the **Routes** section. This opens the URL and runs the application.\n review:\n instructions: |-\n #### Verify your application is running:\n In the new tab, do you see the Apache HTTP server test page?\n failedTaskHelp: This task isnโ€™t verified yet. Try the task again.\n summary:\n success: Great work! You deployed the **quay.io/centos7/httpd-24-centos7** image.\n failed: Try the steps again.\n conclusion: Your example **httpd-24-centos7-app** application, using the **quay.io/centos7/httpd-24-centos7** image, is deployed and ready.\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.ConsoleYAMLSampleModel), 'default'],\n `\napiVersion: console.openshift.io/v1\nkind: ConsoleYAMLSample\nmetadata:\n name: example\nspec:\n targetResource:\n apiVersion: batch/v1\n kind: Job\n title: 'Example Job'\n description: 'An example Job YAML sample'\n yaml: |\n apiVersion: batch/v1\n kind: Job\n metadata:\n name: countdown\n spec:\n template:\n metadata:\n name: countdown\n spec:\n containers:\n - name: counter\n image: centos:7\n command:\n - \"bin/bash\"\n - \"-c\"\n - \"for i in 9 8 7 6 5 4 3 2 1 ; do echo $i ; done\"\n restartPolicy: Never\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.VolumeSnapshotModel), 'default'],\n `\napiVersion: snapshot.storage.k8s.io/v1\nkind: VolumeSnapshot\nmetadata:\n name: example-snap\nspec:\n volumeSnapshotClassName: example-snapclass\n source:\n persistentVolumeClaimName: pvc-test\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.VolumeSnapshotClassModel), 'default'],\n `\napiVersion: snapshot.storage.k8s.io/v1\nkind: VolumeSnapshotClass\nmetadata:\n name: example-snapclass\ndriver: hostpath.csi.k8s.io #csi-hostpath\ndeletionPolicy: Delete\n`,\n )\n .setIn(\n [referenceForModel(k8sModels.VolumeSnapshotContentModel), 'default'],\n `\napiVersion: snapshot.storage.k8s.io/v1\nkind: VolumeSnapshotContent\nmetadata:\n name: example-snapcontent\nspec:\n deletionPolicy: Delete\n driver: hostpath.csi.k8s.io\n source:\n snapshotHandle: 7bdd0de3-aaeb-11e8-9aae-0242ac110002\n volumeSnapshotClassName: example-snapclass\n volumeSnapshotRef:\n name: example-snap\n namespace: default\n`,\n )\n .setIn(\n [referenceForModel(PodDisruptionBudgetModel), 'default'],\n `\napiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n name: ''\nspec:\n selector:\n {}\n`,\n )\n .setIn(\n [referenceForModel(PodDisruptionBudgetModel), 'pdb-max-unavailable'],\n `\napiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n name: example\n namespace: target-ns\nspec:\n maxUnavailable: 0\n selector:\n matchLabels:\n app: hello-openShift\n`,\n )\n .setIn(\n [referenceForModel(PodDisruptionBudgetModel), 'pdb-min-available'],\n `\napiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n name: example\n namespace: target-ns\nspec:\n minAvailable: \"25%\"\n selector:\n matchLabels:\n app: hello-openShift\n`,\n );\n\nexport const getYAMLTemplates = (extensionTemplates: ResolvedExtension[] = []) =>\n ImmutableMap>()\n .merge(baseTemplates)\n .withMutations((map) => {\n extensionTemplates.forEach((yt) => {\n const modelRef = referenceForExtensionModel(yt.properties.model);\n const templateName = yt.properties.name || 'default';\n\n if (!baseTemplates.hasIn([modelRef, templateName])) {\n map.setIn([modelRef, templateName], yt.properties.template);\n }\n });\n });\n","import * as React from 'react';\nimport { MouseIcon } from '@patternfly/react-icons/dist/esm/icons/mouse-icon';\nimport * as _ from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport './Shortcut.scss';\n\ninterface ShortcutProps {\n children: React.ReactNode;\n alt?: boolean;\n click?: boolean;\n ctrl?: boolean;\n ctrlCmd?: boolean;\n drag?: boolean;\n hover?: boolean;\n keyName?: string;\n rightClick?: boolean;\n shift?: boolean;\n dragNdrop?: boolean;\n}\n\nexport const ShortcutCommand: React.FC = ({ children }) => (\n \n {children}\n \n);\n\nexport const isMac = window.navigator.platform.includes('Mac');\n\nconst Shortcut: React.FC = ({\n children,\n alt,\n click,\n ctrl,\n ctrlCmd,\n drag,\n hover,\n keyName,\n rightClick,\n shift,\n dragNdrop,\n}) => {\n const { t } = useTranslation();\n return (\n \n \n {(ctrl || (!isMac && ctrlCmd)) && (\n Ctrl\n )}\n {alt && (\n \n {isMac ? 'โŒฅ Opt' : 'Alt'}\n \n )}\n {shift && Shift}\n {isMac && ctrlCmd && โŒ˜ Cmd}\n {hover && (\n \n {t('console-shared~Hover')}\n \n )}\n {keyName && (\n \n {keyName.length === 1 ? keyName.toUpperCase() : _.upperFirst(keyName.toLowerCase())}\n \n )}\n {drag && (\n \n {t('console-shared~Drag')}\n \n )}\n {click && (\n \n {t('console-shared~Click')}\n \n )}\n {rightClick && (\n \n {t('console-shared~Right click')}\n \n )}\n {dragNdrop && (\n \n {t('console-shared~Drag + Drop')}\n \n )}\n \n {children}\n \n );\n};\n\nexport default Shortcut;\n","import { useK8sModels } from '@console/dynamic-plugin-sdk/src/lib-core';\nimport { getReferenceForModel } from '@console/dynamic-plugin-sdk/src/utils/k8s';\nimport { K8sModel } from '@console/internal/module/k8s';\nimport {\n NodeMaintenanceModel,\n NodeMaintenanceKubevirtBetaModel,\n NodeMaintenanceKubevirtAlphaModel,\n} from '../models';\n\nexport const useMaintenanceCapability = (): [K8sModel, boolean] => {\n const [models, loading] = useK8sModels();\n if (loading) {\n return [undefined, true];\n }\n const model =\n models[getReferenceForModel(NodeMaintenanceModel)] ||\n models[getReferenceForModel(NodeMaintenanceKubevirtBetaModel)] ||\n models[getReferenceForModel(NodeMaintenanceKubevirtAlphaModel)];\n\n return [model, false];\n};\n","import { Extension, ExtensionDeclaration, CodeRef } from '../types';\nimport { K8sResourceCommon } from './console-types';\n\n/** This extension can be used to specify additional properties that will be used when creating PVC resources on the PVC list page. */\nexport type PVCCreateProp = ExtensionDeclaration<\n 'console.pvc/create-prop',\n {\n /** Label for the create prop action. */\n label: string;\n /** Path for the create prop action. */\n path: string;\n }\n>;\n\n/** This extension can be used to contribute custom alerts on the PVC details page. */\nexport type PVCAlert = ExtensionDeclaration<\n 'console.pvc/alert',\n {\n /** The alert component. */\n alert: CodeRef>;\n }\n>;\n\n/** This extension can be used to contribute an additional status component for PVC resources on the cluster dashboard page. */\nexport type PVCStatus = ExtensionDeclaration<\n 'console.pvc/status',\n {\n /** Priority for the status component. Bigger value means higher priority. */\n priority: number;\n /** The status component. */\n status: CodeRef>;\n /** Predicate that tells whether to render the status component or not. */\n predicate: CodeRef<(pvc: K8sResourceCommon) => boolean>;\n }\n>;\n\n/** This extension allows hooking into deleting PVC resources. It can provide an alert with additional information and custom PVC delete logic. */\nexport type PVCDelete = ExtensionDeclaration<\n 'console.pvc/delete',\n {\n /** Predicate that tells whether to use the extension or not. */\n predicate: CodeRef<(pvc: K8sResourceCommon) => boolean>;\n /** Method for the PVC delete operation. */\n onPVCKill: CodeRef<(pvc: K8sResourceCommon) => Promise>;\n /** Alert component to show additional information. */\n alert: CodeRef>;\n }\n>;\n\n// Type guards\n\nexport const isPVCCreateProp = (e: Extension): e is PVCCreateProp =>\n e.type === 'console.pvc/create-prop';\n\nexport const isPVCAlert = (e: Extension): e is PVCAlert => e.type === 'console.pvc/alert';\n\nexport const isPVCStatus = (e: Extension): e is PVCStatus => e.type === 'console.pvc/status';\n\nexport const isPVCDelete = (e: Extension): e is PVCDelete => e.type === 'console.pvc/delete';\n","import { ExtensionK8sModel } from '../api/common-types';\nimport { Extension, ExtensionDeclaration, CodeRef } from '../types';\n\n/** YAML templates for editing resources via the yaml editor. */\nexport type YAMLTemplate = ExtensionDeclaration<\n 'console.yaml-template',\n {\n /** Model associated with the template. */\n model: ExtensionK8sModel;\n /** The YAML template. */\n template: CodeRef;\n /** The name of the template. Use the name `default` to mark this as the default template. */\n name: string | 'default';\n }\n>;\n\n// Type guards\n\nexport const isYAMLTemplate = (e: Extension): e is YAMLTemplate =>\n e.type === 'console.yaml-template';\n","export const setTrafficDistributionModal = (props) =>\n import(\n '../traffic-splitting/TrafficSplittingController' /* webpackChunkName: \"set-traffic-splitting\" */\n ).then((m) => m.trafficModalLauncher(props));\n\nexport const setSinkSourceModal = (props) =>\n import('../sink-source/SinkSourceController' /* webpackChunkName: \"sink-source\" */).then((m) =>\n m.sinkModalLauncher(props),\n );\n\nexport const setSinkPubsubModal = (props) =>\n import('../sink-pubsub/SinkPubsubController' /* webpackChunkName: \"sink-pubsub\" */).then((m) =>\n m.sinkPubsubModalLauncher(props),\n );\n\nexport const deleteRevisionModal = (props) =>\n import(\n '../revisions/DeleteRevisionModalController' /* webpackChunkName: \"delete-revision\" */\n ).then((m) => m.deleteRevisionModalLauncher(props));\n\nexport const editSinkUriModal = (props) =>\n import('../sink-uri/SinkUriController' /* webpackChunkName: \"sink-uri\" */).then((m) =>\n m.sinkModalLauncher(props),\n );\n\nexport const testServerlessFunctionModal = (props) =>\n import(\n '../test-function/TestFunctionController' /* webpackChunkName: \"test-serverless-function\" */\n ).then((m) => m.testFunctionModalLauncher(props));\n","export { default as ActionMenu } from './menu/ActionMenu';\nexport { default as LazyActionMenu } from './LazyActionMenu';\nexport { default as ActionServiceProvider } from './ActionServiceProvider';\nexport * from './types';\nexport * from './utils';\n","import * as React from 'react';\nimport { Alert, Label, Popover } from '@patternfly/react-core';\nimport { useTranslation } from 'react-i18next';\nimport { useK8sWatchResource } from '@console/dynamic-plugin-sdk/src/api/core-api';\nimport { K8sResourceCommon } from '@console/internal/module/k8s';\nimport { YellowExclamationTriangleIcon } from '@console/shared';\nimport { ServiceBindingModel } from '../../models';\nimport { getBrandingDetails } from '../../utils';\nimport './ServiceBindingAlerts.scss';\n\nexport interface ServiceBindingWarningProps {\n namespace: string;\n}\n\nexport const ServiceBindingDeprecationAlertForTopology: React.FC = () => {\n const { t } = useTranslation();\n const productDetails = getBrandingDetails();\n return (\n

    \n {t(\n 'service-binding-plugin~Service Bindings is deprecated with OpenShift 4.15 and will be removed from a future release, currently planned as {{productName}} 4.18.',\n { productName: productDetails.productName },\n )}\n

    \n );\n};\n\nexport const ServiceBindingWarningForTopology: React.FC = ({\n namespace,\n}) => {\n const { t } = useTranslation();\n\n const [serviceBindings, serviceBindingsLoaded] = useK8sWatchResource({\n groupVersionKind: {\n group: ServiceBindingModel.apiGroup,\n kind: ServiceBindingModel.kind,\n version: ServiceBindingModel.apiVersion,\n },\n isList: true,\n namespaced: true,\n namespace,\n });\n\n return (\n <>\n {serviceBindingsLoaded && serviceBindings?.length > 0 && (\n } triggerAction=\"hover\">\n \n \n )}\n \n );\n};\n\nexport const ServiceBindingDeprecationAlert: React.FC = () => {\n const { t } = useTranslation();\n const productDetails = getBrandingDetails();\n return (\n \n

    \n {t(\n 'service-binding-plugin~Feature development of Service Binding Operator is deprecated in {{productName}} 4.15.',\n { productName: productDetails.productName },\n )}\n

    \n

    \n {t(\n 'service-binding-plugin~Service Bindings can still be created and shown in the OpenShift web console, but will be removed from a future release, currently planned as {{productName}} 4.18. You should migrate wherever it is possible.',\n { productName: productDetails.productName },\n )}\n

    \n \n );\n};\n\nexport const ServiceBindingDeprecationAlertForModals: React.FC = () => {\n const { t } = useTranslation();\n const productDetails = getBrandingDetails();\n return (\n \n

    \n {t(\n 'service-binding-plugin~Web console support will be removed from a future release, currently planned as {{productName}} 4.18. You should migrate wherever it is possible.',\n { productName: productDetails.productName },\n )}\n

    \n \n );\n};\n","import { K8sKind } from '@console/internal/module/k8s';\nimport { API_GROUP, API_VERSION } from '../const';\n\nexport const CloudServicesRequestModel: K8sKind = {\n apiGroup: API_GROUP,\n apiVersion: API_VERSION,\n kind: 'CloudServicesRequest',\n id: 'cloudservicesrequest',\n plural: 'cloudservicesrequests',\n label: 'Cloud Services Request',\n // t('rhoas-plugin~Cloud Services Request')\n labelKey: 'rhoas-plugin~Cloud Services Request',\n labelPlural: 'Cloud Services Requests',\n // t('rhoas-plugin~Cloud Services Requests')\n labelPluralKey: 'rhoas-plugin~Cloud Services Requests',\n abbr: 'CSCR',\n namespaced: true,\n crd: true,\n};\n\nexport const KafkaConnectionModel: K8sKind = {\n apiGroup: API_GROUP,\n apiVersion: API_VERSION,\n kind: 'KafkaConnection',\n id: 'kafkaconnection',\n plural: 'kafkaconnections',\n label: 'Kafka Connection',\n // t('rhoas-plugin~Kafka Connection')\n labelKey: 'rhoas-plugin~Kafka Connection',\n labelPlural: 'Kafka Connections',\n // t('rhoas-plugin~Kafka Connections')\n labelPluralKey: 'rhoas-plugin~Kafka Connections',\n abbr: 'AKC',\n namespaced: true,\n crd: true,\n};\n\nexport const CloudServiceAccountRequest: K8sKind = {\n apiGroup: API_GROUP,\n apiVersion: API_VERSION,\n kind: 'CloudServiceAccountRequest',\n id: 'cloudserviceaccountrequest',\n plural: 'cloudserviceaccountrequests',\n label: 'Cloud service Account Request',\n // t('rhoas-plugin~Cloud service Account Request')\n labelKey: 'rhoas-plugin~Cloud service Account Request',\n labelPlural: 'Cloud Service Account Requests',\n // t('rhoas-plugin~Cloud Service Account Requests')\n labelPluralKey: 'rhoas-plugin~Cloud Service Account Requests',\n abbr: 'CSAR',\n namespaced: true,\n crd: true,\n};\n","import * as _ from 'lodash-es';\n\nimport { STORAGE_PREFIX } from '@console/shared/src/constants';\nimport { coFetchJSON } from '../../co-fetch';\nimport { K8sKind, referenceForModel } from './';\n\nconst SWAGGER_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/swagger-definitions`;\n\nexport const getDefinitionKey = _.memoize(\n (model: K8sKind, definitions: SwaggerDefinitions): string => {\n return _.findKey(definitions, (def: SwaggerDefinition) => {\n return _.some(def['x-kubernetes-group-version-kind'], ({ group, version, kind }) => {\n return (\n (model?.apiGroup ?? '') === (group || '') &&\n model?.apiVersion === version &&\n model?.kind === kind\n );\n });\n });\n },\n referenceForModel,\n);\n\nlet swaggerDefinitions: SwaggerDefinitions;\nexport const getSwaggerDefinitions = (): SwaggerDefinitions => swaggerDefinitions;\n\nexport const fetchSwagger = async (): Promise => {\n // Remove any old definitions from `localSotrage`. We rely on the browser cache now.\n // TODO: We should be able to remove this in a future release.\n localStorage.removeItem(SWAGGER_LOCAL_STORAGE_KEY);\n try {\n const response: SwaggerAPISpec = await coFetchJSON('api/kubernetes/openapi/v2');\n if (!response.definitions) {\n // eslint-disable-next-line no-console\n console.error('Definitions missing in OpenAPI response.');\n return null;\n }\n swaggerDefinitions = response.definitions;\n return swaggerDefinitions;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('Could not get OpenAPI definitions', e);\n return null;\n }\n};\n\nexport const definitionFor = _.memoize((model: K8sKind): SwaggerDefinition => {\n if (!swaggerDefinitions) {\n return null;\n }\n const key = getDefinitionKey(model, swaggerDefinitions);\n // Some schemas might use $ref to reference an external schmema. In order for $ref to resolve,\n // the referenced schema must be defined in the `definitions` property of the\n // referencing schema.\n return {\n definitions: swaggerDefinitions,\n ...(swaggerDefinitions?.[key] ?? {}),\n };\n}, referenceForModel);\n\nconst getRef = (definition: SwaggerDefinition): string => {\n const ref = definition.$ref || _.get(definition, 'items.$ref');\n const re = /^#\\/definitions\\//;\n // Only follow JSON pointers, not external URI references.\n return ref && re.test(ref) ? ref.replace(re, '') : null;\n};\n\n// Get the path in the swagger document to additional property details.\n// This can be\n// - A reference to another top-level definition\n// - Inline property declartions\n// - Inline property declartions for array items\nexport const getSwaggerPath = (\n allProperties: SwaggerDefinitions,\n currentPath: string[],\n name: string,\n followRef: boolean,\n): string[] => {\n const nextPath = [...currentPath, 'properties', name];\n const definition = _.get(allProperties, nextPath) as SwaggerDefinition;\n if (!definition) {\n return null;\n }\n const ref = getRef(definition);\n return followRef && ref ? [ref] : nextPath;\n};\n\nconst findDefinition = (kindObj: K8sKind, propertyPath: string[]): SwaggerDefinition => {\n if (!swaggerDefinitions) {\n return null;\n }\n\n const rootPath = getDefinitionKey(kindObj, swaggerDefinitions);\n const path = propertyPath.reduce(\n (currentPath: string[], nextProperty: string, i: number): string[] => {\n if (!currentPath) {\n return null;\n }\n // Don't follow the last reference since the description is not as good.\n const followRef = i !== propertyPath.length - 1;\n return getSwaggerPath(swaggerDefinitions, currentPath, nextProperty, followRef);\n },\n [rootPath],\n );\n\n return path ? (_.get(swaggerDefinitions, path) as SwaggerDefinition) : null;\n};\n\nexport const getPropertyDescription = (\n kindObj: K8sKind,\n propertyPath: string | string[],\n): string => {\n const path: string[] = _.toPath(propertyPath);\n const definition = findDefinition(kindObj, path);\n return definition ? definition.description : null;\n};\n\nexport const getResourceDescription = _.memoize((kindObj: K8sKind): string => {\n if (!swaggerDefinitions) {\n return null;\n }\n const key = getDefinitionKey(kindObj, swaggerDefinitions);\n return _.get(swaggerDefinitions, [key, 'description']);\n}, referenceForModel);\n\nexport type SwaggerDefinition = {\n definitions?: SwaggerDefinitions;\n description?: string;\n type?: string[] | string;\n enum?: string[];\n $ref?: string;\n items?: SwaggerDefinition;\n required?: string[];\n properties?: {\n [prop: string]: SwaggerDefinition;\n };\n};\n\nexport type SwaggerDefinitions = {\n [name: string]: SwaggerDefinition;\n};\n\nexport type SwaggerAPISpec = {\n swagger: string;\n info: { title: string; version: string };\n paths: { [path: string]: any };\n definitions: SwaggerDefinitions;\n};\n","import * as _ from 'lodash';\nimport { K8sResourceKind } from '@console/internal/module/k8s';\nimport { ClusterServiceVersionKind } from '@console/operator-lifecycle-manager/src';\n\nexport type OperatorBackedServiceKindMap = {\n [name: string]: ClusterServiceVersionKind;\n};\n\nexport const getOperatorBackedServiceKindMap = (\n installedOperators: ClusterServiceVersionKind[],\n): OperatorBackedServiceKindMap =>\n installedOperators\n ? installedOperators.reduce((kindMap, csv) => {\n (csv?.spec?.customresourcedefinitions?.owned || []).forEach((crd) => {\n if (!(crd.kind in kindMap)) {\n kindMap[crd.kind] = csv;\n }\n });\n return kindMap;\n }, {})\n : {};\n\nexport const isOperatorBackedService = (\n obj: K8sResourceKind,\n installedOperators: ClusterServiceVersionKind[],\n): boolean => {\n const kind = _.get(obj, 'metadata.ownerReferences[0].kind', null);\n const ownerUid = _.get(obj, 'metadata.ownerReferences[0].uid');\n const operatorBackedServiceKindMap = getOperatorBackedServiceKindMap(installedOperators);\n const operatorResource: K8sResourceKind = _.find(installedOperators, {\n metadata: { uid: ownerUid },\n }) as K8sResourceKind;\n return !!(\n kind &&\n operatorBackedServiceKindMap &&\n (!_.isEmpty(operatorResource) || kind in operatorBackedServiceKindMap)\n );\n};\n","export { default as Shortcut } from './Shortcut';\nexport { default as ShortcutTable } from './ShortcutTable';\n","export const consolePluginModal = (props) =>\n import('./ConsolePluginModal' /* webpackChunkName: \"shared-modals\" */).then((m) =>\n m.consolePluginModal(props),\n );\n\nexport const deleteResourceModal = (props) =>\n import('./DeleteResourceModal' /* webpackChunkName: \"shared-modals\" */).then((m) =>\n m.deleteResourceModal(props),\n );\n","import { chart_color_green_400 as tektonGroupColor } from '@patternfly/react-tokens/dist/js/chart_color_green_400';\nimport { K8sKind } from '@console/internal/module/k8s';\n\nconst color = tektonGroupColor.value;\n\nexport const PipelineModel: K8sKind = {\n apiGroup: 'tekton.dev',\n apiVersion: 'v1',\n label: 'Pipeline',\n // t('pipelines-plugin~Pipeline')\n labelKey: 'pipelines-plugin~Pipeline',\n // t('pipelines-plugin~Pipelines')\n labelPluralKey: 'pipelines-plugin~Pipelines',\n plural: 'pipelines',\n abbr: 'PL',\n namespaced: true,\n kind: 'Pipeline',\n id: 'pipeline',\n labelPlural: 'Pipelines',\n crd: true,\n color,\n};\n\nexport const PipelineModelV1Beta1: K8sKind = {\n apiGroup: 'tekton.dev',\n apiVersion: 'v1beta1',\n label: 'Pipeline',\n // t('pipelines-plugin~Pipeline')\n labelKey: 'pipelines-plugin~Pipeline',\n // t('pipelines-plugin~Pipelines')\n labelPluralKey: 'pipelines-plugin~Pipelines',\n plural: 'pipelines',\n abbr: 'PL',\n namespaced: true,\n kind: 'Pipeline',\n id: 'pipeline',\n labelPlural: 'Pipelines',\n crd: true,\n color,\n};\n\nexport const PipelineRunModel: K8sKind = {\n apiGroup: 'tekton.dev',\n apiVersion: 'v1',\n label: 'PipelineRun',\n // t('pipelines-plugin~PipelineRun')\n labelKey: 'pipelines-plugin~PipelineRun',\n // t('pipelines-plugin~PipelineRuns')\n labelPluralKey: 'pipelines-plugin~PipelineRuns',\n plural: 'pipelineruns',\n abbr: 'PLR',\n namespaced: true,\n kind: 'PipelineRun',\n id: 'pipelinerun',\n labelPlural: 'PipelineRuns',\n crd: true,\n color,\n};\n\nexport const PipelineRunModelV1Beta1: K8sKind = {\n apiGroup: 'tekton.dev',\n apiVersion: 'v1beta1',\n label: 'PipelineRun',\n // t('pipelines-plugin~PipelineRun')\n labelKey: 'pipelines-plugin~PipelineRun',\n // t('pipelines-plugin~PipelineRuns')\n labelPluralKey: 'pipelines-plugin~PipelineRuns',\n plural: 'pipelineruns',\n abbr: 'PLR',\n namespaced: true,\n kind: 'PipelineRun',\n id: 'pipelinerun',\n labelPlural: 'PipelineRuns',\n crd: true,\n color,\n};\n\nexport const TaskModel: K8sKind = {\n apiGroup: 'tekton.dev',\n apiVersion: 'v1',\n label: 'Task',\n // t('pipelines-plugin~Task')\n labelKey: 'pipelines-plugin~Task',\n // t('pipelines-plugin~Tasks')\n labelPluralKey: 'pipelines-plugin~Tasks',\n plural: 'tasks',\n abbr: 'T',\n namespaced: true,\n kind: 'Task',\n id: 'task',\n labelPlural: 'Tasks',\n crd: true,\n color,\n};\n\nexport const TaskModelV1Beta1: K8sKind = {\n apiGroup: 'tekton.dev',\n apiVersion: 'v1beta1',\n label: 'Task',\n // t('pipelines-plugin~Task')\n labelKey: 'pipelines-plugin~Task',\n // t('pipelines-plugin~Tasks')\n labelPluralKey: 'pipelines-plugin~Tasks',\n plural: 'tasks',\n abbr: 'T',\n namespaced: true,\n kind: 'Task',\n id: 'task',\n labelPlural: 'Tasks',\n crd: true,\n color,\n};\n\nexport const TaskRunModel: K8sKind = {\n apiGroup: 'tekton.dev',\n apiVersion: 'v1',\n label: 'TaskRun',\n // t('pipelines-plugin~TaskRun')\n labelKey: 'pipelines-plugin~TaskRun',\n // t('pipelines-plugin~TaskRuns')\n labelPluralKey: 'pipelines-plugin~TaskRuns',\n plural: 'taskruns',\n abbr: 'TR',\n namespaced: true,\n kind: 'TaskRun',\n id: 'taskrun',\n labelPlural: 'TaskRuns',\n crd: true,\n color,\n};\n\nexport const TaskRunModelV1Beta1: K8sKind = {\n apiGroup: 'tekton.dev',\n apiVersion: 'v1beta1',\n label: 'TaskRun',\n // t('pipelines-plugin~TaskRun')\n labelKey: 'pipelines-plugin~TaskRun',\n // t('pipelines-plugin~TaskRuns')\n labelPluralKey: 'pipelines-plugin~TaskRuns',\n plural: 'taskruns',\n abbr: 'TR',\n namespaced: true,\n kind: 'TaskRun',\n id: 'taskrun',\n labelPlural: 'TaskRuns',\n crd: true,\n color,\n};\n\nexport const CustomRunModelV1Beta1: K8sKind = {\n apiGroup: 'tekton.dev',\n apiVersion: 'v1beta1',\n label: 'CustomRun',\n // t('pipelines-plugin~CustomRun')\n labelKey: 'pipelines-plugin~CustomRun',\n // t('pipelines-plugin~CustomRuns')\n labelPluralKey: 'pipelines-plugin~CustomRuns',\n plural: 'customruns',\n abbr: 'CR',\n namespaced: true,\n kind: 'CustomRun',\n id: 'customrun',\n labelPlural: 'CustomRuns',\n crd: true,\n color,\n};\n\nexport const PipelineResourceModel: K8sKind = {\n apiGroup: 'tekton.dev',\n apiVersion: 'v1alpha1',\n label: 'PipelineResource',\n // t('pipelines-plugin~PipelineResource')\n labelKey: 'pipelines-plugin~PipelineResource',\n // t('pipelines-plugin~PipelineResources')\n labelPluralKey: 'pipelines-plugin~PipelineResources',\n plural: 'pipelineresources',\n abbr: 'PR',\n namespaced: true,\n kind: 'PipelineResource',\n id: 'pipelineresource',\n labelPlural: 'PipelineResources',\n crd: true,\n color,\n};\n\nexport const ClusterTaskModel: K8sKind = {\n apiGroup: 'tekton.dev',\n apiVersion: 'v1beta1',\n label: 'ClusterTask',\n // t('pipelines-plugin~ClusterTask')\n labelKey: 'pipelines-plugin~ClusterTask',\n // t('pipelines-plugin~ClusterTasks')\n labelPluralKey: 'pipelines-plugin~ClusterTasks',\n plural: 'clustertasks',\n abbr: 'CT',\n namespaced: false,\n kind: 'ClusterTask',\n id: 'clustertask',\n labelPlural: 'ClusterTasks',\n crd: true,\n color,\n};\n\nexport const ConditionModel: K8sKind = {\n apiGroup: 'tekton.dev',\n apiVersion: 'v1alpha1',\n label: 'Condition',\n // t('pipelines-plugin~Condition')\n labelKey: 'pipelines-plugin~Condition',\n // t('pipelines-plugin~Conditions')\n labelPluralKey: 'pipelines-plugin~Conditions',\n plural: 'conditions',\n abbr: 'C',\n namespaced: true,\n kind: 'Condition',\n id: 'condition',\n labelPlural: 'Conditions',\n crd: true,\n color,\n};\n\nexport const TriggerBindingModel: K8sKind = {\n apiGroup: 'triggers.tekton.dev',\n apiVersion: 'v1beta1',\n label: 'TriggerBinding',\n // t('pipelines-plugin~TriggerBinding')\n labelKey: 'pipelines-plugin~TriggerBinding',\n // t('pipelines-plugin~TriggerBindings')\n labelPluralKey: 'pipelines-plugin~TriggerBindings',\n plural: 'triggerbindings',\n abbr: 'TB',\n namespaced: true,\n kind: 'TriggerBinding',\n id: 'triggerbinding',\n labelPlural: 'TriggerBindings',\n crd: true,\n color,\n};\n\nexport const ClusterTriggerBindingModel: K8sKind = {\n apiGroup: 'triggers.tekton.dev',\n apiVersion: 'v1beta1',\n label: 'ClusterTriggerBinding',\n // t('pipelines-plugin~ClusterTriggerBinding')\n labelKey: 'pipelines-plugin~ClusterTriggerBinding',\n // t('pipelines-plugin~ClusterTriggerBindings')\n labelPluralKey: 'pipelines-plugin~ClusterTriggerBindings',\n plural: 'clustertriggerbindings',\n abbr: 'CTB',\n namespaced: false,\n kind: 'ClusterTriggerBinding',\n id: 'clustertriggerbinding',\n labelPlural: 'ClusterTriggerBindings',\n crd: true,\n color,\n};\n\nexport const TriggerTemplateModel: K8sKind = {\n apiGroup: 'triggers.tekton.dev',\n apiVersion: 'v1beta1',\n label: 'TriggerTemplate',\n // t('pipelines-plugin~TriggerTemplate')\n labelKey: 'pipelines-plugin~TriggerTemplate',\n // t('pipelines-plugin~TriggerTemplates')\n labelPluralKey: 'pipelines-plugin~TriggerTemplates',\n plural: 'triggertemplates',\n abbr: 'TT',\n namespaced: true,\n kind: 'TriggerTemplate',\n id: 'triggertemplate',\n labelPlural: 'TriggerTemplates',\n crd: true,\n color,\n};\n\nexport const EventListenerModel: K8sKind = {\n apiGroup: 'triggers.tekton.dev',\n apiVersion: 'v1beta1',\n label: 'EventListener',\n // t('pipelines-plugin~EventListener')\n labelKey: 'pipelines-plugin~EventListener',\n // t('pipelines-plugin~EventListeners')\n labelPluralKey: 'pipelines-plugin~EventListeners',\n plural: 'eventlisteners',\n abbr: 'EL',\n namespaced: true,\n kind: 'EventListener',\n id: 'eventlistener',\n labelPlural: 'EventListeners',\n crd: true,\n color,\n};\n\nexport const RepositoryModel: K8sKind = {\n apiGroup: 'pipelinesascode.tekton.dev',\n apiVersion: 'v1alpha1',\n label: 'Repository',\n // t('pipelines-plugin~Repository')\n labelKey: 'pipelines-plugin~Repository',\n // t('pipelines-plugin~Repositories')\n labelPluralKey: 'pipelines-plugin~Repositories',\n plural: 'repositories',\n abbr: 'R',\n namespaced: true,\n kind: 'Repository',\n id: 'repository',\n labelPlural: 'Repositories',\n crd: true,\n color,\n};\n\nexport const TektonConfigModel: K8sKind = {\n apiGroup: 'operator.tekton.dev',\n apiVersion: 'v1alpha1',\n label: 'TektonConfig',\n // t('pipelines-plugin~TektonConfig')\n labelKey: 'pipelines-plugin~TektonConfig',\n // t('pipelines-plugin~TektonConfigs')\n labelPluralKey: 'pipelines-plugin~TektonConfigs',\n plural: 'tektonconfigs',\n abbr: 'TC',\n namespaced: false,\n kind: 'TektonConfig',\n id: 'tektonconfig',\n labelPlural: 'TektonConfigs',\n crd: true,\n};\n\nexport const TektonHubModel: K8sKind = {\n apiGroup: 'operator.tekton.dev',\n apiVersion: 'v1alpha1',\n label: 'TektonHub',\n // t('pipelines-plugin~TektonHub')\n labelKey: 'pipelines-plugin~TektonHub',\n // t('pipelines-plugin~TektonHubs')\n labelPluralKey: 'pipelines-plugin~TektonHubs',\n plural: 'tektonhubs',\n abbr: 'TH',\n namespaced: false,\n kind: 'TektonHub',\n id: 'tektonhub',\n labelPlural: 'TektonHubs',\n crd: true,\n};\n\nexport const TektonResultModel: K8sKind = {\n apiGroup: 'operator.tekton.dev',\n apiVersion: 'v1alpha1',\n label: 'TektonResult',\n // t('pipelines-plugin~TektonResult')\n labelKey: 'pipelines-plugin~TektonResult',\n // t('pipelines-plugin~TektonResults')\n labelPluralKey: 'pipelines-plugin~TektonResults',\n plural: 'tektonresults',\n abbr: 'TR',\n namespaced: false,\n kind: 'TektonResult',\n id: 'tektonresult',\n labelPlural: 'TektonResults',\n crd: true,\n};\n","import { K8sModel } from '@console/dynamic-plugin-sdk/src/api/common-types';\n\nexport const ExportModel: K8sModel = {\n id: 'export',\n kind: 'Export',\n plural: 'exports',\n label: 'Export',\n labelPlural: 'Exports',\n abbr: 'E',\n apiGroup: 'primer.gitops.io',\n apiVersion: 'v1alpha1',\n namespaced: true,\n crd: true,\n};\n","export * from './badges';\nexport * from './text';\nexport * from './contextMenu';\nexport * from './dropdown';\nexport * from './form-utils';\nexport * from './formik-fields';\nexport * from './getting-started';\nexport * from './lists';\nexport * from './log';\nexport * from './status';\nexport * from './pod';\nexport * from './popper';\nexport * from './shortcuts';\nexport * from './drawer';\nexport * from './health-checks';\nexport * from './virtualized-grid';\nexport * from './alerts';\nexport * from './popover';\nexport * from './layout';\nexport * from './utils';\nexport * from './modal';\nexport * from './modals';\nexport * from './hpa';\nexport * from './multi-tab-list';\nexport * from './spotlight';\nexport * from './markdown-highlight-extension';\nexport * from './custom-resource-list';\nexport * from './toast';\nexport * from './markdown-extensions';\nexport * from './actions';\nexport * from './quick-search';\nexport * from './namespace';\nexport * from './catalog';\nexport * from './progressive-list';\n","import * as React from 'react';\nimport { Button, Popover, PopoverProps } from '@patternfly/react-core';\nimport { OutlinedQuestionCircleIcon } from '@patternfly/react-icons/dist/esm/icons/outlined-question-circle-icon';\nimport { useTranslation } from 'react-i18next';\n\nexport const FieldLevelHelp: React.FC = React.memo(\n ({ children, popoverHasAutoWidth, testId }) => {\n const { t } = useTranslation();\n if (React.Children.count(children) === 0) {\n return null;\n }\n return (\n \n \n \n \n \n );\n },\n);\n\ntype FieldLevelHelpProps = {\n children: React.ReactNode;\n popoverHasAutoWidth?: PopoverProps['hasAutoWidth'];\n testId?: string;\n};\n","import * as React from 'react';\nimport { CodeEditorProps, CodeEditorRef } from '@console/dynamic-plugin-sdk';\n\nexport const AsyncCodeEditor: React.RefForwardingComponent<\n React.RefAttributes,\n CodeEditorProps\n> = React.lazy(() =>\n import('@console/shared/src/components/editor/CodeEditor').then((m) => ({\n default: m.default,\n })),\n);\n","import * as React from 'react';\nimport { OnSelect } from '@patternfly/react-table';\nimport { K8sResourceCommon } from '@console/internal/module/k8s';\n\nexport const useSelectList = (\n data: R[],\n visibleRows: Set,\n onRowSelected: (rows: R[]) => void,\n): {\n onSelect: OnSelect;\n selectedRows: Set;\n updateSelectedRows: (rows: R[]) => void;\n} => {\n const [selectedRows, setSelectedRows] = React.useState>(visibleRows);\n\n const onSelect = React.useCallback(\n (_event, isSelected, rowIndex, rowData) => {\n const uniqueUIDs: Set = selectedRows ? new Set([...selectedRows]) : new Set();\n\n if (rowIndex === -1) {\n isSelected\n ? visibleRows.forEach((uid) => uniqueUIDs.add(uid))\n : visibleRows.forEach((uid) => uniqueUIDs.delete(uid));\n } else {\n isSelected ? uniqueUIDs.add(rowData?.props?.id) : uniqueUIDs.delete(rowData?.props?.id);\n }\n\n setSelectedRows(uniqueUIDs);\n onRowSelected(data.filter((row) => uniqueUIDs.has(row.metadata.uid)));\n },\n [data, onRowSelected, selectedRows, visibleRows],\n );\n\n const updateSelectedRows = React.useCallback(\n (rows: R[]) => {\n onRowSelected(rows);\n setSelectedRows(new Set(rows.map((row) => row.metadata.uid)));\n },\n [onRowSelected],\n );\n\n return {\n onSelect,\n selectedRows,\n updateSelectedRows,\n };\n};\n","import { FLAGS } from '../constants';\nimport { useFlag } from './flag';\n\nexport const usePrometheusGate = (): boolean => {\n const prometheusFlag = useFlag(FLAGS.PROMETHEUS);\n return (\n prometheusFlag &&\n !!window.SERVER_FLAGS.prometheusBaseURL &&\n !!window.SERVER_FLAGS.prometheusTenancyBaseURL\n );\n};\n","export { default as CheckboxField } from './CheckboxField';\nexport { default as DropdownField } from './DropdownField';\nexport { default as DroppableFileInputField } from './DroppableFileInputField';\nexport { default as EnvironmentField } from './EnvironmentField';\nexport { default as FormSelectField } from './FormSelectField';\nexport { default as InputField } from './InputField';\nexport { default as MultiColumnField } from './multi-column-field/MultiColumnField';\nexport { default as NSDropdownField } from './NSDropdownField';\nexport { default as NumberSpinnerField } from './NumberSpinnerField';\nexport { default as RadioButtonField } from './RadioButtonField';\nexport { default as RadioGroupField } from './RadioGroupField';\nexport { default as ResourceDropdownField } from './ResourceDropdownField';\nexport { default as ResourceLimitField } from './ResourceLimitField';\nexport { default as SwitchField } from './SwitchField';\nexport { default as TextAreaField } from './TextAreaField';\nexport { default as CodeEditorField } from './CodeEditorField';\nexport { default as ItemSelectorField } from './item-selector-field/ItemSelectorField';\nexport { default as InputGroupField } from './InputGroupField';\nexport * from './text-column-field/text-column-types';\nexport { default as TextColumnField } from './text-column-field/TextColumnField';\nexport { default as DynamicFormField } from './DynamicFormField';\nexport { default as SyncedEditorField } from './SyncedEditorField';\nexport { default as SelectInputField } from './SelectInputField';\nexport { default as SelectorInputField } from './SelectorInputField';\nexport * from './field-utils';\nexport * from './field-types';\n","import * as React from 'react';\nimport {\n PREFERRED_CREATE_EDIT_METHOD_USER_SETTING_VALUE_LATEST,\n usePreferredCreateEditMethod,\n} from '@console/app/src/components/user-preferences/synced-editor';\nimport { useUserSettings } from '../../hooks/useUserSettings';\nimport { EditorType } from './editor-toggle';\n\nexport const useEditorType = (\n lastViewUserSettingKey: string,\n defaultValue: EditorType,\n checkEditorTypeEnabled?: (type: EditorType) => boolean,\n): [EditorType, (type: EditorType) => void, boolean] => {\n const [\n lastViewedEditorType,\n setLastViewedEditorType,\n lastViewedEditorTypeLoaded,\n ] = useUserSettings(lastViewUserSettingKey);\n const [preferredEditorType, preferredEditorTypeLoaded] = usePreferredCreateEditMethod();\n const isEditorTypeEnabled = (type: EditorType): boolean =>\n checkEditorTypeEnabled ? checkEditorTypeEnabled(type) : true;\n\n const resourceLoaded: boolean = lastViewedEditorTypeLoaded && preferredEditorTypeLoaded;\n\n const getEditorType = (): EditorType => {\n if (\n preferredEditorType &&\n preferredEditorType !== PREFERRED_CREATE_EDIT_METHOD_USER_SETTING_VALUE_LATEST &&\n isEditorTypeEnabled(preferredEditorType as EditorType)\n ) {\n return preferredEditorType as EditorType;\n }\n if (lastViewedEditorType && isEditorTypeEnabled(lastViewedEditorType)) {\n return lastViewedEditorType;\n }\n return defaultValue;\n };\n\n const [activeEditorType, setActiveEditorType] = React.useState(null);\n const setEditorType = (type: EditorType) => {\n setActiveEditorType(type);\n setLastViewedEditorType(type);\n };\n React.useEffect(() => {\n if (resourceLoaded) {\n const editorType: EditorType = getEditorType();\n if (!lastViewedEditorType || lastViewedEditorType !== editorType) {\n setLastViewedEditorType(editorType);\n }\n setActiveEditorType(editorType);\n }\n // run this hook only after all resources have loaded\n // to set the lastView user setting when the form loads\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resourceLoaded]);\n\n const loaded: boolean = resourceLoaded && (!!activeEditorType || !defaultValue);\n return [activeEditorType, setEditorType, loaded];\n};\n","export { default as ConsolePluginRadioInputs } from './ConsolePluginRadioInputs';\nexport { default as ConsolePluginWarning } from './ConsolePluginWarning';\nexport { default as FallbackImg } from './FallbackImg';\n","import * as React from 'react';\nimport { global_palette_white as globalWhite } from '@patternfly/react-tokens/dist/js/global_palette_white';\n\nconst QuickSearchIcon: React.FC> = ({ style }): React.ReactElement => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default QuickSearchIcon;\n","import { fromBER } from 'asn1js';\nimport { Base64 } from 'js-base64';\nimport * as _ from 'lodash';\nimport { CertificationRequest } from 'pkijs';\nimport { stringToArrayBuffer, fromBase64 } from 'pvutils';\nimport {\n NodeKind,\n CertificateSigningRequestKind,\n K8sResourceCommon,\n NodeCertificateSigningRequestKind,\n} from '@console/internal/module/k8s';\n\nexport const isCSRResource = (obj: K8sResourceCommon): obj is CertificateSigningRequestKind =>\n obj.kind === 'CertificateSigningRequest';\n\nconst getNodeCSRs = (\n csrs: CertificateSigningRequestKind[],\n username: string,\n client: boolean,\n): CertificateSigningRequestKind[] =>\n csrs\n .filter(\n (csr) =>\n csr.spec.username === username &&\n csr.spec.usages.some((u) => u === (client ? 'client auth' : 'server auth')),\n )\n .sort(\n (a, b) =>\n new Date(b.metadata.creationTimestamp).getTime() -\n new Date(a.metadata.creationTimestamp).getTime(),\n );\n\nconst isCSRPending = (csr: CertificateSigningRequestKind): boolean =>\n !csr.status?.conditions?.some((c) => ['Approved', 'Denied'].includes(c.type));\n\nexport const getNodeClientCSRs = (\n csrs: CertificateSigningRequestKind[] = [],\n): NodeCertificateSigningRequestKind[] => {\n const nodeCSRs = getNodeCSRs(\n csrs,\n 'system:serviceaccount:openshift-machine-config-operator:node-bootstrapper',\n true,\n )\n .map((csr) => {\n const request = Base64.decode(csr.spec.request);\n const req = request.replace(/(-----(BEGIN|END) CERTIFICATE REQUEST-----|\\n)/g, '');\n const asn1 = fromBER(stringToArrayBuffer(fromBase64(req)));\n const pkcs10 = new CertificationRequest({ schema: asn1.result });\n // '2.5.4.3' is commonName code\n const commonName = pkcs10.subject.typesAndValues.find(({ type }) => type === '2.5.4.3');\n return {\n ...csr,\n metadata: {\n ...csr.metadata,\n name: commonName.value.valueBlock.value.replace('system:node:', ''),\n originalName: csr.metadata.name,\n },\n };\n })\n .sort(\n (a, b) =>\n new Date(b.metadata.creationTimestamp).getTime() -\n new Date(a.metadata.creationTimestamp).getTime(),\n );\n\n const grouped = _.groupBy(nodeCSRs, (csr) => csr.metadata.name);\n\n return Object.keys(grouped).reduce((acc, key) => {\n const csr = grouped[key][0];\n if (isCSRPending(csr)) {\n acc.push(csr);\n }\n return acc;\n }, []);\n};\nexport const getNodeServerCSR = (\n csrs: CertificateSigningRequestKind[] = [],\n node: NodeKind,\n): CertificateSigningRequestKind => {\n const nodeCSRs = getNodeCSRs(csrs, `system:node:${node.metadata.name}`, false);\n if (!nodeCSRs.length || !isCSRPending(nodeCSRs[0])) {\n return null;\n }\n return nodeCSRs[0];\n};\n","export { useK8sModels } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks';\n","export * from './badge-factory';\nexport { default as DevPreviewBadge } from './DevPreviewBadge';\nexport { default as TechPreviewBadge } from './TechPreviewBadge';\nexport { default as EmptyStateResourceBadge } from './EmptyStateResourceBadge';\nexport * from './InlineBadge';\n","import { global_palette_black_300 as globalBlack300 } from '@patternfly/react-tokens/dist/js/global_palette_black_300';\n\nconst pfDependentAxisTickLabels = {\n padding: 5,\n fontFamily: 'var(--pf-v5-chart-global--FontFamily)',\n letterSpacing: 'var(--pf-v5-chart-global--letter-spacing)',\n fill: 'var(--pf-v5-global--Color--200)',\n};\nconst axisTicks = {\n size: 5,\n strokeWidth: 1,\n stroke: globalBlack300.value,\n};\n\nexport const areaTheme = {\n area: {\n style: {\n data: {\n fillOpacity: 0.15,\n },\n },\n },\n chart: {\n padding: {\n bottom: 30,\n left: 60,\n right: 10,\n top: 0,\n },\n },\n dependentAxis: {\n style: {\n axis: {\n stroke: 'EDEDED',\n strokeWidth: 2,\n },\n grid: { stroke: '#EDEDED' },\n tickLabels: pfDependentAxisTickLabels,\n ticks: axisTicks,\n },\n },\n};\n\nexport const barTheme = {\n bar: {\n style: {\n labels: {\n textAnchor: 'end' as 'end',\n },\n },\n },\n dependentAxis: {\n style: {\n axis: {\n stroke: 'none',\n },\n tickLabels: {\n fill: 'none',\n },\n },\n },\n independentAxis: {\n style: {\n axis: {\n stroke: 'none',\n },\n tickLabels: {\n textAnchor: 'start' as 'start',\n },\n },\n },\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport * as React from 'react';\nimport * as classNames from 'classnames';\nimport { useDocumentListener, getLabelsAsString } from '@console/shared';\nimport { KeyEventModes } from '@console/shared/src/hooks';\nimport { fuzzyCaseInsensitive } from './factory/table-filters';\nimport { TextFilter } from './factory';\n\nconst MAX_SUGGESTIONS = 5;\n\nconst labelParser = (resources: any[], labelPath: string): Set => {\n return resources.reduce((acc: Set, resource: any) => {\n getLabelsAsString(resource, labelPath).forEach((label) => acc.add(label));\n return acc;\n }, new Set());\n};\n\nconst suggestionBoxKeyHandler = {\n Escape: KeyEventModes.HIDE,\n};\n\nconst AutocompleteInput: React.FC = (props) => {\n const [suggestions, setSuggestions] = React.useState();\n const { visible, setVisible, ref } = useDocumentListener(suggestionBoxKeyHandler);\n const {\n textValue,\n setTextValue,\n onSuggestionSelect,\n placeholder,\n showSuggestions,\n data,\n className,\n labelPath,\n } = props;\n\n const onSelect = (value: string) => {\n onSuggestionSelect(value);\n if (visible) {\n setVisible(false);\n }\n };\n\n const activate = () => {\n if (textValue.trim()) {\n setVisible(true);\n }\n };\n\n const handleInput = (event: React.FormEvent, input: string) => {\n if (input) {\n setVisible(true);\n } else {\n setVisible(false);\n }\n setTextValue(input);\n };\n\n React.useEffect(() => {\n if (textValue && visible && showSuggestions) {\n const processed = labelParser(data, labelPath);\n // User input without whitespace\n const processedText = textValue.trim().replace(/\\s*=\\s*/, '=');\n const filtered = [...processed]\n .filter((item) => fuzzyCaseInsensitive(processedText, item))\n .slice(0, MAX_SUGGESTIONS);\n setSuggestions(filtered);\n }\n }, [visible, textValue, showSuggestions, data, labelPath]);\n\n return (\n
    \n \n {showSuggestions && (\n 0,\n })}\n >\n {visible &&\n suggestions?.map((elem) => (\n \n ))}\n
    \n )}\n
    \n );\n};\n\ntype AutocompleteInputProps = {\n onSuggestionSelect: (selected: string) => void;\n placeholder?: string;\n suggestionCount?: number;\n showSuggestions?: boolean;\n textValue: string;\n setTextValue: React.Dispatch>;\n className?: string;\n data?: any;\n labelPath?: string;\n};\n\nconst SuggestionLine: React.FC = ({ suggestion, onClick, className }) => {\n return (\n \n );\n};\n\ntype SuggestionLineProps = {\n suggestion: string;\n onClick: (param: string) => void;\n className?: string;\n};\n\nexport default AutocompleteInput;\n","import { LabelSelector, K8sPodControllerKind, PodKind } from '@console/internal/module/k8s';\nimport { PodDisruptionBudgetKind } from '../types';\n\nexport const getPDBResource = (\n pdbResources: PodDisruptionBudgetKind[],\n resource: K8sPodControllerKind | PodKind,\n): PodDisruptionBudgetKind =>\n pdbResources.find((f) =>\n new LabelSelector(f.spec.selector).matchesLabels(\n resource?.spec?.template?.metadata?.labels || resource?.metadata?.labels || {},\n ),\n );\n","import * as React from 'react';\nimport * as classNames from 'classnames';\nimport { Link } from 'react-router-dom-v5-compat';\nimport { useTranslation } from 'react-i18next';\n\nimport { ResourceIcon } from './resource-icon';\nimport { resourcePathFromModel, ResourceLink } from './resource-link';\nimport {\n K8sResourceCommon,\n referenceForOwnerRef,\n OwnerReference,\n modelFor,\n k8sList,\n} from '../../module/k8s';\nimport { useSafetyFirst } from '@console/dynamic-plugin-sdk';\nimport { findOwner, matchOwnerAndCSV } from '../../module/k8s/managed-by';\nimport { ClusterServiceVersionModel } from '@console/operator-lifecycle-manager/src/models';\nimport { ClusterServiceVersionKind } from '@console/operator-lifecycle-manager';\n\nexport const ManagedByOperatorResourceLink: React.SFC = ({\n csvName,\n namespace,\n owner,\n className,\n}) => {\n const ownerGroupVersionKind = referenceForOwnerRef(owner);\n const { apiGroup, kind, namespaced } = modelFor(ownerGroupVersionKind) ?? {};\n const ownerIsCSV =\n apiGroup === ClusterServiceVersionModel.apiGroup && kind === ClusterServiceVersionModel.kind;\n const link = resourcePathFromModel(ClusterServiceVersionModel, csvName, namespace);\n return (\n \n {namespaced ? (\n <>\n \n \n {owner.name}\n \n \n ) : (\n \n )}\n \n );\n};\n\nexport const ManagedByOperatorLink: React.SFC = ({ obj, className }) => {\n const { t } = useTranslation();\n const [data, setData] = useSafetyFirst(undefined);\n const namespace = obj.metadata.namespace;\n React.useEffect(() => {\n if (!namespace) {\n return;\n }\n k8sList(ClusterServiceVersionModel, { ns: namespace })\n .then(setData)\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error('Could not fetch CSVs', e);\n });\n }, [namespace, setData]);\n const owner = findOwner(obj, data);\n const csv = data && owner ? matchOwnerAndCSV(owner, data) : undefined;\n\n return owner && csv ? (\n
    \n {t('public~Managed by')}{' '}\n \n
    \n ) : null;\n};\n\ntype ManagedByLinkProps = {\n className?: string;\n obj: K8sResourceCommon;\n};\n\ntype ManagerLinkProps = {\n csvName: string;\n namespace: string;\n owner: OwnerReference;\n className?: string;\n};\n","export type TruncateOptions = {\n length?: number; // Length to truncate text to\n truncateEnd?: boolean; // Flag to alternatively truncate at the end\n omission?: string; // Truncation text used to denote the truncation (ellipsis)\n minTruncateChars?: number; // Minimum number of characters to truncate\n};\n\nconst DEFAULT_OPTIONS: TruncateOptions = {\n length: 20,\n truncateEnd: false,\n omission: '\\u2026', // ellipsis character\n minTruncateChars: 3,\n};\n\n// Truncates a string down to `maxLength` characters when the length\n// is greater than the `maxLength` + `minTruncateChars` values.\n// By default the middle is truncated, set the options.truncateEnd to true to truncate at the end.\n// Truncated text is replaced with the provided omission option (ellipsis character by default);\nexport const truncateMiddle = (text: string, options: TruncateOptions = {}): string => {\n const { length, truncateEnd, omission, minTruncateChars } = { ...DEFAULT_OPTIONS, ...options };\n if (!text) {\n return text;\n }\n\n // Do not truncate less than the minimum truncate characters\n if (text.length <= length + minTruncateChars) {\n return text;\n }\n\n if (length <= omission.length) {\n return omission;\n }\n\n if (truncateEnd) {\n return `${text.substr(0, length - 1)}${omission}`;\n }\n\n const startLength = Math.ceil((length - omission.length) / 2);\n const endLength = length - startLength - omission.length;\n const startFragment = text.substr(0, startLength);\n const endFragment = text.substr(text.length - endLength);\n return `${startFragment}${omission}${endFragment}`;\n};\n\nexport const shouldTruncate = (text, options: TruncateOptions = {}): boolean => {\n const { length, minTruncateChars } = { ...DEFAULT_OPTIONS, ...options };\n\n return text.length > length + minTruncateChars;\n};\n","/* eslint-disable */\nimport * as React from 'react';\nimport { ActionServiceProviderProps } from '../extensions/actions';\nimport {\n CodeEditorProps,\n CodeEditorRef,\n ErrorBoundaryFallbackProps,\n HorizontalNavProps,\n InventoryItemBodyProps,\n InventoryItemStatusProps,\n InventoryItemTitleProps,\n ListPageCreateButtonProps,\n ListPageCreateDropdownProps,\n ListPageCreateLinkProps,\n ListPageCreateProps,\n ListPageFilterProps,\n ListPageHeaderProps,\n NamespaceBarProps,\n OverviewGridProps,\n OverviewProps,\n QueryBrowserProps,\n ResourceEventStreamProps,\n ResourceIconProps,\n ResourceLinkProps,\n ResourceYAMLEditorProps,\n TableDataProps,\n TimestampProps,\n UseActiveColumns,\n UseAnnotationsModal,\n UseDeleteModal,\n UseLabelsModal,\n UseListPageFilter,\n UsePrometheusPoll,\n UseResolvedExtensions,\n VirtualizedTableFC,\n UseActiveNamespace,\n UseUserSettings,\n UseQuickStartContext,\n} from '../extensions/console-types';\nimport { StatusPopupSectionProps, StatusPopupItemProps } from '../extensions/dashboard-types';\n\nexport * from '../app/components';\nexport * from './common-types';\n\n/**\n * React hook for consuming Console extensions with resolved `CodeRef` properties.\n * This hook accepts the same argument(s) as `useExtensions` hook and returns an adapted list of extension instances, resolving all code references within each extension's properties.\n * Initially, the hook returns an empty array. Once the resolution is complete, the React component is re-rendered with the hook returning an adapted list of extensions.\n * When the list of matching extensions changes, the resolution is restarted. The hook will continue to return the previous result until the resolution completes.\n * The hook's result elements are guaranteed to be referentially stable across re-renders.\n * @example\n * ```ts\n * const [navItemExtensions, navItemsResolved] = useResolvedExtensions(isNavItem);\n * // process adapted extensions and render your component\n * ```\n * @param typeGuards A list of callbacks that each accept a dynamic plugin extension as an argument and return a boolean flag indicating whether or not the extension meets desired type constraints\n * @returns Tuple containing a list of adapted extension instances with resolved code references, a boolean flag indicating whether the resolution is complete, and a list of errors detected during the resolution.\n */\nexport const useResolvedExtensions: UseResolvedExtensions = require('@console/dynamic-plugin-sdk/src/api/useResolvedExtensions')\n .useResolvedExtensions;\n\n/**\n * A component that creates a Navigation bar for a page.\n * Routing is handled as part of the component.\n * `console.tab/horizontalNav` can be used to add additional content to any horizontal nav.\n * @param {object} [resource] - the resource associated with this Navigation, an object of K8sResourceCommon type\n * @param {NavPage[]} pages - an array of page objects\n * @example\n * ```ts\n * const HomePage: React.FC = (props) => {\n * const page = {\n * href: '/home',\n * name: 'Home',\n * component: () => <>Home\n * }\n * return \n * }\n * ```\n */\nexport const HorizontalNav: React.FC = require('@console/internal/components/utils/horizontal-nav')\n .HorizontalNavFacade;\n\n/**\n * A component for making virtualized tables\n * @param {D} data - data for table\n * @param {boolean} loaded - flag indicating data is loaded\n * @param {*} loadError - error object if issue loading data\n * @param {TableColumn[]} columns - column setup\n * @param {React.ComponentType} Row - row setup\n * @param {D} unfilteredData - original data without filter\n * @param {React.ComponentType} [NoDataEmptyMsg] - (optional) no data empty message component\n * @param {React.ComponentType} [EmptyMsg] - (optional) empty message component\n * @param {function} [scrollNode] - (optional) function to handle scroll\n * @param {string} [label] - (optional) label for table\n * @param {string} [ariaLabel] - (optional) aria label\n * @param {TableGridBreakpoint} [gridBreakPoint] - sizing of how to break up grid for responsiveness\n * @param {function} [onSelect] - (optional) function for handling select of table\n * @param {R} [rowData] - (optional) data specific to row\n * @param {number} [sortColumnIndex] - (optional) The index of the column to sort. The default is `0`\n * @param {SortByDirection.asc | SortByDirection.desc} [sortDirection] - (optional) The direction of the sort. The default is `SortByDirection.asc`\n * @example\n * ```ts\n * const MachineList: React.FC = (props) => {\n * return (\n * \n * {...props}\n * aria-label='Machines'\n * columns={getMachineColumns}\n * Row={getMachineTableRow}\n * />\n * );\n * }\n * ```\n */\nexport const VirtualizedTable: VirtualizedTableFC = require('@console/internal/components/factory/Table/VirtualizedTable')\n .default;\n\n/**\n * Component for displaying table data within a table row\n * @param {string} id - unique id for table\n * @param {Set} activeColumnIDs - active columns\n * @param {string} [className] - (optional) option class name for styling\n * @example\n * ```ts\n * const PodRow: React.FC> = ({ obj, activeColumnIDs }) => {\n * return (\n * <>\n * \n * \n * \n * \n * \n * \n * // Important: the kebab menu cell should include the id and className prop values below\n * \n * \n * \n * \n * );\n * };\n * ```\n */\nexport const TableData: React.FC = require('@console/internal/components/factory/Table/VirtualizedTable')\n .TableData;\n\n/**\n * A hook that provides a list of user-selected active TableColumns.\n * @param {Object} options - Which are passed as a key-value in the map\n * @param options.columns - An array of all available TableColumns\n * @param options.showNamespaceOverride - (optional) If true, a namespace column will be included, regardless of column management selections\n * @param options.columnManagementID - (optional) A unique id used to persist and retrieve column management selections to and from user settings. Usually a `group~version~kind` string for a resource.\n * @returns A tuple containing the current user-selected active columns (a subset of options.columns), and a boolean flag indicating whether user settings have been loaded.\n * @example\n * ```tsx\n * // See implementation for more details on TableColumn type\n * const [activeColumns, userSettingsLoaded] = useActiveColumns({\n * columns,\n * showNamespaceOverride: false,\n * columnManagementID,\n * });\n * return userSettingsAreLoaded ? : null\n * ```\n */\nexport const useActiveColumns: UseActiveColumns = require('@console/internal/components/factory/Table/active-columns-hook')\n .useActiveColumns;\n\n/**\n * Component for generating a page header\n * @param {string} title - heading title\n * @param {ReactNode} [helpText] - (optional) help section as react node\n * @param {ReactNode} [badge] - (optional) badge icon as react node\n * @example\n * ```ts\n * const exampleList: React.FC = () => {\n * return (\n * <>\n * \n * \n * );\n * };\n * ```\n */\nexport const ListPageHeader: React.FC = require('@console/internal/components/factory/ListPage/ListPageHeader')\n .default;\n\n/**\n * Component for adding a create button for a specific resource kind that automatically generates a link to the create YAML for this resource.\n * @param groupVersionKind group, version, kind of k8s resource `K8sGroupVersionKind` is preferred alternatively can pass reference for group, version, kind which is deprecated i.e `group~version~kind` `K8sResourceKindReference`. Core resources with no API group should leave off the `group` property\n * @example\n * ```ts\n * const exampleList: React.FC = () => {\n * return (\n * <>\n * \n * Create Deployment\n * \n * \n * );\n * };\n * ```\n */\nexport const ListPageCreate: React.FC = require('@console/internal/components/factory/ListPage/ListPageCreate')\n .default;\n\n/**\n * Component for creating a stylized link.\n * @param {string} to - string location where link should direct\n * @param {object} [createAccessReview] - (optional) object with namespace and kind used to determine access\n * @param {ReactNode} [children] - (optional) children for the component\n * @example\n * ```ts\n * const exampleList: React.FC = () => {\n * return (\n * <>\n * \n * Create Item\n * \n * \n * );\n * };\n * ```\n */\nexport const ListPageCreateLink: React.FC = require('@console/internal/components/factory/ListPage/ListPageCreate')\n .ListPageCreateLink;\n\n/**\n * Component for creating button.\n * @param {object} [createAccessReview] - (optional) object with namespace and kind used to determine access\n * @param {...object} [pfButtonProps] - (optional) Patternfly Button props\n * @example\n * ```ts\n * const exampleList: React.FC = () => {\n * return (\n * <>\n * \n * Create Pod\n * \n * \n * );\n * };\n * ```\n */\nexport const ListPageCreateButton: React.FC = require('@console/internal/components/factory/ListPage/ListPageCreate')\n .ListPageCreateButton;\n\n/**\n * Component for creating a dropdown wrapped with permissions check.\n * @param {object} items - key:ReactNode pairs of items to display in dropdown component\n * @param {function} onClick - callback function for click on dropdown items\n * @param {object} [createAccessReview] - (optional) object with namespace and kind used to determine access\n * @param {ReactNode} [children] - (optional) children for the dropdown toggle\n * @example\n * ```ts\n * const exampleList: React.FC = () => {\n * const items = {\n * SAVE: 'Save',\n * DELETE: 'Delete',\n * }\n * return (\n * <>\n * \n * Actions\n * \n * \n * );\n * };\n * ```\n */\nexport const ListPageCreateDropdown: React.FC = require('@console/internal/components/factory/ListPage/ListPageCreate')\n .ListPageCreateDropdown;\n\n/**\n * Component that generates filter for list page.\n * @param {D} data - An array of data points\n * @param {boolean} loaded - indicates that data has loaded\n * @param {function} onFilterChange - callback function for when filter is updated\n * @param {RowFilter[]} [rowFilters] - (optional) An array of RowFilter elements that define the available filter options\n * @param {string} [labelFilter] - (optional) a unique name key for label filter. This may be useful if there are multiple `ListPageFilter` components rendered at once.\n * @param {string} [labelPath] - (optional) the path to labels to filter from\n * @param {string} [nameFilterTitle] - (optional) title for name filter\n * @param {string} [nameFilterPlaceholder] - (optional) placeholder for name filter\n * @param {string} [labelFilterPlaceholder] - (optional) placeholder for label filter\n * @param {boolean} [hideLabelFilter] - (optional) only shows the name filter instead of both name and label filter\n * @param {boolean} [hideNameLabelFilter] - (optional) hides both name and label filter\n * @param {ColumnLayout} [columnLayout] - (optional) column layout object\n * @param {boolean} [hideColumnManagement] - (optional) flag to hide the column management\n * @param {string} [nameFilter] - (optional) a unique name key for name filter. This may be useful if there are multiple `ListPageFilter` components rendered at once.\n * @param {RowSearchFilter[]} [rowSearchFilters] - (optional) An array of RowSearchFilters elements that define search text filters added on top of Name and Label filters\n * @example\n * ```tsx\n * // See implementation for more details on RowFilter and FilterValue types\n * const [staticData, filteredData, onFilterChange] = useListPageFilter(\n * data,\n * [...rowFilters, ...searchFilters],\n * staticFilters,\n * );\n * // ListPageFilter updates filter state based on user interaction and resulting filtered data can be rendered in an independent component.\n * return (\n * <>\n * \n * \n * \n * \n * \n * \n * )\n * ```\n */\nexport const ListPageFilter: React.FC = require('@console/internal/components/factory/ListPage/ListPageFilter')\n .default;\n\n/**\n * A hook that manages filter state for the ListPageFilter component.\n * @param data - An array of data points\n * @param rowFilters - (optional) An array of RowFilter elements that define the available filter options\n * @param staticFilters - (optional) An array of FilterValue elements that are statically applied to the data\n * @returns A tuple containing the data filtered by all static filteres, the data filtered by all static and row filters, and a callback that updates rowFilters\n * @example\n * ```tsx\n * // See implementation for more details on RowFilter and FilterValue types\n * const [staticData, filteredData, onFilterChange] = useListPageFilter(\n * data,\n * rowFilters,\n * staticFilters,\n * );\n * // ListPageFilter updates filter state based on user interaction and resulting filtered data can be rendered in an independent component.\n * return (\n * <>\n * \n * \n * \n * \n * \n * \n * )\n * ```\n */\nexport const useListPageFilter: UseListPageFilter = require('@console/internal/components/factory/ListPage/filter-hook')\n .useListPageFilter;\n\n/**\n * Component that creates a link to a specific resource type with an icon badge.\n * @param {K8sResourceKindReference} [kind] - (optional) the kind of resource such as Pod, Deployment, Namespace\n * @param {K8sGroupVersionKind} [groupVersionKind] - (optional) object with group, version, and kind\n * @param {string} [className] - (optional) class style for component\n * @param {string} [displayName] - (optional) display name for component, overwrites the resource name if set\n * @param {boolean} [inline=false] - (optional) flag to create icon badge and name inline with children\n * @param {boolean} [linkTo=true] - (optional) flag to create a Link object, defaults to true\n * @param {string} [name] - (optional) name of resource\n * @param {string} [namespace] - (optional) specific namespace for the kind resource to link to\n * @param {boolean} [hideIcon] - (optional) flag to hide the icon badge\n * @param {string} [title] - (optional) title for the link object (not displayed)\n * @param {string} [dataTest] - (optional) identifier for testing\n * @param {function} [onClick] - (optional) callback function for when component is clicked\n * @param {boolean} [truncate=false] - (optional) flag to truncate the link if too long\n * @example\n * ```tsx\n * \n * ```\n */\nexport const ResourceLink: React.FC = require('@console/internal/components/utils/resource-link')\n .ResourceLink;\nexport { default as ResourceStatus } from '../app/components/utils/resource-status';\n\n/**\n * Component that creates an icon badge for a specific resource type.\n * @param {K8sResourceKindReference} [kind] - (optional) the kind of resource such as Pod, Deployment, Namespace\n * @param {K8sGroupVersionKind} [groupVersionKind] - (optional) object with group, version, and kind\n * @param {string} [className] - (optional) class style for component\n * @example\n * ```tsx\n * \n * ```\n */\nexport const ResourceIcon: React.FC = require('@console/internal/components/utils/resource-icon')\n .ResourceIcon;\n\nexport {\n useK8sModel,\n useK8sModels,\n useK8sWatchResource,\n useK8sWatchResources,\n} from '../utils/k8s/hooks';\n\nexport { consoleFetch, consoleFetchJSON, consoleFetchText } from '../utils/fetch';\n\n// Expose K8s CRUD utilities as below\nexport {\n k8sGetResource as k8sGet,\n k8sCreateResource as k8sCreate,\n k8sUpdateResource as k8sUpdate,\n k8sPatchResource as k8sPatch,\n k8sDeleteResource as k8sDelete,\n k8sListResource as k8sList,\n k8sListResourceItems as k8sListItems,\n} from '../utils/k8s';\nexport {\n getAPIVersionForModel,\n getGroupVersionKindForResource,\n getGroupVersionKindForModel,\n} from '../utils/k8s/k8s-ref';\n\n/**\n * Component that shows the status in a popup window. Can be used when building `console.dashboards/overview/health/resource` extensions.\n * @param {ReactNode} firstColumn - values for first column of popup\n * @param {ReactNode} [secondColumn] - (optional) values for second column of popup\n * @param {ReactNode} [children] - (optional) children for the popup\n * @example\n * ```tsx\n * \n * {title}\n * \n * My Example Item\n * \n * \n * }\n * secondColumn='Status'\n * >\n * ```\n */\nexport const StatusPopupSection: React.FC = require('@console/shared/src/components/dashboard/status-card/StatusPopup')\n .StatusPopupSection;\n\n/**\n * Status element used in status popup. Used in in `StatusPopupSection`.\n * @param {string} [value] - (optional) text value to display\n * @param {string} [icon] - (optional) icon to display\n * @param {React.ReactNode} children - child elements\n * @example\n * ```tsx\n * \n * \n * Complete\n * \n * \n * Pending\n * \n * \n * ```\n */\nexport const StatusPopupItem: React.FC = require('@console/shared/src/components/dashboard/status-card/StatusPopup')\n .default;\n\n/**\n * Creates a wrapper component for a dashboard.\n * @param {string} [className] - (optional) style class for div\n * @param {React.ReactNode} [children] - (optional) elements of the dashboard\n * @example\n * ```tsx\n * \n * \n * \n *```\n */\nexport const Overview: React.FC = require('@console/shared/src/components/dashboard/Dashboard')\n .default;\n\n/**\n * Creates a grid of card elements for a dashboard. Used within `Overview`.\n * @param {OverviewGridCard[]} mainCards - cards for grid\n * @param {OverviewGridCard[]} [leftCards] - (optional) cards for left side of grid\n * @param {OverviewGridCard[]} [rightCards] - (optional) cards for right side of grid\n * @example\n * ```tsx\n * \n * \n * \n *```\n */\nexport const OverviewGrid: React.FC = require('@console/shared/src/components/dashboard/DashboardGrid')\n .default;\n\n/**\n * Creates an inventory card item.\n * @param {React.ReactNode} children - elements to render inside the item\n * @example\n * ```tsx\n * return (\n * \n * {title}\n * \n * {loaded && } />}\n * \n * \n * )\n * ```\n */\nexport const InventoryItem: React.FC = require('@console/shared/src/components/dashboard/inventory-card/InventoryCard')\n .default;\n\n/**\n * Creates a title for an inventory card item. Used within `InventoryItem`.\n * @param {React.ReactNode} children - elements to render inside the title\n * @example\n * ```tsx\n * return (\n * \n * {title}\n * \n * {loaded && } />}\n * \n * \n * )\n * ```\n */\nexport const InventoryItemTitle: React.FC = require('@console/shared/src/components/dashboard/inventory-card/InventoryCard')\n .InventoryItemTitle;\n\n/**\n * Creates the body of an inventory card. Used within `InventoryCard` and can be used with `InventoryTitle`.\n * @param {React.ReactNode} children - elements to render inside the inventory card or title\n * @param {*} error - elements of the div\n * @example\n * ```tsx\n * return (\n * \n * {title}\n * \n * {loaded && } />}\n * \n * \n * )\n * ```\n */\nexport const InventoryItemBody: React.FC = require('@console/shared/src/components/dashboard/inventory-card/InventoryCard')\n .InventoryItemBody;\n\n/**\n * Creates a count and icon for an inventory card with optional link address. Used within `InventoryItemBody`.\n * @param {number} count - count for display\n * @param {React.ReactNode} icon - icon for display\n * @param {string} [linkTo] - (optional) link address\n * @example\n * ```tsx\n * return (\n * \n * {title}\n * \n * {loaded && } />}\n * \n * \n * )\n * ```\n */\nexport const InventoryItemStatus: React.FC = require('@console/shared/src/components/dashboard/inventory-card/InventoryCard')\n .InventoryItemStatus;\n\n/**\n * Creates a skeleton container for when an inventory card is loading. Used with `InventoryItem` and related components.\n * @example\n * ```tsx\n * if (loadError) {\n * title = {t('Worker Nodes')};\n * } else if (!loaded) {\n * title = <>{t('Worker Nodes')};\n * }\n * return (\n * \n * {title}\n * \n * )\n * ```\n */\nexport const InventoryItemLoading: React.FC = require('@console/shared/src/components/dashboard/inventory-card/InventoryCard')\n .InventoryItemLoading;\n\nexport { useFlag } from '../utils/flags';\n\n/**\n * @deprecated Use [CodeEditor](#codeeditor) instead.\n * A basic lazy loaded YAML editor with hover help and completion.\n * @example\n * ```tsx\n * }>\n * \n * \n * ```\n * @param {YAMLEditorProps['value']} value - String representing the yaml code to render.\n * @param {CodeEditorProps['language']} language - String representing the language of the editor.\n * @param {YAMLEditorProps['options']} options - Monaco editor options. For more details, see https://microsoft.github.io/monaco-editor/docs.html#interfaces/editor.IStandaloneEditorConstructionOptions.html.\n * @param {YAMLEditorProps['minHeight']} minHeight - Minimum editor height in valid CSS height values.\n * @param {YAMLEditorProps['showShortcuts']} showShortcuts - Boolean to show shortcuts on top of the editor.\n * @param {YAMLEditorProps['toolbarLinks']} toolbarLinks - Array of ReactNode rendered on the toolbar links section on top of the editor.\n * @param {YAMLEditorProps['onChange']} onChange - Callback for on code change event.\n * @param {YAMLEditorProps['onSave']} onSave - Callback called when the command `CTRL + S` / `CMD + S` is triggered.\n * @param {YAMLEditorRef} ref - React reference to `{ editor?: IStandaloneCodeEditor }`. Using the 'editor' property, you are able to access to all methods to control the editor. For more information, see https://microsoft.github.io/monaco-editor/docs.html#interfaces/editor.IStandaloneCodeEditor.html.\n */\nexport const YAMLEditor: React.ForwardRefExoticComponent<\n CodeEditorProps & React.RefAttributes\n> = require('@console/internal/components/AsyncCodeEditor').AsyncCodeEditor;\n\n/**\n * A basic lazy loaded Code editor with hover help and completion.\n * @example\n * ```tsx\n * }>\n * \n * \n * ```\n * @param {CodeEditorProps['value']} value - String representing the yaml code to render.\n * @param {CodeEditorProps['language']} language - String representing the language of the editor.\n * @param {CodeEditorProps['options']} options - Monaco editor options. For more details, please, visit https://microsoft.github.io/monaco-editor/docs.html#interfaces/editor.IStandaloneEditorConstructionOptions.html.\n * @param {CodeEditorProps['minHeight']} minHeight - Minimum editor height in valid CSS height values.\n * @param {CodeEditorProps['showShortcuts']} showShortcuts - Boolean to show shortcuts on top of the editor.\n * @param {CodeEditorProps['toolbarLinks']} toolbarLinks - Array of ReactNode rendered on the toolbar links section on top of the editor.\n * @param {CodeEditorProps['onChange']} onChange - Callback for on code change event.\n * @param {CodeEditorProps['onSave']} onSave - Callback called when the command CTRL / CMD + S is triggered.\n * @param {CodeEditorRef} ref - React reference to `{ editor?: IStandaloneCodeEditor }`. Using the 'editor' property, you are able to access to all methods to control the editor. For more information, visit https://microsoft.github.io/monaco-editor/docs.html#interfaces/editor.IStandaloneCodeEditor.html.\n */\nexport const CodeEditor: React.ForwardRefExoticComponent<\n CodeEditorProps & React.RefAttributes\n> = require('@console/internal/components/AsyncCodeEditor').AsyncCodeEditor;\n\n/**\n * A lazy loaded YAML editor for Kubernetes resources with hover help and completion.\n * The component uses the YAML editor and adds functionality, such as\n * resource update handling, alerts, save; cancel and reload buttons; and accessibility.\n * Unless `onSave` callback is provided, the resource update is automatically handled.\n * It should be wrapped in a `React.Suspense` component.\n * @example\n * ```tsx\n * }>\n * updateResource(content)}\n * />\n * \n * ```\n * @param {ResourceYAMLEditorProps['initialResource']} initialResource - YAML/Object representing a resource to be shown by the editor. This prop is used only during the inital render.\n * @param {ResourceYAMLEditorProps['header']} header - Add a header on top of the YAML editor.\n * @param {ResourceYAMLEditorProps['onSave']} onSave - Callback for the Save button. Passing it will override the default update performed on the resource by the editor.\n * @param {ResourceYAMLEditorProps['readOnly']} readOnly - Sets the YAML editor to read-only mode.\n * @param {ResourceYAMLEditorProps['create']} create - Editor will be on creation mode. Create button will replace the Save and Cancel buttons. If no onSave method defined, the 'Create' button will trigger the creation of the defined resource. Default: false\n * @param {ResourceYAMLEditorProps['onChange']} onChange - Callback triggered at any editor change.\n * @param {ResourceYAMLEditorProps['hideHeader']} hideHeader - On creation mode the editor by default show an header that can be hided with this property\n */\nexport const ResourceYAMLEditor: React.FC = require('@console/internal/components/AsyncResourceYAMLEditor')\n .AsyncResourceYAMLEditor;\n\n/**\n * A component to show events related to a particular resource.\n * @example\n * ```tsx\n * const [resource, loaded, loadError] = useK8sWatchResource(clusterResource);\n * return \n * ```\n * @param {K8sResourceCommon} resource - An object whose related events should be shown.\n */\nexport const ResourceEventStream: React.FC = require('@console/internal/components/events')\n .WrappedResourceEventStream;\n\n/**\n * Sets up a poll to Prometheus for a single query.\n * @param {PrometheusEndpoint} endpoint - one of the PrometheusEndpoint (label, query, range, rules, targets)\n * @param {string} [query] - (optional) Prometheus query string. If empty or undefined, polling is not started.\n * @param {number} [delay] - (optional) polling delay interval (ms)\n * @param {number} [endTime] - (optional) for QUERY_RANGE enpoint, end of the query range\n * @param {number} [samples] - (optional) for QUERY_RANGE enpoint\n * @param {number} [timespan] - (optional) for QUERY_RANGE enpoint\n * @param {string} [namespace] - (optional) a search param to append\n * @param {string} [timeout] - (optional) a search param to append\n * @returns A tuple containing the query response, a boolean flag indicating whether the response has completed, and any errors encountered during the request or post-processing of the request\n */\nexport const usePrometheusPoll: UsePrometheusPoll = (options) => {\n const result = require('@console/internal/components/graphs/prometheus-poll-hook').usePrometheusPoll(\n options,\n );\n // unify order with the rest of API\n return [result[0], !result[2], result[1]];\n};\n\n/**\n * A component to render timestamp.\n * The timestamps are synchronized between individual instances of the Timestamp component.\n * The provided timestamp is formatted according to user locale.\n *\n * @param {TimestampProps['timestamp']} timestamp - the timestamp to render. Format is expected to be ISO 8601 (used by Kubernetes), epoch timestamp, or an instance of a Date.\n * @param {TimestampProps['simple']} simple - render simple version of the component omitting icon and tooltip.\n * @param {TimestampProps['omitSuffix']} omitSuffix - formats the date ommiting the suffix.\n * @param {TimestampProps['className']} className - additional class name for the component.\n */\nexport const Timestamp: React.FC = require('@console/internal/components/utils/timestamp')\n .Timestamp;\n\nexport { useModal } from '../app/modal-support/useModal';\n\n/**\n * Component that allows to receive contributions from other plugins for the `console.action/provider` extension type.\n * See docs: https://github.com/openshift/console/blob/master/frontend/packages/console-dynamic-plugin-sdk/docs/console-extensions.md#consoleactionprovider\n *\n * @param {ActionServiceProviderProps[\"context\"]} context - Object with contextId and optional plugin data\n * @example\n * ```tsx\n * const context: ActionContext = { 'a-context-id': { dataFromDynamicPlugin } };\n *\n * ...\n *\n * \n * {({ actions, options, loaded }) =>\n * loaded && (\n * \n * )\n * }\n * \n * ```\n */\nexport const ActionServiceProvider: React.FC = require('@console/shared/src/components/actions/ActionServiceProvider')\n .default;\n\n/**\n * A component that renders a horizontal toolbar with a namespace dropdown menu in the leftmost position. Additional components can be passed in as children and will be rendered to the right of the namespace dropdown. This component is designed to be used at the top of the page. It should be used on pages where the user needs to be able to change the active namespace, such as on pages with k8s resources.\n * @param {function} onNamespaceChange - (optional) A function that is executed when a namespace option is selected. It accepts the new namespace in the form of a string as its only argument. The active namespace is updated automatically when an option is selected, but additional logic can be applied through this function. When the namespace is changed, the namespace parameter in the URL will be changed from the previous namespace to the newly selected namespace.\n * @param {boolean} isDisabled - (optional) A boolean flag that disables the namespace dropdown if set to true. This option only applies to the namespace dropdown and has no effect on child components.\n * @param {React.ReactNode} children - (optional) Additional elements to be rendered inside the toolbar to the right of the namespace dropdown.\n * @example\n * ```tsx\n * const logNamespaceChange = (namespace) => console.log(`New namespace: ${namespace}`);\n *\n * ...\n *\n * \n * \n * \n * \n *\n * ...\n * ```\n */\nexport const NamespaceBar: React.FC = require('@console/internal/components/namespace-bar')\n .NamespaceBar;\n\n/**\n * Creates a full page ErrorBoundaryFallbackPage component to display the \"Oh no! Something went wrong.\" message along with the stack trace and other helpful debugging information.\n * This is to be used in conjunction with an `ErrorBoundary` component.\n *\n * @param {string} errorMessage - text description of the error message\n * @param {string} componentStack - component trace of the exception\n * @param {string} stack - stack trace of the exception\n * @param {string} title - title to render as the header of the error boundary page\n * @example\n * ```tsx\n * //in ErrorBoundary component\n * return (\n * if (this.state.hasError) {\n * return ;\n * }\n *\n * return this.props.children;\n * }\n * )\n * ```\n */\nexport const ErrorBoundaryFallbackPage: React.FC = require('@console/shared/src/components/error/fallbacks/ErrorBoundaryFallbackPage')\n .default;\n\n/**\n * A component that renders a graph of the results from a Prometheus PromQL query along with controls for interacting with the graph.\n * @param {CustomDataSource} customDataSource - (optional) Base URL of an API endpoint that handles PromQL queries. If provided, this is used instead of the default API for fetching data.\n * @param {number} defaultSamples - (optional) The default number of data samples plotted for each data series. If there are many data series, QueryBrowser might automatically pick a lower number of data samples than specified here.\n * @param {number} defaultTimespan - (optional) The default timespan for the graph in milliseconds - defaults to 1,800,000 (30 minutes).\n * @param {PrometheusLabels[][]} disabledSeries - (optional) Disable (don't display) data series with these exact label / value pairs.\n * @param {boolean} disableZoom - (optional) Flag to disable the graph zoom controls.\n * @param {PrometheusLabels} filterLabels - (optional) Optionally filter the returned data series to only those that match these label / value pairs.\n * @param {number} fixedEndTime - (optional) Set the end time for the displayed time range rather than showing data up to the current time.\n * @param {(labels: PrometheusLabels, i?: number) => string} formatSeriesTitle - (optional) Function that returns a string to use as the title for a single data series.\n * @param {React.ComponentType<{}>} GraphLink - (optional) Component for rendering a link to another page (for example getting more information about this query).\n * @param {boolean} hideControls - (optional) Flag to hide the graph controls for changing the graph timespan, and so on.\n * @param {boolean} isStack - (optional) Flag to display a stacked graph instead of a line graph. If showStackedControl is set, it will still be possible for the user to switch to a line graph.\n * @param {string} namespace - (optional) If provided, data is only returned for this namespace (only series that have this namespace label).\n * @param {GraphOnZoom} onZoom - (optional) Callback called when the graph is zoomed.\n * @param {number} pollInterval - (optional) If set, determines how often the graph is updated to show the latest data (in milliseconds).\n * @param {string[]} queries - Array of PromQL queries to run and display the results in the graph.\n * @param {boolean} showLegend - (optional) Flag to enable displaying a legend below the graph.\n * @param {boolean} showStackedControl - Flag to enable displaying a graph control for switching between stacked graph mode and line graph mode.\n * @param {number} timespan - (optional) The timespan that should be covered by the graph in milliseconds.\n * @param {string} units - (optional) Units to display on the Y-axis and in the tooltip.\n * @example\n * ```tsx\n * \n * ```\n */\nexport const QueryBrowser: React.FC = require('@console/shared/src/components/query-browser')\n .QueryBrowser;\n\n/**\n * A hook that provides a callback to launch a modal for editing Kubernetes resource annotations.\n *\n * @param {object} resource - The resource to edit annotations for, an object of K8sResourceCommon type.\n * @returns A function which will launch a modal for editing a resource's annotations.\n * @example\n * ```tsx\n * const PodAnnotationsButton = ({ pod }) => {\n * const { t } = useTranslation();\n * const launchAnnotationsModal = useAnnotationsModal(pod);\n * return \n * }\n * ```\n */\nexport const useAnnotationsModal: UseAnnotationsModal = require('@console/shared/src/hooks/useAnnotationsModal')\n .useAnnotationsModal;\n\n/**\n * A hook that provides a callback to launch a modal for deleting a resource.\n *\n * @param resource - The resource to delete.\n * @param redirectTo - (optional) A location to redirect to after deleting the resource.\n * @param message - (optional) A message to display in the modal.\n * @param btnText - (optional) The text to display on the delete button.\n * @param deleteAllResources - (optional) A function to delete all resources of the same kind.\n * @returns A function which will launch a modal for deleting a resource.\n * @example\n * ```tsx\n * const DeletePodButton = ({ pod }) => {\n * const { t } = useTranslation();\n * const launchDeleteModal = useDeleteModal(pod);\n * return \n * }\n * ```\n */\nexport const useDeleteModal: UseDeleteModal = require('@console/shared/src/hooks/useDeleteModal')\n .useDeleteModal;\n\n/**\n * A hook that provides a callback to launch a modal for editing Kubernetes resource labels.\n *\n * @param {object} resource - The resource to edit labels for, an object of K8sResourceCommon type.\n * @returns A function which will launch a modal for editing a resource's labels.\n * @example\n * ```tsx\n * const PodLabelsButton = ({ pod }) => {\n * const { t } = useTranslation();\n * const launchLabelsModal = useLabelsModal(pod);\n * return \n * }\n * ```\n */\nexport const useLabelsModal: UseLabelsModal = require('@console/shared/src/hooks/useLabelsModal')\n .useLabelsModal;\n\n/**\n * Hook that provides the currently active namespace and a callback for setting the active namespace.\n * @returns A tuple containing the current active namespace and setter callback.\n * @example\n * ```tsx\n * const Component: React.FC = (props) => {\n * const [activeNamespace, setActiveNamespace] = useActiveNamespace();\n * return setActiveNamespace(e.target.value)}\n * >\n * {\n * // ...namespace options\n * }\n * \n * }\n * ```\n */\nexport const useActiveNamespace: UseActiveNamespace = require('@console/shared/src/hooks/useActiveNamespace')\n .useActiveNamespace;\n\n/**\n * Hook that provides a user setting value and a callback for setting the user setting value.\n * @returns A tuple containing the user setting value, a setter callback, and a loaded boolean.\n * @example\n * ```tsx\n * const Component: React.FC = (props) => {\n * const [state, setState, loaded] = useUserSettings(\n * 'devconsole.addPage.showDetails',\n * true,\n * true,\n * );\n * return loaded ? (\n * \n * ) : null;\n * };\n * ```\n */\nexport const useUserSettings: UseUserSettings = require('@console/shared/src/hooks/useUserSettings')\n .useUserSettings;\n\n/**\n * Hook that provides the current quick start context values. This allows plugins to interop with Console\n * quick start functionality.\n * @returns Quick start context values object.\n * @example\n * ```tsx\n * const OpenQuickStartButton = ({ quickStartId }) => {\n * const { setActiveQuickStart } = useQuickStartContext();\n * const onClick = React.useCallback(() => {\n * setActiveQuickStart(quickStartId);\n * }, [quickStartId]);\n * return \n * };\n * ```\n */\nexport const useQuickStartContext: UseQuickStartContext = require('@console/shared/src/hooks/useQuickStartContext')\n .useQuickStartContext;\n","import * as React from 'react';\nimport i18next from 'i18next';\nimport { QUERY_PROPERTIES } from '@console/dev-console/src/const';\nimport { Action } from '@console/dynamic-plugin-sdk';\nimport { UNASSIGNED_KEY } from '@console/topology/src/const';\nimport { EventSourceIcon, eventIconStyle } from '../utils/icons';\n\nexport const AddEventSourceAction = (\n namespace: string,\n application?: string,\n contextSource?: string,\n path?: string,\n): Action => {\n const params = new URLSearchParams();\n const pageUrl = `/catalog/ns/${namespace}`;\n params.append('catalogType', 'EventSource');\n contextSource && params.append(QUERY_PROPERTIES.CONTEXT_SOURCE, contextSource);\n application\n ? params.append(QUERY_PROPERTIES.APPLICATION, application)\n : params.append(QUERY_PROPERTIES.APPLICATION, UNASSIGNED_KEY);\n return {\n id: 'event-source-add',\n label: i18next.t('knative-plugin~Event Source'),\n icon: ,\n cta: {\n href: `${pageUrl}?${params.toString()}`,\n },\n path,\n insertAfter: 'event-sink-add',\n };\n};\n","module.exports = __webpack_public_path__ + \"assets/packages/knative-plugin/src/imgs/channel.svg\";","import i18next from 'i18next';\nimport { Action } from '@console/dynamic-plugin-sdk/src';\nimport { KebabOption } from '@console/internal/components/utils';\nimport { K8sKind, K8sResourceKind } from '@console/internal/module/k8s';\nimport { addPubSubConnectionModal } from '../components/pub-sub/PubSubModalLauncher';\nimport { EventingTriggerModel } from '../models';\n\nexport const TRIGGER_ACTION_ID = 'eventing-trigger-add';\n\nexport const addTrigger = (model: K8sKind, source: K8sResourceKind): KebabOption => {\n return {\n // t('knative-plugin~Add Trigger')\n labelKey: 'knative-plugin~Add Trigger',\n callback: () =>\n addPubSubConnectionModal({\n source,\n }),\n accessReview: {\n group: EventingTriggerModel.apiGroup,\n resource: EventingTriggerModel.plural,\n name: source.metadata.name,\n namespace: source.metadata.namespace,\n verb: 'create',\n },\n };\n};\n\nexport const AddTriggerAction = (source: K8sResourceKind): Action => {\n return {\n id: TRIGGER_ACTION_ID,\n label: i18next.t('knative-plugin~Add Trigger'),\n cta: () =>\n addPubSubConnectionModal({\n source,\n }),\n accessReview: {\n group: EventingTriggerModel.apiGroup,\n resource: EventingTriggerModel.plural,\n name: source.metadata.name,\n namespace: source.metadata.namespace,\n verb: 'create',\n },\n };\n};\n","import i18next from 'i18next';\nimport { Action } from '@console/dynamic-plugin-sdk/src';\nimport { KebabOption } from '@console/internal/components/utils';\nimport { K8sKind, K8sResourceKind } from '@console/internal/module/k8s';\nimport { addPubSubConnectionModal } from '../components/pub-sub/PubSubModalLauncher';\nimport { EventingSubscriptionModel } from '../models';\n\nexport const SUBSCRIPTION_ACTION_ID = 'eventing-subscription-action';\n\nexport const addSubscription = (model: K8sKind, source: K8sResourceKind): KebabOption => {\n return {\n // t('knative-plugin~Add Subscription')\n labelKey: 'knative-plugin~Add Subscription',\n callback: () =>\n addPubSubConnectionModal({\n source,\n }),\n accessReview: {\n group: EventingSubscriptionModel.apiGroup,\n resource: EventingSubscriptionModel.plural,\n name: source.metadata.name,\n namespace: source.metadata.namespace,\n verb: 'create',\n },\n };\n};\n\nexport const AddSubscriptionAction = (source: K8sResourceKind): Action => {\n return {\n id: SUBSCRIPTION_ACTION_ID,\n label: i18next.t('knative-plugin~Add Subscription'),\n cta: () =>\n addPubSubConnectionModal({\n source,\n }),\n accessReview: {\n group: EventingSubscriptionModel.apiGroup,\n resource: EventingSubscriptionModel.plural,\n name: source.metadata.name,\n namespace: source.metadata.namespace,\n verb: 'create',\n },\n };\n};\n","import i18next from 'i18next';\nimport { Action } from '@console/dynamic-plugin-sdk/src';\nimport { KebabOption } from '@console/internal/components/utils';\nimport { K8sKind, K8sResourceKind } from '@console/internal/module/k8s';\nimport { ServiceModel } from '../models';\n\nexport const hideKnatifyAction = (resource: K8sResourceKind): boolean => {\n const isWorkloadReady = resource.status?.conditions?.find(\n (cd) => cd.type === 'Available' && cd.status === 'True',\n );\n return resource.metadata?.ownerReferences?.length > 0 || !isWorkloadReady;\n};\n\n/** @deprecated - Moving to Extensible Action for Deployment resource, see @console/app/src/actions */\nexport const setKnatify = (model: K8sKind, obj: K8sResourceKind): KebabOption => {\n const kind = obj.kind || model.kind;\n const apiVersion = obj.apiVersion || `${model.apiGroup}/${model.apiVersion}`;\n return {\n // t('knative-plugin~Make Serverless')\n labelKey: 'knative-plugin~Make Serverless',\n hidden: hideKnatifyAction(obj),\n href: `/knatify/ns/${obj.metadata.namespace}?name=${obj.metadata.name}&kind=${kind}&apiversion=${apiVersion}`,\n accessReview: {\n group: ServiceModel.apiGroup,\n resource: ServiceModel.plural,\n namespace: obj.metadata.namespace,\n verb: 'create',\n },\n };\n};\n\nexport const MakeServerless = (model: K8sKind, obj: K8sResourceKind): Action => {\n const kind = obj.kind || model.kind;\n const apiVersion = obj.apiVersion || `${model.apiGroup}/${model.apiVersion}`;\n return {\n id: 'make-serverless',\n label: i18next.t('knative-plugin~Make Serverless'),\n cta: {\n href: `/knatify/ns/${obj.metadata.namespace}?name=${obj.metadata.name}&kind=${kind}&apiversion=${apiVersion}`,\n },\n insertBefore: 'edit-labels',\n accessReview: {\n group: ServiceModel.apiGroup,\n resource: ServiceModel.plural,\n namespace: obj.metadata.namespace,\n verb: 'create',\n },\n };\n};\n","/* eslint-disable camelcase, tsdoc/syntax */\nimport * as React from 'react';\nimport * as _ from 'lodash-es';\nimport * as fuzzy from 'fuzzysearch';\nimport classNames from 'classnames';\nimport { Link, useLocation, useNavigate } from 'react-router-dom-v5-compat';\nimport { sortable } from '@patternfly/react-table';\nimport {\n Alert,\n Button,\n EmptyState,\n EmptyStateBody,\n EmptyStateVariant,\n Label as PfLabel,\n LabelGroup as PfLabelGroup,\n EmptyStateHeader,\n Breadcrumb,\n BreadcrumbItem,\n} from '@patternfly/react-core';\nimport { PencilAltIcon } from '@patternfly/react-icons/dist/esm/icons/pencil-alt-icon';\nimport { Helmet } from 'react-helmet';\nimport { useTranslation } from 'react-i18next';\n\nimport { breadcrumbsForGlobalConfig } from '../../cluster-settings/global-config';\n\nimport { K8sResourceKind } from '../../../module/k8s';\nimport { Table, TableData, TextFilter, RowFunctionArgs } from '../../factory';\nimport { confirmModal, createAlertRoutingModal } from '../../modals';\nimport { Firehose, Kebab, MsgBox, SectionHeading, StatusBox } from '../../utils';\nimport {\n getAlertmanagerConfig,\n patchAlertmanagerConfig,\n receiverTypes,\n} from './alertmanager-utils';\n\nexport enum InitialReceivers {\n Critical = 'Critical',\n Default = 'Default',\n Watchdog = 'Watchdog',\n}\n\ninterface AlertRoutingProps {\n // alertmanager-main Secret which holds alertmanager configuration yaml\n secret: K8sResourceKind;\n // alertmanager configuration yaml as object\n config: AlertmanagerConfig;\n}\n\nconst AlertRouting = ({ secret, config }: AlertRoutingProps) => {\n const groupBy = _.get(config, ['route', 'group_by'], []);\n const { t } = useTranslation();\n return (\n
    \n \n createAlertRoutingModal({ config, secret })}\n variant=\"secondary\"\n data-test=\"edit-alert-routing-btn\"\n >\n {t('public~Edit')}\n \n \n
    \n
    \n
    \n
    {t('public~Group by')}
    \n
    \n {_.isEmpty(groupBy) ? '-' : _.join(groupBy, ', ')}\n
    \n
    {t('public~Group wait')}
    \n
    {_.get(config, ['route', 'group_wait'], '-')}
    \n
    \n
    \n
    \n
    \n
    {t('public~Group interval')}
    \n
    \n {_.get(config, ['route', 'group_interval'], '-')}\n
    \n
    {t('public~Repeat interval')}
    \n
    \n {_.get(config, ['route', 'repeat_interval'], '-')}\n
    \n
    \n
    \n
    \n
    \n );\n};\n\nconst tableColumnClasses = [\n 'pf-v5-u-w-50-on-xs pf-v5-u-w-25-on-lg',\n 'pf-m-hidden pf-m-visible-on-lg pf-v5-u-w-25-on-lg',\n 'pf-v5-u-w-50-on-xs',\n Kebab.columnClass,\n];\n\nconst getIntegrationTypes = (receiver: AlertmanagerReceiver): string[] => {\n /* Given receiver = {\n \"name\": \"team-X-pager\",\n \"email_configs\": [...],\n \"pagerduty_configs\": [...]\n };\n returns ['email_configs', 'pagerduty_configs']\n */\n return _.filter(_.keys(receiver), (v) => _.endsWith(v, '_configs'));\n};\n\n/**\n * Recursive function which transverses routes and sub-routes to get labels and/or matchers for each receiver.\n * Each entry is a set of labels and/or matchers used to route alerts to a receiver\n *\n * Ex: returns\n * [{\n * \"receiver\": \"team-Y-pager\",\n * \"labels\": {\n * \"service\": \"database\",\n * \"owner\": \"team-Y\"\n * },\n * \"matchers\": [\"severity = critical\"]\n * },\n * {\n * \"receiver\": \"team-Y-pager\",\n * \"labels\": {\n * \"service\": \"files\",\n * \"severity\": \"critical\"\n * }\n * }]\n}*/\nconst getRoutingLabelsByReceivers = (\n routes: AlertmanagerRoute[],\n parentLabels: { [key: string]: string } = {},\n parentMatchers: string[] = [],\n): RoutingLabelsByReceivers[] => {\n let results: RoutingLabelsByReceivers[] = [];\n let labels = {};\n for (const obj of routes) {\n labels = _.merge({}, parentLabels, obj.match, obj.match_re);\n const matchers = [...parentMatchers, ...(obj.matchers ?? [])];\n results.push({ receiver: obj.receiver, labels, matchers });\n if (obj.routes) {\n results = results.concat(getRoutingLabelsByReceivers(obj.routes, labels, matchers));\n }\n }\n return results;\n};\n\n/**\n * Is receiver used in a top-level route that has no sub routes, or\n * is receiver not in any route (no routing labels)?\n */\nconst hasSimpleRoute = (\n config: AlertmanagerConfig,\n receiver: AlertmanagerReceiver,\n receiverRoutingLabels: RoutingLabelsByReceivers[],\n): boolean => {\n const routes = _.get(config, ['route', 'routes']);\n return (\n _.filter(routes, (route) => {\n return route.receiver === receiver.name && _.isUndefined(route.routes);\n }).length > 0 || _.isEmpty(receiverRoutingLabels)\n );\n};\n\n/**\n * Does receiver contains a single known receiver type (ex: pagerduty_config), which has a single config.\n * No receiver type specified is valid, as well as a single receiver type with no config\n */\nconst hasSimpleReceiver = (\n config: AlertmanagerConfig,\n receiver: AlertmanagerReceiver,\n receiverIntegrationTypes: string[],\n): boolean => {\n if (receiverIntegrationTypes.length === 0) {\n return true;\n } else if (receiverIntegrationTypes.length === 1) {\n const receiverConfig = receiverIntegrationTypes[0]; // ex: 'pagerduty_configs'\n const numConfigs = _.get(receiver, receiverConfig).length; // 'pagerduty_configs' is array and may have multiple sets of properties\n return _.hasIn(receiverTypes, receiverConfig) && numConfigs <= 1; // known receiver type and a single set of props\n }\n return false;\n};\n\nexport const numberOfIncompleteReceivers = (config: AlertmanagerConfig): number => {\n const { route, receivers } = config;\n const { receiver: defaultReceiverName } = route || {};\n\n // if no receivers or default receiver, then no longer initial setup, hide info alerts\n if (!receivers || !defaultReceiverName) {\n return 0;\n }\n const defaultReceiver = receivers.filter((receiver) => receiver.name === defaultReceiverName);\n const criticalReceiver = receivers.filter(\n (receiver) => receiver.name === InitialReceivers.Critical,\n );\n\n const numIncompleteReceivers =\n !_.isEmpty(defaultReceiver) && _.isEmpty(getIntegrationTypes(defaultReceiver[0])) ? 1 : 0;\n\n return !_.isEmpty(criticalReceiver) && _.isEmpty(getIntegrationTypes(criticalReceiver[0]))\n ? numIncompleteReceivers + 1\n : numIncompleteReceivers;\n};\n\nconst RoutingLabels: React.FC = ({ data }) => {\n const { labels, matchers } = data;\n const lbls = _.map(labels || {}, (value, key) => `${key}=${value}`);\n const values = [...lbls, ...(matchers ?? [])];\n\n return values.length > 0 ? (\n \n {values.map((value, i) => (\n {value}\n ))}\n \n ) : null;\n};\n\nconst deleteReceiver = (\n secret: K8sResourceKind,\n config: AlertmanagerConfig,\n receiverName: string,\n navigate: any,\n) => {\n // remove any routes which use receiverToDelete\n _.update(config, 'route.routes', (routes) => {\n _.remove(routes, (route: AlertmanagerRoute) => route.receiver === receiverName);\n return routes;\n });\n // delete receiver\n _.update(config, 'receivers', (receivers) => {\n _.remove(receivers, (receiver: AlertmanagerReceiver) => receiver.name === receiverName);\n return receivers;\n });\n return patchAlertmanagerConfig(secret, config).then(() => {\n navigate('/monitoring/alertmanagerconfig');\n });\n};\n\nconst ReceiverTableRow: React.FC> = ({\n obj: receiver,\n customData: { routingLabelsByReceivers, defaultReceiverName, config, secret },\n}) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n // filter to routing labels belonging to current Receiver\n const receiverRoutingLabels = _.filter(routingLabelsByReceivers, { receiver: receiver.name });\n const receiverIntegrationTypes = getIntegrationTypes(receiver);\n const integrationTypesLabel = _.join(\n _.map(receiverIntegrationTypes, (type) => type.substr(0, type.indexOf('_configs'))),\n ', ',\n );\n const isDefaultReceiver = receiver.name === defaultReceiverName;\n const receiverHasSimpleRoute = hasSimpleRoute(config, receiver, receiverRoutingLabels);\n\n // Receiver form can only handle simple configurations. Can edit via form if receiver\n // has a simple route and receiver\n const canUseEditForm =\n receiverHasSimpleRoute && hasSimpleReceiver(config, receiver, receiverIntegrationTypes);\n\n // Receivers can be deleted if it has a simple route and not the default receiver\n const canDelete = !isDefaultReceiver && receiverHasSimpleRoute;\n\n const receiverMenuItems = (receiverName: string) => [\n {\n label: t('public~Edit Receiver'),\n callback: () => {\n const targetUrl = canUseEditForm\n ? `/monitoring/alertmanagerconfig/receivers/${receiverName}/edit`\n : `/monitoring/alertmanageryaml`;\n return navigate(targetUrl);\n },\n },\n {\n label: t('public~Delete Receiver'),\n isDisabled: !canDelete,\n tooltip: !canDelete\n ? t('public~Cannot delete the default receiver, or a receiver which has a sub-route')\n : '',\n callback: () =>\n confirmModal({\n title: t('public~Delete Receiver'),\n message: t('public~Are you sure you want to delete receiver {{receiverName}}?', {\n receiverName,\n }),\n btnText: t('public~Delete Receiver'),\n executeFn: () => deleteReceiver(secret, config, receiverName, navigate),\n }),\n },\n ];\n\n return (\n <>\n {receiver.name}\n \n {(receiver.name === InitialReceivers.Critical ||\n receiver.name === InitialReceivers.Default) &&\n !integrationTypesLabel ? (\n \n \n {t('public~Configure')}\n \n ) : (\n integrationTypesLabel\n )}\n \n \n {isDefaultReceiver\n ? t('public~All (default receiver)')\n : _.map(receiverRoutingLabels, (rte, i) => {\n return ;\n })}\n \n \n \n \n \n );\n};\n\ninterface ReceiversTableProps {\n secret: K8sResourceKind;\n config: AlertmanagerConfig;\n data: AlertmanagerReceiver[];\n filterValue?: string;\n}\n\nconst ReceiversTable: React.FC = (props) => {\n const { secret, config, filterValue } = props;\n const { route } = config;\n const { receiver: defaultReceiverName, routes } = route;\n const { t } = useTranslation();\n\n const routingLabelsByReceivers = React.useMemo(\n () => (_.isEmpty(routes) ? [] : getRoutingLabelsByReceivers(routes)),\n [routes],\n );\n\n const EmptyMsg = () => (\n \n );\n const ReceiverTableHeader = () => {\n return [\n {\n title: t('public~Name'),\n sortField: 'name',\n transforms: [sortable],\n props: { className: tableColumnClasses[0] },\n },\n {\n title: t('public~Integration type'),\n props: { className: tableColumnClasses[1] },\n },\n {\n title: t('public~Routing labels'),\n props: { className: tableColumnClasses[2] },\n },\n {\n title: '',\n props: { className: tableColumnClasses[3] },\n },\n ];\n };\n\n const customData = React.useMemo(\n () => ({\n routingLabelsByReceivers,\n defaultReceiverName,\n config,\n secret,\n }),\n [config, defaultReceiverName, routingLabelsByReceivers, secret],\n );\n\n return (\n \n );\n};\nReceiversTable.displayName = 'ReceiversTable';\n\nconst ReceiversEmptyState: React.FC<{}> = () => {\n const { t } = useTranslation();\n return (\n \n {t('public~No receivers found')}} headingLevel=\"h2\" />\n \n {t(\n 'public~Create a receiver to get OpenShift alerts through other services such as email or a chat platform. The first receiver you create will become the default receiver and will automatically receive all alerts from this cluster. Subsequent receivers can have specific sets of alerts routed to them.',\n )}\n \n \n );\n};\n\ninterface ReceiversProps {\n secret: K8sResourceKind;\n config: AlertmanagerConfig;\n}\n\nconst Receivers = ({ secret, config }: ReceiversProps) => {\n const [receiverFilter, setReceiverFilter] = React.useState('');\n let receivers = _.get(config, 'receivers', []);\n if (receiverFilter) {\n const filterStr = _.toLower(receiverFilter);\n receivers = receivers.filter((receiver) => fuzzy(filterStr, _.toLower(receiver.name)));\n }\n\n const numOfIncompleteReceivers = numberOfIncompleteReceivers(config);\n const { t } = useTranslation();\n const receiverString = t('public~receiver', { count: numOfIncompleteReceivers });\n return (\n
    \n \n
    \n setReceiverFilter(val)}\n />\n \n \n \n
    \n {numOfIncompleteReceivers > 0 && (\n \n
    \n {t(\n 'public~Configure the {{receiverString}} to ensure that you learn about important issues with your cluster.',\n { receiverString },\n )}\n
    \n \n )}\n {_.isEmpty(receivers) && !receiverFilter ? (\n \n ) : (\n \n )}\n
    \n );\n};\n\nconst AlertmanagerConfiguration: React.FC = ({ obj: secret }) => {\n const { t } = useTranslation();\n const { config, errorMessage } = getAlertmanagerConfig(secret);\n\n if (errorMessage) {\n return (\n \n
    {errorMessage}
    \n \n );\n }\n\n return (\n <>\n \n \n \n );\n};\n\nconst AlertmanagerConfigWrapper: React.FC = React.memo(\n ({ obj, ...props }) => {\n const { t } = useTranslation();\n return (\n <>\n \n {t('public~Alerting')}\n \n \n \n \n \n );\n },\n);\n\nexport const AlertmanagerConfig: React.FC = () => {\n const { t } = useTranslation();\n const { pathname: url } = useLocation();\n\n const configPath = '/monitoring/alertmanagerconfig';\n const YAMLPath = '/monitoring/alertmanageryaml';\n\n const breadcrumbs = breadcrumbsForGlobalConfig('Alertmanager', configPath);\n\n return (\n <>\n
    \n \n \n \n {breadcrumbs[0].name}\n \n \n {breadcrumbs[1].name}\n \n
    \n
    \n

    \n
    \n \n {t('public~Alertmanager')}\n \n
    \n

    \n
    \n
      \n \n \n {t('public~Details')}\n \n \n \n \n {t('public~YAML')}\n \n \n
    \n \n \n \n \n );\n};\n\ntype AlertmanagerConfigWrapperProps = {\n obj?: {\n data?: K8sResourceKind;\n [key: string]: any;\n };\n};\n\ntype AlertmanagerConfigurationProps = {\n obj?: K8sResourceKind;\n onCancel?: () => void;\n};\ntype labels = {\n [key: string]: string;\n};\n\nexport type AlertmanagerRoute = {\n receiver?: string;\n groupBy?: { [key: string]: string };\n groupWait?: string;\n groupInterval?: string;\n repeatInterval?: string;\n match?: labels[];\n match_re?: labels[];\n routes?: AlertmanagerRoute[];\n matchers?: string[];\n};\n\ntype RoutingLabelsByReceivers = {\n receiver: string;\n labels: { [key: string]: string };\n matchers: string[];\n};\n\ntype WebhookConfig = {\n url: string;\n};\n\ntype PagerDutyConfig = {\n routingKey?: string;\n serviceKey?: string;\n};\n\nexport type AlertmanagerReceiver = {\n name: string;\n webhookConfigs?: WebhookConfig[];\n pagerdutyConfigs?: PagerDutyConfig[];\n};\n\n// eslint-disable-next-line no-redeclare\nexport type AlertmanagerConfig = {\n global: { [key: string]: string };\n route: AlertmanagerRoute;\n receivers: AlertmanagerReceiver[];\n};\n\ntype RoutingLabelsProps = {\n data: RoutingLabelsByReceivers;\n};\n","import * as React from 'react';\nimport { useModal } from '@console/dynamic-plugin-sdk/src/lib-core';\nimport { CopyToClipboard } from '@console/internal/components/utils';\nimport { Modal } from '@console/shared/src/components/modal';\nimport { ModalComponent } from 'packages/console-dynamic-plugin-sdk/src/app/modal-support/ModalProvider';\n\nconst CopyCodeModal: CopyCodeModalComponent = ({ title, snippet, closeModal }) => (\n \n \n \n);\n\nexport const useCopyCodeModal: UseCopyCodeModal = (title, snippet) => {\n const launcher = useModal();\n return React.useCallback(() => (snippet ? launcher(CopyCodeModal, { title, snippet }) : null), [\n launcher,\n snippet,\n title,\n ]);\n};\n\ntype CopyCodeModalProps = { title: string; snippet: string };\ntype CopyCodeModalComponent = ModalComponent;\ntype UseCopyCodeModal = (title: string, snippet: string) => () => void;\n","export { default as DropdownWithSwitch } from './dropdown-with-switch/DropdownWithSwitch';\nexport { default as ResourceDropdown } from './ResourceDropdown';\n","import i18next from 'i18next';\nimport {\n MachineAWSPlacement,\n MachineKind,\n MachineSetKind,\n MachineDeploymentKind,\n NodeKind,\n} from '@console/internal/module/k8s';\nimport { getName } from './common';\n\nexport const getMachineRole = (obj: MachineKind | MachineSetKind | MachineDeploymentKind): string =>\n obj?.metadata?.labels?.['machine.openshift.io/cluster-api-machine-role'];\n\nexport const getMachineInstanceType = (obj: MachineKind): string =>\n obj?.metadata?.labels?.['machine.openshift.io/instance-type'];\n\nexport const getMachineRegion = (obj: MachineKind): string =>\n obj?.metadata?.labels?.['machine.openshift.io/region'];\n\nexport const getMachineZone = (obj: MachineKind): string =>\n obj?.metadata?.labels?.['machine.openshift.io/zone'];\n\n// Machine sets don't have the region and zone labels. Use `providerSpec` if set.\nexport const getMachineAWSPlacement = (\n machineSet: MachineSetKind | MachineDeploymentKind,\n): MachineAWSPlacement => machineSet?.spec?.template?.spec?.providerSpec?.value?.placement || {};\n\nexport const getMachineNodeName = (obj: MachineKind) => obj?.status?.nodeRef?.name;\n\nexport const getMachineNode = (machine: MachineKind, nodes: NodeKind[] = []): NodeKind =>\n nodes.find((node) => getMachineNodeName(machine) === getName(node));\n\nexport const getMachineAddresses = (machine: MachineKind) => machine?.status?.addresses;\n\nexport const getMachinePhase = (obj: MachineKind): string => {\n const phase = obj?.status?.phase;\n return phase === 'Running' ? i18next.t('console-shared~Provisioned as node') : phase;\n};\n","module.exports = __webpack_public_path__ + \"assets/public/imgs/logos/helm.svg\";","module.exports = __webpack_public_path__ + \"assets/public/imgs/logos/openshift.svg\";","import { k8sGet } from '@console/dynamic-plugin-sdk/src/utils/k8s';\nimport { BindableServicesModel } from './models';\nimport { BindableServiceGVK, BindableServicesKind } from './types';\n\ntype BindableServicesData = {\n bindableServices: BindableServiceGVK[];\n loaded: boolean;\n};\n\nconst bindableServicesData: BindableServicesData = {\n bindableServices: [],\n loaded: false,\n};\n\nexport const fetchBindableServices = async (): Promise => {\n bindableServicesData.loaded = false;\n try {\n const bindableService: BindableServicesKind = await k8sGet(\n BindableServicesModel,\n 'bindable-kinds',\n );\n bindableServicesData.bindableServices = bindableService.status ?? [];\n } catch (err) {\n // eslint-disable-next-line no-console\n console.warn('Error fetching bindable services', err);\n bindableServicesData.bindableServices = [];\n }\n bindableServicesData.loaded = true;\n return bindableServicesData.bindableServices;\n};\n\nexport const getBindableServicesList = () => {\n return bindableServicesData.bindableServices;\n};\n","// TODO(jtomasek): HOST_STATUS_READY is deprecated, remove its occurrences\n// once 'ready' status is replaced with 'available' in BMO\nexport const HOST_STATUS_READY = 'ready';\nexport const HOST_STATUS_AVAILABLE = 'available';\nexport const HOST_STATUS_UNMANAGED = 'unmanaged';\nexport const HOST_STATUS_OK = 'OK';\nexport const HOST_STATUS_ERROR = 'error';\nexport const HOST_STATUS_UNKNOWN = 'Unknown';\nexport const HOST_STATUS_EXTERNALLY_PROVISIONED = 'externally provisioned';\nexport const HOST_STATUS_PROVISIONED = 'provisioned';\nexport const HOST_STATUS_DEPROVISIONED = 'deprovisioned';\nexport const HOST_STATUS_REGISTERING = 'registering';\nexport const HOST_STATUS_INSPECTING = 'inspecting';\nexport const HOST_STATUS_PROVISIONING = 'provisioning';\nexport const HOST_STATUS_DEPROVISIONING = 'deprovisioning';\nexport const HOST_STATUS_MATCH_PROFILE = 'match profile';\nexport const HOST_STATUS_REGISTRATION_ERROR = 'registration error';\nexport const HOST_STATUS_INSPECTION_ERROR = 'inspection error';\nexport const HOST_STATUS_PROVISIONING_ERROR = 'provisioning error';\nexport const HOST_STATUS_POWER_MANAGEMENT_ERROR = 'power management error';\nexport const HOST_STATUS_DELETING = 'deleting';\n\nexport const HOST_POWER_STATUS_POWERED_ON = 'Powered on';\nexport const HOST_POWER_STATUS_POWERED_OFF = 'Powered off';\nexport const HOST_POWER_STATUS_POWERING_OFF = 'Powering off';\nexport const HOST_POWER_STATUS_POWERING_ON = 'Powering on';\n\n// NOTE(yaacov): HOST_STATUS_TITLE_KEYS translation keys.\n// t('metal3-plugin~Available')\n// t('metal3-plugin~OK')\n// t('metal3-plugin~Error')\n// t('metal3-plugin~Provisioned')\n// t('metal3-plugin~Externally provisioned')\n// t('metal3-plugin~Deprovisioned')\n// t('metal3-plugin~Registering')\n// t('metal3-plugin~Inspecting')\n// t('metal3-plugin~Provisioning')\n// t('metal3-plugin~Deprovisioning')\n// t('metal3-plugin~Registering')\n// t('metal3-plugin~Provisioned')\n// t('metal3-plugin~Registration error')\n// t('metal3-plugin~Inspection error')\n// t('metal3-plugin~Provisioning error')\n// t('metal3-plugin~Power Management Error'\n// t('metal3-plugin~Matching profile')\n// t('metal3-plugin~Deleting')\n// t('metal3-plugin~Unknown')\n// t('metal3-plugin~Unmanaged')\n\nexport const HOST_STATUS_TITLE_KEYS = {\n [HOST_STATUS_READY]: 'metal3-plugin~Available',\n [HOST_STATUS_AVAILABLE]: 'metal3-plugin~Available',\n [HOST_STATUS_OK]: 'metal3-plugin~OK',\n [HOST_STATUS_ERROR]: 'metal3-plugin~Error',\n [HOST_STATUS_PROVISIONED]: 'metal3-plugin~Provisioned',\n [HOST_STATUS_EXTERNALLY_PROVISIONED]: 'metal3-plugin~Externally provisioned',\n [HOST_STATUS_DEPROVISIONED]: 'metal3-plugin~Deprovisioned',\n [HOST_STATUS_REGISTERING]: 'metal3-plugin~Registering',\n [HOST_STATUS_INSPECTING]: 'metal3-plugin~Inspecting',\n [HOST_STATUS_PROVISIONING]: 'metal3-plugin~Provisioning',\n [HOST_STATUS_DEPROVISIONING]: 'metal3-plugin~Deprovisioning',\n [HOST_STATUS_REGISTRATION_ERROR]: 'metal3-plugin~Registration error',\n [HOST_STATUS_INSPECTION_ERROR]: 'metal3-plugin~Inspection error',\n [HOST_STATUS_PROVISIONING_ERROR]: 'metal3-plugin~Provisioning error',\n [HOST_STATUS_POWER_MANAGEMENT_ERROR]: 'metal3-plugin~Power Management Error',\n [HOST_STATUS_MATCH_PROFILE]: 'metal3-plugin~Matching profile',\n [HOST_STATUS_DELETING]: 'metal3-plugin~Deleting',\n [HOST_STATUS_UNKNOWN]: 'metal3-plugin~Unknown',\n [HOST_STATUS_UNMANAGED]: 'metal3-plugin~Unmanaged',\n};\n\n// NOTE(yaacov): HOST_STATUS_DESCRIPTION_KEYS translation keys.\n// t('metal3-plugin~The host is available to be provisioned as a node.')\n// t('metal3-plugin~The host is available to be provisioned as a node.')\n// t('metal3-plugin~The hardware details of the host are being collected. This will take a while. The host will become available when finished.')\n// t('metal3-plugin~An image is being written to the host's disk(s). This will take a while.\"')\n// t('metal3-plugin~The image is being wiped from the host's disk(s). This may take a while.')\n// t('metal3-plugin~The details for the host's BMC are either incorrect or incomplete therefore the host could not be managed.')\n// t('metal3-plugin~Collecting hardware details from the host failed.')\n// t('metal3-plugin~The image could not be written to the host.')\n// t('metal3-plugin~An error was found while trying to power the host either on or off.')\n// t('metal3-plugin~This host was provisioned outside of this cluster and added manually.')\n// t('metal3-plugin~Power operations cannot be performed on this host until Baseboard Management Controller (BMC) credentials are provided.')\n\nexport const HOST_STATUS_DESCRIPTION_KEYS = {\n [HOST_STATUS_READY]: 'metal3-plugin~The host is available to be provisioned as a node.',\n [HOST_STATUS_AVAILABLE]: 'metal3-plugin~The host is available to be provisioned as a node.',\n [HOST_STATUS_INSPECTING]:\n 'metal3-plugin~The hardware details of the host are being collected. This will take a while. The host will become available when finished.',\n [HOST_STATUS_PROVISIONING]:\n \"metal3-plugin~An image is being written to the host's disk(s). This will take a while.\",\n [HOST_STATUS_DEPROVISIONING]:\n \"metal3-plugin~The image is being wiped from the host's disk(s). This may take a while.\",\n [HOST_STATUS_REGISTRATION_ERROR]:\n \"metal3-plugin~The details for the host's BMC are either incorrect or incomplete therefore the host could not be managed.\",\n [HOST_STATUS_INSPECTION_ERROR]: 'metal3-plugin~Collecting hardware details from the host failed.',\n [HOST_STATUS_PROVISIONING_ERROR]: 'metal3-plugin~The image could not be written to the host.',\n [HOST_STATUS_POWER_MANAGEMENT_ERROR]:\n 'metal3-plugin~An error was found while trying to power the host either on or off.',\n [HOST_STATUS_EXTERNALLY_PROVISIONED]:\n 'metal3-plugin~This host was provisioned outside of this cluster and added manually.',\n [HOST_STATUS_UNMANAGED]:\n 'metal3-plugin~Power operations cannot be performed on this host until Baseboard Management Controller (BMC) credentials are provided.',\n};\n\nexport const HOST_REGISTERING_STATES = [\n HOST_STATUS_REGISTERING,\n HOST_STATUS_INSPECTING,\n HOST_STATUS_MATCH_PROFILE,\n];\n\nexport const HOST_PROVISIONING_STATES = [HOST_STATUS_PROVISIONING, HOST_STATUS_DEPROVISIONING];\n\nexport const HOST_ERROR_STATES = [\n HOST_STATUS_REGISTRATION_ERROR,\n HOST_STATUS_INSPECTION_ERROR,\n HOST_STATUS_PROVISIONING_ERROR,\n HOST_STATUS_POWER_MANAGEMENT_ERROR,\n HOST_STATUS_ERROR,\n];\n\nexport const HOST_WARN_STATES = [];\n\nexport const HOST_PROGRESS_STATES = [\n HOST_STATUS_INSPECTING,\n HOST_STATUS_PROVISIONING,\n HOST_STATUS_DEPROVISIONING,\n HOST_STATUS_REGISTERING,\n HOST_STATUS_MATCH_PROFILE,\n HOST_STATUS_DELETING,\n];\n\nexport const HOST_SUCCESS_STATES = [\n HOST_STATUS_READY,\n HOST_STATUS_AVAILABLE,\n HOST_STATUS_OK,\n HOST_STATUS_PROVISIONED,\n HOST_STATUS_EXTERNALLY_PROVISIONED,\n HOST_STATUS_DEPROVISIONED,\n];\n\nexport const HOST_INFO_STATES = [HOST_STATUS_UNMANAGED];\n\nexport const HOST_HARDWARE_ERROR_STATES = [HOST_STATUS_POWER_MANAGEMENT_ERROR];\n","import * as React from 'react';\nimport { ExtensionHook, ExtensionK8sKindVersionModel } from '../api/common-types';\nimport { ActionContext } from '../api/internal-types';\nimport { Extension, ExtensionDeclaration, CodeRef } from '../types';\nimport { AccessReviewResourceAttributes } from './console-types';\n\n/** ActionProvider contributes a hook that returns list of actions for specific context */\nexport type ActionProvider = ExtensionDeclaration<\n 'console.action/provider',\n {\n /** The context ID helps to narrow the scope of contributed actions to a particular area of the application. Ex - topology, helm */\n contextId: string | 'resource';\n /** A react hook which returns actions for the given scope.\n * If contextId = `resource` then the scope will always be a K8s resource object\n * */\n provider: CodeRef>;\n }\n>;\n\n/** ResourceActionProvider contributes a hook that returns list of actions for specific resource model */\nexport type ResourceActionProvider = ExtensionDeclaration<\n 'console.action/resource-provider',\n {\n /** The model for which this provider provides actions for. */\n model: ExtensionK8sKindVersionModel;\n /** A react hook which returns actions for the given resource model */\n provider: CodeRef>;\n }\n>;\n\n/** ActionGroup contributes an action group that can also be a submenu */\nexport type ActionGroup = ExtensionDeclaration<\n 'console.action/group',\n {\n /** ID used to identify the action section. */\n id: string;\n /** The label to display in the UI.\n * Required for submenus.\n * */\n label?: string;\n /** Whether this group should be displayed as submenu */\n submenu?: boolean;\n /** Insert this item before the item referenced here.\n * For arrays, the first one found in order is used.\n * */\n insertBefore?: string | string[];\n /** Insert this item after the item referenced here.\n * For arrays, the first one found in order is used.\n * insertBefore takes precedence.\n * */\n insertAfter?: string | string[];\n }\n>;\n\n/** ActionFilter can be used to filter an action */\nexport type ActionFilter = ExtensionDeclaration<\n 'console.action/filter',\n {\n /** The context ID helps to narrow the scope of contributed actions to a particular area of the application. Ex - topology, helm */\n contextId: string | 'resource';\n /** A function which will filter actions based on some conditions.\n * scope: The scope in which actions should be provided for.\n * Note: hook may be required if we want to remove the ModifyCount action from a deployment with HPA\n * */\n filter: CodeRef<(scope: any, action: Action) => boolean>;\n }\n>;\n\nexport type SupportedActionExtensions =\n | ActionProvider\n | ResourceActionProvider\n | ActionGroup\n | ActionFilter;\n\n// Type Guards\n\nexport const isActionProvider = (e: Extension): e is ActionProvider => {\n return e.type === 'console.action/provider';\n};\n\nexport const isResourceActionProvider = (e: Extension): e is ResourceActionProvider => {\n return e.type === 'console.action/resource-provider';\n};\n\nexport const isActionGroup = (e: Extension): e is ActionGroup => {\n return e.type === 'console.action/group';\n};\n\nexport const isActionFilter = (e: Extension): e is ActionFilter => {\n return e.type === 'console.action/filter';\n};\n\n// Support types\n\nexport type Action = {\n /** A unique identifier for this action. */\n id: string;\n /** The label to display in the UI. */\n label: React.ReactNode;\n /** Subtext for the menu item */\n description?: string;\n /** Executable callback or href.\n * External links should automatically provide an external link icon on action.\n * */\n cta: (() => void) | { href: string; external?: boolean };\n /** Whether the action is disabled. */\n disabled?: boolean;\n /** The tooltip for this action. */\n tooltip?: string;\n /** The disabled tooltip for this action. */\n disabledTooltip?: string;\n /** The icon for this action. */\n icon?: string | React.ReactNode;\n /** A `/` separated string where each segment denotes\n * Eg. `add-to-project`, `menu-1/menu-2`\n * */\n path?: string;\n /** Insert this item before the item referenced here.\n * For arrays, the first one found in order is used.\n * */\n insertBefore?: string | string[];\n /** Insert this item after the item referenced here.\n * For arrays, the first one found in order is used.\n * insertBefore takes precedence.\n * */\n insertAfter?: string | string[];\n /** Describes the access check to perform. */\n accessReview?: AccessReviewResourceAttributes;\n};\n\nexport type GroupedMenuOption = ActionGroup['properties'] & {\n children?: MenuOption[];\n};\n\nexport type MenuOption = Action | GroupedMenuOption;\n\nexport type ActionService = {\n actions: Action[];\n options: MenuOption[];\n loaded: boolean;\n error: any;\n};\n\nexport enum MenuOptionType {\n GROUP_MENU,\n SUB_MENU,\n ATOMIC_MENU,\n}\n\nexport type ActionServiceProviderProps = {\n context: ActionContext;\n children: (service: ActionService) => React.ReactNode;\n};\n","import * as React from 'react';\nimport { Extension, ExtensionDeclaration, CodeRef } from '../types';\nimport { AccessReviewResourceAttributes } from './console-types';\n\n/** This extension allows plugins to contribute an add action item to the add page of developer perspective.\n For example, a Serverless plugin can add a new action item for adding serverless functions\n to the add page of developer console. */\nexport type AddAction = ExtensionDeclaration<\n 'dev-console.add/action',\n {\n /** ID used to identify the action. */\n id: string;\n /** IDs used to identify the action groups the action would belong to. */\n groupId?: string;\n /** The label of the action */\n label: string;\n /** The description of the action. */\n description: string;\n /** The href to navigate to. */\n href?: string;\n /** A callback that performs an action on click */\n callback?: CodeRef<(props: Record) => void>;\n /** The perspective display icon. */\n icon?: CodeRef;\n /** Optional access review to control visibility / enablement of the action. */\n accessReview?: AccessReviewResourceAttributes[];\n }\n>;\n\n/** This extension allows plugins to contibute a group in the add page of developer console.\n Groups can be referenced by actions, which will be grouped together in the add action page based on their extension definition.\n For example, a Serverless plugin can contribute a Serverless group and together with multiple add actions. */\nexport type AddActionGroup = ExtensionDeclaration<\n 'dev-console.add/action-group',\n {\n /** ID used to identify the action group. */\n id: string;\n /** The title of the action group */\n name: string;\n /** ID of action group before which this group should be placed */\n insertBefore?: string;\n /** ID of action group after which this group should be placed */\n insertAfter?: string;\n /** The perspective display icon. */\n icon?: CodeRef | string;\n }\n>;\n\n// Type guards\n\nexport const isAddAction = (e: Extension): e is AddAction => {\n return e.type === 'dev-console.add/action';\n};\n\nexport const isAddActionGroup = (e: Extension): e is AddActionGroup => {\n return e.type === 'dev-console.add/action-group';\n};\n","import { K8sModel } from '../api/common-types';\nimport { CodeRef, Extension, ExtensionDeclaration } from '../types';\n\nexport type DetailsPageBreadCrumbsHook = (\n kind: K8sModel,\n urlMatch: any,\n) => { name: string; path: string }[];\n\nexport type DetailPageBreadCrumbs = ExtensionDeclaration<\n 'dev-console.detailsPage/breadcrumbs',\n {\n /**\n * array of models(kindObj) against which bread crumb is needed\n */\n getModels: CodeRef<() => K8sModel[] | K8sModel>;\n /**\n * returns breadcrumb for the given kindref\n */\n breadcrumbsProvider: CodeRef;\n }\n>;\n\n// Type guards\n\nexport const isDetailPageBreadCrumbs = (e: Extension): e is DetailPageBreadCrumbs =>\n e.type === 'dev-console.detailsPage/breadcrumbs';\n","import * as React from 'react';\nimport { ExtensionHook } from '../api/common-types';\nimport { Extension, ExtensionDeclaration, CodeRef } from '../types';\n\n/** This extension allows plugins to contribute a new type of catalog item. For example, a Helm plugin can define\n a new catalog item type as HelmCharts that it wants to contribute to the Developer Catalog. */\nexport type CatalogItemType = ExtensionDeclaration<\n 'console.catalog/item-type',\n {\n /** Type for the catalog item. */\n type: string;\n /** Title for the catalog item. */\n title: string;\n /** Description for the type specific catalog. */\n catalogDescription?: string | CodeRef;\n /** Description for the catalog item type. */\n typeDescription?: string;\n /** Custom filters specific to the catalog item. */\n filters?: CatalogItemAttribute[];\n /** Custom groupings specific to the catalog item. */\n groupings?: CatalogItemAttribute[];\n }\n>;\n\n/** This extension allows plugins to contribute extra metadata like custom filters or groupings for any catalog item type.\n For example, a plugin can attach a custom filter for HelmCharts that can filter based on chart provider. */\nexport type CatalogItemTypeMetadata = ExtensionDeclaration<\n 'console.catalog/item-type-metadata',\n {\n /** Type for the catalog item. */\n type: string;\n /** Custom filters specific to the catalog item. */\n filters?: CatalogItemAttribute[];\n /** Custom groupings specific to the catalog item. */\n groupings?: CatalogItemAttribute[];\n }\n>;\n\n/** This extension allows plugins to contribute a provider for a catalog item type. For example, a Helm Plugin can add a provider\n that fetches all the Helm Charts. This extension can also be used by other plugins to add more items to a specific catalog item type. */\nexport type CatalogItemProvider = ExtensionDeclaration<\n 'console.catalog/item-provider',\n {\n /** The unique identifier for the catalog this provider contributes to. */\n catalogId: string | string[];\n /** Type ID for the catalog item type. */\n type: string;\n /** Title for the catalog item provider */\n title: string;\n /** Fetch items and normalize it for the catalog. Value is a react effect hook. */\n provider: CodeRef>;\n /** Priority for this provider. Defaults to 0. Higher priority providers may override catalog\n items provided by other providers. */\n priority?: number;\n }\n>;\n\n/** This extension can be used for plugins to contribute a handler that can filter specific catalog items.\n For example, the plugin can contribute a filter that filters helm charts from specific provider. */\nexport type CatalogItemFilter = ExtensionDeclaration<\n 'console.catalog/item-filter',\n {\n /** The unique identifier for the catalog this provider contributes to. */\n catalogId: string | string[];\n /** Type ID for the catalog item type. */\n type: string;\n /** Filters items of a specific type. Value is a function that takes CatalogItem[] and returns a subset based on the filter criteria. */\n filter: CodeRef<(item: CatalogItem) => boolean>;\n }\n>;\n\n/** This extension can be used to contribute a provider that adds extra metadata to specific catalog items. */\nexport type CatalogItemMetadataProvider = ExtensionDeclaration<\n 'console.catalog/item-metadata',\n {\n /** The unique identifier for the catalog this provider contributes to. */\n catalogId: string | string[];\n /** Type ID for the catalog item type. */\n type: string;\n /** A hook which returns a function that will be used to provide metadata to catalog items of a specific type. */\n provider: CodeRef<\n ExtensionHook\n >;\n }\n>;\n\nexport type SupportedCatalogExtensions =\n | CatalogItemType\n | CatalogItemTypeMetadata\n | CatalogItemProvider\n | CatalogItemFilter\n | CatalogItemMetadataProvider;\n\n// Type guards\n\nexport const isCatalogItemType = (e: Extension): e is CatalogItemType => {\n return e.type === 'console.catalog/item-type';\n};\n\nexport const isCatalogItemTypeMetadata = (e: Extension): e is CatalogItemTypeMetadata => {\n return e.type === 'console.catalog/item-type-metadata';\n};\n\nexport const isCatalogItemProvider = (e: Extension): e is CatalogItemProvider => {\n return e.type === 'console.catalog/item-provider';\n};\n\nexport const isCatalogItemFilter = (e: Extension): e is CatalogItemFilter => {\n return e.type === 'console.catalog/item-filter';\n};\n\nexport const isCatalogItemMetadataProvider = (e: Extension): e is CatalogItemMetadataProvider => {\n return e.type === 'console.catalog/item-metadata';\n};\n\n// Support types\n\nexport type CatalogExtensionHookOptions = {\n namespace: string;\n};\n\nexport type CatalogItem = {\n uid: string;\n type: string;\n typeLabel?: string | React.ReactNode;\n name: string;\n /** Optional title to render a custom title using ReactNode.\n * Rendered in catalog tile and side panel\n * */\n title?: React.ReactNode;\n // Used as the second label next to the provider label in the list result.\n secondaryLabel?: React.ReactNode;\n provider?: string;\n // Used as the tile description. If provided as a string, the description is truncated to 3 lines.\n // If provided as a ReactNode, the contents will not be truncated.\n // This description will also be shown in the side panel if there are no `details.descriptions`.\n description?: string | React.ReactNode;\n tags?: string[];\n creationTimestamp?: string;\n supportUrl?: string;\n documentationUrl?: string;\n attributes?: {\n [key: string]: any;\n };\n cta?: {\n label: string;\n href?: string;\n callback?: (props?: any) => void;\n };\n icon?: {\n url?: string;\n class?: string;\n node?: React.ReactNode;\n };\n details?: CatalogItemDetails;\n // Optional text only badges for the catalog item which will be rendered on the tile and details panel.\n badges?: CatalogItemBadge[];\n // Optional data attached by the provider.\n // May be consumed by filters.\n // `data` for each `type` of CatalogItem should implement the same interface.\n data?: T;\n};\n\nexport type CatalogItemDetails = {\n properties?: CatalogItemDetailsProperty[];\n descriptions?: CatalogItemDetailsDescription[];\n};\n\nexport type CatalogItemDetailsProperty = {\n label: string;\n value: string | React.ReactNode;\n isHidden?: boolean;\n};\n\nexport type CatalogItemDetailsDescription = {\n label?: string;\n value: string | React.ReactNode;\n};\n\nexport type CatalogItemAttribute = {\n label: string;\n attribute: string;\n description?: string;\n};\n\nexport type CatalogItemBadge = {\n text: string;\n color?: 'blue' | 'cyan' | 'green' | 'orange' | 'purple' | 'red' | 'grey';\n icon?: React.ReactNode;\n variant?: 'outline' | 'filled';\n};\n\nexport type CatalogItemMetadataProviderFunction = (\n item: CatalogItem,\n) =>\n | {\n tags?: string[];\n badges?: CatalogItemBadge[];\n attributes?: {\n [key: string]: any;\n };\n }\n | undefined;\n","import * as React from 'react';\nimport { JSONSchema7Type } from 'json-schema';\nimport { Extension, ExtensionDeclaration, CodeRef } from '../types';\nimport { AccessReviewResourceAttributes } from './console-types';\n\nexport type Resource = {\n /** Resource API group and version */\n api: string;\n /** Resource kind */\n kind: string;\n /** Resource name, or namespace and name for namespaced-scoped resources */\n resource: {\n metadata: {\n namespace?: string;\n name: string;\n };\n };\n};\n\nexport type Path = string;\n\nexport type ClusterConfigurationFieldProps = {\n readonly: boolean;\n};\n\nexport enum ClusterConfigurationFieldType {\n text = 'text',\n checkbox = 'checkbox',\n dropdown = 'dropdown',\n custom = 'custom',\n}\n\nexport type ClusterConfigurationTextField = {\n type: ClusterConfigurationFieldType.text;\n defaultValue?: string;\n /**\n * Update operation that is used to save the latest text value.\n * If `update.patch.value` is not defined the text value will be used.\n * If `update.patch.value` is defined is must be a string, object or array.\n * The text value will be automatically inserted into the placeholder `$value`.\n */\n resource: Resource;\n path: Path;\n};\n\nexport type ClusterConfigurationCheckboxFieldValue = string | number | boolean;\n\nexport type ClusterConfigurationCheckboxField = {\n type: ClusterConfigurationFieldType.checkbox;\n defaultValue?: ClusterConfigurationCheckboxFieldValue;\n trueValue?: ClusterConfigurationCheckboxFieldValue;\n falseValue?: ClusterConfigurationCheckboxFieldValue;\n /**\n * A patch operation that is used to save if the checkbox is checked.\n * if `update.patch.value` is not defined a true (boolean) is automatically set.\n * If `update.patch.value` is defined is must be a string, object or array.\n * The text value will be automatically inserted into the placeholder `$value`.\n */\n resource: Resource;\n path: Path;\n};\n\nexport type ClusterConfigurationDropdownFieldValue = string;\n\nexport type ClusterConfigurationDropdownField = {\n type: ClusterConfigurationFieldType.dropdown;\n defaultValue?: ClusterConfigurationDropdownFieldValue;\n options: {\n value: ClusterConfigurationDropdownFieldValue;\n label: string;\n description?: string;\n }[];\n /**\n * A patch operation that is used to save if the checkbox is checked.\n * if `update.patch.value` is not defined a true (boolean) is automatically set.\n * If `update.patch.value` is defined is must be a string, object or array.\n * The text value will be automatically inserted into the placeholder `$value`.\n */\n resource: Resource;\n path: Path;\n};\n\nexport type ClusterConfigurationCustomField = {\n type: ClusterConfigurationFieldType.custom;\n component: CodeRef>;\n props?: { [key: string]: JSONSchema7Type };\n};\n\nexport type ClusterConfigurationField = ClusterConfigurationCustomField;\n\nexport type ClusterConfigurationGroup = ExtensionDeclaration<\n 'console.cluster-configuration/group',\n {\n /** ID used to identify the cluster configuration group. */\n id: string;\n /** The label of the cluster configuration group. */\n label: string;\n /** ID of cluster configuration group before which this group should be placed. */\n insertBefore?: string;\n /** ID of cluster configuration group after which this group should be placed. */\n insertAfter?: string;\n }\n>;\n\nexport type ClusterConfigurationItem = ExtensionDeclaration<\n 'console.cluster-configuration/item',\n {\n /** ID used to identify the cluster configuration item and referenced in insertAfter and insertBefore to define the item order. */\n id: string;\n /** IDs used to identify the cluster configuration groups the item would belong to. */\n groupId: string;\n /** The label of the cluster configuration */\n label: string;\n /** The description of the cluster configuration. */\n description: string;\n /** The UI field configuration to render input field or custom components that allow the user to change the cluster configuration. */\n field: ClusterConfigurationField;\n /** ID of cluster configuration item before which this item should be placed. */\n insertBefore?: string;\n /** ID of cluster configuration item after which this item should be placed. */\n insertAfter?: string;\n /**\n * Optional list of resources that are neccessary to render the input field with the current configuration state.\n * If the user has not access to all required fields the input field is not rendered at all.\n */\n readAccessReview?: AccessReviewResourceAttributes[];\n /**\n * Optional list of resources that are neccessary to update the configuration.\n * If The user has access to all readAccessReview resources, but not all writeAccessReview the input field is rendered read-only.\n */\n writeAccessReview?: AccessReviewResourceAttributes[];\n }\n>;\n\n// Type guards\n\nexport const isClusterConfigurationGroup = (e: Extension): e is ClusterConfigurationGroup => {\n return e.type === 'console.cluster-configuration/group';\n};\n\nexport const isClusterConfigurationItem = (e: Extension): e is ClusterConfigurationItem => {\n return e.type === 'console.cluster-configuration/item';\n};\n","import * as React from 'react';\nimport { OverviewDetailItemProps } from '@openshift-console/plugin-shared/src';\nimport { CodeRef, Extension, ExtensionDeclaration } from '../types';\nimport { Humanize, TopConsumerPopoverProps, QueryWithDescription } from './console-types';\n\n/** Adds a new inventory item into cluster overview page. */\nexport type ClusterOverviewInventoryItem = ExtensionDeclaration<\n 'console.cluster-overview/inventory-item',\n {\n /** The component to be rendered. */\n component: CodeRef;\n }\n>;\n\nexport type GetQuery = (nodeType: string[]) => string;\nexport type GetMultilineQueries = (nodeType: string[]) => QueryWithDescription[];\n\n/** Adds a new cluster overview utilization item. */\nexport type ClusterOverviewUtilizationItem = ExtensionDeclaration<\n 'console.cluster-overview/utilization-item',\n {\n /** The title of the utilization item. */\n title: string;\n /** Prometheus utilization query. */\n getUtilizationQuery: CodeRef;\n /** Convert prometheus data to human readable form. */\n humanize: CodeRef;\n /** Prometheus total query. */\n getTotalQuery?: CodeRef;\n /** Prometheus request query. */\n getRequestQuery?: CodeRef;\n /** Prometheus limit query. */\n getLimitQuery?: CodeRef;\n /** Shows Top consumer popover instead of plain value */\n TopConsumerPopover?: CodeRef>;\n }\n>;\n\n/** Adds a new cluster overview multiline utilization item. */\nexport type ClusterOverviewMultilineUtilizationItem = ExtensionDeclaration<\n 'console.cluster-overview/multiline-utilization-item',\n {\n /** The title of the utilization item. */\n title: string;\n /** Prometheus utilization query. */\n getUtilizationQueries: CodeRef;\n /** Convert prometheus data to human readable form. */\n humanize: CodeRef;\n /** Shows Top consumer popover instead of plain value */\n TopConsumerPopovers?: CodeRef[]>;\n }\n>;\n\n/**\n * @deprecated use CustomOverviewDetailItem type instead\n */\nexport type OverviewDetailItem = ExtensionDeclaration<\n 'console.dashboards/overview/detail/item',\n {\n /** The value, based on the DetailItem component */\n component: CodeRef;\n }\n>;\n\n/** Adds an item to the Details card of Overview Dashboard */\nexport type CustomOverviewDetailItem = ExtensionDeclaration<\n 'console.dashboards/custom/overview/detail/item',\n Omit & {\n /** The value, rendered by the OverviewDetailItem component */\n component: CodeRef;\n /** Function returning the loading state of the component */\n isLoading?: CodeRef<() => boolean>;\n /** Function returning errors to be displayed by the component */\n error?: CodeRef<() => string>;\n }\n>;\n\n// Type guards\n\nexport const isClusterOverviewInventoryItem = (e: Extension): e is ClusterOverviewInventoryItem =>\n e.type === 'console.cluster-overview/inventory-item';\n\nexport const isClusterOverviewUtilizationItem = (\n e: Extension,\n): e is ClusterOverviewUtilizationItem => e.type === 'console.cluster-overview/utilization-item';\n\nexport const isClusterOverviewMultilineUtilizationItem = (\n e: Extension,\n): e is ClusterOverviewMultilineUtilizationItem =>\n e.type === 'console.cluster-overview/multiline-utilization-item';\n\nexport const isOverviewDetailItem = (e: Extension): e is OverviewDetailItem =>\n e.type === 'console.dashboards/overview/detail/item';\n\nexport const isCustomOverviewDetailItem = (e: Extension): e is CustomOverviewDetailItem =>\n e.type === 'console.dashboards/custom/overview/detail/item';\n","import { Provider } from 'react';\nimport { Extension, ExtensionDeclaration, CodeRef } from '../types';\n\n/** Adds new React context provider to Console application root. */\nexport type ContextProvider = ExtensionDeclaration<\n 'console.context-provider',\n {\n /** Context Provider component. */\n provider: CodeRef>;\n /** Hook for the Context value. */\n useValueHook: CodeRef<() => T>;\n }\n>;\n\n// Type guards\n\nexport const isContextProvider = (e: Extension): e is ContextProvider =>\n e.type === 'console.context-provider';\n","import { ExtensionK8sModel } from '../api/common-types';\nimport { CodeRef, Extension, ExtensionDeclaration } from '../types';\n\n/** Properties of custom CreateResource component. */\nexport type CreateResourceComponentProps = { namespace?: string };\n\n/** This extension allows plugins to provide a custom component (ie wizard or form) for specific resources,\n which will be rendered, when users try to create a new resource instance. */\nexport type CreateResource = ExtensionDeclaration<\n 'console.resource/create',\n {\n /** The model for which this create resource page will be rendered. */\n model: ExtensionK8sModel;\n /** The component to be rendered when the model matches */\n component: CodeRef>;\n }\n>;\n\n// Type guards\n\nexport const isCreateResource = (e: Extension): e is CreateResource =>\n e.type === 'console.resource/create';\n","import { K8sModel } from '../api/common-types';\nimport { Extension, ExtensionDeclaration, CodeRef, ResolvedExtension } from '../types';\nimport {\n K8sResourceCommon,\n PrometheusResponse,\n ResourcesObject,\n StatusGroupMapper,\n WatchK8sResources,\n WatchK8sResults,\n FirehoseResource,\n FirehoseResult,\n} from './console-types';\nimport {\n CardSpan,\n GetOperatorsWithStatuses,\n K8sActivityProps,\n OperatorRowProps,\n PrometheusActivityProps,\n PrometheusHealthHandler,\n PrometheusHealthPopupProps,\n ResourceHealthHandler,\n URLHealthHandler,\n} from './dashboard-types';\n\n/** Adds a new dashboard tab, placed after the Overview tab. */\nexport type DashboardsTab = ExtensionDeclaration<\n 'console.dashboards/tab',\n {\n /** A unique tab identifier, used as tab link `href` and when adding cards to this tab. */\n id: string;\n /** NavSection to which the tab belongs to */\n navSection: 'home' | 'storage';\n /** The title of the tab. */\n title: string;\n }\n>;\n\n/** Adds a new dashboard card. */\nexport type DashboardsCard = ExtensionDeclaration<\n 'console.dashboards/card',\n {\n /** The id of the dashboard tab to which the card will be added. */\n tab: string;\n /** The grid position of the card on the dashboard. */\n position: 'LEFT' | 'RIGHT' | 'MAIN';\n /** Dashboard card component. */\n component: CodeRef;\n /** Card's vertical span in the column. Ignored for small screens, defaults to 12. */\n span?: CardSpan;\n }\n>;\n\n/** Adds a health subsystem to the status card of Overview dashboard where the source of status is Prometheus. */\nexport type DashboardsOverviewHealthPrometheusSubsystem = ExtensionDeclaration<\n 'console.dashboards/overview/health/prometheus',\n {\n /** The display name of the subsystem. */\n title: string;\n /** The Prometheus queries */\n queries: string[];\n /** Resolve the subsystem's health. */\n healthHandler: CodeRef;\n /** Additional resource which will be fetched and passed to `healthHandler`. */\n additionalResource?: CodeRef;\n /** Loader for popup content. If defined, a health item will be represented as a link which opens popup with given content. */\n popupComponent?: CodeRef>;\n /** The title of the popover. */\n popupTitle?: string;\n /** Optional classname for the popup top-level component. */\n popupClassname?: string;\n /** If true, the popup will stay open when clicked outside of its boundary. Default: false */\n popupKeepOnOutsideClick?: boolean;\n /** Control plane topology for which the subsystem should be hidden. */\n disallowedControlPlaneTopology?: string[];\n }\n>;\n\n/** Adds a health subsystem to the status card of Overview dashboard where the source of status is a K8s REST API. */\nexport type DashboardsOverviewHealthURLSubsystem<\n T = any,\n R extends K8sResourceCommon | K8sResourceCommon[] = K8sResourceCommon | K8sResourceCommon[]\n> = ExtensionDeclaration<\n 'console.dashboards/overview/health/url',\n {\n /** The display name of the subsystem. */\n title: string;\n /** The URL to fetch data from. It will be prefixed with base k8s URL. */\n url: string;\n /** Resolve the subsystem's health. */\n healthHandler: CodeRef>;\n /** Additional resource which will be fetched and passed to `healthHandler`. */\n additionalResource?: CodeRef;\n /** Loader for popup content. If defined, a health item will be represented as a link which opens popup with given content. */\n popupComponent?: CodeRef<\n React.ComponentType<{\n healthResult?: T;\n healthResultError?: any;\n k8sResult?: FirehoseResult;\n }>\n >;\n /** The title of the popover. */\n popupTitle?: string;\n }\n>;\n\n/** Adds a health subsystem to the status card of Overview dashboard where the source of status is a K8s Resource. */\nexport type DashboardsOverviewHealthResourceSubsystem<\n T extends ResourcesObject = ResourcesObject\n> = ExtensionDeclaration<\n 'console.dashboards/overview/health/resource',\n {\n /** The display name of the subsystem. */\n title: string;\n /** Kubernetes resources which will be fetched and passed to `healthHandler`. */\n resources: CodeRef>;\n /** Resolve the subsystem's health. */\n healthHandler: CodeRef>;\n /** Loader for popup content. If defined, a health item will be represented as a link which opens popup with given content. */\n popupComponent?: CodeRef>;\n /** The title of the popover. */\n popupTitle?: string;\n }\n>;\n\n/** Adds a health subsystem to the status card of Overview dashboard where the source of status is a K8s REST API. */\nexport type DashboardsOverviewHealthOperator<\n T extends K8sResourceCommon = K8sResourceCommon\n> = ExtensionDeclaration<\n 'console.dashboards/overview/health/operator',\n {\n /** Title of operators section in the popup. */\n title: string;\n /** Kubernetes resources which will be fetched and passed to `healthHandler`. */\n resources: CodeRef;\n /** Resolves status for the operators. */\n getOperatorsWithStatuses?: CodeRef>;\n /** Loader for popup row component. */\n operatorRowLoader?: CodeRef>>;\n /** Links to all resources page. If not provided then a list page of the first resource from resources prop is used. */\n viewAllLink?: string;\n }\n>;\n\n/** Adds an inventory status group. */\nexport type DashboardsInventoryItemGroup = ExtensionDeclaration<\n 'console.dashboards/overview/inventory/item/group',\n {\n /** The id of the status group. */\n id: string;\n /** React component representing the status group icon. */\n icon: CodeRef;\n }\n>;\n\n/** Adds a resource tile to the overview inventory card. */\nexport type DashboardsOverviewInventoryItem<\n T extends K8sModel = K8sModel,\n R extends { [key: string]: K8sResourceCommon[] } = { [key: string]: K8sResourceCommon[] }\n> = ExtensionDeclaration<\n 'console.dashboards/overview/inventory/item',\n DashboardsOverviewInventoryItemProperties & {}\n>;\n\n/** Replaces an overview inventory card. */\nexport type DashboardsOverviewInventoryItemReplacement<\n T extends K8sModel = K8sModel,\n R extends { [key: string]: K8sResourceCommon[] } = { [key: string]: K8sResourceCommon[] }\n> = ExtensionDeclaration<\n 'console.dashboards/overview/inventory/item/replacement',\n DashboardsOverviewInventoryItemProperties & {}\n>;\n\n/** Adds a resource tile to the project overview inventory card. */\nexport type DashboardsProjectOverviewInventoryItem<\n T extends K8sModel = K8sModel,\n R extends { [key: string]: K8sResourceCommon[] } = { [key: string]: K8sResourceCommon[] }\n> = ExtensionDeclaration<\n 'console.dashboards/project/overview/item',\n DashboardsOverviewInventoryItemProperties & {}\n>;\n\n/** Adds an activity to the Activity Card of Overview Dashboard where the triggering of activity is based on watching a K8s resource. */\nexport type DashboardsOverviewResourceActivity<\n T extends K8sResourceCommon = K8sResourceCommon\n> = ExtensionDeclaration<\n 'console.dashboards/overview/activity/resource',\n {\n /** The utilization item to be replaced. */\n k8sResource: CodeRef;\n /** Function which determines if the given resource represents the action. If not defined, every resource represents activity. */\n isActivity?: CodeRef<(resource: T) => boolean>;\n /** Timestamp for the given action, which will be used for ordering. */\n getTimestamp?: CodeRef<(resource: T) => Date>;\n /** The action component. */\n component: CodeRef>>;\n }\n>;\n\n/** Adds an activity to the Activity Card of Prometheus Overview Dashboard where the triggering of activity is based on watching a K8s resource. */\nexport type DashboardsOverviewPrometheusActivity = ExtensionDeclaration<\n 'console.dashboards/overview/prometheus/activity/resource',\n {\n /** Queries to watch */\n queries: string[];\n /** Function which determines if the given resource represents the action. If not defined, every resource represents activity. */\n isActivity?: CodeRef<(results: PrometheusResponse[]) => boolean>;\n /** The action component. */\n component: CodeRef>;\n }\n>;\n\n// Type guards\n\nexport const isDashboardsTab = (e: Extension): e is DashboardsTab =>\n e.type === 'console.dashboards/tab';\n\nexport const isDashboardsCard = (e: Extension): e is DashboardsCard =>\n e.type === 'console.dashboards/card';\n\nexport const isDashboardsOverviewHealthPrometheusSubsystem = (\n e: Extension,\n): e is DashboardsOverviewHealthPrometheusSubsystem =>\n e.type === 'console.dashboards/overview/health/prometheus';\n\nexport const isResolvedDashboardsOverviewHealthPrometheusSubsystem = (\n e: Extension,\n): e is ResolvedExtension =>\n e.type === 'console.dashboards/overview/health/prometheus';\n\nexport const isDashboardsOverviewHealthURLSubsystem = (\n e: Extension,\n): e is DashboardsOverviewHealthURLSubsystem => e.type === 'console.dashboards/overview/health/url';\n\nexport const isResolvedDashboardsOverviewHealthURLSubsystem = (\n e: Extension,\n): e is ResolvedExtension =>\n e.type === 'console.dashboards/overview/health/url';\n\nexport const isDashboardsOverviewHealthResourceSubsystem = (\n e: Extension,\n): e is DashboardsOverviewHealthResourceSubsystem =>\n e.type === 'console.dashboards/overview/health/resource';\n\nexport const isResolvedDashboardsOverviewHealthResourceSubsystem = (\n e: Extension,\n): e is ResolvedExtension =>\n e.type === 'console.dashboards/overview/health/resource';\n\nexport const isDashboardsOverviewHealthOperator = (\n e: Extension,\n): e is DashboardsOverviewHealthOperator =>\n e.type === 'console.dashboards/overview/health/operator';\n\nexport const isResolvedDashboardsOverviewHealthOperator = (\n e: Extension,\n): e is ResolvedExtension =>\n e.type === 'console.dashboards/overview/health/operator';\n\nexport const isDashboardsInventoryItemGroup = (e: Extension): e is DashboardsInventoryItemGroup =>\n e.type === 'console.dashboards/overview/inventory/item/group';\n\nexport const isDashboardsOverviewInventoryItem = (\n e: Extension,\n): e is DashboardsOverviewInventoryItem => e.type === 'console.dashboards/overview/inventory/item';\n\nexport const isDashboardsOverviewInventoryItemReplacement = (\n e: Extension,\n): e is DashboardsOverviewInventoryItemReplacement =>\n e.type === 'console.dashboards/overview/inventory/item/replacement';\n\nexport const isDashboardsProjectOverviewInventoryItem = (\n e: Extension,\n): e is DashboardsProjectOverviewInventoryItem =>\n e.type === 'console.dashboards/project/overview/item';\n\nexport const isDashboardsOverviewResourceActivity = (\n e: Extension,\n): e is DashboardsOverviewResourceActivity =>\n e.type === 'console.dashboards/overview/activity/resource';\n\nexport const isDashboardsOverviewPrometheusActivity = (\n e: Extension,\n): e is DashboardsOverviewPrometheusActivity =>\n e.type === 'console.dashboards/overview/prometheus/activity/resource';\n\nexport type DashboardsOverviewHealthSubsystem =\n | DashboardsOverviewHealthURLSubsystem\n | DashboardsOverviewHealthPrometheusSubsystem\n | DashboardsOverviewHealthResourceSubsystem\n | DashboardsOverviewHealthOperator;\n\nexport const isDashboardsOverviewHealthSubsystem = (\n e: Extension,\n): e is DashboardsOverviewHealthSubsystem =>\n isDashboardsOverviewHealthURLSubsystem(e) ||\n isDashboardsOverviewHealthPrometheusSubsystem(e) ||\n isDashboardsOverviewHealthResourceSubsystem(e) ||\n isDashboardsOverviewHealthOperator(e);\n\ntype DashboardsOverviewInventoryItemProperties<\n T extends K8sModel = K8sModel,\n R extends { [key: string]: K8sResourceCommon[] } = { [key: string]: K8sResourceCommon[] }\n> = {\n /** The model for `resource` which will be fetched. Used to get the model's `label` or `abbr`. */\n model: CodeRef;\n /** Function which maps various statuses to groups. */\n mapper?: CodeRef>;\n /** Additional resources which will be fetched and passed to the `mapper` function. */\n additionalResources?: CodeRef>;\n};\n","import { Extension, ExtensionDeclaration, CodeRef } from '../types';\n\n/** This extension can be used to provide a handler for the file drop action on specific file extensions. */\nexport type FileUpload = ExtensionDeclaration<\n 'console.file-upload',\n {\n /** Supported file extensions. */\n fileExtensions: string[];\n /** Function which handles the file drop action. */\n handler: CodeRef;\n }\n>;\n\n// Type guards\n\nexport const isFileUpload = (e: Extension): e is FileUpload => e.type === 'console.file-upload';\n\n// Support types\n\nexport type FileUploadHandler = (file: File, namespace: string) => void;\n","import { Extension, ExtensionDeclaration } from '../types';\n\nexport type ImageEnvironment = {\n /** Environment variable key */\n key: string;\n /** The input field's label */\n label: string;\n /** Default value to use as a placeholder */\n defaultValue?: string;\n /** Description of the environment variable */\n description?: string;\n};\n\n/** This extension can be used to specify extra build environment variable fields under the builder image selector\n in the dev console git import form. When set, the fields will override environment variables\n of the same name in the build section. */\nexport type ImportEnvironment = ExtensionDeclaration<\n 'dev-console.import/environment',\n {\n /** Name of the image stream to provide custom environment variables for */\n imageStreamName: string;\n /** List of supported image stream tags */\n imageStreamTags: string[];\n /** List of environment variables */\n environments: ImageEnvironment[];\n }\n>;\n\n// Type guards\n\nexport const isImportEnvironment = (e: Extension): e is ImportEnvironment => {\n return e.type === 'dev-console.import/environment';\n};\n","import { ExtensionK8sModel } from '../api/common-types';\nimport { Extension, ExtensionDeclaration } from '../types';\n\ntype NavItemProperties = {\n /** A unique identifier for this item. */\n id: string;\n /** The perspective ID to which this item belongs to. If not specified, contributes to the default perspective. */\n perspective?: string;\n /** Navigation section to which this item belongs to. If not specified, render this item as a top level link. */\n section?: string;\n /** Adds data attributes to the DOM. */\n dataAttributes?: { [key: string]: string };\n /** Mark this item as active when the URL starts with one of these paths. */\n startsWith?: string[];\n /** Insert this item before the item referenced here. For arrays, the first one found in order is used. */\n insertBefore?: string | string[];\n /** Insert this item after the item referenced here. For arrays, the first one found in order is used. `insertBefore` takes precedence. */\n insertAfter?: string | string[];\n};\n\nexport type NavItem = ExtensionDeclaration<\n 'console.navigation/href',\n NavItemProperties & {\n name: string;\n }\n>;\n\n/** This extension can be used to contribute a navigation item that points to a specific link in the UI. */\nexport type HrefNavItem = ExtensionDeclaration<\n 'console.navigation/href',\n NavItemProperties & {\n /** The name of this item. */\n name: string;\n /** The link href value. */\n href: string;\n /** if true, adds /ns/active-namespace to the end */\n namespaced?: boolean;\n /** if true, adds /k8s/ns/active-namespace to the begining */\n prefixNamespaced?: boolean;\n }\n>;\n\n/** This extension can be used to contribute a navigation item that points to a namespaced resource details page.\n The K8s model of that resource can be used to define the navigation item. */\nexport type ResourceNSNavItem = ExtensionDeclaration<\n 'console.navigation/resource-ns',\n NavItemProperties & {\n /** Overrides the default name. If not supplied the name of the link will equal the plural value of the model. */\n name?: string;\n /** The model for which this nav item links to. */\n model: ExtensionK8sModel;\n }\n>;\n\n/** This extension can be used to contribute a navigation item that points to a cluster resource details page.\n The K8s model of that resource can be used to define the navigation item. */\nexport type ResourceClusterNavItem = ExtensionDeclaration<\n 'console.navigation/resource-cluster',\n NavItemProperties & {\n /** Overrides the default name. If not supplied the name of the link will equal the plural value of the model. */\n name?: string;\n /** The model for which this nav item links to. */\n model: ExtensionK8sModel;\n }\n>;\n\n/** This extension can be used to add a separator between navigation items in the navigation. */\nexport type Separator = ExtensionDeclaration<\n 'console.navigation/separator',\n Omit\n>;\n\n/** This extension can be used to define a new section of navigation items in the navigation tab. */\nexport type NavSection = ExtensionDeclaration<\n 'console.navigation/section',\n Omit & {\n /** Name of this section. If not supplied, only a separator will be shown above the section. */\n name?: string;\n }\n>;\n\nexport type ResourceNavItem = ResourceClusterNavItem | ResourceNSNavItem;\n\nexport type NavExtension =\n | NavSection\n | Separator\n | HrefNavItem\n | ResourceNSNavItem\n | ResourceClusterNavItem;\n\n// Type guards\n\nexport const isHrefNavItem = (e: Extension): e is HrefNavItem =>\n e.type === 'console.navigation/href';\n\nexport const isResourceNSNavItem = (e: Extension): e is ResourceNSNavItem =>\n e.type === 'console.navigation/resource-ns';\n\nexport const isResourceClusterNavItem = (e: Extension): e is ResourceClusterNavItem =>\n e.type === 'console.navigation/resource-cluster';\n\nexport const isResourceNavItem = (e: Extension): e is ResourceNavItem =>\n isResourceNSNavItem(e) || isResourceClusterNavItem(e);\n\nexport const isSeparator = (e: Extension): e is Separator =>\n e.type === 'console.navigation/separator';\n\nexport const isNavSection = (e: Extension): e is NavSection =>\n e.type === 'console.navigation/section';\n\nexport const isNavItem = (e: Extension): e is NavItem =>\n isHrefNavItem(e) || isResourceNSNavItem(e) || isResourceClusterNavItem(e);\n\nexport const isNavItemOrSeparator = (e: Extension): e is NavItem | Separator =>\n isNavItem(e) || isSeparator(e);\n\nexport const isNavExtension = (e: Extension): e is NavExtension =>\n isNavItem(e) || isSeparator(e) || isNavSection(e);\n","import { Alert } from '../api/common-types';\nimport { LaunchModal } from '../app/modal-support/ModalProvider';\nimport { Extension, ExtensionDeclaration, CodeRef } from '../types';\n\n/** This extension can be used to trigger a specific action when a specific Prometheus alert is observed by the Console based on its `rule.name` value. */\nexport type AlertAction = ExtensionDeclaration<\n 'console.alert-action',\n {\n /** Alert name as defined by `alert.rule.name` property */\n alert: string;\n /** Action text */\n text: string;\n /** Function to perform side effect */\n action: CodeRef<(alert: Alert, launchModal: LaunchModal) => void>;\n }\n>;\n\nexport const isAlertAction = (e: Extension): e is AlertAction => e.type === 'console.alert-action';\n","import { ExtensionK8sGroupKindModel, ExtensionK8sModel } from '../api/common-types';\nimport { Extension, ExtensionDeclaration, CodeRef } from '../types';\n\ntype ResourcePageProperties = {\n /** The model for which this resource page links to. */\n model: ExtensionK8sGroupKindModel;\n /** The component to be rendered when the route matches. */\n component: CodeRef<\n React.ComponentType<{\n /** The namespace for which this resource page links to. */\n namespace: string;\n /** The model for which this resource page links to. */\n model: ExtensionK8sModel;\n }>\n >;\n};\n\ntype RoutePageProperties = {\n /** The perspective to which this page belongs to. If not specified, contributes to all perspectives. */\n perspective?: string;\n /** The component to be rendered when the route matches. */\n component: CodeRef;\n /** Valid URL path or array of paths that `path-to-regexp@^1.7.0` understands. */\n path: string | string[];\n /** When true, will only match if the path matches the `location.pathname` exactly. */\n exact?: boolean;\n};\n\n/**\n * Adds new page to Console router.\n *\n * Under the hood we use React Router.\n * See https://v5.reactrouter.com/\n *\n * Note: This extension should not be used for resource list and details page. For adding both list and details page for a resource use the\n * [console.navigation/resource-ns](#consolenavigationresource-ns) extension, instead, which renders elementary fields.\n */\nexport type RoutePage = ExtensionDeclaration<'console.page/route', RoutePageProperties>;\n\n/** Adds new resource list page to Console router. */\nexport type ResourceListPage = ExtensionDeclaration<\n 'console.page/resource/list',\n ResourcePageProperties & {}\n>;\n\n/** Adds new resource details page to Console router. */\nexport type ResourceDetailsPage = ExtensionDeclaration<\n 'console.page/resource/details',\n ResourcePageProperties & {}\n>;\n\n/**\n * @deprecated - Use `console.tab/horizontalNav` instead\n * Adds new resource tab page to Console router.\n */\nexport type ResourceTabPage = ExtensionDeclaration<\n 'console.page/resource/tab',\n Omit & {\n /** The component to be rendered when the route matches. */\n component: CodeRef;\n /** The name of the tab. */\n name: string;\n /** The optional href for the tab link. If not provided, the first `path` is used. */\n href?: string;\n /** When true, will only match if the path matches the `location.pathname` exactly. */\n exact?: boolean;\n }\n>;\n\n/**\n * Adds new standalone page (rendered outside the common page layout) to Console router.\n *\n * Under the hood we use React Router.\n * See https://v5.reactrouter.com/\n */\nexport type StandaloneRoutePage = ExtensionDeclaration<\n 'console.page/route/standalone',\n Omit\n>;\n\n// Type guards\n\nexport const isRoutePage = (e: Extension): e is RoutePage => e.type === 'console.page/route';\n\nexport const isStandaloneRoutePage = (e: Extension): e is StandaloneRoutePage =>\n e.type === 'console.page/route/standalone';\n\nexport const isResourceListPage = (e: Extension): e is ResourceListPage =>\n e.type === 'console.page/resource/list';\n\nexport const isResourceDetailsPage = (e: Extension): e is ResourceDetailsPage =>\n e.type === 'console.page/resource/details';\n\n/** @deprecated - use `console.tab/horizontalNav` */\nexport const isResourceTabPage = (e: Extension): e is ResourceTabPage =>\n e.type === 'console.page/resource/tab';\n","import * as React from 'react';\nimport { ExtensionK8sModel } from '../api/common-types';\nimport { Extension, ExtensionDeclaration, CodeRef } from '../types';\n\n// Align type with React.lazy\ntype LazyComponent = { default: React.ComponentType };\n\n/** This extension contributes a new perspective to the console which enables customization of the navigation menu. */\nexport type Perspective = ExtensionDeclaration<\n 'console.perspective',\n {\n /** The perspective identifier. */\n id: string;\n /** The perspective display name. */\n name: string;\n /** The perspective display icon. */\n icon: CodeRef;\n /** Whether the perspective is the default. There can only be one default. */\n default?: boolean;\n /** Default pinned resources on the nav */\n defaultPins?: ExtensionK8sModel[];\n /** The function to get perspective landing page URL. */\n landingPageURL: CodeRef<(flags: { [key: string]: boolean }, isFirstVisit: boolean) => string>;\n /** The function to get redirect URL for import flow. */\n importRedirectURL: CodeRef<(namespace: string) => string>;\n /** The hook to detect default perspective */\n usePerspectiveDetection?: CodeRef<() => [boolean, boolean]>; // [enablePerspective: boolean, loading: boolean]\n }\n>;\n\nexport const isPerspective = (e: Extension): e is Perspective => {\n return e.type === 'console.perspective';\n};\n","import * as React from 'react';\nimport { CodeRef, Extension, ExtensionDeclaration } from '../types';\nimport { Humanize, TopConsumerPopoverProps } from './console-types';\n\n/** Adds a new inventory item into project overview page. */\nexport type ProjectOverviewInventoryItem = ExtensionDeclaration<\n 'console.project-overview/inventory-item',\n {\n /** The component to be rendered. */\n component: CodeRef>;\n }\n>;\n\nexport type GetProjectQuery = (projectName: string) => string;\n\n/** Adds a new project overview utilization item. */\nexport type ProjectOverviewUtilizationItem = ExtensionDeclaration<\n 'console.project-overview/utilization-item',\n {\n /** The title of the utilization item. */\n title: string;\n /** Prometheus utilization query. */\n getUtilizationQuery: CodeRef;\n /** Convert prometheus data to human readable form. */\n humanize: CodeRef;\n /** Prometheus total query. */\n getTotalQuery?: CodeRef;\n /** Prometheus request query. */\n getRequestQuery?: CodeRef;\n /** Prometheus limit query. */\n getLimitQuery?: CodeRef;\n /** Shows Top consumer popover instead of plain value */\n TopConsumerPopover?: CodeRef>;\n }\n>;\n\n// Type guards\n\nexport const isProjectOverviewInventoryItem = (e: Extension): e is ProjectOverviewInventoryItem =>\n e.type === 'console.project-overview/inventory-item';\n\nexport const isProjectOverviewUtilizationItem = (\n e: Extension,\n): e is ProjectOverviewUtilizationItem => e.type === 'console.project-overview/utilization-item';\n","import { Reducer } from 'redux';\nimport { Extension, ExtensionDeclaration, CodeRef } from '../types';\n\n/** Adds new reducer to Console Redux store which operates on `plugins.` substate. */\nexport type ReduxReducer = ExtensionDeclaration<\n 'console.redux-reducer',\n {\n /** The key to represent the reducer-managed substate within the Redux state object. */\n scope: string;\n /** The reducer function, operating on the reducer-managed substate. */\n reducer: CodeRef;\n }\n>;\n\n// Type guards\n\nexport const isReduxReducer = (e: Extension): e is ReduxReducer =>\n e.type === 'console.redux-reducer';\n","import { Extension } from '@console/plugin-sdk/src/typings/base';\nimport { CodeRef, ExtensionDeclaration } from '../types';\nimport { StorageClass } from './console-types';\n\nexport type ProvisionerProps = {\n onParamChange: (id: string, paramName: string, checkbox: boolean) => void;\n parameterKey: string;\n parameterValue: string;\n};\n\nexport enum ProvisionerType {\n /** Container Storage Interface provisioner type */\n CSI = 'CSI',\n /** Other provisioner type */\n OTHERS = 'OTHERS',\n}\n\nexport type ProvisionerDetails = {\n title: string;\n provisioner: string;\n allowVolumeExpansion: CodeRef<(arg) => boolean> | boolean;\n volumeBindingMode?: string;\n documentationLink?: CodeRef<() => string>;\n parameters?: {\n [paramKey: string]: {\n name: string;\n hintText: string;\n value?: string;\n values?: Record;\n visible?: CodeRef<(arg) => boolean> | boolean;\n required?: CodeRef<(arg) => boolean> | boolean;\n validation?: CodeRef<(params) => string>;\n format?: CodeRef<(arg) => string>;\n Component?: CodeRef>;\n type?: 'checkbox';\n validationMsg?: string;\n };\n };\n mutator?: CodeRef<(storageClass: StorageClass) => StorageClass>;\n};\n\n/** Adds a new storage class provisioner as an option during storage class creation. */\nexport type StorageClassProvisioner = ExtensionDeclaration<\n 'console.storage-class/provisioner',\n {\n [provisionerType in keyof typeof ProvisionerType]?: ProvisionerDetails;\n }\n>;\n\nexport const isStorageClassProvisioner = (e: Extension): e is StorageClassProvisioner =>\n e.type === 'console.storage-class/provisioner';\n","import { Extension, ExtensionDeclaration, CodeRef } from '../types';\n\n/** This extension can be used to contribute a new storage provider to select,\n when attaching storage and a provider specific component. */\nexport type StorageProvider = ExtensionDeclaration<\n 'console.storage-provider',\n {\n /** Displayed name of the provider. */\n name: string;\n /** Provider specific component to render. */\n Component: CodeRef;\n }\n>;\n\nexport const isStorageProvider = (e: Extension): e is StorageProvider =>\n e.type === 'console.storage-provider';\n","import { Extension, ExtensionDeclaration, CodeRef } from '../types';\n\n/** This component can be used to register a listener function receiving telemetry events.\n These events include user identification, page navigation, and other application specific events.\n The listener may use this data for reporting and analytics purposes. */\nexport type TelemetryListener = ExtensionDeclaration<\n 'console.telemetry/listener',\n {\n /** Listen for telemetry events */\n listener: CodeRef;\n }\n>;\n\n// P should be valid JSON\nexport type TelemetryEventListener =

    (eventType: string, properties?: P) => void;\n\n// Type guards\n\nexport const isTelemetryListener = (e: Extension): e is TelemetryListener => {\n return e.type === 'console.telemetry/listener';\n};\n","import * as React from 'react';\nimport { GraphElement } from '@patternfly/react-topology';\nimport { ExtensionHook } from '../api/common-types';\nimport { Extension, CodeRef, ExtensionDeclaration } from '../types';\nimport { K8sResourceCommon } from './console-types';\nimport { BuildConfigData } from './topology-types';\n\n/** DetailsTab contributes a tab for the topology details panel. */\nexport type DetailsTab = ExtensionDeclaration<\n 'console.topology/details/tab',\n {\n /** A unique identifier for this details tab. */\n id: string;\n /** The tab label to display in the UI. */\n label: string;\n /** Insert this item before the item referenced here.\n * For arrays, the first one found in order is used.\n * */\n insertBefore?: string | string[];\n /** Insert this item after the item referenced here.\n * For arrays, the first one found in order is used.\n * insertBefore takes precedence.\n * */\n insertAfter?: string | string[];\n }\n>;\n\n/** DetailsTabSection contributes a section for a specific tab in topology details panel. */\nexport type DetailsTabSection = ExtensionDeclaration<\n 'console.topology/details/tab-section',\n {\n /** A unique identifier for this details tab section. */\n id: string;\n /** The parent tab ID that this section should contribute to. */\n tab: string;\n /** A hook that returns a component or null/undefined that will be rendered\n * in the topology sidebar.\n * SDK component:

    }>... padded area
    \n * */\n provider: CodeRef;\n /** Returns a section for the graph element or undefined if not provided.\n * @deprecated Fallback if no provider is defined. renderNull is a no-op already.\n */\n section: CodeRef<\n (element: GraphElement, renderNull?: () => null) => React.Component | undefined\n >;\n /** Insert this item before the item referenced here.\n * For arrays, the first one found in order is used.\n * */\n insertBefore?: string | string[];\n /** Insert this item after the item referenced here.\n * For arrays, the first one found in order is used.\n * insertBefore takes precedence.\n * */\n insertAfter?: string | string[];\n }\n>;\n\n/** DetailsResourceLink contributes a link for specific topology context or graph element. */\nexport type DetailsResourceLink = ExtensionDeclaration<\n 'console.topology/details/resource-link',\n {\n /** A higher priority factory will get the first chance to create the link. */\n priority?: number;\n /** Return the resource link if provided, otherwise undefined.\n * Use ResourceIcon and ResourceLink for styles.\n * */\n link: CodeRef<(element: GraphElement) => React.Component | undefined>;\n }\n>;\n\n/** DetailsResourceAlert contributes an alert for specific topology context or graph element. */\nexport type DetailsResourceAlert = ExtensionDeclaration<\n 'console.topology/details/resource-alert',\n {\n /** The ID of this alert. Used to save state if the alert shouldn't be shown after dismissed. */\n id: string;\n /** Hook to return the contents of the Alert. */\n contentProvider: CodeRef<(element: GraphElement) => DetailsResourceAlertContent | null>;\n }\n>;\n\n/** PodAdapter contributes an adapter to adapt element to data that can be used by Pod component */\nexport type PodAdapter = ExtensionDeclaration<\n 'console.topology/adapter/pod',\n {\n /** adapter to adapt element to data that can be used by Pod component. */\n adapt: CodeRef<(element: GraphElement) => AdapterDataType | undefined>;\n }\n>;\n\n/** BuildAdapter contributes an adapter to adapt element to data that can be used by Build component */\nexport type BuildAdapter = ExtensionDeclaration<\n 'console.topology/adapter/build',\n {\n /** adapter to adapt element to data that can be used by Build component. */\n adapt: CodeRef<(element: GraphElement) => AdapterDataType | undefined>;\n }\n>;\n\n/** NetworkAdpater contributes an adapter to adapt element to data that can be used by Networking component */\nexport type NetworkAdapter = ExtensionDeclaration<\n 'console.topology/adapter/network',\n {\n /** adapter to adapt element to data that can be used by Networking component. */\n adapt: CodeRef<(element: GraphElement) => NetworkAdapterType | undefined>;\n }\n>;\n\nexport type SupportedTopologyDetailsExtensions =\n | DetailsTab\n | DetailsTabSection\n | DetailsResourceLink\n | DetailsResourceAlert\n | PodAdapter\n | BuildAdapter\n | NetworkAdapter;\n\n// Type guards\n\nexport const isDetailsTab = (e: Extension): e is DetailsTab => {\n return e.type === 'console.topology/details/tab';\n};\n\nexport const isDetailsTabSection = (e: Extension): e is DetailsTabSection => {\n return e.type === 'console.topology/details/tab-section';\n};\n\nexport const isDetailsResourceLink = (e: Extension): e is DetailsResourceLink => {\n return e.type === 'console.topology/details/resource-link';\n};\n\nexport const isDetailsResourceAlert = (e: Extension): e is DetailsResourceAlert => {\n return e.type === 'console.topology/details/resource-alert';\n};\n\nexport const isPodAdapter = (e: Extension): e is PodAdapter => {\n return e.type === 'console.topology/adapter/pod';\n};\n\nexport const isBuildAdapter = (e: Extension): e is BuildAdapter => {\n return e.type === 'console.topology/adapter/build';\n};\n\nexport const isNetworkAdapter = (e: Extension): e is NetworkAdapter => {\n return e.type === 'console.topology/adapter/network';\n};\n\nexport type DetailsResourceAlertContent = {\n /** The title of the alert */\n title: string;\n /** Whether to show a dismiss button. false by default.\n * State will be store in user settings, once dismissed alert won't show up again untill user settings state resets\n */\n dismissible?: boolean;\n content: React.Component | undefined | JSX.Element | string;\n variant?: 'success' | 'danger' | 'warning' | 'info' | 'custom';\n actionLinks?: React.ReactNode;\n};\n\nexport type AdapterDataType = {\n resource: K8sResourceCommon;\n data?: T;\n provider: (resource: K8sResourceCommon, data?: T) => D;\n};\n\nexport type PodsAdapterDataType = {\n pods: E[];\n loaded: boolean;\n loadError: string;\n emptyText?: string;\n allPodsLink?: string;\n buildConfigData?: BuildConfigData;\n};\n\nexport type NetworkAdapterType = {\n resource: K8sResourceCommon;\n};\n\nexport type DetailsTabSectionExtensionHook = ExtensionHook<\n React.ReactElement | undefined,\n GraphElement\n>;\n","import { TopologyQuadrant } from '@patternfly/react-topology/dist/esm/types';\nimport { Extension, ExtensionDeclaration, CodeRef } from '../types';\nimport { WatchK8sResourcesGeneric } from './console-types';\nimport {\n CreateConnectionGetter,\n RelationshipProviderCreate,\n RelationshipProviderProvides,\n TopologyApplyDisplayOptions,\n TopologyDataModelDepicted,\n TopologyDataModelGetter,\n TopologyDataModelReconciler,\n TopologyDecoratorGetter,\n TopologyDisplayOption,\n ViewComponentFactory,\n} from './topology-types';\n\n/** Getter for a ViewComponentFactory */\nexport type TopologyComponentFactory = ExtensionDeclaration<\n 'console.topology/component/factory',\n {\n /** Getter for a ViewComponentFactory */\n getFactory: CodeRef;\n }\n>;\n\n/** Getter for the create connector function */\nexport type TopologyCreateConnector = ExtensionDeclaration<\n 'console.topology/create/connector',\n {\n /** Getter for the create connector function */\n getCreateConnector: CodeRef;\n }\n>;\n\n/** Topology Data Model Factory Extension */\nexport type TopologyDataModelFactory = ExtensionDeclaration<\n 'console.topology/data/factory',\n {\n /** Unique ID for the factory. */\n id: string;\n /** Priority for the factory */\n priority: number;\n /** Resources to be fetched from useK8sWatchResources hook. */\n resources?: WatchK8sResourcesGeneric;\n /** Keys in resources containing workloads. */\n workloadKeys?: string[];\n /** Getter for the data model factory */\n getDataModel?: CodeRef;\n /** Getter for function to determine if a resource is depicted by this model factory */\n isResourceDepicted?: CodeRef;\n /** Getter for function to reconcile data model after all extensions' models have loaded */\n getDataModelReconciler?: CodeRef;\n }\n>;\n\n/** Topology Display Filters Extension */\nexport type TopologyDisplayFilters = ExtensionDeclaration<\n 'console.topology/display/filters',\n {\n /** Getter for topology filters specific to the extension */\n getTopologyFilters: CodeRef<() => TopologyDisplayOption[]>;\n /** Function to apply filters to the model */\n applyDisplayOptions: CodeRef;\n }\n>;\n\n/** Topology Decorator Provider Extension */\nexport type TopologyDecoratorProvider = ExtensionDeclaration<\n 'console.topology/decorator/provider',\n {\n /** id for topology decorator specific to the extension */\n id: string;\n /** priority for topology decorator specific to the extension */\n priority: number;\n /** quadrant for topology decorator specific to the extension */\n quadrant: TopologyQuadrant;\n /** decorator specific to the extension */\n decorator: CodeRef;\n }\n>;\n\n/** Topology relationship provider connector extension */\nexport type TopologyRelationshipProvider = ExtensionDeclaration<\n 'console.topology/relationship/provider',\n {\n /** use to determine if a connection can be created between the source and target node */\n provides: CodeRef;\n /** tooltip to show when connector operation is hovering over the drop target ex: \"Create a Visual Connector\" */\n tooltip: string;\n /** callback to execute when connector is drop over target node to create a connection */\n create: CodeRef;\n /** priority for relationship, higher will be preferred in case of multiple */\n priority: number;\n }\n>;\n\n// Type Guards\n\nexport const isTopologyComponentFactory = (e: Extension): e is TopologyComponentFactory =>\n e.type === 'console.topology/component/factory';\n\nexport const isTopologyCreateConnector = (e: Extension): e is TopologyCreateConnector =>\n e.type === 'console.topology/create/connector';\n\nexport const isTopologyDataModelFactory = (e: Extension): e is TopologyDataModelFactory =>\n e.type === 'console.topology/data/factory';\n\nexport const isTopologyDisplayFilters = (e: Extension): e is TopologyDisplayFilters =>\n e.type === 'console.topology/display/filters';\n\nexport const isTopologyDecoratorProvider = (e: Extension): e is TopologyDecoratorProvider =>\n e.type === 'console.topology/decorator/provider';\n\nexport const isTopologyRelationshipProvider = (e: Extension): e is TopologyRelationshipProvider =>\n e.type === 'console.topology/relationship/provider';\n","import * as React from 'react';\nimport { JSONSchema7Type } from 'json-schema';\nimport { Extension, ExtensionDeclaration, CodeRef } from '../types';\n\nexport enum UserPreferenceFieldType {\n dropdown = 'dropdown',\n checkbox = 'checkbox',\n custom = 'custom',\n}\n\nexport type UserPreferenceDropdownField = {\n type: UserPreferenceFieldType.dropdown;\n userSettingsKey: string;\n defaultValue?: string;\n description?: string;\n options: {\n value: string;\n label: string;\n description?: string;\n }[];\n};\n\nexport type UserPreferenceCheckboxFieldValue = string | number | boolean;\n\nexport type UserPreferenceCheckboxField = {\n type: UserPreferenceFieldType.checkbox;\n userSettingsKey: string;\n label: string;\n trueValue: UserPreferenceCheckboxFieldValue;\n falseValue: UserPreferenceCheckboxFieldValue;\n defaultValue?: UserPreferenceCheckboxFieldValue;\n description?: string;\n};\n\nexport type UserPreferenceCustomField = {\n type: UserPreferenceFieldType.custom;\n component: CodeRef;\n props?: { [key: string]: JSONSchema7Type };\n};\n\nexport type UserPreferenceField =\n | UserPreferenceDropdownField\n | UserPreferenceCheckboxField\n | UserPreferenceCustomField;\n\n/** This extension can be used to add a group on the console user-preferences page.\n It will appear as a vertical tab option on the console user-preferences page. */\nexport type UserPreferenceGroup = ExtensionDeclaration<\n 'console.user-preference/group',\n {\n /** ID used to identify the user preference group. */\n id: string;\n /** The label of the user preference group. */\n label: string;\n /** ID of user preference group before which this group should be placed. */\n insertBefore?: string;\n /** ID of user preference group after which this group should be placed. */\n insertAfter?: string;\n }\n>;\n\n/** This extension can be used to add an item to the user preferences group on the console user preferences page. */\nexport type UserPreferenceItem = ExtensionDeclaration<\n 'console.user-preference/item',\n {\n /** ID used to identify the user preference item and referenced in insertAfter and insertBefore to define the item order. */\n id: string;\n /** IDs used to identify the user preference groups the item would belong to. */\n groupId: string;\n /** The label of the user preference. */\n label: string;\n /** The description of the user preference. */\n description: string;\n /** The input field options used to render the values to set the user preference. */\n field: UserPreferenceField;\n /** ID of user preference item before which this item should be placed. */\n insertBefore?: string;\n /** ID of user preference item after which this item should be placed. */\n insertAfter?: string;\n }\n>;\n\n// Type guards\n\nexport const isUserPreferenceGroup = (e: Extension): e is UserPreferenceGroup => {\n return e.type === 'console.user-preference/group';\n};\n\nexport const isUserPreferenceItem = (e: Extension): e is UserPreferenceItem => {\n return e.type === 'console.user-preference/item';\n};\n","import * as React from 'react';\nimport { CodeRef, Extension, ExtensionDeclaration } from '../types';\nimport { NodeKind, ResourcesObject, WatchK8sResources, WatchK8sResults } from './console-types';\n\nexport type IsNodeStatusActive = (\n node: NodeKind,\n resources: WatchK8sResults,\n) => boolean;\n\nexport type NodePopoverContentProps = {\n node: NodeKind;\n resources: WatchK8sResults;\n};\n\n/** This extension can be used to add additional states to Node resource. */\nexport type NodeStatus = ExtensionDeclaration<\n 'console.node/status',\n {\n /** Returns true if the additional state is active */\n isActive: CodeRef>;\n /** React component that will be rendered in status popover */\n PopoverContent: CodeRef>>;\n /** Title of the additional Node state */\n title: string;\n /** Additional resources that are needed to determine the additional state */\n resources?: WatchK8sResources;\n }\n>;\n\nexport const isNodeStatus = (e: Extension): e is NodeStatus => e.type === 'console.node/status';\n","export { default as useActivePerspective } from './useActivePerspective';\nexport * from './perspective-context';\n","export { default as AppInitSDK } from './AppInitSDK';\nexport { SDKReducers } from './redux';\nexport * from './components';\nexport * from './core';\nexport * from './redux-types';\n","import * as React from 'react';\nimport { Provider } from 'react-redux';\nimport { Store } from 'redux';\nimport { setUtilsConfig, UtilsConfig } from './configSetup';\nimport { initApiDiscovery } from './k8s/api-discovery/api-discovery';\nimport { InitApiDiscovery } from './k8s/api-discovery/api-discovery-types';\nimport { useReduxStore } from './useReduxStore';\n\ntype AppInitSDKProps = {\n children: React.ReactNode;\n configurations: {\n apiDiscovery?: InitApiDiscovery;\n appFetch: UtilsConfig['appFetch'];\n /** @deprecated - will be removed later when we have an interface for plugin */\n initPlugins?: (store: Store) => void;\n };\n};\n\n/**\n * Component for providing store access to the SDK.\n * Add this at app-level to make use of app's redux store and pass configurations prop needed to initialize the app, preferred to have it under Provider.\n * It checks for store instance if present or not.\n * If the store is there then the reference is persisted to be used in SDK else it creates a new store and passes it to the children with the provider\n * @component AppInitSDK\n * @example\n * ```ts\n * return (\n * \n * \n * \n * ...\n * \n * \n * )\n * ```\n */\nconst AppInitSDK: React.FC = ({ children, configurations }) => {\n const { store, storeContextPresent } = useReduxStore();\n React.useEffect(() => {\n const { appFetch, initPlugins, apiDiscovery = initApiDiscovery } = configurations;\n try {\n setUtilsConfig({ appFetch });\n if (initPlugins) {\n initPlugins(store);\n }\n apiDiscovery(store);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn(e);\n }\n }, [configurations, store]);\n\n return !storeContextPresent ? {children} : <>{children};\n};\n\nexport default AppInitSDK;\n","import * as React from 'react';\n\nconst ListPageBody: React.FC = ({ children }) => {\n return
    {children}
    ;\n};\n\nexport default ListPageBody;\n","export * from './actions';\nexport * from './reducers';\n","import { global_palette_purple_300 as globalPurple300 } from '@patternfly/react-tokens/dist/js/global_palette_purple_300';\nimport { global_palette_white as globalWhite } from '@patternfly/react-tokens/dist/js/global_palette_white';\nimport { global_warning_color_100 as globalWarning100 } from '@patternfly/react-tokens/dist/js/global_warning_color_100';\n\nexport enum AllPodStatus {\n Running = 'Running',\n NotReady = 'Not Ready',\n Warning = 'Warning',\n Empty = 'Empty',\n Failed = 'Failed',\n Pending = 'Pending',\n Succeeded = 'Succeeded',\n Terminating = 'Terminating',\n Unknown = 'Unknown',\n ScaledTo0 = 'Scaled to 0',\n Idle = 'Idle',\n AutoScaledTo0 = 'Autoscaled to 0',\n ScalingUp = 'Scaling Up',\n CrashLoopBackOff = 'CrashLoopBackOff',\n}\n\nexport const podColor = {\n [AllPodStatus.Running]: '#0066CC',\n [AllPodStatus.NotReady]: '#519DE9',\n [AllPodStatus.Warning]: globalWarning100.value,\n [AllPodStatus.Empty]: globalWhite.value,\n [AllPodStatus.Failed]: '#CC0000',\n [AllPodStatus.Pending]: '#8BC1F7',\n [AllPodStatus.Succeeded]: '#519149',\n [AllPodStatus.Terminating]: '#002F5D',\n [AllPodStatus.Unknown]: globalPurple300.value,\n [AllPodStatus.ScaledTo0]: globalWhite.value,\n [AllPodStatus.Idle]: globalWhite.value,\n [AllPodStatus.AutoScaledTo0]: globalWhite.value,\n [AllPodStatus.ScalingUp]: globalWhite.value,\n [AllPodStatus.CrashLoopBackOff]: '#CC0000',\n};\n","export const DASH = '-';\n","import * as React from 'react';\nimport {\n ExtensionFlags,\n Extension,\n ExtensionTypeGuard,\n LoadedExtension,\n} from '@console/dynamic-plugin-sdk/src/types';\n\nexport type { ExtensionFlags, Extension, ExtensionTypeGuard, LoadedExtension };\n\n/**\n * An extension that is always effective, regardless of feature flags.\n */\nexport type AlwaysOnExtension

    = Omit, 'flags'>;\n\n/**\n * From plugin author perspective, a plugin is simply a list of extensions.\n *\n * Plugin metadata is stored in the `package.json` file of the corresponding\n * monorepo package. The `consolePlugin.entry` path should point to a module\n * that exports the plugin object.\n *\n * ```json\n * {\n * \"name\": \"@console/demo-plugin\",\n * \"version\": \"0.0.0-fixed\",\n * // scripts, dependencies, etc.\n * \"consolePlugin\": {\n * \"entry\": \"src/plugin.ts\"\n * }\n * }\n * ```\n *\n * For better type checking and code completion, use a type parameter that\n * represents the union of all the extension types consumed by the plugin:\n *\n * ```ts\n * // packages/console-demo-plugin/src/plugin.ts\n * import { Plugin } from '@console/plugin-sdk';\n *\n * const plugin: Plugin = [\n * {\n * type: 'Foo',\n * properties: {} // Foo extension specific properties\n * },\n * {\n * type: 'Bar',\n * properties: {} // Bar extension specific properties\n * }\n * ];\n *\n * export default plugin;\n * ```\n */\nexport type Plugin = E[];\n\n/**\n * Common interface for loading async React components.\n */\nexport type LazyLoader = () => Promise>>;\n\n/**\n * From Console application perspective, a plugin is a list of extensions\n * enhanced with additional data.\n */\nexport type ActivePlugin = {\n name: string;\n extensions: Extension[];\n};\n","import { TFunction } from 'i18next';\nimport {\n WatchK8sResources,\n ResourcesObject,\n WatchK8sResults,\n GridPosition,\n} from '@console/dynamic-plugin-sdk';\nimport { PrometheusResponse } from '@console/internal/components/graphs';\nimport {\n FirehoseResource,\n FirehoseResult,\n FirehoseResourcesResult,\n} from '@console/internal/components/utils';\nimport { K8sKind, K8sResourceKind, K8sResourceCommon } from '@console/internal/module/k8s';\nimport {\n StatusGroupMapper,\n ExpandedComponentProps,\n} from '@console/shared/src/components/dashboard/inventory-card/InventoryItem';\nimport { HealthState } from '@console/shared/src/components/dashboard/status-card/states';\nimport { Extension, LazyLoader } from './base';\n\nnamespace ExtensionProperties {\n interface DashboardsOverviewHealthSubsystem {\n /** The subsystem's display name */\n title: string;\n }\n\n export interface DashboardsOverviewHealthURLSubsystem\n extends DashboardsOverviewHealthSubsystem {\n /**\n * The URL to fetch data from. It will be prefixed with base k8s URL.\n * For example: `healthz` will result in `/healthz`\n */\n url: string;\n\n /**\n * Custom function to fetch data from the URL.\n * If none is specified, default one (`coFetchJson`) will be used.\n * Response is then parsed by `healthHandler`.\n */\n fetch?: (url: string) => Promise;\n\n /** Additional resource which will be fetched and passed to healthHandler */\n additionalResource?: FirehoseResource;\n\n /** Resolve the subsystem's health */\n healthHandler: URLHealthHandler;\n\n /**\n * Loader for popup content. If defined health item will be represented as link\n * which opens popup with given content.\n */\n popupComponent?: LazyLoader;\n\n /**\n * Popup title\n */\n popupTitle?: string;\n }\n\n export interface DashboardsOverviewHealthPrometheusSubsystem\n extends DashboardsOverviewHealthSubsystem {\n /** The Prometheus queries */\n queries: string[];\n\n /** Additional resource which will be fetched and passed to healthHandler */\n additionalResource?: FirehoseResource;\n\n /** Resolve the subsystem's health */\n healthHandler: PrometheusHealthHandler;\n\n /**\n * Loader for popup content. If defined health item will be represented as link\n * which opens popup with given content.\n */\n popupComponent?: LazyLoader;\n\n /**\n * Popup title\n */\n popupTitle?: string;\n\n /** Optional classname for the popup top-level component. */\n popupClassname?: string;\n\n /** Content of the popup */\n popupBodyContent?: React.ReactNode | ((hide: () => void) => React.ReactNode);\n\n /** If true, the popup will stay open when clicked outside of its boundary. Default: false */\n popupKeepOnOutsideClick?: boolean;\n\n /** Control plane topology for which the subsystem should be hidden. */\n disallowedControlPlaneTopology?: string[];\n }\n\n export interface DashboardsOverviewHealthResourceSubsystem\n extends DashboardsOverviewHealthSubsystem {\n /** Kubernetes resources which will be fetched and passed to healthHandler */\n resources: WatchK8sResources;\n\n /** Resolve the subsystem's health */\n healthHandler: ResourceHealthHandler;\n\n /**\n * Loader for popup content. If defined health item will be represented as link\n * which opens popup with given content.\n */\n popupComponent?: LazyLoader>;\n\n /**\n * Popup title\n */\n popupTitle?: string;\n }\n\n export interface DashboardsOverviewHealthOperator\n extends DashboardsOverviewHealthSubsystem {\n /** Title of operators section in popup */\n title: string;\n\n /** Resources which will be fetched and passed to healthHandler */\n resources: FirehoseResource[];\n\n /** Resolve status for operators */\n getOperatorsWithStatuses: GetOperatorsWithStatuses;\n\n /** Loader for popup row component */\n operatorRowLoader: LazyLoader>;\n\n /**\n * Link to all resources page.\n * If not provided then a list page of first resource from resources prop is used.\n */\n viewAllLink?: string;\n }\n\n export interface DashboardsTab {\n /** The tab's ID which will be used as part of href within dashboards page */\n id: string;\n\n /** NavSection to which the tab belongs to */\n navSection: 'home' | 'storage';\n\n /** The tab title */\n title: string;\n }\n\n export interface DashboardsCard {\n /** The tab's ID where this card should be rendered */\n tab: string;\n\n /** The card position in the tab */\n position: GridPosition;\n\n /** Loader for the corresponding dashboard card component. */\n loader: LazyLoader;\n\n /** Card's vertical span in the column. Ignored for small screens, defaults to 12. */\n span?: CardSpan;\n }\n\n export interface DashboardsOverviewInventoryItem {\n /** The model for `resource` which will be fetched. The model is used for getting model's label or abbr. */\n model: K8sKind;\n\n /** Function which will map various statuses to groups. */\n mapper?: () => Promise;\n\n /** Additional resources which will be fetched and passed to `mapper` function. */\n additionalResources?: WatchK8sResources;\n\n /** Loader for the component which will be used when item is expanded. */\n expandedComponent?: LazyLoader;\n }\n\n export interface DashboardsInventoryItemGroup {\n /** The ID of status group. */\n id: string;\n\n /** React component representing status group icon. */\n icon: React.ReactElement;\n }\n\n export interface DashboardsOverviewUtilizationItem {\n /** The utilization item to be replaced */\n id: string;\n\n /** The Prometheus utilization query */\n query: string;\n\n /** The Prometheus total query */\n totalQuery: string;\n }\n\n export interface DashboardsOverviewResourceActivity {\n /** Resource to watch */\n k8sResource: FirehoseResource & { isList: true };\n\n /**\n * Function which will determine if given resource represents the action.\n * If the function is not defined, every resource represents activity.\n */\n isActivity?: (resource: K8sResourceKind) => boolean;\n\n /** Timestamp for given action, which will be used for ordering */\n getTimestamp?: (resource: K8sResourceKind) => Date;\n\n /** Loader for corresponding action component */\n loader: LazyLoader;\n }\n\n export interface DashboardsOverviewPrometheusActivity {\n /** Queries to watch */\n queries: string[];\n\n /** Function which will determine if given query results represent the action */\n isActivity: (results: PrometheusResponse[]) => boolean;\n\n /** Loader for corresponding action component */\n loader: LazyLoader;\n }\n\n export interface ProjectDashboardInventoryItem {\n /** The K8s model which will be scoped to project, fetched and passed to `mapper` function. */\n model: K8sKind;\n\n /** Additional resources which will be fetched and passed to `mapper` function. */\n additionalResources?: FirehoseResource[];\n\n /** Function which will map various statuses to groups. */\n mapper: StatusGroupMapper;\n }\n}\n\nexport interface DashboardsOverviewHealthURLSubsystem\n extends Extension> {\n type: 'Dashboards/Overview/Health/URL';\n}\n\nexport const isDashboardsOverviewHealthURLSubsystem = (\n e: Extension,\n): e is DashboardsOverviewHealthURLSubsystem => e.type === 'Dashboards/Overview/Health/URL';\n\nexport interface DashboardsOverviewHealthPrometheusSubsystem\n extends Extension {\n type: 'Dashboards/Overview/Health/Prometheus';\n}\n\nexport const isDashboardsOverviewHealthPrometheusSubsystem = (\n e: Extension,\n): e is DashboardsOverviewHealthPrometheusSubsystem =>\n e.type === 'Dashboards/Overview/Health/Prometheus';\n\nexport interface DashboardsOverviewHealthResourceSubsystem<\n R extends ResourcesObject = ResourcesObject\n> extends Extension> {\n type: 'Dashboards/Overview/Health/Resource';\n}\n\nexport const isDashboardsOverviewHealthResourceSubsystem = (\n e: Extension,\n): e is DashboardsOverviewHealthResourceSubsystem =>\n e.type === 'Dashboards/Overview/Health/Resource';\n\nexport interface DashboardsOverviewHealthOperator\n extends Extension> {\n type: 'Dashboards/Overview/Health/Operator';\n}\n\nexport const isDashboardsOverviewHealthOperator = (\n e: Extension,\n): e is DashboardsOverviewHealthOperator => e.type === 'Dashboards/Overview/Health/Operator';\n\nexport type DashboardsOverviewHealthSubsystem =\n | DashboardsOverviewHealthURLSubsystem\n | DashboardsOverviewHealthPrometheusSubsystem\n | DashboardsOverviewHealthResourceSubsystem\n | DashboardsOverviewHealthOperator;\n\nexport const isDashboardsOverviewHealthSubsystem = (\n e: Extension,\n): e is DashboardsOverviewHealthSubsystem =>\n isDashboardsOverviewHealthURLSubsystem(e) ||\n isDashboardsOverviewHealthPrometheusSubsystem(e) ||\n isDashboardsOverviewHealthResourceSubsystem(e) ||\n isDashboardsOverviewHealthOperator(e);\n\nexport interface DashboardsTab extends Extension {\n type: 'Dashboards/Tab';\n}\n\nexport const isDashboardsTab = (e: Extension): e is DashboardsTab => e.type === 'Dashboards/Tab';\n\nexport interface DashboardsCard extends Extension {\n type: 'Dashboards/Card';\n}\n\nexport const isDashboardsCard = (e: Extension): e is DashboardsCard => e.type === 'Dashboards/Card';\n\nexport interface DashboardsOverviewInventoryItem\n extends Extension {\n type: 'Dashboards/Overview/Inventory/Item';\n}\n\nexport const isDashboardsOverviewInventoryItem = (\n e: Extension,\n): e is DashboardsOverviewInventoryItem => e.type === 'Dashboards/Overview/Inventory/Item';\n\nexport interface DashboardsInventoryItemGroup\n extends Extension {\n type: 'Dashboards/Inventory/Item/Group';\n}\n\nexport const isDashboardsInventoryItemGroup = (e: Extension): e is DashboardsInventoryItemGroup =>\n e.type === 'Dashboards/Inventory/Item/Group';\n\nexport interface DashboardsOverviewResourceActivity\n extends Extension {\n type: 'Dashboards/Overview/Activity/Resource';\n}\n\nexport const isDashboardsOverviewResourceActivity = (\n e: Extension,\n): e is DashboardsOverviewResourceActivity => e.type === 'Dashboards/Overview/Activity/Resource';\n\nexport interface DashboardsOverviewPrometheusActivity\n extends Extension {\n type: 'Dashboards/Overview/Activity/Prometheus';\n}\n\nexport const isDashboardsOverviewPrometheusActivity = (\n e: Extension,\n): e is DashboardsOverviewPrometheusActivity =>\n e.type === 'Dashboards/Overview/Activity/Prometheus';\n\nexport interface ProjectDashboardInventoryItem\n extends Extension {\n type: 'Project/Dashboard/Inventory/Item';\n}\n\nexport const isProjectDashboardInventoryItem = (e: Extension): e is ProjectDashboardInventoryItem =>\n e.type === 'Project/Dashboard/Inventory/Item';\n\nexport interface DashboardsOverviewInventoryItemReplacement\n extends Extension {\n type: 'Dashboards/Overview/Inventory/Item/Replacement';\n}\n\nexport const isDashboardsOverviewInventoryItemReplacement = (\n e: Extension,\n): e is DashboardsOverviewInventoryItemReplacement =>\n e.type === 'Dashboards/Overview/Inventory/Item/Replacement';\n\nexport type CardSpan = 4 | 6 | 12;\n\nexport type K8sActivityProps = {\n resource: K8sResourceKind;\n};\n\nexport type PrometheusActivityProps = {\n results: PrometheusResponse[];\n};\n\nexport type SubsystemHealth = {\n message?: string;\n state: HealthState;\n};\n\nexport type URLHealthHandler = (\n response: R,\n error: any,\n additionalResource?: FirehoseResult,\n) => SubsystemHealth;\n\nexport type PrometheusHealthPopupProps = {\n responses: { response: PrometheusResponse; error: any }[];\n k8sResult?: FirehoseResult;\n};\n\nexport type PrometheusHealthHandler = (\n responses: { response: PrometheusResponse; error: any }[],\n t?: TFunction,\n additionalResource?: FirehoseResult,\n infrastructure?: K8sResourceKind,\n) => SubsystemHealth;\n\nexport type ResourceHealthHandler = (\n resourcesResult: WatchK8sResults,\n t?: TFunction,\n) => SubsystemHealth;\n\nexport type OperatorHealthHandler = (resources: FirehoseResourcesResult) => OperatorHealth;\n\nexport type OperatorHealth = {\n health: keyof typeof HealthState;\n count?: number;\n};\n\nexport type GetOperatorsWithStatuses = (\n resources: FirehoseResourcesResult,\n) => OperatorStatusWithResources[];\n\nexport type OperatorStatusWithResources = {\n operators: R[];\n status: OperatorStatusPriority;\n};\n\nexport type GetOperatorStatusPriority = (\n operator: R,\n) => OperatorStatusPriority;\n\nexport type OperatorStatusPriority = {\n title: string;\n priority: number;\n icon: React.ReactNode;\n health: keyof typeof HealthState;\n};\n\nexport type OperatorRowProps = {\n operatorStatus: OperatorStatusWithResources;\n};\n","import { Dispatch } from 'react-redux';\nimport { Action } from 'typesafe-actions';\nimport { K8sKind } from '@console/internal/module/k8s';\nimport { Extension, AlwaysOnExtension } from './base';\n\nnamespace ExtensionProperties {\n export interface ModelFeatureFlag {\n /** The name of the feature flag. */\n flag: string;\n /** If a CRD for this model exists, the feature will be enabled. */\n model: K8sKind;\n }\n\n export interface CustomFeatureFlag {\n /** Function used to detect the feature and set arbitrary flag name/value via Redux action dispatch. */\n detect: FeatureDetector;\n }\n}\n\nexport interface ModelFeatureFlag extends AlwaysOnExtension {\n type: 'FeatureFlag/Model';\n}\n\nexport interface CustomFeatureFlag extends Extension {\n type: 'FeatureFlag/Custom';\n}\n\nexport const isModelFeatureFlag = (e: Extension): e is ModelFeatureFlag => {\n return e.type === 'FeatureFlag/Model';\n};\n\nexport const isCustomFeatureFlag = (e: Extension): e is CustomFeatureFlag => {\n return e.type === 'FeatureFlag/Custom';\n};\n\nexport type FeatureDetector = (dispatch: Dispatch) => Promise;\n","import { K8sKind } from '@console/internal/module/k8s';\nimport { Extension, AlwaysOnExtension } from './base';\n\nnamespace ExtensionProperties {\n export interface ModelDefinition {\n /** Additional Kubernetes model definitions to register with Console. */\n models: K8sKind[];\n }\n}\n\nexport interface ModelDefinition extends AlwaysOnExtension {\n type: 'ModelDefinition';\n}\n\nexport const isModelDefinition = (e: Extension): e is ModelDefinition => {\n return e.type === 'ModelDefinition';\n};\n","import { OverviewDetailsResourcesTabProps } from '@console/internal/components/overview/resource-overview-page';\nimport { Extension, LazyLoader } from './base';\n\nnamespace ExtensionProperties {\n export interface OverviewResourceTab {\n /** The name of Overview tab to be updated. */\n name: string;\n\n /** Name of key to be checked in prop items. */\n key: string;\n\n /** Loader for the corresponding tab component. */\n loader: LazyLoader;\n }\n\n export interface OverviewTabSection {\n /** Name of key to be checked in prop items. */\n key: string;\n\n /** Loader for the corresponding tab component. */\n loader: LazyLoader;\n }\n}\n\nexport interface OverviewResourceTab extends Extension {\n type: 'Overview/Resource';\n}\n\nexport const isOverviewResourceTab = (e: Extension): e is OverviewResourceTab => {\n return e.type === 'Overview/Resource';\n};\n\nexport interface OverviewTabSection extends Extension {\n type: 'Overview/Section';\n}\n\nexport const isOverviewTabSection = (e: Extension): e is OverviewTabSection => {\n return e.type === 'Overview/Section';\n};\n","import { RouteComponentProps, RouteProps } from 'react-router-dom';\nimport { PageComponentProps } from '@console/internal/components/utils';\nimport {\n K8sKind,\n K8sResourceKindReference,\n K8sResourceKind,\n K8sResourceCommon,\n} from '@console/internal/module/k8s';\nimport { Extension, LazyLoader } from './base';\n\nnamespace ExtensionProperties {\n export interface ResourcePage {\n /** Model associated with the resource page. */\n model: K8sKind;\n /** Loader for the corresponding React page component. */\n loader: LazyLoader;\n }\n\n /** To add an additonal page to public components(ex: PVs, PVCs) via plugins */\n export type ResourceTabPage = ResourcePage> & {\n /** The href for the resource page */\n href: string;\n /** Name of the resource tab inside detailsPage */\n name: string;\n };\n\n export type ResourceListPage = ResourcePage<{\n /** See https://reacttraining.com/react-router/web/api/match */\n match: RouteComponentProps['match'];\n /** The resource kind scope. */\n kind: K8sResourceKindReference;\n /** Whether the page should assign focus when loaded. */\n autoFocus: boolean;\n /** Whether the page should mock the UI empty state. */\n mock: boolean;\n /** The namespace scope. */\n namespace: string;\n }> & {\n /** Some Resources require ReferenceFor instead of ReferenceForModel */\n modelParser?: (obj: K8sResourceKind) => string;\n };\n\n export type ResourceDetailsPage = ResourcePage<{\n /** See https://reacttraining.com/react-router/web/api/match */\n match: RouteComponentProps['match'];\n /** The resource kind scope. */\n kind: K8sResourceKindReference;\n /** The namespace scope. */\n namespace: string;\n /** The page name. */\n name: string;\n }> & {\n /** Some Resources require ReferenceFor instead of ReferenceForModel */\n modelParser?: (obj: K8sResourceKind) => string;\n };\n\n // Maps to react-router#https://reacttraining.com/react-router/web/api/Route\n // See https://reacttraining.com/react-router/web/api/Route\n export type RoutePage = Omit & {\n /** Loader for the corresponding React page component. */\n loader?: LazyLoader;\n /** Any valid URL path or array of paths that path-to-regexp@^1.7.0 understands. */\n path: string | string[];\n /** Perspective id to which this page belongs to. */\n perspective?: string;\n };\n}\n\nexport interface ResourceListPage extends Extension {\n type: 'Page/Resource/List';\n}\n\nexport interface ResourceDetailsPage extends Extension {\n type: 'Page/Resource/Details';\n}\n\nexport interface RoutePage extends Extension {\n type: 'Page/Route';\n}\n\nexport interface ResourceTabPage\n extends Extension> {\n type: 'Page/Resource/Tab';\n}\n\nexport type ResourcePage = ResourceListPage | ResourceDetailsPage;\n\nexport const isResourceListPage = (e: Extension): e is ResourceListPage => {\n return e.type === 'Page/Resource/List';\n};\n\nexport const isResourceDetailsPage = (e: Extension): e is ResourceDetailsPage => {\n return e.type === 'Page/Resource/Details';\n};\n\nexport const isResourceTabPage = (e: Extension): e is ResourceTabPage => {\n return e.type === 'Page/Resource/Tab';\n};\n\nexport const isRoutePage = (e: Extension): e is RoutePage => {\n return e.type === 'Page/Route';\n};\n","import { PageComponentProps, Page } from '@console/internal/components/utils/horizontal-nav';\nimport { K8sKind } from '@console/internal/module/k8s';\nimport { Extension, LazyLoader } from './base';\n\nnamespace ExtensionProperties {\n export interface HorizontalNavTab {\n model: K8sKind;\n page: Pick;\n loader: LazyLoader;\n }\n}\n\nexport interface HorizontalNavTab extends Extension {\n type: 'HorizontalNavTab';\n}\n\nexport const isHorizontalNavTab = (e: Extension): e is HorizontalNavTab => {\n return e.type === 'HorizontalNavTab';\n};\n","import { Extension } from './base';\n\nnamespace ExtensionProperties {\n export interface PostFormSubmissionAction {\n /** action type */\n type: string;\n /** callback for the related action */\n callback: (arg: T, payload?: P) => Promise;\n }\n}\n\nexport interface PostFormSubmissionAction\n extends Extension> {\n type: 'PostFormSubmissionAction';\n}\n\nexport const isPostFormSubmissionAction = (e: Extension): e is PostFormSubmissionAction => {\n return e.type === 'PostFormSubmissionAction';\n};\n","import { Location } from 'react-router-dom-v5-compat';\nimport { CodeRef } from '@console/dynamic-plugin-sdk/src/types';\nimport { K8sKind } from '@console/internal/module/k8s';\nimport { Extension } from './base';\n\nexport type DetailsPageBreadCrumbsHook = (\n kind: K8sKind,\n urlMatch: any,\n) => ({ name: string; path: string } | { name: string; path: Location })[];\n\nnamespace ExtensionProperties {\n export interface DetailPageBreadCrumbs {\n /**\n * array of models(kindObj) against which bread crumb is needed\n */\n getModels: CodeRef<() => K8sKind[] | K8sKind>;\n /**\n * returns breadcrumb for the given kindref\n */\n breadcrumbsProvider: CodeRef;\n }\n}\n\nexport interface DetailPageBreadCrumbs\n extends Extension {\n type: 'DetailPageBreadCrumbs';\n}\n\nexport const isDetailPageBreadCrumbs = (e: Extension): e is DetailPageBreadCrumbs => {\n return e.type === 'DetailPageBreadCrumbs';\n};\n","import i18next from 'i18next';\n\nexport const getJobTypeAndCompletions = ({ spec }) => {\n // if neither completions nor parallelism are defined, then it is a non-parallel job.\n if (!spec.completions && !spec.parallelism) {\n return { type: i18next.t('public~Non-parallel'), completions: 1 };\n }\n // if completions are defined and no parallelism is defined, or if parallelism is 0 or 1, then it is a 'Non-parallel' job.\n if (spec.completions && (!spec.parallelism || spec.parallelism === 1)) {\n return { type: i18next.t('public~Non-parallel'), completions: spec.completions };\n }\n // if parallelism is greater than 1 and completions are defined, then it is a 'Fixed Completion Count' job.\n if (spec.hasOwnProperty('parallelism') && spec.completions) {\n return { type: i18next.t('public~Fixed completion count'), completions: spec.completions };\n }\n // otherwise, if parallelism is defined, but completions is not, then it is a 'Work Queue' job.\n return { type: i18next.t('public~Work queue'), completions: 1 };\n};\n","import { K8sResourceCommon, QueryParams } from '@console/dynamic-plugin-sdk/src';\nimport {\n k8sPatch,\n k8sKill,\n k8sList,\n resourceURL,\n k8sWatch,\n} from '@console/dynamic-plugin-sdk/src/utils/k8s';\nimport { K8sKind, Patch } from './types';\n\nexport type Options = {\n ns?: string;\n name?: string;\n path?: string;\n queryParams?: QueryParams;\n};\n\nexport const watchURL = (kind: K8sKind, options: Options): string => {\n const opts = options || {};\n\n opts.queryParams = opts.queryParams || {};\n opts.queryParams.watch = 'true';\n return resourceURL(kind, opts);\n};\n\nexport const k8sPatchByName = (\n kind: K8sKind,\n name: string,\n namespace: string,\n data: Patch[],\n opts: Options = {},\n) => k8sPatch(kind, { metadata: { name, namespace } }, data, opts);\n\nexport const k8sKillByName = (\n kind: K8sKind,\n name: string,\n namespace?: string,\n opts: Options = {},\n requestInit: RequestInit = {},\n): Promise => k8sKill(kind, { metadata: { name, namespace } }, opts, requestInit);\n\nexport const k8sListPartialMetadata = (\n kind: K8sKind,\n params: { [key: string]: any } = {},\n raw = false,\n) => {\n return k8sList(kind, params, raw, {\n headers: {\n Accept:\n 'application/json;as=PartialObjectMetadataList;v=v1beta1;g=meta.k8s.io,application/json',\n },\n });\n};\n\n/**\n * Use k8sWatch to wait for a resource to get into an expected condition.\n * Watches for resource by kind, namespace and optional name.\n * Promise resolves to a new resource version or rejects with a timeout.\n */\nexport const k8sWaitForUpdate = (\n kind: K8sKind,\n resource: R,\n checkCondition: (kind: R) => boolean,\n timeoutInMs: number,\n) => {\n if (!resource || !resource.metadata) {\n return Promise.reject(new Error('Provided resource is undefined'));\n }\n const { namespace, name, resourceVersion } = resource.metadata;\n try {\n if (checkCondition(resource)) {\n return Promise.resolve(resource);\n }\n } catch (error) {\n return Promise.reject(error);\n }\n\n const watcher = k8sWatch(kind, {\n ns: namespace,\n resourceVersion,\n });\n const closeConnection = () => watcher.destroy();\n\n const waitForCondition = new Promise((resolve, reject) => {\n watcher.onbulkmessage((messages) => {\n for (const message of messages) {\n const { object } = message;\n if (!name || name === object?.metadata?.name) {\n try {\n if (checkCondition(object)) {\n resolve(object);\n }\n } catch (err) {\n reject(err);\n }\n }\n }\n });\n watcher.onclose(() => reject(new Error('Connection closed')));\n watcher.ondestroy(() => reject(new Error('Connection destroyed')));\n });\n\n const waitForTimeout = new Promise((resolve, reject) => {\n setTimeout(() => reject(new Error('Timed out waiting for resource to finish')), timeoutInMs);\n });\n\n return Promise.race([waitForCondition, waitForTimeout]).finally(closeConnection);\n};\n","import * as React from 'react';\nimport * as hoistStatics from 'hoist-non-react-statics';\nimport { Extension, ExtensionTypeGuard, LoadedExtension } from '../typings';\nimport { useExtensions } from './useExtensions';\n\n/**\n * React higher-order component (HOC) for consuming Console extensions.\n *\n * This is semantically equivalent to `useExtensions` hook with one difference:\n * this HOC supports retrieving different extension types and providing them to\n * your component as props.\n *\n * Example usage:\n *\n * ```ts\n * const Example = withExtensions({\n * navItemExtensions: isNavItem,\n * perspectiveExtensions: isPerspective,\n * })(\n * class Example extends React.Component {\n * render() {\n * const { navItemExtensions, perspectiveExtensions } = this.props;\n * // process extensions and render your component\n * }\n * },\n * );\n *\n * type ExampleExtensionProps = {\n * navItemExtensions: NavItem[];\n * perspectiveExtensions: Perspective[];\n * };\n * ```\n *\n * @param typeGuardMapper Object that maps prop names to extension type guards.\n * It's basically an object-based analogy to Redux `mapStateToProps` function.\n *\n * @returns `withExtensions` higher-order component creator function.\n */\nexport const withExtensions = <\n TExtensionProps extends ExtensionProps,\n E extends Extension = Extension,\n TCombinedProps extends TExtensionProps = TExtensionProps\n>(\n typeGuardMapper: ExtensionTypeGuardMapper,\n): ((C: React.ComponentType) => ExtensionHOC) => (\n WrappedComponent,\n) => {\n const typeGuards = Object.values(typeGuardMapper);\n\n if (typeGuards.length === 0) {\n throw new Error('The object passed to withExtensions must contain at least one type guard');\n }\n\n const HOC: ExtensionHOC = (props) => {\n const extensionsInUse = useExtensions(...typeGuards);\n\n const extensionProps = React.useMemo(\n () =>\n Object.keys(typeGuardMapper).reduce((acc, propName) => {\n acc[propName] = extensionsInUse.filter(typeGuardMapper[propName]);\n return acc;\n }, {} as ExtensionProps),\n [extensionsInUse],\n );\n\n const combinedProps = {\n ...props,\n ...extensionProps,\n } as TCombinedProps;\n\n return ;\n };\n\n HOC.displayName = `withExtensions(${WrappedComponent.displayName || WrappedComponent.name})`;\n HOC.WrappedComponent = WrappedComponent;\n\n return hoistStatics(HOC, WrappedComponent);\n};\n\ntype ExtensionHOC = React.ComponentType<\n Omit\n> & {\n WrappedComponent: React.ComponentType;\n};\n\ntype ExtensionProps = {\n [propName: string]: E[] | LoadedExtension[];\n};\n\ntype ExtensionTypeGuardMapper> = {\n [K in keyof P]: ExtensionTypeGuard;\n};\n","import * as _ from 'lodash-es';\nimport { ClusterOperator, OperandVersion } from '.';\n\nexport enum OperatorStatus {\n Available = 'Available',\n Progressing = 'Progressing',\n Degraded = 'Degraded',\n CannotUpdate = 'Cannot update',\n Unavailable = 'Unavailable',\n Unknown = 'Unknown',\n}\n\nexport const getStatusAndMessage = (operator: ClusterOperator) => {\n const conditions = _.get(operator, 'status.conditions');\n const cannotUpdate: any = _.find(conditions, { type: 'Upgradeable', status: 'False' });\n if (cannotUpdate) {\n return { status: OperatorStatus.CannotUpdate, message: cannotUpdate.message };\n }\n\n const unavailable: any = _.find(conditions, { type: 'Available', status: 'False' });\n if (unavailable) {\n return { status: OperatorStatus.Unavailable, message: unavailable.message };\n }\n\n const degraded: any = _.find(conditions, { type: 'Degraded', status: 'True' });\n if (degraded) {\n return { status: OperatorStatus.Degraded, message: degraded.message };\n }\n\n const progressing: any = _.find(conditions, { type: 'Progressing', status: 'True' });\n if (progressing) {\n return { status: OperatorStatus.Progressing, message: progressing.message };\n }\n\n const available: any = _.find(conditions, { type: 'Available', status: 'True' });\n if (available) {\n return { status: OperatorStatus.Available, message: '' };\n }\n\n return { status: OperatorStatus.Unknown, message: '' };\n};\n\nexport const getClusterOperatorStatus = (operator: ClusterOperator) => {\n const { status } = getStatusAndMessage(operator);\n return status;\n};\n\nexport const getClusterOperatorVersion = (operator: ClusterOperator) => {\n const versions: OperandVersion[] = _.get(operator, 'status.versions', []);\n const operatorVersion = _.find(versions, (v) => v.name === 'operator');\n return operatorVersion ? operatorVersion.version : '';\n};\n","import * as _ from 'lodash-es';\n\nimport { TemplateInstanceKind } from '../../module/k8s';\n\nexport const getTemplateInstanceStatus = (instance: TemplateInstanceKind) => {\n const conditions = _.get(instance, 'status.conditions');\n const failed = _.some(conditions, { type: 'InstantiateFailure', status: 'True' });\n if (failed) {\n return 'Failed';\n }\n const ready = _.some(conditions, { type: 'Ready', status: 'True' });\n return ready ? 'Ready' : 'Not Ready';\n};\n","import { JSONSchema7 } from 'json-schema';\nimport { NodeAddress } from '@console/shared';\nimport {\n ObjectReference,\n ObjectMetadata,\n K8sResourceCommon,\n K8sVerb,\n K8sResourceCondition,\n NodeCondition,\n TaintEffect,\n} from '@console/dynamic-plugin-sdk/src/extensions/console-types';\nimport { EventInvolvedObject } from './event';\nimport { Selector, MatchLabels, K8sModel } from '@console/dynamic-plugin-sdk/src/api/common-types';\n\nexport * from '@console/dynamic-plugin-sdk/src/extensions/console-types';\nexport * from '@console/dynamic-plugin-sdk/src/api/common-types';\n\nexport type PartialObjectMetadata = {\n apiVersion: string;\n kind: string;\n metadata: ObjectMetadata;\n};\n\nexport type ClusterServiceVersionCondition = {\n phase: string;\n lastTransitionTime?: string;\n reason?: string;\n message?: string;\n};\n\nexport type TolerationOperator = 'Exists' | 'Equal';\n\nexport type Toleration = {\n effect: TaintEffect;\n key?: string;\n operator: TolerationOperator;\n tolerationSeconds?: number;\n value?: string;\n};\n\n// Generic, unknown kind. Avoid when possible since it allows any key in spec\n// or status, weakening type checking.\nexport type K8sResourceKind = K8sResourceCommon & {\n spec?: {\n [key: string]: any;\n };\n status?: { [key: string]: any };\n data?: { [key: string]: any };\n};\n\nexport type VolumeMount = {\n mountPath: string;\n mountPropagation?: 'None' | 'HostToContainer' | 'Bidirectional';\n name: string;\n readOnly?: boolean;\n subPath?: string;\n subPathExpr?: string;\n};\n\nexport type VolumeDevice = {\n devicePath: string;\n name: string;\n};\n\ntype ProbePort = string | number;\n\nexport type ExecProbe = {\n command: string[];\n};\n\nexport type HTTPGetProbe = {\n path?: string;\n port: ProbePort;\n host?: string;\n scheme: 'HTTP' | 'HTTPS';\n httpHeaders?: any[];\n};\n\nexport type TCPSocketProbe = {\n port: ProbePort;\n host?: string;\n};\n\nexport type Handler = {\n exec?: ExecProbe;\n httpGet?: HTTPGetProbe;\n tcpSocket?: TCPSocketProbe;\n};\n\nexport type ContainerProbe = {\n initialDelaySeconds?: number;\n timeoutSeconds?: number;\n periodSeconds?: number;\n successThreshold?: number;\n failureThreshold?: number;\n} & Handler;\n\nexport type ContainerLifecycleStage = 'postStart' | 'preStop';\n\nexport type ContainerLifecycle = {\n postStart?: Handler;\n preStop?: Handler;\n};\n\nexport type ResourceList = {\n [resourceName: string]: string;\n};\n\nexport type EnvVarSource = {\n fieldRef?: {\n apiVersion?: string;\n fieldPath: string;\n };\n resourceFieldRef?: {\n resource: string;\n containerName?: string;\n divisor?: string;\n };\n configMapKeyRef?: {\n key: string;\n name: string;\n };\n secretKeyRef?: {\n key: string;\n name: string;\n };\n configMapRef?: {\n key?: string;\n name: string;\n };\n secretRef?: {\n key?: string;\n name: string;\n };\n configMapSecretRef?: {\n key?: string;\n name: string;\n };\n serviceAccountRef?: {\n key?: string;\n name: string;\n };\n};\n\nexport type EnvVar = {\n name: string;\n value?: string;\n valueFrom?: EnvVarSource;\n};\n\nexport type ContainerPort = {\n name?: string;\n containerPort: number;\n protocol: string;\n};\n\nexport enum ImagePullPolicy {\n Always = 'Always',\n Never = 'Never',\n IfNotPresent = 'IfNotPresent',\n}\n\nexport type NodeAffinity = {\n preferredDuringSchedulingIgnoredDuringExecution?: {\n preference: Selector;\n weight: number;\n }[];\n requiredDuringSchedulingIgnoredDuringExecution?: {\n nodeSelectorTerms: Selector[];\n };\n};\n\nexport type PodAffinityTerm = {\n labelSelector?: Selector;\n namespaces?: string[];\n topologyKey: string;\n};\n\nexport type PodAffinity = {\n preferredDuringSchedulingIgnoredDuringExecution: {\n podAffinityTerm: PodAffinityTerm;\n weight?: number;\n }[];\n requiredDuringSchedulingIgnoredDuringExecution: PodAffinityTerm[];\n};\n\nexport type ContainerSpec = {\n name: string;\n volumeMounts?: VolumeMount[];\n volumeDevices?: VolumeDevice[];\n env?: EnvVar[];\n livenessProbe?: ContainerProbe;\n readinessProbe?: ContainerProbe;\n lifecycle?: ContainerLifecycle;\n resources?: {\n limits?: ResourceList;\n requested?: ResourceList;\n };\n ports?: ContainerPort[];\n imagePullPolicy?: ImagePullPolicy;\n [key: string]: any;\n};\n\nexport type Volume = {\n name: string;\n [key: string]: any;\n};\n\nexport type PodSpec = {\n volumes?: Volume[];\n initContainers?: ContainerSpec[];\n containers: ContainerSpec[];\n restartPolicy?: 'Always' | 'OnFailure' | 'Never';\n terminationGracePeriodSeconds?: number;\n activeDeadlineSeconds?: number;\n nodeSelector?: any;\n serviceAccountName?: string;\n priorityClassName?: string;\n tolerations?: Toleration[];\n nodeName?: string;\n hostname?: string;\n [key: string]: any;\n};\n\n// https://github.com/kubernetes/api/blob/release-1.16/core/v1/types.go#L2411-L2432\ntype PodPhase = 'Pending' | 'Running' | 'Succeeded' | 'Failed' | 'Unknown';\n\ntype ContainerStateValue = {\n reason?: string;\n [key: string]: any;\n};\n\nexport type ContainerState = {\n waiting?: ContainerStateValue;\n running?: ContainerStateValue;\n terminated?: ContainerStateValue;\n};\n\nexport type ContainerStatus = {\n name: string;\n state?: ContainerState;\n lastState?: ContainerState;\n ready: boolean;\n restartCount: number;\n image: string;\n imageID: string;\n containerID?: string;\n};\n\nexport type PodCondition = {\n lastProbeTime?: string;\n} & K8sResourceCondition;\n\nexport type PodStatus = {\n phase: PodPhase;\n conditions?: PodCondition[];\n message?: string;\n reason?: string;\n startTime?: string;\n initContainerStatuses?: ContainerStatus[];\n containerStatuses?: ContainerStatus[];\n [key: string]: any;\n};\n\nexport type PodTemplate = {\n metadata: ObjectMetadata;\n spec: PodSpec;\n};\n\nexport type PodKind = {\n status?: PodStatus;\n} & K8sResourceCommon &\n PodTemplate;\n\nexport type DeploymentCondition = {\n lastUpdateTime?: string;\n} & K8sResourceCondition;\n\nexport type DeploymentKind = {\n spec: {\n minReadySeconds?: number;\n paused?: boolean;\n progressDeadlineSeconds?: number;\n replicas?: number;\n revisionHistoryLimit?: number;\n selector: Selector;\n strategy?: {\n rollingUpdate?: {\n maxSurge: number | string;\n maxUnavailable: number | string;\n };\n type?: string;\n };\n template: PodTemplate;\n };\n status?: {\n availableReplicas?: number;\n collisionCount?: number;\n conditions?: DeploymentCondition[];\n observedGeneration?: number;\n readyReplicas?: number;\n replicas?: number;\n unavailableReplicas?: number;\n updatedReplicas?: number;\n };\n} & K8sResourceCommon;\n\nexport type DeploymentConfigKind = {\n spec: {\n paused?: boolean;\n replicas?: number;\n selector: Selector;\n strategy?: {\n rollingUpdate?: {\n maxSurge: number | string;\n maxUnavailable: number | string;\n };\n type?: string;\n };\n template: PodTemplate;\n };\n status?: {\n latestVersion?: number;\n };\n} & K8sResourceCommon;\n\nexport type ResourceQuotaKind = {\n spec?: {\n hard?: { [key: string]: string };\n scopes?: string[];\n scopeSelector?: {\n matchExpressions?: { scopeName: string; operator: string; values?: string[] }[];\n };\n };\n status?: {\n hard?: { [key: string]: string };\n used?: { [key: string]: string };\n };\n} & K8sResourceCommon;\n\nexport type ClusterResourceQuotaKind = {\n spec?: {\n selector?: {\n labels?: Selector;\n annotations?: MatchLabels;\n };\n quota?: {\n hard?: { [key: string]: string };\n scopes?: string[];\n scopeSelector?: {\n matchExpressions?: { scopeName: string; operator: string; values?: string[] }[];\n };\n };\n };\n status?: {\n namespaces?: {\n namespace: string;\n status: { used?: { [key: string]: string }; hard?: { [key: string]: string } };\n }[];\n total?: { hard?: { [key: string]: string }; used?: { [key: string]: string } };\n };\n} & K8sResourceCommon;\n\nexport type AppliedClusterResourceQuotaKind = ClusterResourceQuotaKind;\n\ntype CurrentObject = {\n averageUtilization?: number;\n averageValue?: string;\n value?: string;\n};\n\ntype MetricObject = {\n name: string;\n selector?: Selector;\n};\n\ntype TargetObjcet = {\n averageUtilization?: number;\n type: string;\n averageValue?: string;\n value?: string;\n};\n\ntype DescribedObject = {\n apiVersion?: string;\n kind: string;\n name: string;\n};\nexport type HPAMetric = {\n type: 'Object' | 'Pods' | 'Resource' | 'External';\n resource?: {\n name: string;\n target: TargetObjcet;\n };\n external?: {\n metric: MetricObject;\n target: TargetObjcet;\n };\n object?: {\n describedObjec: DescribedObject;\n metric: MetricObject;\n target: TargetObjcet;\n };\n pods?: {\n metric: MetricObject;\n target: TargetObjcet;\n };\n};\n\ntype HPAScalingPolicy = {\n hpaScalingPolicyType: 'Pods' | 'Percent';\n value: number;\n periodSeconds: number;\n};\n\ntype HPAScalingRules = {\n stabilizationWindowSeconds?: number;\n selectPolicy?: 'Max' | 'Min' | 'Disabled';\n policies?: HPAScalingPolicy[];\n};\n\ntype HPACurrentMetrics = {\n type: 'Object' | 'Pods' | 'Resource' | 'External';\n external?: {\n current: CurrentObject;\n metric: MetricObject;\n };\n object?: {\n current: CurrentObject;\n describedObject: DescribedObject;\n metric: MetricObject;\n };\n pods?: {\n current: CurrentObject;\n metric: MetricObject;\n };\n resource?: {\n name: string;\n current: CurrentObject;\n };\n};\n\nexport type HorizontalPodAutoscalerKind = K8sResourceCommon & {\n spec: {\n scaleTargetRef: {\n apiVersion: string;\n kind: string;\n name: string;\n };\n minReplicas?: number;\n maxReplicas: number;\n metrics?: HPAMetric[];\n behavior?: {\n scaleUp?: HPAScalingRules;\n scaleDown?: HPAScalingRules;\n };\n };\n status?: {\n currentReplicas: number;\n desiredReplicas: number;\n currentMetrics?: HPACurrentMetrics[];\n conditions: NodeCondition[];\n lastScaleTime?: string;\n };\n};\n\nexport type StorageClassResourceKind = {\n provisioner: string;\n reclaimPolicy: string;\n parameters?: {\n [key: string]: string;\n };\n} & K8sResourceCommon;\n\nexport type ConfigMapKind = {\n data?: { [key: string]: string };\n binaryData?: { [key: string]: string };\n} & K8sResourceCommon;\n\nexport type JobTemplate = {\n metadata: ObjectMetadata;\n spec: {\n activeDeadlineSeconds?: number;\n backoffLimit?: number;\n completions?: number;\n manualSelector?: boolean;\n parallelism?: boolean;\n selector?: Selector;\n template: PodTemplate;\n ttlSecondsAfterFinished?: number;\n };\n};\n\nexport type JobKind = {\n apiVersion: string;\n kind: string;\n status: {\n active?: number;\n completionTime?: string;\n conditions?: K8sResourceCondition[];\n failed?: number;\n startTime?: string;\n succeeded?: number;\n };\n} & JobTemplate;\n\nexport type CronJobKind = {\n apiVersion: string;\n kind: string;\n metadata: ObjectMetadata;\n spec: {\n concurrencyPolicy?: string;\n failedJobsHistoryLimit?: number;\n jobTemplate: JobTemplate;\n schedule: string;\n startingDeadlineSeconds?: number;\n successfulJobsHistoryLimit?: number;\n suspend?: boolean;\n };\n status: {\n active?: {\n apiVersion?: string;\n fieldPath?: string;\n kind?: string;\n name?: string;\n namespace?: string;\n resourceVersion?: string;\n uid?: string;\n }[];\n lastScheduleTime?: string;\n };\n};\n\nexport type CRDVersion = {\n name: string;\n served: boolean;\n storage: boolean;\n schema: {\n // NOTE: Actually a subset of JSONSchema, but using this type for convenience\n openAPIV3Schema: JSONSchema7;\n };\n};\n\nexport type CustomResourceDefinitionKind = {\n spec: {\n group: string;\n versions: CRDVersion[];\n names: {\n kind: string;\n singular: string;\n plural: string;\n listKind: string;\n shortNames?: string[];\n };\n scope: 'Cluster' | 'Namespaced';\n };\n status?: {\n conditions?: K8sResourceCondition[];\n };\n} & K8sResourceCommon;\n\nexport type RouteTarget = {\n kind: 'Service';\n name: string;\n weight: number;\n};\n\nexport type RouteTLS = {\n caCertificate?: string;\n certificate?: string;\n destinationCACertificate?: string;\n insecureEdgeTerminationPolicy?: string;\n key?: string;\n termination: string;\n};\n\nexport type RouteIngress = {\n conditions: K8sResourceCondition[];\n host?: string;\n routerCanonicalHostname?: string;\n routerName?: string;\n wildcardPolicy?: string;\n};\n\nexport type RouteKind = {\n spec: {\n alternateBackends?: RouteTarget[];\n host?: string;\n path?: string;\n port?: {\n targetPort: number | string;\n };\n subdomain?: string;\n tls?: RouteTLS;\n to: RouteTarget;\n wildcardPolicy?: string;\n };\n status?: {\n ingress: RouteIngress[];\n url?: string;\n conditions?: K8sResourceCondition[];\n };\n} & K8sResourceCommon;\n\nexport type CloudCredentialKind = {\n spec: {\n credentialsMode: string;\n };\n} & K8sResourceCommon;\n\nexport type InfrastructureKind = {\n status: {\n platform: string;\n };\n} & K8sResourceCommon;\n\nexport type AuthenticationKind = {\n spec: {\n serviceAccountIssuer: string;\n };\n} & K8sResourceCommon;\n\nexport type TemplateParameter = {\n name: string;\n value?: string;\n displayName?: string;\n description?: string;\n generate?: string;\n required?: boolean;\n};\n\nexport type TemplateKind = {\n message?: string;\n objects: any[];\n parameters: TemplateParameter[];\n labels?: any[];\n} & K8sResourceCommon;\n\ntype TemplateInstanceObject = {\n ref: ObjectReference;\n};\n\nexport type TemplateInstanceKind = {\n spec: {\n template: TemplateKind;\n secret: {\n name: string;\n };\n requester?: {\n username?: string;\n uid?: string;\n groups?: string[];\n extra?: any;\n };\n };\n status?: {\n conditions: K8sResourceCondition[];\n objects: TemplateInstanceObject[];\n };\n} & K8sResourceCommon;\n\nexport type MachineAWSPlacement = {\n availabilityZone?: string;\n region?: string;\n};\n\nexport type MachineSpec = {\n providerSpec: {\n value?: {\n placement?: MachineAWSPlacement;\n instanceType?: string;\n vmSize?: string;\n machineType?: string;\n flavor?: string;\n };\n };\n versions: {\n kubelet: string;\n };\n [key: string]: any;\n};\n\nexport type MachineKind = {\n spec: MachineSpec;\n status?: {\n phase?: string;\n addresses: NodeAddress[];\n lastUpdated: string;\n nodeRef: {\n kind: string;\n name: string;\n uid: string;\n };\n providerStatus: {\n kind: string;\n conditions?: K8sResourceCondition[];\n [key: string]: any;\n };\n };\n} & K8sResourceCommon;\n\nexport type MachineSetKind = {\n spec: {\n replicas: number;\n selector: any;\n template: {\n spec: MachineSpec;\n };\n };\n status?: {\n availableReplicas: number;\n fullyLabeledReplicas: number;\n readyReplicas: number;\n replicas: number;\n };\n} & K8sResourceCommon;\n\nexport type Patch = {\n op: string;\n path: string;\n value?: any;\n};\n\nexport type RollingUpdate = { maxUnavailable?: number | string; maxSurge?: number | string };\nexport type DeploymentUpdateStrategy =\n | {\n type: 'Recreate';\n }\n | {\n type: 'RollingUpdate';\n rollingUpdate: RollingUpdate;\n };\n\nexport type MachineDeploymentKind = {\n spec: {\n replicas: number;\n selector: Selector;\n template: {\n spec: MachineSpec;\n };\n paused?: boolean;\n minReadySeconds?: number;\n progressDeadlineSeconds?: number;\n strategy: DeploymentUpdateStrategy;\n };\n status?: {\n availableReplicas: number;\n unavailableReplicas: number;\n readyReplicas: number;\n replicas: number;\n };\n} & K8sResourceCommon;\n\nexport type MachineConfigKind = {\n spec: {\n osImageURL: string;\n config: any;\n };\n} & K8sResourceCommon;\n\nexport enum MachineConfigPoolConditionType {\n Degraded = 'Degraded',\n NodeDegraded = 'NodeDegraded',\n RenderDegraded = 'RenderDegraded',\n Updated = 'Updated',\n Updating = 'Updating',\n}\n\nexport type MachineConfigPoolCondition = {\n type: keyof typeof MachineConfigPoolConditionType;\n} & K8sResourceCondition;\n\nexport type MachineConfigPoolStatus = {\n observedGeneration?: number;\n configuration: {\n name: string;\n source: ObjectReference[];\n };\n machineCount: number;\n updatedMachineCount: number;\n readyMachineCount: number;\n unavailableMachineCount: number;\n conditions?: MachineConfigPoolCondition[];\n};\n\nexport type MachineConfigPoolSpec = {\n machineConfigSelector?: Selector;\n maxUnavailable?: number | string;\n nodeSelector?: Selector;\n paused?: boolean;\n};\n\nexport type MachineConfigPoolKind = {\n /*\n * spec is required per\n * https://github.com/openshift/machine-config-operator/blob/master/pkg/apis/machineconfiguration.openshift.io/v1/types.go#L228-L229\n * but the API doesn't enforce it\n */\n spec?: MachineConfigPoolSpec;\n status?: MachineConfigPoolStatus;\n} & K8sResourceKind;\n\nexport type Release = {\n version: string;\n image: string;\n url?: string;\n channels?: string[];\n};\n\nexport type ConditionalUpdate = {\n release: Release;\n conditions: K8sResourceCondition[];\n};\n\nexport type UpdateHistory = {\n state: 'Completed' | 'Partial';\n startedTime: string;\n completionTime: string;\n version: string;\n image: string;\n verified: boolean;\n};\n\nexport enum ClusterVersionConditionType {\n Available = 'Available',\n Failing = 'Failing',\n Progressing = 'Progressing',\n RetrievedUpdates = 'RetrievedUpdates',\n Invalid = 'Invalid',\n Upgradeable = 'Upgradeable',\n ReleaseAccepted = 'ReleaseAccepted',\n}\n\nexport type ClusterVersionCondition = {\n type: keyof typeof ClusterVersionConditionType;\n} & K8sResourceCondition;\n\ntype ClusterVersionStatus = {\n desired: Release;\n history: UpdateHistory[];\n observedGeneration: number;\n versionHash: string;\n conditions?: ClusterVersionCondition[];\n availableUpdates: Release[];\n conditionalUpdates?: ConditionalUpdate[];\n};\n\ntype ClusterVersionSpec = {\n channel: string;\n clusterID: string;\n desiredUpdate?: Release;\n upstream?: string;\n};\n\nexport type ClusterVersionKind = {\n spec: ClusterVersionSpec;\n status: ClusterVersionStatus;\n} & K8sResourceCommon;\n\nexport type OperandVersion = {\n name: string;\n version: string;\n};\n\nexport type ClusterOperatorObjectReference = {\n group: string;\n resource: string;\n namespace?: string;\n name: string;\n};\n\nexport type ClusterOperator = {\n spec: {};\n status: {\n conditions?: K8sResourceCondition[];\n versions?: OperandVersion[];\n relatedObjects?: ClusterOperatorObjectReference[];\n };\n} & K8sResourceCommon;\n\nexport type MappingMethodType = 'claim' | 'lookup' | 'add';\n\ntype IdentityProviderType =\n | 'BasicAuth'\n | 'GitHub'\n | 'GitLab'\n | 'Google'\n | 'HTPasswd'\n | 'Keystone'\n | 'LDAP'\n | 'OpenID'\n | 'RequestHeader';\n\ntype IdentityProviderConfig = {\n [key: string]: any;\n};\n\nexport type IdentityProvider = {\n name: string;\n mappingMethod: MappingMethodType;\n type: IdentityProviderType;\n basicAuth?: IdentityProviderConfig;\n github?: IdentityProviderConfig;\n gitlab?: IdentityProviderConfig;\n google?: IdentityProviderConfig;\n htpasswd?: IdentityProviderConfig;\n keystone?: IdentityProviderConfig;\n ldap?: IdentityProviderConfig;\n openID?: IdentityProviderConfig;\n requestHeader?: IdentityProviderConfig;\n};\n\nexport type OAuthKind = {\n spec: {\n identityProviders?: IdentityProvider[];\n tokenConfig?: {\n accessTokenMaxAgeSeconds: number;\n };\n templates?: {\n login: string;\n providerSelection: string;\n error: string;\n };\n };\n} & K8sResourceCommon;\n\nexport type ResourceAccessReviewRequest = {\n apiVersion: string;\n kind: string;\n namespace?: string;\n resourceAPIVersion: string;\n resourceAPIGroup: string;\n resource: string;\n verb: K8sVerb;\n};\n\nexport type ResourceAccessReviewResponse = {\n namespace?: string;\n users: string[];\n groups: string[];\n} & K8sResourceCommon;\n\nexport type UserInfo = {\n uid?: string;\n username?: string;\n groups?: string[];\n extra?: object;\n};\n\nexport type UserKind = {\n fullName?: string;\n identities: string[];\n} & K8sResourceCommon;\n\nexport type GroupKind = {\n users: string[];\n} & K8sResourceCommon;\n\n/**\n * @deprecated migrated to new type K8sModel, use K8sModel from dynamic-plugin-sdk over K8sKind\n */\nexport type K8sKind = K8sModel;\n\nexport type Cause = {\n field: string;\n message: string;\n reason: string;\n};\n\nexport type Status = {\n apiVersion: 'v1';\n kind: 'Status';\n details: {\n causes: Cause[];\n group: string;\n kind: string;\n };\n message: string;\n metadata: any;\n reason: string;\n status: string;\n};\n\nexport type SecretKind = {\n data?: { [key: string]: string };\n stringData?: { [key: string]: string };\n type?: string;\n} & K8sResourceCommon;\n\nexport type ServiceAccountKind = {\n automountServiceAccountToken?: boolean;\n imagePullSecrets?: { [key: string]: string };\n secrets?: SecretKind[] | { [key: string]: string };\n} & K8sResourceCommon;\n\nexport type ListKind = K8sResourceCommon & {\n items: R[];\n};\n\nexport type EventKind = {\n action?: string;\n count?: number;\n type?: string;\n involvedObject: EventInvolvedObject;\n message?: string;\n eventTime?: string;\n lastTimestamp?: string;\n firstTimestamp?: string;\n reason?: string;\n source: {\n component: string;\n host?: string;\n };\n series?: {\n count?: number;\n lastObservedTime?: string;\n state?: string;\n };\n} & K8sResourceCommon;\n\nexport type MachineHealthCondition = {\n type: string;\n status: string;\n timeout: string;\n};\n\nexport type MachineHealthCheckKind = K8sResourceCommon & {\n spec: {\n selector: Selector;\n unhealthyConditions: MachineHealthCondition[];\n };\n};\n\nexport type VolumeSnapshotKind = K8sResourceCommon & {\n status?: VolumeSnapshotStatus & {\n boundVolumeSnapshotContentName?: string;\n };\n spec: {\n source: {\n persistentVolumeClaimName?: string;\n volumeSnapshotContentName?: string;\n };\n volumeSnapshotClassName: string;\n };\n};\n\nexport type VolumeSnapshotContentKind = K8sResourceCommon & {\n status: VolumeSnapshotStatus & {\n snapshotHandle?: string;\n };\n spec: {\n volumeSnapshotRef: {\n name: string;\n namespace: string;\n };\n source: {\n volumeHandle?: string;\n snapshotHandle?: string;\n };\n volumeSnapshotClassName: string;\n driver: string;\n deletionPolicy: 'Delete' | 'Retain';\n };\n};\n\nexport type VolumeSnapshotStatus = {\n readyToUse: boolean;\n restoreSize?: number;\n error?: {\n message: string;\n time: string;\n };\n};\n\nexport type VolumeSnapshotClassKind = K8sResourceCommon & {\n deletionPolicy: string;\n driver: string;\n};\n\nexport type PersistentVolumeClaimKind = K8sResourceCommon & {\n spec: {\n accessModes: string[];\n resources: {\n requests: {\n storage: string;\n };\n };\n storageClassName: string;\n volumeMode?: string;\n /* Parameters in a cloned PVC */\n dataSource?: {\n name: string;\n kind: string;\n apiGroup: string;\n };\n /**/\n };\n status?: {\n phase: string;\n };\n};\n\nexport type NetworkPolicyKind = K8sResourceCommon & {\n spec: {\n podSelector?: Selector;\n ingress?: {\n from?: NetworkPolicyPeer[];\n ports?: NetworkPolicyPort[];\n }[];\n egress?: {\n to?: NetworkPolicyPeer[];\n ports?: NetworkPolicyPort[];\n }[];\n policyTypes?: string[];\n };\n};\n\nexport type NetworkPolicyPeer = {\n podSelector?: Selector;\n namespaceSelector?: Selector;\n ipBlock?: {\n cidr: string;\n except?: string[];\n };\n};\n\nexport type NetworkPolicyPort = {\n port?: string | number;\n protocol?: string;\n};\n\nexport type ConsolePluginKind = K8sResourceCommon & {\n spec: {\n displayName: string;\n backend: {\n service: {\n basePath?: string;\n name: string;\n namespace: string;\n port: number;\n };\n type: 'Service';\n };\n i18n?: {\n loadType: 'Preload' | 'Lazy' | '';\n };\n proxy?: ConsolePluginProxy[];\n };\n};\n\nexport type ConsolePluginProxy = {\n alias: string;\n authorization?: 'UserToken' | 'None';\n caCertificate?: string;\n endpoint: {\n service: {\n name: string;\n namespace: string;\n port: string;\n };\n type: 'Service';\n };\n};\n\nexport type K8sPodControllerKind = {\n spec?: {\n replicas?: number;\n template?: PodTemplate;\n jobTemplate?: {\n spec?: {\n template: PodTemplate;\n };\n };\n };\n} & K8sResourceCommon;\n\nexport type DaemonSetKind = {\n spec: {\n minReadySeconds?: number;\n revisionHistoryLimit?: number;\n selector: Selector;\n template: PodTemplate;\n updateStrategy?: DeploymentUpdateStrategy;\n };\n status?: {\n collisionCount?: number;\n conditions?: DeploymentCondition[];\n currentNumberScheduled: number;\n desiredNumberScheduled: number;\n numberAvailable?: number;\n numberMisscheduled: number;\n numberReady: number;\n numberUnavailable: number;\n observedGeneration: number;\n updatedNumberScheduled: number;\n };\n} & K8sResourceCommon;\n\n/**\n * Not a real resource kind. A shared resource kind between resources that control pods.\n * eg. Deployment, Statefulset, ReplicaSet, etc..\n */\nexport type ReplicationControllerKind = {\n spec?: {\n minReadySeconds?: number;\n replicas?: number;\n selector: Selector;\n template: PodTemplate;\n };\n status?: {\n availableReplicas?: number;\n conditions?: DeploymentCondition[];\n fullyLabeledReplicas?: number;\n observedGeneration?: number;\n readyReplicas?: number;\n replicas: number;\n };\n} & K8sResourceCommon;\n\nexport type ReplicaSetKind = {} & ReplicationControllerKind;\n\ntype EndpointSlice = {\n kind?: string;\n name?: string;\n namespace?: string;\n uid?: string;\n};\n\nexport type EndpointSliceKind = {\n endpoints?: EndpointSlice[];\n} & K8sResourceCommon;\n","import * as React from 'react';\nimport ErrorBoundary from '../error-boundary';\nimport ErrorBoundaryFallbackPage from './ErrorBoundaryFallbackPage';\n\n/**\n * Mount an error boundary that will render a full page error stack trace.\n * @see ErrorBoundaryInline for a more inline option.\n */\nconst ErrorBoundaryPage: React.FC = (props) => {\n return ;\n};\n\nexport default ErrorBoundaryPage;\n","import * as React from 'react';\nimport ErrorBoundary from '../error-boundary';\nimport ErrorBoundaryFallbackInline from './ErrorBoundaryFallbackInline';\n\ntype ErrorBoundaryInlineProps = {\n wrapper?: React.ComponentType<{ children: React.ReactNode }>;\n};\n\n/**\n * Mount an error boundary that will render an inline error with modal stack trace.\n * @see ErrorBoundaryPage if you do not need an inline fallback.\n */\nconst ErrorBoundaryInline: React.FC = ({\n wrapper: Wrapper,\n ...props\n}) => {\n let fallback = ErrorBoundaryFallbackInline;\n if (Wrapper) {\n fallback = (innerProps) => (\n \n \n \n );\n }\n\n return ;\n};\n\nexport default ErrorBoundaryInline;\n","import * as React from 'react';\nimport { ModelBadge } from '@console/dynamic-plugin-sdk/src/extensions/resource-metadata';\nimport DevPreviewBadge from './DevPreviewBadge';\nimport { InlineDevPreviewBadge, InlineTechPreviewBadge } from './InlineBadge';\nimport TechPreviewBadge from './TechPreviewBadge';\n\nexport enum BadgeType {\n DEV = 'Dev Preview',\n TECH = 'Tech Preview',\n}\n\nexport const getBadgeFromType = (badge: ModelBadge | BadgeType): React.ReactElement => {\n switch (badge) {\n case ModelBadge.DEV:\n case BadgeType.DEV:\n return ;\n case ModelBadge.TECH:\n case BadgeType.TECH:\n return ;\n default:\n return null;\n }\n};\n\nexport const getInlineBadgeFromType = (badge: ModelBadge | BadgeType): React.ReactElement => {\n switch (badge) {\n case ModelBadge.DEV:\n case BadgeType.DEV:\n return ;\n case ModelBadge.TECH:\n case BadgeType.TECH:\n return ;\n default:\n return null;\n }\n};\n","import * as React from 'react';\nimport { Badge } from '@patternfly/react-core';\nimport { K8sKind, kindToAbbr } from '@console/internal/module/k8s';\nimport './EmptyStateResourceBadge.scss';\n\ntype EmptyStateResourceBadgeProps = {\n model: K8sKind;\n};\n\nconst EmptyStateResourceBadge: React.FC = ({ model }) => (\n

    \n \n {model.abbr || kindToAbbr(model.kind)}\n \n
    \n);\n\nexport default EmptyStateResourceBadge;\n","export { default as ClampedText } from './ClampedText';\n","import * as React from 'react';\nimport { Popover } from '@patternfly/react-core';\nimport Measure from 'react-measure';\nimport { useDebounceCallback } from '../../hooks';\nimport './ClampedText.scss';\n\ntype ClampedTextProps = {\n children: React.ReactNode;\n lineClamp?: number;\n};\n\nconst ClampedText: React.FC = ({ children, lineClamp = 1 }) => {\n const [isContentClamped, setContentClamped] = React.useState(false);\n const debouncedSetContentClamped = useDebounceCallback(\n ({ scroll: { height: scrollHeight }, offset: { height: offsetHeight } }) =>\n setContentClamped(scrollHeight > offsetHeight),\n );\n const style = { '--ocs-clamped-text--line-clamp': lineClamp } as React.CSSProperties;\n\n return (\n \n {({ measureRef }) => (\n
    \n {isContentClamped ? (\n \n
    \n {children}\n
    \n
    \n ) : (\n <>{children}\n )}\n
    \n )}\n
    \n );\n};\n\nexport default ClampedText;\n","import * as React from 'react';\nimport { isModalOpen } from '@console/internal/components/modals';\nimport { KEYBOARD_SHORTCUTS } from '../constants/common';\n\n/**\n * Use this hook for components that require visibility only\n * when the user is actively interacting with the document.\n */\n\nexport enum KeyEventModes {\n HIDE = 'HIDE',\n FOCUS = 'FOCUS',\n}\n\nconst textInputKeyHandler = {\n [KEYBOARD_SHORTCUTS.blurFilterInput]: KeyEventModes.HIDE,\n [KEYBOARD_SHORTCUTS.focusFilterInput]: KeyEventModes.FOCUS,\n};\n\nexport const useDocumentListener = (\n keyEventMap: KeyEventMap = textInputKeyHandler,\n) => {\n const [visible, setVisible] = React.useState(true);\n const ref = React.useRef(null);\n\n const handleEvent = (e) => {\n if (!ref?.current?.contains(e.target)) {\n setVisible(false);\n }\n };\n\n const handleKeyEvents = (e) => {\n // Don't steal focus from a modal open on top of the page.\n if (isModalOpen()) {\n return;\n }\n const { nodeName } = e.target;\n switch (keyEventMap[e.key]) {\n case KeyEventModes.HIDE:\n setVisible(false);\n ref.current.blur();\n break;\n case KeyEventModes.FOCUS:\n if (\n document.activeElement !== ref.current &&\n // Don't steal focus if the user types the focus shortcut in another text input.\n nodeName !== 'INPUT' &&\n nodeName !== 'TEXTAREA'\n ) {\n ref.current.focus();\n e.preventDefault();\n }\n break;\n default:\n break;\n }\n };\n\n React.useEffect(() => {\n document.addEventListener('click', handleEvent, true);\n document.addEventListener('keydown', handleKeyEvents, true);\n return () => {\n document.removeEventListener('click', handleEvent, true);\n document.removeEventListener('keydown', handleKeyEvents, true);\n };\n });\n\n return { visible, setVisible, ref };\n};\n\nexport type KeyEventMap = {\n [key: string]: KeyEventModes;\n};\n","import * as React from 'react';\n\ntype FullScreenAPI = {\n requestFullscreen: string;\n exitFullscreen: string;\n fullscreenElement: string;\n fullscreenEnabled: string;\n fullscreenchange: string;\n fullscreenerror: string;\n};\n\nconst spec: FullScreenAPI = {\n requestFullscreen: 'requestFullscreen',\n exitFullscreen: 'exitFullscreen',\n fullscreenElement: 'fullscreenElement',\n fullscreenEnabled: 'fullscreenEnabled',\n fullscreenchange: 'fullscreenchange',\n fullscreenerror: 'fullscreenerror',\n};\n\nconst moz: FullScreenAPI = {\n requestFullscreen: 'mozRequestFullscreen',\n exitFullscreen: 'mozExitFullscreen',\n fullscreenElement: 'mozFullscreenElement',\n fullscreenEnabled: 'mozFullscreenEnabled',\n fullscreenchange: 'mozfullscreenchange',\n fullscreenerror: 'mozfullscreenerror',\n};\n\nconst webkit: FullScreenAPI = {\n requestFullscreen: 'webkitRequestFullscreen',\n exitFullscreen: 'webkitExitFullscreen',\n fullscreenElement: 'webkitFullscreenElement',\n fullscreenEnabled: 'webkitFullscreenEnabled',\n fullscreenchange: 'webkitfullscreenchange',\n fullscreenerror: 'webkitfullscreenerror',\n};\n\nconst ms: FullScreenAPI = {\n requestFullscreen: 'msRequestFullscreen',\n exitFullscreen: 'msExitFullscreen',\n fullscreenElement: 'msFullscreenElement',\n fullscreenEnabled: 'msFullscreenEnabled',\n fullscreenchange: 'msfullscreenchange',\n fullscreenerror: 'msfullscreenerror',\n};\n\nconst allPrefixes: FullScreenAPI[] = [spec, moz, webkit, ms];\n\nconst nativeAPI: FullScreenAPI =\n (function (doc) {\n return allPrefixes.find((x: FullScreenAPI) => !!doc[x.fullscreenEnabled]);\n })(document) ?? spec;\n\nexport const useFullscreen = (): [\n boolean,\n (node: T) => void,\n () => void,\n boolean,\n] => {\n const [isFullscreen, setIsFullscreen] = React.useState(false);\n const fullscreenRef = React.useRef(isFullscreen);\n fullscreenRef.current = isFullscreen;\n const elementRef = React.useRef();\n\n const listener = React.useCallback((event) => {\n setIsFullscreen(document[nativeAPI.fullscreenElement] === event.target);\n }, []);\n\n const targetCallbackRef = React.useCallback(\n (node: T) => {\n if (document[nativeAPI.fullscreenEnabled]) {\n if (elementRef.current && elementRef.current !== node) {\n elementRef.current.removeEventListener(nativeAPI.fullscreenchange, listener);\n elementRef.current.removeEventListener(nativeAPI.fullscreenerror, listener);\n }\n if (node != null) {\n elementRef.current = node;\n node.addEventListener(nativeAPI.fullscreenchange, listener);\n node.addEventListener(nativeAPI.fullscreenerror, listener);\n }\n }\n },\n [listener],\n );\n\n const fullscreenToggleCallback = React.useCallback(() => {\n if (elementRef.current && document[nativeAPI.fullscreenEnabled]) {\n fullscreenRef.current\n ? document[nativeAPI.exitFullscreen]()\n : elementRef.current[nativeAPI.requestFullscreen]();\n }\n }, []);\n\n return [\n isFullscreen,\n targetCallbackRef,\n fullscreenToggleCallback,\n document[nativeAPI.fullscreenEnabled],\n ];\n};\n","import * as React from 'react';\n\nexport enum ScrollDirection {\n scrollingUp = 'scrolling-up',\n scrollingDown = 'scrolling-down',\n scrolledToBottom = 'scrolled-to-bottom',\n scrolledToTop = 'scrolled-to-top',\n}\n\nexport const getScrollDirection = (\n prevScrollTop: number,\n currentScrollTop: number,\n scrollHeight: number,\n clientHeight: number,\n) => {\n let direction;\n if (scrollHeight - currentScrollTop === clientHeight) {\n direction = ScrollDirection.scrolledToBottom;\n } else if (currentScrollTop === 0) {\n direction = ScrollDirection.scrolledToTop;\n } else if (prevScrollTop > currentScrollTop) {\n direction = ScrollDirection.scrollingUp;\n } else if (prevScrollTop < currentScrollTop) {\n direction = ScrollDirection.scrollingDown;\n }\n return direction;\n};\n\nexport const useScrollDirection = (): [ScrollDirection, (event) => void] => {\n const scrollPosition = React.useRef(null);\n const [scrollDirection, setScrollDirection] = React.useState(null);\n const handleScroll = React.useCallback(\n (event) => {\n const { scrollHeight, scrollTop, clientHeight } = event.target;\n if (scrollPosition.current !== null) {\n const direction = getScrollDirection(\n scrollPosition.current,\n scrollTop,\n scrollHeight,\n clientHeight,\n );\n if (direction && direction !== scrollDirection) setScrollDirection(direction);\n }\n scrollPosition.current = scrollTop;\n },\n [scrollDirection],\n );\n\n return [scrollDirection, handleScroll];\n};\n","import * as React from 'react';\nimport { useResizeObserver } from './useResizeObserver';\n\nexport enum Shadows {\n none = 'none',\n both = 'both',\n top = 'top',\n bottom = 'bottom',\n}\n\nexport const useScrollShadows = (node: HTMLElement): Shadows => {\n const [shadows, setShadows] = React.useState(Shadows.none);\n const computeShadows = React.useCallback(() => {\n if (node) {\n const { scrollTop, clientHeight, scrollHeight } = node;\n const top = scrollTop !== 0;\n const bottom = scrollTop + clientHeight < scrollHeight;\n if (top && bottom) {\n setShadows(Shadows.both);\n } else if (top) {\n setShadows(Shadows.top);\n } else if (bottom) {\n setShadows(Shadows.bottom);\n } else {\n setShadows(Shadows.none);\n }\n }\n }, [node]);\n // recompute when the scroll container changes in size\n useResizeObserver(computeShadows, node);\n React.useEffect(() => {\n if (node) {\n // compute initial shadows\n computeShadows();\n // listen for scroll events\n node.addEventListener('scroll', computeShadows);\n }\n return () => {\n if (node) {\n node.removeEventListener('scroll', computeShadows);\n }\n };\n }, [node, computeShadows]);\n return shadows;\n};\n","import * as React from 'react';\nimport { AsyncComponent, AsyncComponentProps } from '@console/internal/components/utils';\nimport { OverviewTabSection, isOverviewTabSection, useExtensions } from '@console/plugin-sdk';\nimport { OverviewItem } from '../types';\n\nexport const getResourceTabSectionComp = (t: OverviewTabSection): React.FC => (\n props: AsyncComponentProps,\n) => React.createElement(AsyncComponent, { ...props, loader: t.properties.loader });\n\nexport const usePluginsOverviewTabSection = (\n item: OverviewItem,\n): { Component: React.FC; key: string }[] => {\n const tabSections = useExtensions(isOverviewTabSection);\n return React.useMemo(\n () =>\n tabSections\n .filter((section) => item[section.properties.key])\n .map((section: OverviewTabSection) => ({\n Component: getResourceTabSectionComp(section),\n key: section.properties.key,\n })),\n // `item` is complex object but we only use the presence of keys as a dependency\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(Object.keys(item).sort())],\n );\n};\n","import { K8sKind, K8sModel } from '@console/internal/module/k8s';\n\nexport const HelmChartRepositoryModel: K8sKind = {\n apiGroup: 'helm.openshift.io',\n apiVersion: 'v1beta1',\n kind: 'HelmChartRepository',\n id: 'helmchartrepository',\n plural: 'helmchartrepositories',\n label: 'Helm Chart Repository',\n labelPlural: 'Helm Chart Repositories',\n abbr: 'HCR',\n namespaced: false,\n crd: true,\n};\n\nexport const ProjectHelmChartRepositoryModel: K8sModel = {\n apiGroup: 'helm.openshift.io',\n apiVersion: 'v1beta1',\n kind: 'ProjectHelmChartRepository',\n id: 'projecthelmchartrepository',\n plural: 'projecthelmchartrepositories',\n label: 'Project Helm Chart Repository',\n labelPlural: 'Project Helm Chart Repositories',\n abbr: 'PHCR',\n namespaced: true,\n crd: true,\n};\n","import * as _ from 'lodash-es';\nimport * as React from 'react';\nimport * as classNames from 'classnames';\nimport * as TagsInput from 'react-tagsinput';\nimport { Label as PfLabel } from '@patternfly/react-core';\n\nimport { split, selectorFromString } from '../../module/k8s/selector';\nimport * as k8sSelectorRequirement from '../../module/k8s/selector-requirement';\nimport { selectorToString } from '@console/dynamic-plugin-sdk/src/utils/k8s';\n\n// Helpers for cleaning up tags by running them through the selector parser\nconst cleanSelectorStr = (tag) => selectorToString(selectorFromString(tag));\nconst cleanTags = (tags) => split(cleanSelectorStr(tags.join(',')));\n\nexport class SelectorInput extends React.Component {\n constructor(props) {\n super(props);\n this.isBasic = !!_.get(this.props.options, 'basic');\n this.setRef = (ref) => (this.ref_ = ref);\n this.state = {\n inputValue: '',\n isInputValid: true,\n tags: this.props.tags,\n };\n }\n\n componentDidUpdate(prevProps) {\n if (!_.isEqual(prevProps.tags, this.props.tags)) {\n this.setState({ tags: this.props.tags });\n }\n }\n static arrayify(obj) {\n return _.map(obj, (v, k) => (v ? `${k}=${v}` : k));\n }\n\n static objectify(arr) {\n const result = {};\n _.each(arr, (item) => {\n const [key, value = null] = item.split('=');\n result[key] = value;\n });\n return result;\n }\n\n static arrayObjectsToArrayStrings(obj) {\n return _.map(obj, (v) => `${v.key} ${v.operator.toLowerCase()} (${v.values.join(',')})`);\n }\n\n static arrayToArrayOfObjects(arr) {\n const result = [];\n for (const item of arr) {\n if (item.includes('(')) {\n const [key, operator, values] = item.split(' ');\n result.push({\n key,\n operator: _.capitalize(operator),\n // eslint-disable-next-line no-useless-escape\n values: values.replace(/[\\(\\)]/g, '').split(','),\n });\n }\n }\n return result;\n }\n focus() {\n this.ref_ && this.ref_.focus();\n }\n\n isTagValid(tag) {\n const requirement = k8sSelectorRequirement.requirementFromString(tag);\n return !!(requirement && (!this.isBasic || requirement.operator === 'Equals'));\n }\n\n handleInputChange(e) {\n // We track the input field value in state so we can retain the input value when an invalid tag is entered.\n // Otherwise, the default behaviour of TagsInput is to clear the input field.\n const inputValue = e.target.value;\n\n // If the user deletes an existing inputValue, set isInputValid back to true\n if (inputValue === '') {\n this.setState({ inputValue, isInputValid: true });\n return;\n }\n\n this.setState({ inputValue, isInputValid: this.isTagValid(inputValue) });\n }\n\n handleChange(tags, changed) {\n // The way we use TagsInput, there should only ever be one new tag in changed\n const newTag = changed[0];\n\n if (!this.isTagValid(newTag)) {\n this.setState({ isInputValid: false });\n return;\n }\n\n // Clean up the new tag by running it through the selector parser\n const cleanNewTag = cleanSelectorStr(newTag);\n\n // Is the new tag a duplicate of an already existing tag?\n // Note that TagsInput accepts an onlyUnique property, but we handle this logic ourselves so that we can set a\n // custom error class\n if (_.filter(tags, (tag) => tag === cleanNewTag).length > 1) {\n this.setState({ isInputValid: false });\n return;\n }\n\n const newTags = cleanTags(tags);\n this.setState({ inputValue: '', isInputValid: true, tags: newTags });\n this.props.onChange(newTags);\n }\n\n render() {\n const { inputValue, isInputValid, tags } = this.state;\n\n // Keys that add tags: Enter\n const addKeys = [13];\n\n // Backspace deletes tags, but not if there is text being edited in the input field\n const removeKeys = inputValue.length ? [] : [8];\n\n const inputProps = {\n autoFocus: this.props.autoFocus,\n className: classNames('input', { 'invalid-tag': !isInputValid }),\n onChange: this.handleInputChange.bind(this),\n placeholder: _.isEmpty(tags) ? this.props.placeholder || 'app=frontend' : '',\n spellCheck: 'false',\n value: inputValue,\n id: 'tags-input',\n ['data-test']: 'tags-input',\n ...(this.props.inputProps || {}),\n };\n\n const renderTag = ({ tag, key, onRemove, getTagDisplayValue }) => {\n return (\n onRemove(key)}\n isTruncated\n data-test={`label=${key}`}\n >\n {getTagDisplayValue(tag)}\n \n );\n };\n\n return (\n
    \n \n \n \n
    \n );\n }\n}\n","import * as React from 'react';\n// FIXME upgrading redux types is causing many errors at this time\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useSelector } from 'react-redux';\nimport { Base64 } from 'js-base64';\nimport * as _ from 'lodash-es';\nimport { Trans, useTranslation } from 'react-i18next';\nimport {\n Alert,\n AlertActionLink,\n Button,\n Checkbox,\n Divider,\n Dropdown,\n DropdownItem,\n DropdownGroup,\n Tooltip,\n MenuToggleElement,\n MenuToggle,\n DropdownList,\n} from '@patternfly/react-core';\nimport {\n Select as SelectDeprecated,\n SelectOption as SelectOptionDeprecated,\n SelectVariant as SelectVariantDeprecated,\n} from '@patternfly/react-core/deprecated';\nimport { LogViewer, LogViewerSearch } from '@patternfly/react-log-viewer';\nimport {\n CompressIcon,\n EllipsisVIcon,\n ExpandIcon,\n DownloadIcon,\n OutlinedWindowRestoreIcon,\n OutlinedPlayCircleIcon,\n} from '@patternfly/react-icons';\nimport * as classNames from 'classnames';\nimport {\n FLAGS,\n LOG_WRAP_LINES_USERSETTINGS_KEY,\n SHOW_FULL_LOG_USERSETTINGS_KEY,\n} from '@console/shared/src/constants';\nimport { useUserSettings } from '@console/shared';\nimport { LoadingInline, TogglePlay, ExternalLink } from './';\nimport { modelFor, resourceURL } from '../../module/k8s';\nimport { WSFactory } from '../../module/ws-factory';\nimport * as screenfull from 'screenfull';\nimport { RootState } from '@console/internal/redux';\nimport { k8sGet, k8sList, K8sResourceKind, PodKind } from '@console/internal/module/k8s';\nimport { ConsoleExternalLogLinkModel, ProjectModel } from '@console/internal/models';\nimport { useFlag, useIsMobile } from '@console/shared/src/hooks';\nimport { usePrevious } from '@console/shared/src/hooks/previous';\nimport { Link } from 'react-router-dom-v5-compat';\nimport { resourcePath } from './resource-link';\nimport { isWindowsPod } from '../../module/k8s/pods';\nimport { getImpersonate } from '@console/dynamic-plugin-sdk';\nimport useToggleLineBuffer from './useToggleLineBuffer';\n\nexport const STREAM_EOF = 'eof';\nexport const STREAM_LOADING = 'loading';\nexport const STREAM_PAUSED = 'paused';\nexport const STREAM_ACTIVE = 'streaming';\n\nexport const LOG_SOURCE_RESTARTING = 'restarting';\nexport const LOG_SOURCE_RUNNING = 'running';\nexport const LOG_SOURCE_TERMINATED = 'terminated';\nexport const LOG_SOURCE_WAITING = 'waiting';\n\nconst LOG_TYPE_CURRENT = 'current';\nconst LOG_TYPE_PREVIOUS = 'previous';\n\nconst DEFAULT_BUFFER_SIZE = 1000;\n\n// Messages to display for corresponding log status\nconst streamStatusMessages = {\n // t('public~Log stream ended.')\n [STREAM_EOF]: 'public~Log stream ended.',\n // t('public~Loading log...')\n [STREAM_LOADING]: 'public~Loading log...',\n // t('public~Log stream paused.')\n [STREAM_PAUSED]: 'public~Log stream paused.',\n // t('public~Log streaming...')\n [STREAM_ACTIVE]: 'public~Log streaming...',\n};\n\nconst replaceVariables = (template: string, values: any): string => {\n return _.reduce(\n values,\n (result, value, name) => {\n // Replace all occurrences of template expressions like \"${name}\" with the URL-encoded value.\n // eslint-disable-next-line prefer-template\n const pattern = _.escapeRegExp('${' + name + '}');\n return result.replace(new RegExp(pattern, 'g'), encodeURIComponent(value));\n },\n template,\n );\n};\n\n// Build a log API url for a given resource\nconst getResourceLogURL = (\n resource: K8sResourceKind,\n containerName?: string,\n tailLines?: number,\n follow?: boolean,\n logType?: LogTypeStatus,\n): string => {\n const previous = logType === LOG_TYPE_PREVIOUS;\n return resourceURL(modelFor(resource.kind), {\n name: resource.metadata.name,\n ns: resource.metadata.namespace,\n path: 'log',\n queryParams: {\n container: containerName || '',\n ...(tailLines && { tailLines: `${tailLines}` }),\n ...(follow && { follow: `${follow}` }),\n ...(previous && { previous: `${previous}` }),\n },\n });\n};\n\nconst HeaderBanner = ({ lines }) => {\n const { t } = useTranslation();\n const count = lines[lines.length - 1] || lines.length === 0 ? lines.length : lines.length - 1;\n const headerText = t('public~{{count}} line', { count });\n return <>{headerText};\n};\n\nconst FooterButton = ({ setStatus, linesBehind, className }) => {\n const { t } = useTranslation();\n const resumeText =\n linesBehind > 0\n ? t('public~Resume stream and show {{count}} new line', { count: linesBehind })\n : t('public~Resume stream');\n const handleClick = () => {\n setStatus(STREAM_ACTIVE);\n };\n return (\n \n );\n};\nconst showDebugAction = (pod: PodKind, containerName: string) => {\n if (!containerName) {\n return false;\n }\n const containerStatus = pod?.status?.containerStatuses?.find((c) => c.name === containerName);\n if (pod?.metadata?.annotations?.['openshift.io/build.name']) {\n return false;\n }\n if (pod?.metadata?.annotations?.['debug.openshift.io/source-container']) {\n return false;\n }\n\n const waitingReason = containerStatus?.state?.waiting?.reason;\n if (waitingReason === 'ImagePullBackOff' || waitingReason === 'ErrImagePull') {\n return false;\n }\n\n return !containerStatus?.state?.running || !containerStatus?.ready;\n};\n\n// Component for log stream controls\nexport const LogControls: React.FC = ({\n dropdown,\n toggleFullscreen,\n currentLogURL,\n isFullscreen,\n status,\n toggleStreaming,\n resource,\n containerName,\n podLogLinks,\n namespaceUID,\n toggleWrapLines,\n isWrapLines,\n changeLogType,\n hasPreviousLog,\n logType,\n showLogTypeSelect,\n isShowFullLog,\n toggleShowFullLog,\n}) => {\n const { t } = useTranslation();\n const [isLogTypeOpen, setLogTypeOpen] = React.useState(false);\n const isMobile = useIsMobile();\n const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);\n\n const onDropdownToggleClick = () => {\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n const onDropdownSelect = () => {\n setIsDropdownOpen(false);\n };\n\n const logTypes: Array = [\n { type: LOG_TYPE_CURRENT, text: t('public~Current log') },\n { type: LOG_TYPE_PREVIOUS, text: t('public~Previous log') },\n ];\n\n const logOption = (log: LogType) => {\n return (\n \n {log.text}\n \n );\n };\n\n const showStatus = () => {\n if (logType !== LOG_TYPE_PREVIOUS) {\n return (\n <>\n {status === STREAM_LOADING && (\n <>\n \n  \n \n )}\n {[STREAM_ACTIVE, STREAM_PAUSED].includes(status) && (\n \n )}\n {t(streamStatusMessages[status])}\n \n );\n }\n return <>{t(streamStatusMessages[STREAM_EOF])} ;\n };\n\n const logTypeSelect = (isDisabled: boolean) => {\n if (!showLogTypeSelect) {\n return null;\n }\n\n const select = (\n \n \n {\n setLogTypeOpen(isOpen);\n }}\n onSelect={(event: React.MouseEvent | React.ChangeEvent, value: LogTypeStatus) => {\n changeLogType(value);\n setLogTypeOpen(false);\n }}\n selections={logType}\n isOpen={isLogTypeOpen}\n isDisabled={isDisabled}\n aria-labelledby=\"logTypeSelect\"\n >\n {logTypes.map((log) => logOption(log))}\n \n \n );\n return hasPreviousLog ? (\n select\n ) : (\n \n {select}\n \n );\n };\n\n const renderPodLogLinks = () =>\n _.map(_.sortBy(podLogLinks, 'metadata.name'), (link) => {\n const namespace = resource.metadata.namespace;\n const namespaceFilter = link.spec.namespaceFilter;\n if (namespaceFilter) {\n try {\n const namespaceRegExp = new RegExp(namespaceFilter, 'g');\n if (namespace.search(namespaceRegExp)) {\n return null;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('invalid log link regex', namespaceFilter, e);\n return null;\n }\n }\n const url = replaceVariables(link.spec.hrefTemplate, {\n resourceName: resource.metadata.name,\n resourceUID: resource.metadata.uid,\n containerName,\n resourceNamespace: namespace,\n resourceNamespaceUID: namespaceUID,\n podLabels: JSON.stringify(resource.metadata.labels),\n });\n\n return isMobile ? (\n \n {link.spec.text}\n \n ) : (\n \n \n \n \n );\n });\n\n const label = t('public~Debug container');\n\n const fullLog = (\n
    \n \n {\n toggleShowFullLog(checked);\n }}\n />\n \n
    \n );\n\n const wrapLines = (\n {\n toggleWrapLines(checked);\n }}\n />\n );\n\n const raw = (\n <>\n \n {t('public~Raw')}\n \n );\n\n const download = (\n <>\n \n {t('public~Download')}\n \n );\n\n const fullscreen = isFullscreen ? (\n <>\n \n {t('public~Collapse')}\n \n ) : (\n <>\n \n {t('public~Expand')}\n \n );\n\n return (\n
    \n \n
    {showStatus()}
    \n {dropdown &&
    {dropdown}
    }\n
    {logTypeSelect(!hasPreviousLog)}
    \n
    \n {\n if (status === STREAM_ACTIVE) {\n toggleStreaming();\n }\n }}\n placeholder=\"Search\"\n minSearchChars={0}\n />\n
    \n {showDebugAction(resource, containerName) && !isWindowsPod(resource) && (\n \n {label}\n \n )}\n {showDebugAction(resource, containerName) && isWindowsPod(resource) && (\n \n {label}\n \n )}\n
    \n \n {isMobile ? (\n setIsDropdownOpen(isOpen)}\n toggle={(toggleRef: React.Ref) => (\n \n \n \n )}\n shouldFocusToggleOnSelect\n popperProps={{\n position: 'right',\n }}\n >\n \n \n {!_.isEmpty(podLogLinks) && renderPodLogLinks()}\n {\n e.preventDefault();\n toggleShowFullLog(!isShowFullLog);\n }}\n >\n {fullLog}\n \n {\n e.preventDefault();\n toggleWrapLines(!isWrapLines);\n }}\n >\n {wrapLines}\n \n \n {raw}\n \n \n {download}\n \n {screenfull.enabled && (\n {fullscreen}\n )}\n \n \n \n ) : (\n
    \n {!_.isEmpty(podLogLinks) && renderPodLogLinks()}\n
    {fullLog}
    \n \n {wrapLines}\n \n \n {raw}\n \n \n \n {download}\n \n {screenfull.enabled && (\n <>\n \n \n \n )}\n
    \n )}\n
    \n
    \n );\n};\n\n// Resource agnostic log component\nexport const ResourceLog: React.FC = ({\n bufferSize = DEFAULT_BUFFER_SIZE,\n containerName,\n dropdown,\n resource,\n resourceStatus,\n}) => {\n const { t } = useTranslation();\n const [showFullLog, setShowFullLog] = useUserSettings(\n SHOW_FULL_LOG_USERSETTINGS_KEY,\n false,\n true,\n );\n const [showFullLogCheckbox, setShowFullLogCheckbox] = React.useState(showFullLog);\n const buffer = useToggleLineBuffer(showFullLogCheckbox ? null : bufferSize);\n const ws = React.useRef(); // TODO Make this a hook\n const resourceLogRef = React.useRef();\n const logViewerRef = React.useRef(null);\n const externalLogLinkFlag = useFlag(FLAGS.CONSOLE_EXTERNAL_LOG_LINK);\n const [error, setError] = React.useState(false);\n const [hasTruncated, setHasTruncated] = React.useState(false);\n const [lines, setLines] = React.useState([]);\n const [linesBehind, setLinesBehind] = React.useState(0);\n const [totalLineCount, setTotalLineCount] = React.useState(0);\n const [stale, setStale] = React.useState(false);\n const [status, setStatus] = React.useState(STREAM_LOADING);\n const [isFullscreen, setIsFullscreen] = React.useState(false);\n const [namespaceUID, setNamespaceUID] = React.useState('');\n const [podLogLinks, setPodLogLinks] = React.useState();\n const [content, setContent] = React.useState('');\n\n const [logType, setLogType] = React.useState(LOG_TYPE_CURRENT);\n const [hasPreviousLogs, setPreviousLogs] = React.useState(false);\n\n const previousResourceStatus = usePrevious(resourceStatus);\n const previousTotalLineCount = usePrevious(totalLineCount);\n const linkURL = getResourceLogURL(resource, containerName, null, false, logType);\n const watchURL = getResourceLogURL(resource, containerName, null, true, logType);\n const imp = useSelector((state: RootState) => getImpersonate(state));\n const subprotocols = React.useMemo(() => ['base64.binary.k8s.io', ...(imp?.subprotocols ?? [])], [\n imp,\n ]);\n const [wrapLines, setWrapLines] = useUserSettings(\n LOG_WRAP_LINES_USERSETTINGS_KEY,\n false,\n true,\n );\n const hasWrapAnnotation =\n resource?.metadata?.annotations?.['console.openshift.io/wrap-log-lines'] === 'true';\n\n const [wrapLinesCheckbox, setWrapLinesCheckbox] = React.useState(wrapLines || hasWrapAnnotation);\n const firstRender = React.useRef(true);\n const handleShowFullLogCheckbox = () => setShowFullLogCheckbox(!showFullLogCheckbox);\n\n React.useEffect(() => {\n if (firstRender.current) {\n firstRender.current = false;\n return;\n }\n\n setWrapLines(wrapLinesCheckbox);\n setShowFullLog(showFullLogCheckbox);\n }, [wrapLinesCheckbox, showFullLogCheckbox, setWrapLines, setShowFullLog]);\n\n const timeoutIdRef = React.useRef(null);\n const countRef = React.useRef(0);\n\n React.useEffect(() => {\n if ((status === STREAM_ACTIVE || status === STREAM_EOF) && lines.length > 0) {\n setContent(lines.join('\\n'));\n // setTimeout here to wait until the content is updated in the log viewer\n // so that make sure scroll to the real bottom\n setTimeout(() => {\n if (logViewerRef && logViewerRef.current) {\n logViewerRef.current.scrollToBottom();\n }\n }, 1);\n }\n }, [status, lines]);\n\n // Update lines behind while stream is paused, reset when unpaused\n React.useEffect(() => {\n if (status === STREAM_ACTIVE) {\n setLinesBehind(0);\n }\n\n if (status === STREAM_PAUSED) {\n setLinesBehind(\n (currentLinesBehind) => currentLinesBehind + (totalLineCount - previousTotalLineCount),\n );\n }\n }, [status, totalLineCount, previousTotalLineCount]);\n\n // Set back to viewing current log when switching containers\n React.useEffect(() => {\n if (resource.kind === 'Pod') {\n setLogType(LOG_TYPE_CURRENT);\n }\n }, [resource.kind, containerName]);\n\n //Check to see if previous log exists\n React.useEffect(() => {\n if (resource.kind === 'Pod') {\n const container = resource.status?.containerStatuses?.find(\n (pod) => pod.name === containerName,\n );\n setPreviousLogs(container?.restartCount > 0); // Assuming previous log is available if the container has been restarted at least once\n }\n }, [containerName, resource.kind, resource.status]);\n\n const startWebSocket = React.useCallback(() => {\n // Handler for websocket onopen event\n const onOpen = () => {\n buffer.current.clear();\n setStatus(STREAM_ACTIVE);\n };\n // Handler for websocket onclose event\n const onClose = () => {\n setStatus(STREAM_EOF);\n };\n // Handler for websocket onerror event\n const onError = () => {\n setError(true);\n };\n // Handler for websocket onmessage event\n const onMessage = (msg) => {\n if (msg) {\n clearTimeout(timeoutIdRef.current);\n const text = Base64.decode(msg);\n countRef.current += buffer.current.ingest(text);\n // Set a timeout here to render more logs together when initializing\n timeoutIdRef.current = setTimeout(() => {\n setTotalLineCount((currentLineCount) => currentLineCount + countRef.current);\n countRef.current = 0;\n setLines(\n buffer.current.getTail() === ''\n ? [...buffer.current.getLines()]\n : [...buffer.current.getLines(), buffer.current.getTail()],\n );\n setHasTruncated(buffer.current.getHasTruncated());\n }, 10);\n }\n };\n setError(false);\n setHasTruncated(false);\n setLines([]);\n setTotalLineCount(0);\n setLinesBehind(0);\n setContent('');\n setStale(false);\n setStatus(STREAM_LOADING);\n ws.current?.destroy();\n ws.current = new WSFactory(watchURL, {\n host: 'auto',\n path: watchURL,\n subprotocols,\n })\n .onclose(onClose)\n .onerror(onError)\n .onmessage(onMessage)\n .onopen(onOpen);\n }, [watchURL, subprotocols, buffer]);\n // Restart websocket if startWebSocket function changes\n React.useEffect(() => {\n if (\n !error &&\n !stale &&\n [LOG_SOURCE_RUNNING, LOG_SOURCE_TERMINATED, LOG_SOURCE_RESTARTING].includes(resourceStatus)\n ) {\n startWebSocket();\n }\n return () => ws.current?.destroy();\n }, [error, resourceStatus, stale, startWebSocket, showFullLogCheckbox]);\n\n // Toggle currently displayed log content to/from fullscreen\n const toggleFullscreen = () => {\n resourceLogRef.current && screenfull.enabled && screenfull.toggle(resourceLogRef.current);\n };\n\n // Toggle streaming/paused status\n const toggleStreaming = () => {\n setStatus((currentStatus) => (currentStatus === STREAM_ACTIVE ? STREAM_PAUSED : STREAM_ACTIVE));\n };\n\n React.useEffect(() => {\n if (externalLogLinkFlag && resource.kind === 'Pod') {\n Promise.all([\n k8sList(ConsoleExternalLogLinkModel),\n k8sGet(ProjectModel, resource.metadata.namespace),\n ])\n .then(([podLogLinks_, project]) => {\n // Project UID and namespace UID are the same value. Use the projects\n // API since normal OpenShift users can list projects.\n setPodLogLinks(podLogLinks_);\n setNamespaceUID(project.metadata.uid);\n })\n .catch((e) => setError(e));\n }\n }, [externalLogLinkFlag, resource.kind, resource.metadata.namespace]);\n\n // Only run once, initialize screenfull\n React.useEffect(() => {\n if (screenfull.enabled) {\n screenfull.on('change', () => {\n setIsFullscreen(screenfull.isFullscreen);\n });\n screenfull.on('error', () => {\n setIsFullscreen(false);\n });\n }\n\n return () => {\n if (screenfull.enabled) {\n screenfull.off('change');\n screenfull.off('error');\n }\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n // If container comes out of restarting state, currently displayed logs might be stale\n React.useEffect(() => {\n if (\n previousResourceStatus === LOG_SOURCE_RESTARTING &&\n resourceStatus !== LOG_SOURCE_RESTARTING\n ) {\n setStale(true);\n }\n }, [previousResourceStatus, resourceStatus]);\n\n const onScroll = ({ scrollOffsetToBottom, scrollDirection, scrollUpdateWasRequested }) => {\n if (!scrollUpdateWasRequested && status !== STREAM_EOF) {\n if (scrollOffsetToBottom < 1) {\n setStatus(STREAM_ACTIVE);\n } else if (scrollDirection === 'backward') {\n setStatus(STREAM_PAUSED);\n }\n }\n };\n\n const logControls = (\n \n );\n\n return (\n <>\n \n
    \n {error && (\n setError(false)}>\n {t('public~Retry')}\n \n }\n />\n )}\n {stale && (\n setStale(false)}>\n {t('public~Refresh')}\n \n }\n />\n )}\n {hasTruncated && (\n \n \n To view unabridged log content, you can either{' '}\n open the raw file in another window or{' '}\n \n download it\n \n .\n \n \n )}\n
    \n
    \n \n \n
    \n }\n theme=\"dark\"\n data={content}\n ref={logViewerRef}\n height=\"100%\"\n isTextWrapped={wrapLinesCheckbox}\n toolbar={logControls}\n footer={\n \n }\n onScroll={onScroll}\n initialIndexWidth={7}\n />\n
    \n
    \n \n );\n};\n\ntype LogControlsProps = {\n currentLogURL: string;\n isFullscreen: boolean;\n dropdown?: React.ReactNode;\n status?: string;\n resource?: any;\n containerName?: string;\n podLogLinks?: K8sResourceKind[];\n namespaceUID?: string;\n toggleStreaming?: () => void;\n toggleFullscreen: () => void;\n toggleWrapLines: (wrapLinesCheckbox: boolean) => void;\n isWrapLines: boolean;\n changeLogType: (type: LogTypeStatus) => void;\n hasPreviousLog?: boolean;\n logType: LogTypeStatus;\n showLogTypeSelect: boolean;\n toggleShowFullLog: (showFullLogCheckbox: boolean) => void;\n isShowFullLog: boolean;\n};\n\ntype ResourceLogProps = {\n containerName?: string;\n dropdown?: React.ReactNode;\n resource: any;\n resourceStatus: string;\n bufferSize?: number;\n};\n\ntype LogTypeStatus = typeof LOG_TYPE_CURRENT | typeof LOG_TYPE_PREVIOUS;\ntype LogType = { type: LogTypeStatus; text: string };\n","import * as React from 'react';\nimport { useLocation, useParams, Location } from 'react-router-dom-v5-compat';\nimport * as _ from 'lodash-es';\n\nimport { getBadgeFromType, getTitleForNodeKind } from '@console/shared';\nimport { PageTitleContext } from '@console/shared/src/components/pagetitle/PageTitleContext';\nimport { ErrorBoundaryFallbackPage, withFallback } from '@console/shared/src/components/error';\nimport {\n useExtensions,\n ResourceTabPage,\n isResourceTabPage,\n isDetailPageBreadCrumbs,\n DetailPageBreadCrumbs,\n} from '@console/plugin-sdk';\nimport {\n ResolvedExtension,\n useResolvedExtensions,\n ResourceTabPage as DynamicResourceTabPage,\n isResourceTabPage as isDynamicResourceTabPage,\n K8sModel,\n isDetailPageBreadCrumbs as isDynamicDetailPageBreadCrumbs,\n DetailPageBreadCrumbs as DynamicDetailPageBreadCrumbs,\n FirehoseResult,\n} from '@console/dynamic-plugin-sdk';\nimport {\n Firehose,\n HorizontalNav,\n PageHeading,\n FirehoseResource,\n KebabOptionsCreator,\n Page,\n AsyncComponent,\n PageComponentProps,\n KebabAction,\n} from '../utils';\nimport {\n K8sResourceKindReference,\n K8sResourceKind,\n K8sKind,\n referenceForModel,\n referenceForExtensionModel,\n} from '../../module/k8s';\nimport { breadcrumbsForDetailsPage } from '../utils/breadcrumbs';\nimport DetailsBreadcrumbResolver from './details-breadcrumb-resolver';\nimport { useK8sModel } from '@console/shared/src/hooks/useK8sModel';\n\nconst useBreadCrumbsForDetailPage = (\n kindObj: K8sKind,\n): ResolvedExtension => {\n const [breadCrumbsExtension, breadCrumbsResolved] = useResolvedExtensions(\n isDetailPageBreadCrumbs,\n );\n const [dynamicBreadCrumbsExtension, dynamicBreadCrumbsResolved] = useResolvedExtensions<\n DynamicDetailPageBreadCrumbs\n >(isDynamicDetailPageBreadCrumbs);\n return React.useMemo(\n () =>\n breadCrumbsResolved && dynamicBreadCrumbsResolved\n ? [...breadCrumbsExtension, ...dynamicBreadCrumbsExtension].find(\n ({ properties: { getModels } }) => {\n const models = getModels();\n return Array.isArray(models)\n ? models.findIndex((model: K8sKind) => model.kind === kindObj?.kind) !== -1\n : models.kind === kindObj?.kind;\n },\n )\n : undefined,\n [\n breadCrumbsResolved,\n breadCrumbsExtension,\n kindObj,\n dynamicBreadCrumbsResolved,\n dynamicBreadCrumbsExtension,\n ],\n );\n};\n\nexport const DetailsPage = withFallback(({ pages = [], ...props }) => {\n const resourceKeys = _.map(props.resources, 'prop');\n const [pluginBreadcrumbs, setPluginBreadcrumbs] = React.useState(undefined);\n const [model] = useK8sModel(props.kind);\n const kindObj: K8sModel = props.kindObj ?? model;\n const renderAsyncComponent = (page: ResourceTabPage, cProps: PageComponentProps) => (\n \n );\n\n const params = useParams();\n const location = useLocation();\n\n const resourcePageExtensions = useExtensions(isResourceTabPage);\n const [dynamicResourcePageExtensions] = useResolvedExtensions(\n isDynamicResourceTabPage,\n );\n\n const pluginPages = React.useMemo(\n () => [\n ...resourcePageExtensions\n .filter(\n (p) =>\n referenceForModel(p.properties.model) ===\n (kindObj ? referenceForModel(kindObj) : props.kind),\n )\n .map((p) => ({\n href: p.properties.href,\n name: p.properties.name,\n component: (cProps) => renderAsyncComponent(p, cProps),\n })),\n /** @deprecated -- if there is a bug here, encourage `console.tab/horizontalNav` usage instead */\n ...dynamicResourcePageExtensions\n .filter((p) => {\n if (p.properties.model.version) {\n return (\n referenceForExtensionModel(p.properties.model) ===\n (kindObj ? referenceForModel(kindObj) : props.kind)\n );\n }\n return (\n p.properties.model.group === kindObj.apiGroup &&\n p.properties.model.kind === kindObj.kind\n );\n })\n .map(({ properties: { href, name, component: Component } }) => ({\n href,\n name,\n component: (cProps) => ,\n })),\n ],\n [resourcePageExtensions, dynamicResourcePageExtensions, kindObj, props.kind],\n );\n const resolvedBreadcrumbExtension = useBreadCrumbsForDetailPage(kindObj);\n const onBreadcrumbsResolved = React.useCallback((breadcrumbs) => {\n setPluginBreadcrumbs(breadcrumbs || undefined);\n }, []);\n let allPages = [...pages, ...pluginPages];\n allPages = allPages.length ? allPages : null;\n const objResource: FirehoseResource = {\n kind: props.kind,\n name: props.name,\n namespace: props.namespace,\n isList: false,\n prop: 'obj',\n };\n const titleProviderValues = {\n telemetryPrefix: props?.kindObj?.kind,\n titlePrefix: `${props.name} ยท ${getTitleForNodeKind(props?.kindObj?.kind)}`,\n };\n\n return (\n \n {resolvedBreadcrumbExtension && (\n \n )}\n\n \n \n {props.children}\n \n \n \n \n );\n}, ErrorBoundaryFallbackPage);\n\nexport type DetailsPageProps = {\n obj?: FirehoseResult;\n title?: string | JSX.Element;\n titleFunc?: (obj: K8sResourceKind) => string | JSX.Element;\n menuActions?: KebabAction[] | KebabOptionsCreator;\n buttonActions?: any[];\n createRedirect?: boolean;\n customActionMenu?:\n | React.ReactNode\n | ((kindObj: K8sKind, obj: K8sResourceKind) => React.ReactNode); // Renders a custom action menu.\n pages?: Page[];\n pagesFor?: (obj: K8sResourceKind) => Page[];\n kind: K8sResourceKindReference;\n kindObj?: K8sKind;\n label?: string;\n name?: string;\n namespace?: string;\n resources?: FirehoseResource[];\n breadcrumbsFor?: (\n obj: K8sResourceKind,\n ) => ({ name: string; path: string } | { name: string; path: Location })[];\n customData?: any;\n badge?: React.ReactNode;\n icon?: React.ComponentType<{ obj: K8sResourceKind }>;\n getResourceStatus?: (resource: K8sResourceKind) => string;\n children?: React.ReactNode;\n customKind?: string;\n};\n\nDetailsPage.displayName = 'DetailsPage';\n","/* eslint-disable @typescript-eslint/no-use-before-define */\n\n// Mostly just a copy-paste from patternfly.\nimport * as React from 'react';\nimport { defaults } from 'lodash';\n//@ts-ignore\nimport { Helpers } from 'victory-core';\nimport {\n ChartLegend,\n ChartLabel,\n getTheme,\n ChartLegendTooltipContentProps,\n ChartCursorTooltip,\n ChartTooltip,\n ChartLegendTooltipProps,\n ChartLegendTooltipLabelProps,\n} from '@patternfly/react-charts';\nimport {\n getLegendTooltipSize,\n getLegendTooltipDataProps,\n getLegendTooltipVisibleData,\n getLegendTooltipVisibleText,\n} from '@patternfly/react-charts/dist/js/components/ChartUtils/chart-tooltip';\nimport { ChartLegendTooltipStyles } from '@patternfly/react-charts/dist/js/components/ChartTheme/ChartStyles';\n\nimport { DataPoint } from '.';\n\nexport const ChartLegendTooltipContent: React.FunctionComponent<\n ChartLegendTooltipContentProps & {\n stack?: boolean;\n mainDataName?: string;\n }\n> = (props) => {\n const {\n activePoints,\n center,\n dx = 0,\n dy = 0,\n flyoutHeight,\n flyoutWidth,\n height,\n labelComponent = ,\n legendComponent = ,\n legendData,\n text,\n themeColor,\n title,\n titleComponent = ,\n width,\n stack,\n mainDataName,\n // destructure last\n theme = getTheme(themeColor),\n ...rest\n } = props;\n const pointerLength = theme?.tooltip\n ? Helpers.evaluateProp(theme.tooltip.pointerLength, props)\n : 10;\n const legendProps = getLegendTooltipDataProps(legendComponent.props);\n const visibleLegendData = getLegendTooltipVisibleData({\n activePoints,\n colorScale: legendProps.colorScale,\n legendData,\n text,\n theme,\n });\n\n const hasMainData = mainDataName ? activePoints[0].childName === mainDataName : false;\n\n if (stack) {\n visibleLegendData.reverse();\n } else if (hasMainData) {\n visibleLegendData.shift();\n }\n\n // Component offsets\n const legendOffsetX = 0;\n const legendOffsetY = title ? 9 : -10;\n const titleOffsetX = 10;\n const titleOffsetY = 0;\n\n // Returns x position of flyout\n const getX = () => {\n if (!(center || flyoutWidth || width)) {\n const x = (rest as any).x;\n return x ? x : undefined;\n }\n const _flyoutWidth = Helpers.evaluateProp(flyoutWidth, props);\n if (width > center.x + _flyoutWidth + pointerLength) {\n return center.x + ChartLegendTooltipStyles.flyout.padding / 2;\n } else if (center.x < _flyoutWidth + pointerLength) {\n return ChartLegendTooltipStyles.flyout.padding / 2 - pointerLength;\n }\n return center.x - _flyoutWidth;\n };\n\n // Returns y position\n const getY = () => {\n if (!(center || flyoutHeight || height)) {\n const y = (rest as any).y;\n return y ? y : undefined;\n }\n const _flyoutHeight = Helpers.evaluateProp(flyoutHeight, props);\n if (center.y < _flyoutHeight / 2) {\n return ChartLegendTooltipStyles.flyout.padding / 2;\n } else if (center.y > height - _flyoutHeight / 2) {\n return height - _flyoutHeight + ChartLegendTooltipStyles.flyout.padding / 2;\n }\n return center.y - _flyoutHeight / 2 + ChartLegendTooltipStyles.flyout.padding / 2;\n };\n\n // Min & max dimensions do not include flyout padding\n const maxLegendDimensions = getLegendTooltipSize({\n legendData: visibleLegendData,\n legendProps,\n text: getLegendTooltipVisibleText({ activePoints, legendData, text }),\n theme,\n });\n const minLegendDimensions = getLegendTooltipSize({\n legendData: [{ name: '' }],\n legendProps,\n theme,\n });\n\n // Returns the label component\n const getLabelComponent = () =>\n React.cloneElement(labelComponent, {\n dx: maxLegendDimensions.width - minLegendDimensions.width,\n legendData: visibleLegendData,\n ...labelComponent.props,\n });\n\n // Returns the title component\n const getTitleComponent = () => {\n const _title = title instanceof Function ? title(activePoints) : title;\n\n return React.cloneElement(titleComponent, {\n style: {\n fill: ChartLegendTooltipStyles.label.fill,\n },\n text: _title,\n textAnchor: 'start',\n x: getX() + titleOffsetX + Helpers.evaluateProp(dx, props),\n y: getY() + titleOffsetY + Helpers.evaluateProp(dy, props),\n ...titleComponent.props,\n });\n };\n\n const tooltipLegendData = getLegendTooltipVisibleData({\n activePoints,\n colorScale: legendProps.colorScale,\n legendData,\n text,\n textAsLegendData: true,\n theme,\n });\n\n if (stack) {\n tooltipLegendData.reverse();\n } else if (hasMainData) {\n tooltipLegendData.shift();\n }\n\n // Returns the legebd component\n const getLegendComponent = () =>\n React.cloneElement(legendComponent, {\n data: tooltipLegendData,\n labelComponent: getLabelComponent(),\n standalone: false,\n theme,\n x: getX() + legendOffsetX + Helpers.evaluateProp(dx, props),\n y: getY() + legendOffsetY + Helpers.evaluateProp(dy, props),\n ...legendProps,\n });\n\n return (\n <>\n {getTitleComponent()}\n {getLegendComponent()}\n \n );\n};\nChartLegendTooltipContent.displayName = 'ChartLegendTooltipContent';\n\nexport const ChartLegendTooltipLabel: React.FunctionComponent = ({\n index = 0,\n legendData,\n style,\n text,\n textAnchor = 'start',\n x,\n y,\n\n // destructure last\n ...rest\n}: ChartLegendTooltipLabelProps) => {\n const getStyle = (styles: any) => {\n const applyDefaultStyle = (customStyle: React.CSSProperties) =>\n defaults(\n {\n ...customStyle,\n },\n {\n fill: ChartLegendTooltipStyles.label.fill,\n },\n );\n return Array.isArray(styles) ? styles.map(applyDefaultStyle) : applyDefaultStyle(styles);\n };\n\n const label = legendData && legendData.length ? legendData[index as any].name : undefined;\n return (\n \n );\n};\nChartLegendTooltipLabel.displayName = 'ChartLegendTooltipLabel';\n\nexport const ChartLegendTooltip: React.FunctionComponent<\n Omit & {\n stack?: boolean;\n formatDate: (data: DataPoint[]) => string;\n getLabel?: (prop: { datum: DataPoint }) => string;\n mainDataName: string;\n }\n> = (props) => {\n const {\n activePoints,\n datum,\n center = { x: 0, y: 0 },\n flyoutHeight,\n flyoutWidth,\n height,\n isCursorTooltip = true,\n mainDataName,\n labelComponent = ,\n legendData,\n text,\n themeColor,\n width,\n stack,\n formatDate,\n getLabel,\n\n // destructure last\n theme = getTheme(themeColor),\n ...rest\n } = props;\n const title = (d) => {\n if (stack) {\n return formatDate(d);\n }\n const mainDatum = mainDataName ? d.find((uDatum) => uDatum.childName === mainDataName) : d[0];\n return mainDatum ? getLabel({ datum: mainDatum }) : `No ${mainDataName || 'data'} available`;\n };\n const pointerLength = theme?.tooltip\n ? Helpers.evaluateProp(theme.tooltip.pointerLength, props)\n : 10;\n const legendTooltipProps = {\n legendData: getLegendTooltipVisibleData({ activePoints, legendData, text, theme }),\n legendProps: getLegendTooltipDataProps(labelComponent.props.legendComponent),\n text: getLegendTooltipVisibleText({ activePoints, legendData, text }),\n theme,\n };\n\n // Returns flyout height based on legend size\n const getFlyoutHeight = () => {\n const sizeProps = stack\n ? legendTooltipProps\n : {\n ...legendTooltipProps,\n // For non-stack graphs, remove the text for \"mainDataName\"\n text: legendTooltipProps.text.filter(\n (t, i) => legendTooltipProps.legendData[i].name !== mainDataName,\n ),\n };\n const _flyoutHeight =\n getLegendTooltipSize(sizeProps).height + ChartLegendTooltipStyles.flyout.padding;\n return title ? _flyoutHeight + 4 : _flyoutHeight - 10;\n };\n\n // Returns flyout width based on legend size\n const getFlyoutWidth = () =>\n getLegendTooltipSize(legendTooltipProps).width +\n ChartLegendTooltipStyles.flyout.padding +\n (stack ? 20 : 0);\n\n // Returns the tooltip content component\n const getTooltipContentComponent = () =>\n React.cloneElement(labelComponent, {\n center,\n flyoutHeight: flyoutHeight || getFlyoutHeight(),\n flyoutWidth: flyoutWidth || getFlyoutWidth(),\n height,\n legendData,\n title,\n width,\n stack,\n ...labelComponent.props,\n });\n\n // Returns the tooltip component\n const getTooltipComponent = () => {\n const _flyoutWidth = getFlyoutWidth();\n const tooltipComponent = isCursorTooltip ? : ;\n return React.cloneElement(tooltipComponent, {\n activePoints,\n center,\n datum,\n flyoutHeight: flyoutHeight || getFlyoutHeight(),\n flyoutWidth: flyoutWidth || getFlyoutWidth(),\n height,\n labelComponent: getTooltipContentComponent(),\n ...(flyoutWidth === undefined && {\n showPointer:\n width > _flyoutWidth + center.x + pointerLength ||\n center.x > _flyoutWidth + pointerLength,\n }),\n text,\n theme,\n width,\n ...rest,\n });\n };\n\n return getTooltipComponent();\n};\nChartLegendTooltip.displayName = 'ChartLegendTooltip';\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore: FIXME missing exports due to out-of-sync @types/react-redux version\nimport { useSelector } from 'react-redux';\nimport { UseK8sModels } from '../../../extensions/console-types';\n\n/**\n * Hook that retrieves all current k8s models from redux.\n *\n * @returns An array with the first item as the list of k8s model and second item as inFlight status\n * @example\n * ```ts\n * const Component: React.FC = () => {\n * const [models, inFlight] = UseK8sModels();\n * return ...\n * }\n * ```\n */\nexport const useK8sModels: UseK8sModels = () => [\n useSelector(({ k8s }) => k8s.getIn(['RESOURCES', 'models']))?.toJS() ?? {},\n useSelector(({ k8s }) => k8s.getIn(['RESOURCES', 'inFlight'])) ?? false,\n];\n","import * as React from 'react';\nimport {\n Skeleton,\n EmptyState,\n EmptyStateIcon,\n EmptyStateBody,\n Divider,\n Menu,\n MenuItem,\n MenuContent,\n MenuList,\n EmptyStateHeader,\n} from '@patternfly/react-core';\nimport { ExclamationCircleIcon } from '@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon';\nimport fuzzysearch from 'fuzzysearch';\nimport { useTranslation } from 'react-i18next';\nimport { createNamespaceOrProjectModal } from '@console/internal/components/modals';\nimport { useProjectOrNamespaceModel } from '@console/internal/components/utils';\nimport { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';\nimport { ProjectModel } from '@console/internal/models';\nimport { K8sKind, K8sResourceKind } from '@console/internal/module/k8s';\nimport { alphanumericCompare } from '@console/shared';\nimport {\n Filter,\n Footer,\n NamespaceGroup,\n NoResults,\n} from '@console/shared/src/components/namespace/NamespaceDropdown';\nimport NamespaceMenuToggle from '@console/shared/src/components/namespace/NamespaceMenuToggle';\nimport { useTelemetry } from '@console/shared/src/hooks/useTelemetry';\nimport {\n PREFERRED_NAMESPACE_USER_SETTING_KEY,\n usePreferredNamespace,\n} from './usePreferredNamespace';\nimport './NamespaceDropdown.scss';\n\ntype OptionItem = {\n title: string;\n key: string;\n};\n\nconst NamespaceDropdown: React.FC = () => {\n const { t } = useTranslation();\n const fireTelemetryEvent = useTelemetry();\n const [model, canCreate] = useProjectOrNamespaceModel() as [K8sKind, boolean];\n const isProject: boolean = model?.kind === ProjectModel.kind;\n const [options, optionsLoaded, optionsLoadError] = useK8sWatchResource({\n kind: model?.kind,\n isList: true,\n optional: true,\n });\n const [\n preferredNamespace,\n setPreferredNamespace,\n preferredNamespaceLoaded,\n ] = usePreferredNamespace();\n\n const [dropdownOpen, setDropdownOpen] = React.useState(false);\n const [filterText, setFilterText] = React.useState('');\n const menuRef = React.useRef(null);\n const filterRef = React.useRef(null);\n\n const optionItems: OptionItem[] = React.useMemo(() => {\n if (!optionsLoaded) {\n return [];\n }\n const items: OptionItem[] = options.map((item) => {\n const { name } = item.metadata;\n return { title: name, key: name };\n });\n items.sort((a, b) => alphanumericCompare(a.title, b.title));\n return items;\n }, [options, optionsLoaded]);\n\n const loaded: boolean = model && preferredNamespaceLoaded && optionsLoaded;\n\n const filteredOptions: OptionItem[] = React.useMemo(() => {\n const lowerCaseFilterText = filterText.toLowerCase();\n return optionItems.filter((option: OptionItem) =>\n fuzzysearch(lowerCaseFilterText, option.title.toLowerCase()),\n );\n }, [optionItems, filterText]);\n\n const lastViewedOption: OptionItem = {\n title: t('console-app~Last viewed'),\n key: '##lastViewed##',\n };\n\n const onCreateNamespace = React.useCallback(() => {\n createNamespaceOrProjectModal({\n blocking: true,\n onSubmit: (newProject) => {\n setPreferredNamespace(newProject.metadata.name);\n fireTelemetryEvent('User Preference Changed', {\n property: PREFERRED_NAMESPACE_USER_SETTING_KEY,\n value: newProject.metadata.name,\n });\n },\n isOpenShift: isProject,\n });\n }, [fireTelemetryEvent, setPreferredNamespace, isProject]);\n\n const loadErrorDescription: string = isProject\n ? t('console-app~Projects failed to load. Check your connection and reload the page.')\n : t('console-app~Namespaces failed to load. Check your connection and reload the page.');\n const loadErrorState: JSX.Element = optionsLoadError ? (\n \n {t('console-app~Unable to load')}}\n icon={}\n headingLevel=\"h4\"\n />\n {loadErrorDescription}\n \n ) : null;\n\n const emptyState: JSX.Element =\n !optionsLoadError && filteredOptions.length === 0 ? (\n {\n event.preventDefault();\n event.stopPropagation();\n setFilterText('');\n filterRef.current?.focus();\n }}\n />\n ) : null;\n\n const getDropdownLabelForValue = (): string => preferredNamespace || lastViewedOption.title;\n const getDropdownValueForLabel = (selectedLabel: string): string =>\n selectedLabel === lastViewedOption.key ? null : selectedLabel;\n const onToggle = (isOpen: boolean) => setDropdownOpen(isOpen);\n const onSelect = (_, selection: string) => {\n const selectedValue = getDropdownValueForLabel(selection);\n selectedValue !== preferredNamespace && setPreferredNamespace(selectedValue);\n setDropdownOpen(false);\n fireTelemetryEvent('User Preference Changed', {\n property: PREFERRED_NAMESPACE_USER_SETTING_KEY,\n value: selectedValue,\n });\n };\n\n const selected = getDropdownLabelForValue();\n\n const lastNamespaceOption: JSX.Element = (\n \n \n \n {lastViewedOption.title}\n \n \n );\n\n const namespaceMenu: JSX.Element = (\n {}}\n isScrollable\n >\n \n \n {lastNamespaceOption}\n {loadErrorState || emptyState}\n \n \n \n \n );\n\n return loaded ? (\n \n ) : (\n \n );\n};\n\nexport default NamespaceDropdown;\n","import { useUserSettings } from '@console/shared';\n\nconst PREFERRED_EXACT_SEARCH_USER_SETTING_KEY: string = 'console.enableExactSearch';\n\nexport const useExactSearch = (): [boolean, boolean] => {\n const [exactSearch, , exactSearchLoaded] = useUserSettings(\n PREFERRED_EXACT_SEARCH_USER_SETTING_KEY,\n );\n return [exactSearch, exactSearchLoaded];\n};\n","export const IDP_TYPES = Object.freeze({\n basicauth: 'Basic Authentication',\n github: 'GitHub',\n gitlab: 'GitLab',\n google: 'Google',\n htpasswd: 'HTPasswd',\n keystone: 'Keystone',\n ldap: 'LDAP',\n oidconnect: 'OpenID Connect',\n requestheader: 'Request Header',\n});\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport * as _ from 'lodash-es';\nimport * as classNames from 'classnames';\nimport * as React from 'react';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useDispatch } from 'react-redux';\nimport { Link, useParams, useNavigate } from 'react-router-dom-v5-compat';\n\nimport { Button, TextInput, TextInputProps } from '@patternfly/react-core';\nimport { useTranslation } from 'react-i18next';\n\nimport { useDocumentListener, KEYBOARD_SHORTCUTS, useDeepCompareMemoize } from '@console/shared';\nimport { withFallback, ErrorBoundaryFallbackPage } from '@console/shared/src/components/error';\nimport { ColumnLayout } from '@console/dynamic-plugin-sdk';\n\nimport { filterList } from '@console/dynamic-plugin-sdk/src/app/k8s/actions/k8s';\nimport { storagePrefix } from '../row-filter';\nimport { ErrorPage404 } from '../error';\nimport { K8sKind, K8sResourceCommon, referenceForModel, Selector } from '../../module/k8s';\nimport {\n Dropdown,\n Firehose,\n FirehoseResource,\n FirehoseResourcesResult,\n FirehoseResultObject,\n FirehoseResult,\n inject,\n kindObj,\n makeQuery,\n makeReduxID,\n PageHeading,\n RequireCreatePermission,\n} from '../utils';\nimport { FilterToolbar, RowFilter } from '../filter-toolbar';\n\ntype CreateProps = {\n action?: string;\n createLink?: (item: string) => string;\n to?: string;\n items?: {\n [key: string]: string;\n };\n onClick?: () => void;\n isDisabled?: boolean;\n id?: string;\n};\n\ntype TextFilterProps = Omit & {\n label?: string;\n parentClassName?: string;\n};\n\nexport const TextFilter: React.FC = (props) => {\n const {\n label,\n className,\n placeholder,\n autoFocus = false,\n parentClassName,\n ...otherInputProps\n } = props;\n const { ref } = useDocumentListener();\n const { t } = useTranslation();\n const placeholderText = placeholder ?? t('public~Filter {{label}}...', { label });\n\n return (\n
    \n \n \n {KEYBOARD_SHORTCUTS.focusFilterInput}\n \n
    \n );\n};\nTextFilter.displayName = 'TextFilter';\n\n// TODO (jon) make this into \"withListPageFilters\" HOC\n\ntype ListPageWrapperProps = {\n ListComponent: React.ComponentType;\n kinds: string[];\n filters?: any;\n flatten?: Flatten;\n rowFilters?: RowFilter[];\n hideNameLabelFilters?: boolean;\n hideLabelFilter?: boolean;\n columnLayout?: ColumnLayout;\n name?: string;\n resources?: FirehoseResourcesResult;\n reduxIDs?: string[];\n textFilter?: string;\n nameFilterPlaceholder?: string;\n namespace?: string;\n labelFilterPlaceholder?: string;\n label?: string;\n staticFilters?: { key: string; value: string }[];\n customData?: C;\n hideColumnManagement?: boolean;\n nameFilter?: string;\n};\n\nexport const ListPageWrapper: React.FC = (props) => {\n const {\n flatten,\n ListComponent,\n reduxIDs,\n rowFilters,\n textFilter,\n nameFilterPlaceholder,\n labelFilterPlaceholder,\n hideNameLabelFilters,\n hideLabelFilter,\n columnLayout,\n name,\n resources,\n nameFilter,\n } = props;\n const dispatch = useDispatch();\n const memoizedIds = useDeepCompareMemoize(reduxIDs);\n\n React.useEffect(() => {\n if (!_.isNil(nameFilter)) {\n memoizedIds.forEach((id) => dispatch(filterList(id, 'name', { selected: [nameFilter] })));\n }\n }, [dispatch, nameFilter, memoizedIds]);\n\n const data = flatten ? flatten(resources) : [];\n const Filter = (\n \n );\n\n return (\n
    \n {!_.isEmpty(data) && Filter}\n
    \n
    \n \n
    \n
    \n
    \n );\n};\n\nListPageWrapper.displayName = 'ListPageWrapper_';\n\nexport type FireManProps = {\n canCreate?: boolean;\n textFilter?: string;\n createAccessReview?: {\n model: K8sKind;\n namespace?: string;\n };\n createButtonText?: string;\n createProps?: CreateProps;\n fieldSelector?: string;\n filterLabel?: string;\n resources: FirehoseResource[];\n badge?: React.ReactNode;\n helpText?: React.ReactNode;\n title?: string;\n autoFocus?: boolean;\n};\n\nexport const FireMan: React.FC = (props) => {\n const {\n resources,\n textFilter,\n canCreate,\n createAccessReview,\n createButtonText,\n createProps = {},\n helpText,\n badge,\n title,\n } = props;\n const navigate = useNavigate();\n\n const [reduxIDs, setReduxIDs] = React.useState([]);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [expand] = React.useState();\n\n React.useEffect(() => {\n const params = new URLSearchParams(window.location.search);\n params.forEach((v, k) => applyFilter(k, v));\n\n const reduxId = resources.map((r) =>\n makeReduxID(kindObj(r.kind), makeQuery(r.namespace, r.selector, r.fieldSelector, r.name)),\n );\n setReduxIDs(reduxId);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n const reduxId = resources.map((r) =>\n makeReduxID(kindObj(r.kind), makeQuery(r.namespace, r.selector, r.fieldSelector, r.name)),\n );\n\n if (_.isEqual(reduxId, reduxIDs)) {\n return;\n }\n\n // reapply filters to the new list...\n setReduxIDs(reduxId);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resources]);\n\n const updateURL = (filterName: string, options: any) => {\n if (filterName !== textFilter) {\n // TODO (ggreer): support complex filters (objects, not just strings)\n return;\n }\n const params = new URLSearchParams(window.location.search);\n if (options) {\n params.set(filterName, options);\n } else {\n params.delete(filterName);\n }\n const url = new URL(window.location.href);\n navigate(`${url.pathname}?${params.toString()}${url.hash}`, { replace: true });\n };\n\n const applyFilter = (filterName: string, options: any) => {\n // TODO: (ggreer) lame blacklist of query args. Use a whitelist based on resource filters\n if (['q', 'kind', 'orderBy', 'sortBy'].includes(filterName)) {\n return;\n }\n if (filterName.indexOf(storagePrefix) === 0) {\n return;\n }\n reduxIDs.forEach((id) => props.filterList(id, filterName, options));\n updateURL(filterName, options);\n };\n\n const runOrNavigate = (itemName: string) => {\n const action = _.isFunction(createProps.action) && createProps.action(itemName);\n if (action) {\n action();\n } else if (_.isFunction(createProps.createLink)) {\n navigate(createProps.createLink(itemName), { replace: true });\n }\n };\n\n let createLink: any;\n\n if (canCreate) {\n if (createProps.to) {\n createLink = (\n \n \n \n );\n } else if (createProps.items) {\n createLink = (\n
    \n \n
    \n );\n } else {\n createLink = (\n
    \n \n
    \n );\n }\n if (!_.isEmpty(createAccessReview)) {\n createLink = (\n \n {createLink}\n \n );\n }\n }\n\n return (\n <>\n {/* Badge rendered from PageHeading only when title is present */}\n \n {createLink && (\n
    \n {createLink}\n
    \n )}\n {!title && badge &&
    {badge}
    }\n \n {helpText &&

    {helpText}

    }\n
    \n {inject(props.children, {\n resources,\n expand,\n reduxIDs,\n applyFilter,\n })}\n
    \n \n );\n};\nFireMan.displayName = 'FireMan';\n\nexport type Flatten<\n F extends FirehoseResultObject = { [key: string]: K8sResourceCommon | K8sResourceCommon[] },\n R = any\n> = (resources: FirehoseResourcesResult) => R;\n\nexport type ListPageProps = PageCommonProps & {\n kind: string;\n helpText?: React.ReactNode;\n selector?: Selector;\n fieldSelector?: string;\n createHandler?: () => void;\n name?: string;\n filters?: any;\n limit?: number;\n nameFilter?: string;\n skipAccessReview?: boolean;\n};\n\nexport const ListPage = withFallback((props) => {\n const {\n autoFocus,\n canCreate,\n createButtonText,\n createHandler,\n customData,\n fieldSelector,\n filterLabel,\n labelFilterPlaceholder,\n nameFilterPlaceholder,\n filters,\n helpText,\n kind,\n limit,\n ListComponent,\n mock,\n name,\n nameFilter,\n namespace,\n selector,\n showTitle = true,\n skipAccessReview,\n textFilter,\n badge,\n hideLabelFilter,\n hideNameLabelFilters,\n hideColumnManagement,\n columnLayout,\n flatten = (_resources) => _.get(_resources, name || kind, {} as FirehoseResult).data,\n } = props;\n const { t } = useTranslation();\n const params = useParams();\n let { createProps } = props;\n const ko = kindObj(kind);\n const { label, labelKey, labelPlural, labelPluralKey, namespaced, plural } = ko;\n const title = props.title || t(labelPluralKey) || labelPlural;\n const usedNamespace = !namespace && namespaced ? params.ns : namespace;\n\n let href = usedNamespace\n ? `/k8s/ns/${usedNamespace || 'default'}/${plural}/~new`\n : `/k8s/cluster/${plural}/~new`;\n if (ko.crd) {\n try {\n const ref = referenceForModel(ko);\n href = usedNamespace\n ? `/k8s/ns/${usedNamespace || 'default'}/${ref}/~new`\n : `/k8s/cluster/${ref}/~new`;\n } catch (unused) {\n /**/\n }\n }\n\n createProps = createProps || (createHandler ? { onClick: createHandler } : { to: href });\n const createAccessReview = skipAccessReview ? null : { model: ko, namespace: usedNamespace };\n const resources = [\n {\n fieldSelector,\n filters,\n kind,\n limit,\n name,\n namespaced,\n selector,\n prop: kind,\n },\n ];\n\n // Don't show row filters if props.filters were passed. The content is already filtered and the row filters will have incorrect counts.\n const rowFilters = _.isEmpty(filters) ? props.rowFilters : undefined;\n\n if (!namespaced && usedNamespace) {\n return ;\n }\n\n return (\n \n );\n}, ErrorBoundaryFallbackPage);\n\nListPage.displayName = 'ListPage';\n\ntype PageCommonProps = {\n canCreate?: boolean;\n createButtonText?: string;\n createProps?: CreateProps;\n flatten?: Flatten;\n title?: string;\n showTitle?: boolean;\n filterLabel?: string;\n textFilter?: string;\n rowFilters?: RowFilter[];\n ListComponent: React.ComponentType;\n namespace?: string;\n customData?: C;\n badge?: React.ReactNode;\n hideNameLabelFilters?: boolean;\n hideLabelFilter?: boolean;\n columnLayout?: ColumnLayout;\n hideColumnManagement?: boolean;\n labelFilterPlaceholder?: string;\n nameFilterPlaceholder?: string;\n autoFocus?: boolean;\n mock?: boolean;\n};\n\nexport type MultiListPageProps = PageCommonProps & {\n createAccessReview?: {\n model: K8sKind;\n namespace?: string;\n };\n label?: string;\n hideTextFilter?: boolean;\n helpText?: React.ReactNode;\n resources: (Omit & { prop?: FirehoseResource['prop'] })[];\n staticFilters?: { key: string; value: string }[];\n nameFilter?: string;\n};\n\nexport const MultiListPage: React.FC = (props) => {\n const {\n autoFocus,\n canCreate,\n createAccessReview,\n createButtonText,\n createProps,\n filterLabel,\n nameFilterPlaceholder,\n labelFilterPlaceholder,\n flatten,\n helpText,\n label,\n ListComponent,\n mock,\n namespace,\n rowFilters,\n showTitle = true,\n staticFilters,\n textFilter,\n title,\n customData,\n badge,\n hideLabelFilter,\n hideNameLabelFilters,\n hideColumnManagement,\n columnLayout,\n nameFilter,\n } = props;\n\n const { t } = useTranslation();\n const resources = _.map(props.resources, (r) => ({\n ...r,\n isList: r.isList !== undefined ? r.isList : true,\n namespace: r.namespaced ? namespace : r.namespace,\n prop: r.prop || r.kind,\n }));\n\n return (\n \n \n \n \n \n );\n};\n\nMultiListPage.displayName = 'MultiListPage';\n","import * as React from 'react';\nimport * as _ from 'lodash';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore: FIXME missing exports due to out-of-sync @types/react-redux version\nimport { useSelector } from 'react-redux';\nimport { createSelectorCreator, defaultMemoize } from 'reselect';\nimport { SortByDirection } from '@patternfly/react-table';\nimport { useDeepCompareMemoize } from '@console/shared';\nimport { RowFilter } from '@console/dynamic-plugin-sdk';\nimport { useExactSearch } from '@console/app/src/components/user-preferences/search';\n\nimport { RootState } from '../../redux';\nimport { tableFilters } from './table-filters';\nimport { Filter } from './table';\n\nexport const getFilteredRows = (\n filters: Filter[],\n rowFilters: RowFilter[],\n objects: D[],\n exactSearch?: boolean,\n) => {\n if (_.isEmpty(filters)) {\n return objects;\n }\n\n const allTableFilters = {\n ...tableFilters(exactSearch),\n ...(rowFilters || [])\n .filter((f) => f.type && _.isFunction(f.filter))\n .reduce((acc, f) => ({ ...acc, [f.type]: f.filter }), {}),\n };\n let filteredObjects = objects;\n _.each(filters, (value, name) => {\n const filter = allTableFilters[name];\n if (_.isFunction(filter)) {\n filteredObjects = _.filter(filteredObjects, (o) => filter(value, o));\n }\n });\n\n return filteredObjects;\n};\n\ntype UseTableDataProps = {\n reduxID: string;\n reduxIDs: string[];\n defaultSortFunc: string;\n defaultSortField: string;\n defaultSortOrder: SortByDirection;\n staticFilters: { key: string; value: string }[];\n filters: { key: string; value: string }[];\n rowFilters: RowFilter[];\n propData: D[];\n loaded: boolean;\n isPinned: (obj: D) => boolean;\n customData: C;\n customSorts: { [key: string]: (obj: D) => number | string };\n sorts: { [key: string]: any };\n};\n\ntype UseTableDataResult = {\n currentSortField: string;\n currentSortFunc: string;\n currentSortOrder: SortByDirection;\n data: D[];\n listId: string;\n};\n\nexport const useTableData = ({\n reduxID,\n reduxIDs,\n defaultSortFunc,\n defaultSortField = 'metadata.name',\n defaultSortOrder = SortByDirection.asc,\n staticFilters: initStaticFilters,\n filters,\n rowFilters: initRowFilters,\n propData,\n loaded,\n isPinned,\n customData: initCustomData,\n customSorts: initCustomSorts,\n sorts: initSorts,\n}: UseTableDataProps): UseTableDataResult => {\n const [staticFilters, rowFilters, customSorts, sorts, customData] = useDeepCompareMemoize([\n initStaticFilters,\n initRowFilters,\n initCustomSorts,\n initSorts,\n initCustomData,\n ]);\n\n const [isExactSearch] = useExactSearch();\n\n const tableSelectorCreator = React.useMemo(\n () =>\n createSelectorCreator(\n defaultMemoize as any,\n (oldSortState, newSortState) => oldSortState === newSortState,\n ),\n [],\n );\n\n const listId = reduxIDs ? reduxIDs.join(',') : reduxID;\n\n const sortSelector = React.useMemo(\n () =>\n tableSelectorCreator(\n (state: RootState) => state.UI.getIn(['listSorts', listId]),\n (sortsState: any) => [\n sortsState?.get('field'),\n sortsState?.get('func'),\n sortsState?.get('orderBy'),\n ],\n ),\n [tableSelectorCreator, listId],\n );\n\n const [currentSortField, currentSortFunc, currentSortOrder = defaultSortOrder] = useSelector(\n sortSelector,\n );\n\n return React.useMemo(() => {\n const allFilters = staticFilters ? Object.assign({}, filters, ...staticFilters) : filters;\n const data = getFilteredRows(allFilters, rowFilters, propData, isExactSearch);\n\n if (loaded) {\n let sortBy: string | Function = 'metadata.name';\n const sortFunc = currentSortFunc || defaultSortFunc;\n const sortField = currentSortField || (currentSortFunc ? undefined : defaultSortField);\n if (sortField) {\n sortBy = (resource) => sorts.string(_.get(resource, sortField, ''));\n } else if (sortFunc && customSorts?.[sortFunc]) {\n // Sort resources by a function in the 'customSorts' prop\n sortBy = customSorts[sortFunc];\n } else if (sortFunc && sorts[sortFunc]) {\n // Sort resources by a function in the 'sorts' object\n sortBy = sorts[sortFunc];\n }\n\n const getSortValue = (resource) => {\n const val = _.isFunction(sortBy)\n ? sortBy(resource, customData)\n : _.get(resource, sortBy as string);\n return val ?? '';\n };\n data?.sort((a, b) => {\n const lang = navigator.languages[0] || navigator.language;\n // Use `localCompare` with `numeric: true` for a natural sort order (e.g., pv-1, pv-9, pv-10)\n const compareOpts = { numeric: true, ignorePunctuation: true };\n const aValue = getSortValue(a);\n const bValue = getSortValue(b);\n const aPinned = isPinned?.(a);\n const bPinned = isPinned?.(b);\n if (aPinned !== bPinned) {\n return aPinned ? -1 : +1;\n }\n const result: number =\n Number.isFinite(aValue) && Number.isFinite(bValue)\n ? aValue - bValue\n : `${aValue}`.localeCompare(`${bValue}`, lang, compareOpts);\n if (result !== 0) {\n return currentSortOrder === SortByDirection.asc ? result : result * -1;\n }\n\n // Use name as a secondary sort for a stable sort.\n const aName = a?.metadata?.name || '';\n const bName = b?.metadata?.name || '';\n return aName.localeCompare(bName, lang, compareOpts);\n });\n }\n\n return {\n currentSortField,\n currentSortFunc,\n currentSortOrder,\n data,\n listId,\n };\n }, [\n currentSortField,\n currentSortFunc,\n currentSortOrder,\n customData,\n customSorts,\n defaultSortField,\n defaultSortFunc,\n filters,\n isExactSearch,\n isPinned,\n listId,\n loaded,\n propData,\n rowFilters,\n sorts,\n staticFilters,\n ]);\n};\n","import * as React from 'react';\nimport {\n formatPrometheusDuration,\n parsePrometheusDuration,\n} from '@openshift-console/plugin-shared/src/datetime/prometheus';\nimport {\n Chart,\n ChartArea,\n ChartAxis,\n ChartGroup,\n ChartLegend,\n ChartLine,\n ChartStack,\n ChartVoronoiContainer,\n} from '@patternfly/react-charts';\nimport {\n Alert,\n Button,\n Checkbox,\n EmptyState,\n EmptyStateBody,\n EmptyStateIcon,\n EmptyStateVariant,\n InputGroup,\n TextInput,\n EmptyStateHeader,\n InputGroupItem,\n} from '@patternfly/react-core';\nimport {\n DropdownItem as DropdownItemDeprecated,\n Dropdown as DropdownDeprecated,\n DropdownToggle as DropdownToggleDeprecated,\n} from '@patternfly/react-core/deprecated';\nimport { ChartLineIcon } from '@patternfly/react-icons/dist/esm/icons/chart-line-icon';\nimport classNames from 'classnames';\nimport * as _ from 'lodash';\nimport { useTranslation } from 'react-i18next';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useDispatch, useSelector } from 'react-redux';\nimport { VictoryPortal } from 'victory-core';\nimport {\n FormatSeriesTitle,\n PrometheusEndpoint,\n PrometheusLabels,\n PrometheusResponse,\n PrometheusResult,\n PrometheusValue,\n QueryBrowserProps,\n} from '@console/dynamic-plugin-sdk';\nimport {\n queryBrowserDeleteAllSeries,\n queryBrowserPatchQuery,\n queryBrowserSetTimespan,\n} from '@console/internal/actions/observe';\nimport { GraphEmpty } from '@console/internal/components/graphs/graph-empty';\nimport { getPrometheusURL } from '@console/internal/components/graphs/helpers';\nimport { formatNumber } from '@console/internal/components/monitoring/format';\nimport { useBoolean } from '@console/internal/components/monitoring/hooks/useBoolean';\nimport { PrometheusAPIError } from '@console/internal/components/monitoring/types';\nimport {\n humanizeNumberSI,\n LoadingInline,\n usePoll,\n useRefWidth,\n useSafeFetch,\n} from '@console/internal/components/utils';\nimport {\n dateFormatterNoYear,\n dateTimeFormatterWithSeconds,\n timeFormatter,\n timeFormatterWithSeconds,\n} from '@console/internal/components/utils/datetime';\nimport { RootState } from '@console/internal/redux';\nimport withFallback from '../error/fallbacks/withFallback';\nimport { queryBrowserTheme } from './theme';\n\nconst spans = ['5m', '15m', '30m', '1h', '2h', '6h', '12h', '1d', '2d', '1w', '2w'];\n\n// Use exponential notation for small or very large numbers to avoid labels with too many characters\nconst formatPositiveValue = (v: number): string =>\n v === 0 || (v >= 0.001 && v < 1e23) ? humanizeNumberSI(v).string : v.toExponential(1);\n\nconst formatValue = (v: number): string => (v < 0 ? '-' : '') + formatPositiveValue(Math.abs(v));\n\nconst valueFormatter = (units: string): ((v: number) => string) =>\n ['ms', 's', 'bytes', 'Bps', 'pps'].includes(units)\n ? (v: number) => formatNumber(String(v), undefined, units)\n : formatValue;\n\nconst Error: React.FC = ({ error, title = 'An error occurred' }) => (\n \n {_.get(error, 'json.error', error.message)}\n \n);\n\nconst GraphEmptyState: React.FC = ({ children, title }) => (\n
    \n \n {title}}\n icon={}\n headingLevel=\"h2\"\n />\n {children}\n \n
    \n);\n\nconst SpanControls: React.FC = React.memo(\n ({ defaultSpanText, onChange, span, hasReducedResolution }) => {\n const [isValid, setIsValid] = React.useState(true);\n const [text, setText] = React.useState(formatPrometheusDuration(span));\n\n const { t } = useTranslation();\n\n const [isOpen, setIsOpen, , setClosed] = useBoolean(false);\n\n React.useEffect(() => {\n setText(formatPrometheusDuration(span));\n }, [span]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnChange = React.useCallback(_.debounce(onChange, 400), [onChange]);\n\n const setSpan = (newText: string, isDebounced = false) => {\n const newSpan = parsePrometheusDuration(newText);\n const newIsValid = newSpan > 0;\n setIsValid(newIsValid);\n setText(newText);\n if (newIsValid && newSpan !== span) {\n const fn = isDebounced ? debouncedOnChange : onChange;\n fn(newSpan);\n }\n };\n\n const dropdownItems = spans.map((s) => (\n setSpan(s, true)}\n >\n {s}\n \n ));\n\n return (\n <>\n \n \n setSpan(v, true)}\n type=\"text\"\n value={text}\n />\n \n \n \n }\n />\n \n \n setSpan(defaultSpanText)}\n type=\"button\"\n variant=\"tertiary\"\n >\n {t('public~Reset zoom')}\n \n {hasReducedResolution && (\n \n )}\n \n );\n },\n);\n\nconst TOOLTIP_MAX_ENTRIES = 20;\nconst TOOLTIP_MAX_WIDTH = 400;\nconst TOOLTIP_MAX_HEIGHT = 400;\nconst TOOLTIP_MAX_LEFT_JUT_OUT = 85;\nconst TOOLTIP_MAX_RIGHT_JUT_OUT = 45;\n\ntype TooltipSeries = {\n color: string;\n key: string;\n labels: PrometheusLabels;\n name: string;\n total: number;\n value: string;\n};\n\n// For performance, use this instead of PatternFly's ChartTooltip or Victory VictoryTooltip\nconst TooltipWrapped: React.FC = ({\n activePoints,\n center,\n height,\n style,\n width,\n x,\n}) => {\n const time = activePoints?.[0]?.x;\n\n if (!_.isDate(time) || !_.isFinite(x)) {\n return null;\n }\n\n // Don't show the tooltip if the cursor is too far from the active points (can happen when the\n // graph's timespan includes a range with no data)\n if (Math.abs(x - center.x) > width / 15) {\n return null;\n }\n\n // Pick tooltip width and location (left or right of the cursor) to maximize its available space\n const spaceOnLeft = x + TOOLTIP_MAX_LEFT_JUT_OUT;\n const spaceOnRight = width - x + TOOLTIP_MAX_RIGHT_JUT_OUT;\n const isOnLeft = spaceOnLeft > spaceOnRight;\n const tooltipMaxWidth = Math.min(isOnLeft ? spaceOnLeft : spaceOnRight, TOOLTIP_MAX_WIDTH);\n\n // Sort the entries in the tooltip from largest to smallest (to match the position of points in\n // the graph) and limit to the maximum number we can display. There could be a large number of\n // points, so we use a slightly less succinct approach to avoid sorting the whole list of points\n // and to avoid processing points that won't fit in the tooltip.\n const largestPoints: TooltipSeries[] = [];\n activePoints.forEach(({ _y1, y }, i) => {\n const total = _y1 ?? y;\n if (\n largestPoints.length < TOOLTIP_MAX_ENTRIES ||\n largestPoints[TOOLTIP_MAX_ENTRIES - 1].total < total\n ) {\n const point = {\n color: style[i]?.fill,\n key: String(i),\n labels: style[i]?.labels,\n name: style[i]?.name,\n total,\n value: valueFormatter(style[i]?.units)(y),\n };\n largestPoints.splice(\n _.sortedIndexBy(largestPoints, point, (p) => -p.total),\n 0,\n point,\n );\n }\n });\n const allSeries: TooltipSeries[] = largestPoints.slice(0, TOOLTIP_MAX_ENTRIES);\n\n // For each series we are displaying in the tooltip, create a name based on its labels. We have\n // limited space, so sort the labels to try to show the most useful first since later labels will\n // likely be cut off. Sort first by the number of unique values for the label (prefer to show\n // labels with more values because they are more helpful in identifying the series), then by the\n // length of the label (prefer to show sorter labels because space is limited).\n const allSeriesSorted: string[] = _.sortBy(\n _.without(\n _.uniq(_.flatMap(allSeries, (s) => (s.labels ? Object.keys(s.labels) : []))),\n '__name__',\n ),\n [(k) => -_.uniq(allSeries.map((s) => s.labels[k])).length, (k) => k.length],\n );\n const getSeriesName = (series: TooltipSeries): string => {\n if (_.isString(series.name)) {\n return series.name;\n }\n if (_.isEmpty(series.labels)) {\n return '{}';\n }\n // eslint-disable-next-line no-underscore-dangle\n const name = series.labels.__name__ ?? '';\n const otherLabels = _.intersection(allSeriesSorted, Object.keys(series.labels));\n return `${name}{${otherLabels.map((l) => `${l}=${series.labels[l]}`).join(',')}}`;\n };\n\n return (\n <>\n \n \n \n
    \n
    \n
    \n {dateTimeFormatterWithSeconds.format(time)}\n
    \n {allSeries.map((s) => (\n
    \n
    \n
    {getSeriesName(s)}
    \n
    {s.value}
    \n
    \n ))}\n
    \n
    \n \n \n \n \n );\n};\nconst Tooltip = withFallback(TooltipWrapped);\n\nconst graphContainer = (\n // Set activateData to false to work around VictoryVoronoiContainer crash (see\n // https://github.com/FormidableLabs/victory/issues/1314)\n }\n labels={() => ' '}\n mouseFollowTooltips\n voronoiDimension=\"x\"\n voronoiPadding={0}\n />\n);\n\nconst LegendContainer = ({ children }: { children?: React.ReactNode }) => {\n // The first child should be a with a `width` prop giving the legend's content width\n const width = children?.[0]?.[0]?.props?.width ?? '100%';\n return (\n \n
    \n {children}\n
    \n
    \n );\n};\n\nconst Null = () => null;\nconst nullComponent = ;\n\ntype GraphSeries = GraphDataPoint[] | null;\n\nconst getXDomain = (endTime: number, span: number): AxisDomain => [endTime - span, endTime];\n\nconst ONE_MINUTE = 60 * 1000;\n\nconst Graph: React.FC = React.memo(\n ({\n allSeries,\n disabledSeries,\n fixedXDomain,\n formatSeriesTitle,\n isStack,\n showLegend,\n span,\n units,\n width,\n }) => {\n const data: GraphSeries[] = [];\n const tooltipSeriesNames: string[] = [];\n const tooltipSeriesLabels: PrometheusLabels[] = [];\n const legendData: { name: string }[] = [];\n const { t } = useTranslation();\n\n const [xDomain, setXDomain] = React.useState(fixedXDomain || getXDomain(Date.now(), span));\n\n // Only update X-axis if the time range (fixedXDomain or span) or graph data (allSeries) change\n React.useEffect(() => {\n setXDomain(fixedXDomain || getXDomain(Date.now(), span));\n }, [allSeries, span, fixedXDomain]);\n\n const domain = { x: xDomain, y: undefined };\n\n _.each(allSeries, (series, i) => {\n _.each(series, ([metric, values]) => {\n // Ignore any disabled series\n data.push(_.some(disabledSeries?.[i], (s) => _.isEqual(s, metric)) ? null : values);\n if (formatSeriesTitle) {\n const name = formatSeriesTitle(metric, i);\n legendData.push({ name });\n tooltipSeriesNames.push(name);\n } else {\n tooltipSeriesLabels.push(metric);\n }\n });\n });\n\n if (!data.some(Array.isArray)) {\n return ;\n }\n\n let yTickFormat = valueFormatter(units);\n\n if (isStack) {\n // Specify Y axis range if all values are zero, but otherwise let Chart set it automatically\n const isAllZero = _.every(allSeries, (series) =>\n _.every(series, ([, values]) => _.every(values, { y: 0 })),\n );\n if (isAllZero) {\n domain.y = [0, 1];\n }\n } else {\n // Set a reasonable Y-axis range based on the min and max values in the data\n const findMin = (series: GraphSeries): GraphDataPoint => _.minBy(series, 'y');\n const findMax = (series: GraphSeries): GraphDataPoint => _.maxBy(series, 'y');\n let minY: number = findMin(data.map(findMin))?.y ?? 0;\n let maxY: number = findMax(data.map(findMax))?.y ?? 0;\n if (minY === 0 && maxY === 0) {\n minY = 0;\n maxY = 1;\n } else if (minY > 0 && maxY > 0) {\n minY = 0;\n } else if (minY < 0 && maxY < 0) {\n maxY = 0;\n }\n\n domain.y = [minY, maxY];\n\n if (Math.abs(maxY - minY) < 0.005) {\n yTickFormat = (v: number) => (v === 0 ? '0' : v.toExponential(1));\n }\n }\n\n const xAxisTickCount = Math.round(width / 100);\n const xAxisTickShowSeconds = span < xAxisTickCount * ONE_MINUTE;\n const xAxisTickFormat = (d) => {\n if (span > parsePrometheusDuration('1d')) {\n // Add a newline between the date and time so tick labels don't overlap.\n return `${dateFormatterNoYear.format(d)}\\n${timeFormatter.format(d)}`;\n }\n if (xAxisTickShowSeconds) {\n return timeFormatterWithSeconds.format(d);\n }\n return timeFormatter.format(d);\n };\n\n const GroupComponent = isStack ? ChartStack : ChartGroup;\n const ChartComponent = isStack ? ChartArea : ChartLine;\n\n const colors = queryBrowserTheme.line.colorScale;\n\n return (\n \n \n \n \n {data.map((values, i) => {\n if (values === null) {\n return null;\n }\n const color = colors[i % colors.length];\n const labels = tooltipSeriesLabels[i];\n const style = {\n data: { [isStack ? 'fill' : 'stroke']: color },\n labels: {\n fill: color,\n labels,\n name: tooltipSeriesNames[i],\n units,\n },\n };\n return (\n // We need to use the `name` prop to prevent an error in VictorySharedEvents when\n // dynamically removing and then adding back data series\n }\n key={_.map(labels, (v, k) => `${k}=${v}`).join(',')}\n name={`series-${i}`}\n style={style}\n />\n );\n })}\n \n {showLegend && !_.isEmpty(legendData) && (\n }\n gutter={30}\n itemsPerRow={4}\n orientation=\"vertical\"\n style={{\n labels: { fontSize: 11, fill: 'var(--pf-v5-global--Color--100)' },\n }}\n symbolSpacer={4}\n />\n )}\n \n );\n },\n);\n\nconst formatSeriesValues = (\n values: PrometheusValue[],\n samples: number,\n span: number,\n defaultEmptyValue: 0 | null,\n): GraphDataPoint[] => {\n const newValues = _.map(values, (v) => {\n const y = Number(v[1]);\n return {\n x: new Date(v[0] * 1000),\n y: Number.isNaN(y) ? defaultEmptyValue : y,\n };\n });\n\n // The data may have missing values, so we fill those gaps with nulls so that the graph correctly\n // shows the missing values as gaps in the line\n const start = Number(_.get(newValues, '[0].x'));\n const end = Number(_.get(_.last(newValues), 'x'));\n const step = span / samples;\n _.range(start, end, step).forEach((t, i) => {\n const x = new Date(t);\n if (_.get(newValues, [i, 'x']) > x) {\n newValues.splice(i, 0, { x, y: null });\n }\n });\n\n return newValues;\n};\n\n// Try to limit the graph to this number of data points\nconst maxDataPointsSoft = 6000;\n\n// If we have more than this number of data points, do not render the graph\nconst maxDataPointsHard = 10000;\n\n// Min and max number of data samples per data series\nconst minSamples = 10;\nconst maxSamples = 300;\n\n// Fall back to a line chart for performance if there are too many series\nconst maxStacks = 50;\n\n// We don't want to refresh all the graph data for just a small adjustment in the number of samples,\n// so don't update unless the number of samples would change by at least this proportion\nconst samplesLeeway = 0.2;\n\n// Minimum step (milliseconds between data samples) because tiny steps reduce performance for almost\n// no benefit\nconst minStep = 5 * 1000;\n\n// Don't allow zooming to less than this number of milliseconds\nconst minSpan = 30 * 1000;\n\n// Don't poll more often than this number of milliseconds\nconst minPollInterval = 10 * 1000;\n\nconst ZoomableGraph: React.FC = ({\n allSeries,\n disabledSeries,\n fixedXDomain,\n formatSeriesTitle,\n isStack,\n onZoom,\n showLegend,\n span,\n units,\n width,\n}) => {\n const [isZooming, setIsZooming] = React.useState(false);\n const [x1, setX1] = React.useState(0);\n const [x2, setX2] = React.useState(0);\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n setIsZooming(false);\n }\n };\n\n const onMouseDown = (e: React.MouseEvent) => {\n setIsZooming(true);\n const x = e.clientX - e.currentTarget.getBoundingClientRect().left;\n setX1(x);\n setX2(x);\n };\n\n const onMouseMove = (e: React.MouseEvent) => {\n setX2(e.clientX - e.currentTarget.getBoundingClientRect().left);\n };\n\n const onMouseUp = (e: React.MouseEvent) => {\n setIsZooming(false);\n\n const xMin = Math.min(x1, x2);\n const xMax = Math.max(x1, x2);\n\n // Don't do anything if a range was not selected (don't zoom if you just click the graph)\n if (xMax === xMin) {\n return;\n }\n\n const zoomWidth = e.currentTarget.getBoundingClientRect().width;\n const oldFrom = _.get(fixedXDomain, '[0]', Date.now() - span);\n let from = oldFrom + (span * xMin) / zoomWidth;\n let to = oldFrom + (span * xMax) / zoomWidth;\n let newSpan = to - from;\n\n if (newSpan < minSpan) {\n newSpan = minSpan;\n const middle = (from + to) / 2;\n from = middle - newSpan / 2;\n to = middle + newSpan / 2;\n }\n onZoom(from, to);\n };\n\n // tabIndex is required to enable the onKeyDown handler\n const handlers = isZooming\n ? { onKeyDown, onMouseMove, onMouseUp, tabIndex: -1 }\n : { onMouseDown };\n\n return (\n
    \n {isZooming && (\n \n )}\n \n
    \n );\n};\n\nconst Loading = () => (\n
    \n \n
    \n);\n\nconst getMaxSamplesForSpan = (span: number) =>\n _.clamp(Math.round(span / minStep), minSamples, maxSamples);\n\nconst QueryBrowserWrapped: React.FC = ({\n customDataSource,\n defaultSamples,\n defaultTimespan = parsePrometheusDuration('30m'),\n disabledSeries,\n disableZoom,\n filterLabels,\n fixedEndTime,\n formatSeriesTitle,\n GraphLink,\n hideControls,\n isStack = false,\n namespace,\n onZoom,\n pollInterval,\n queries,\n showLegend,\n showStackedControl = false,\n timespan,\n units,\n}) => {\n const { t } = useTranslation();\n const hideGraphs = useSelector(({ observe }: RootState) => !!observe.get('hideGraphs'));\n const tickInterval = useSelector(\n ({ observe }: RootState) => pollInterval ?? observe.getIn(['queryBrowser', 'pollInterval']),\n );\n const lastRequestTime = useSelector(({ observe }: RootState) =>\n observe.getIn(['queryBrowser', 'lastRequestTime']),\n );\n\n const dispatch = useDispatch();\n\n // For the default time span, use the first of the suggested span options that is at least as long\n // as defaultTimespan\n const defaultSpanText = spans.find((s) => parsePrometheusDuration(s) >= defaultTimespan);\n // If we have both `timespan` and `defaultTimespan`, `timespan` takes precedence\n const [span, setSpan] = React.useState(timespan || parsePrometheusDuration(defaultSpanText));\n\n // Limit the number of samples so that the step size doesn't fall below minStep\n const maxSamplesForSpan = defaultSamples || getMaxSamplesForSpan(span);\n\n const [xDomain, setXDomain] = React.useState();\n const [error, setError] = React.useState();\n const [isDatasetTooBig, setIsDatasetTooBig] = React.useState(false);\n const [graphData, setGraphData] = React.useState(null);\n const [samples, setSamples] = React.useState(maxSamplesForSpan);\n const [updating, setUpdating] = React.useState(true);\n\n const [containerRef, width] = useRefWidth();\n\n const endTime = xDomain?.[1];\n\n const safeFetch = useSafeFetch();\n\n const [isStacked, setIsStacked] = React.useState(isStack);\n\n const canStack = _.sumBy(graphData, 'length') <= maxStacks;\n\n // If provided, `timespan` overrides any existing span setting\n React.useEffect(() => {\n if (timespan) {\n setSpan(timespan);\n setSamples(defaultSamples || getMaxSamplesForSpan(timespan));\n }\n }, [defaultSamples, timespan]);\n\n React.useEffect(() => {\n setGraphData(null);\n if (fixedEndTime) {\n setXDomain(getXDomain(fixedEndTime, span));\n }\n }, [fixedEndTime, span]);\n\n React.useEffect(() => {\n if (!fixedEndTime) {\n setXDomain(undefined);\n }\n }, [fixedEndTime]);\n\n // Clear any existing series data when the namespace is changed\n React.useEffect(() => {\n dispatch(queryBrowserDeleteAllSeries());\n }, [dispatch, namespace]);\n\n const tick = () => {\n if (hideGraphs) {\n return undefined;\n }\n\n // Define this once for all queries so that they have exactly the same time range and X values\n const now = Date.now();\n\n const allPromises = _.map(queries, (query) =>\n _.isEmpty(query)\n ? Promise.resolve()\n : safeFetch(\n getPrometheusURL(\n {\n endpoint: PrometheusEndpoint.QUERY_RANGE,\n endTime: endTime || now,\n namespace,\n query,\n samples,\n timeout: '60s',\n timespan: span,\n },\n customDataSource?.basePath,\n ),\n ),\n );\n\n return Promise.all(allPromises)\n .then((responses: PrometheusResponse[]) => {\n const newResults = _.map(responses, 'data.result');\n const numDataPoints = _.sumBy(newResults, (r) => _.sumBy(r, 'values.length'));\n\n if (numDataPoints > maxDataPointsHard && samples === minSamples) {\n setIsDatasetTooBig(true);\n return;\n }\n setIsDatasetTooBig(false);\n\n const newSamples = _.clamp(\n Math.floor((samples * maxDataPointsSoft) / numDataPoints),\n minSamples,\n maxSamplesForSpan,\n );\n\n // Change `samples` if either\n // - It will change by a proportion greater than `samplesLeeway`\n // - It will change to the upper or lower limit of its allowed range\n if (\n Math.abs(newSamples - samples) / samples > samplesLeeway ||\n (newSamples !== samples &&\n (newSamples === maxSamplesForSpan || newSamples === minSamples))\n ) {\n setSamples(newSamples);\n } else {\n const newGraphData = _.map(\n newResults,\n (result: PrometheusResult[], queryIndex: number) => {\n return _.map(\n result,\n ({ metric, values }): Series => {\n // If filterLabels is specified, ignore all series that don't match\n if (_.some(filterLabels, (v, k) => _.has(metric, k) && metric[k] !== v)) {\n return [];\n }\n let defaultEmptyValue = null;\n if (isStack && _.some(values, (value) => Number.isNaN(Number(value[1])))) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Invalid response values for stacked graph converted to 0 for query: ',\n queries[queryIndex],\n );\n defaultEmptyValue = 0;\n }\n return [metric, formatSeriesValues(values, samples, span, defaultEmptyValue)];\n },\n );\n },\n );\n setGraphData(newGraphData);\n\n _.each(newResults, (r, i) =>\n dispatch(queryBrowserPatchQuery(i, { series: r ? _.map(r, 'metric') : undefined })),\n );\n setUpdating(false);\n }\n setError(undefined);\n })\n .catch((err) => {\n if (err.name !== 'AbortError') {\n setError(err);\n setUpdating(false);\n }\n });\n };\n\n // Don't poll if an end time was set (because the latest data is not displayed) or if the graph is\n // hidden. Otherwise use a polling interval relative to the graph's timespan.\n let delay: number;\n if (endTime || hideGraphs || tickInterval === null) {\n delay = null;\n } else if (tickInterval > 0) {\n delay = tickInterval;\n } else {\n delay = Math.max(span / 120, minPollInterval);\n }\n\n const queriesKey = _.reject(queries, _.isEmpty).join();\n usePoll(\n tick,\n delay,\n endTime,\n filterLabels,\n namespace,\n queriesKey,\n samples,\n span,\n lastRequestTime,\n );\n\n React.useLayoutEffect(() => setUpdating(true), [endTime, namespace, queriesKey, samples, span]);\n\n const onSpanChange = React.useCallback(\n (newSpan: number) => {\n setGraphData(null);\n setXDomain(undefined);\n setSpan(newSpan);\n dispatch(queryBrowserSetTimespan(newSpan));\n setSamples(defaultSamples || getMaxSamplesForSpan(newSpan));\n },\n [defaultSamples, dispatch],\n );\n\n const isRangeVector = _.get(error, 'json.error', '').match(\n /invalid expression type \"range vector\"/,\n );\n\n if (hideGraphs) {\n // Still render the graph containers so that `width` continues to be tracked while the graph is\n // hidden. This ensures we can render at the correct width when the graph is shown again.\n return (\n <>\n {error && !isRangeVector && }\n
    \n
    \n
    \n
    \n
    \n \n );\n }\n\n if (isRangeVector) {\n return (\n \n {t(\n 'public~Query results include range vectors, which cannot be graphed. Try adding a function to transform the data.',\n )}\n \n );\n }\n\n if (error?.json?.error?.match(/invalid expression type \"string\"/)) {\n return (\n \n {t('public~Query result is a string, which cannot be graphed.')}\n \n );\n }\n\n if (isDatasetTooBig) {\n return (\n \n {t('public~The resulting dataset is too large to graph.')}\n \n );\n }\n\n const zoomableGraphOnZoom = (from: number, to: number) => {\n setGraphData(null);\n setXDomain([from, to]);\n setSpan(to - from);\n setSamples(defaultSamples || getMaxSamplesForSpan(to - from));\n onZoom?.(from, to);\n };\n\n const isGraphDataEmpty = !graphData || graphData.every((d) => d.length === 0);\n const hasReducedResolution = !isGraphDataEmpty && samples < maxSamplesForSpan && !updating;\n\n return (\n \n {hideControls ? (\n <>{updating && }\n ) : (\n
    \n
    \n \n {updating && }\n
    \n
    \n {GraphLink && }\n {canStack && showStackedControl && (\n setIsStacked(v)}\n />\n )}\n
    \n
    \n )}\n \n
    \n {error && }\n {isGraphDataEmpty && !updating && }\n {!isGraphDataEmpty && width > 0 && (\n <>\n {disableZoom ? (\n \n ) : (\n \n )}\n \n )}\n
    \n
    \n
    \n );\n};\nexport const QueryBrowser = withFallback(QueryBrowserWrapped);\n\ntype AxisDomain = [number, number];\n\ntype GraphDataPoint = {\n x: Date;\n y: number;\n};\n\ntype Series = [PrometheusLabels, GraphDataPoint[]] | [];\n\ntype ErrorProps = {\n error: PrometheusAPIError;\n title?: string;\n};\n\ntype GraphEmptyStateProps = {\n children: React.ReactNode;\n title: string;\n};\n\ntype GraphProps = {\n allSeries: Series[][];\n disabledSeries?: PrometheusLabels[][];\n fixedXDomain?: AxisDomain;\n formatSeriesTitle?: FormatSeriesTitle;\n isStack?: boolean;\n showLegend?: boolean;\n span: number;\n units: string;\n width: number;\n};\n\ntype GraphOnZoom = (from: number, to: number) => void;\n\ntype ZoomableGraphProps = GraphProps & { onZoom: GraphOnZoom };\n\ntype SpanControlsProps = {\n defaultSpanText: string;\n onChange: (span: number) => void;\n span: number;\n hasReducedResolution: boolean;\n};\n\ntype TooltipProps = {\n activePoints?: { x: number; y: number; _y1?: number }[];\n center?: { x: number; y: number };\n height?: number;\n style?: { fill: string; labels: PrometheusLabels; name: string; units: string };\n width?: number;\n x?: number;\n};\n","import * as React from 'react';\n\nexport const Disabled = (props) =>
    {props.children}
    ;\n","import * as React from 'react';\nimport * as classNames from 'classnames';\nimport * as PropTypes from 'prop-types';\nimport { Button } from '@patternfly/react-core';\nimport { withTranslation } from 'react-i18next';\n\nclass TogglePlayWithTranslation extends React.Component {\n shouldComponentUpdate(nextProps) {\n return !!['className', 'active', 'onClick'].find(\n (prop) => nextProps[prop] !== this.props[prop],\n );\n }\n\n render() {\n const klass = classNames(\n 'co-toggle-play fa',\n this.props.className,\n this.props.active ? 'co-toggle-play--active' : 'co-toggle-play--inactive',\n );\n const { t } = this.props;\n return (\n \n );\n }\n}\n\nexport const TogglePlay = withTranslation()(TogglePlayWithTranslation);\n\nTogglePlay.propTypes = {\n active: PropTypes.bool.isRequired,\n className: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n};\n","export const cloudProviderID = (node) => {\n return node.spec.providerID ? node.spec.providerID.split('://')[0] : '';\n};\n\nexport const cloudProviderNames = (providerNames) => {\n if (providerNames.length) {\n const displayNames =\n providerNames.length === 1 ? providerNames[0] : `Hybrid (${providerNames.join(' , ')})`;\n return displayNames.replace(/aws/i, 'Amazon Web Services');\n }\n return '';\n};\n","import { useEffect } from 'react';\n\n/**\n * Hook which adds and remove a beforeunload listener depending on the lock flag.\n */\nexport const usePreventDataLossLock = (lock: boolean) => {\n useEffect(() => {\n const onBeforeUnload = (e: BeforeUnloadEvent) => {\n e.preventDefault();\n // Chrome requires returnValue to be set\n // from https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n e.returnValue = '';\n };\n if (lock) {\n window.addEventListener('beforeunload', onBeforeUnload);\n }\n return () => {\n window.removeEventListener('beforeunload', onBeforeUnload);\n };\n }, [lock]);\n};\n","import * as React from 'react';\nimport { saveAs } from 'file-saver';\nimport { Alert, Button } from '@patternfly/react-core';\nimport { DownloadIcon } from '@patternfly/react-icons/dist/esm/icons/download-icon';\n\nimport { coFetch } from '../../co-fetch';\n\nexport const DownloadButton: React.FC = (props) => {\n const [inFlight, setInFlight] = React.useState(false);\n const [error, setError] = React.useState(null);\n\n const download = () => {\n setInFlight(true);\n setError(false);\n\n coFetch(props.url, {}, 30000)\n .then((response) => response.blob())\n .then((blob) => saveAs(blob, props.filename))\n .then(\n () => setError(null),\n (e) => setError(e),\n )\n .then(() => setInFlight(false));\n };\n\n return (\n <>\n download()}\n >\n Download{inFlight && <>ing...}\n \n {error && (\n \n )}\n \n );\n};\n\nexport type DownloadButtonProps = {\n url: string;\n filename?: string;\n className?: string;\n};\n\nexport type DownloadButtonState = {\n inFlight: boolean;\n error: any;\n};\n\nDownloadButton.displayName = 'DownloadButton';\n","import { pluralize } from './details-page';\n\nexport const entitlementTitles = {\n nodes: {\n uppercase: 'Node',\n lowercase: 'node',\n inPairs: false,\n },\n vCPUs: {\n uppercase: 'vCPU',\n lowercase: 'vCPU',\n inPairs: true,\n },\n sockets: {\n uppercase: 'Socket',\n lowercase: 'socket',\n inPairs: true,\n },\n};\n\nexport const entitlementTitle = (name, count) => {\n const entitlement = entitlementTitles[name];\n if (!entitlement) {\n return 'Tectonic';\n }\n\n let title = entitlement.uppercase;\n if (entitlement.inPairs) {\n title = `${title} Pair`;\n count = Math.floor(count / 2);\n }\n\n return pluralize(count, title);\n};\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport * as _ from 'lodash-es';\nimport { CodeBlock, CodeBlockCode } from '@patternfly/react-core';\nimport { K8sResourceKind, K8sResourceKindReference } from '../../module/k8s';\nimport { DetailsItem } from './details-item';\nimport { ResourceLink } from './resource-link';\nimport { getStrategyType } from '../build';\n\nconst ImageStreamTagsReference: K8sResourceKindReference = 'ImageStreamTag';\n\nexport const BuildStrategy: React.SFC = ({ resource, children }) => {\n const dockerfile = _.get(resource, 'spec.source.dockerfile');\n const devfile = _.get(resource, 'spec.source.devfile');\n const jenkinsfile = _.get(resource, 'spec.strategy.jenkinsPipelineStrategy.jenkinsfile');\n const strategyType = getStrategyType(resource.spec.strategy.type);\n const buildFromPath = ['spec', 'strategy', strategyType, 'from'];\n const buildFrom = _.get(resource, buildFromPath);\n const outputTo = _.get(resource, 'spec.output.to');\n const commitMessage = _.get(resource, 'spec.revision.git.message');\n const commitHash = _.get(resource, 'spec.revision.git.commit');\n const commitAuthorName = _.get(resource, 'spec.revision.git.author.name');\n const pushSecret = _.get(resource, 'spec.output.pushSecret');\n const resourceLimits = _.get(resource, 'spec.resources.limits');\n const triggers = _.map(resource.spec.triggers, 'type').join(', ');\n const { t } = useTranslation();\n\n return (\n
    \n {children}\n \n \n \n {commitMessage && (\n \n {commitMessage}\n
    \n {commitHash && {commitHash.substring(0, 7)}}{' '}\n {commitAuthorName && `by ${commitAuthorName}`}\n
    \n )}\n \n \n {dockerfile && (\n \n \n {dockerfile}\n \n \n )}\n {devfile && (\n \n \n {devfile}\n \n \n )}\n {jenkinsfile && (\n \n \n {jenkinsfile}\n \n
    \n )}\n \n {buildFrom && buildFrom.kind === 'ImageStreamTag' && (\n \n \n \n )}\n {buildFrom && buildFrom.kind === 'DockerImage' && (\n \n {buildFrom.name}\n \n )}\n {outputTo && outputTo.kind === 'ImageStreamTag' && (\n \n \n \n )}\n {outputTo && outputTo.kind === 'DockerImage' && (\n \n {outputTo.name}\n \n )}\n {pushSecret && (\n \n \n \n )}\n \n {resourceLimits && (\n \n {_.map(resourceLimits, (v, k) => `${k}: ${v}`).join(', ')}\n \n )}\n {triggers && (\n \n {triggers}\n \n )}\n
    \n );\n};\n\nexport type BuildStrategyProps = {\n resource: K8sResourceKind;\n children?: JSX.Element[];\n};\n\nBuildStrategy.displayName = 'BuildStrategy';\n","import * as React from 'react';\nimport * as _ from 'lodash-es';\nimport { useTranslation } from 'react-i18next';\n\nimport { K8sResourceKind } from '../../module/k8s';\nimport { SectionHeading } from './headings';\n\nexport const BuildHooks: React.SFC = ({ resource }) => {\n const postCommitArgs = _.get(resource, 'spec.postCommit.args');\n const postCommitCommand = _.get(resource, 'spec.postCommit.command');\n const postCommitScript = _.get(resource, 'spec.postCommit.script');\n const { t } = useTranslation();\n\n return !_.isEmpty(postCommitCommand) || !_.isEmpty(postCommitArgs) || postCommitScript ? (\n
    \n \n
    \n {!_.isEmpty(postCommitCommand) &&
    {t('public~Command')}
    }\n {!_.isEmpty(postCommitCommand) && (\n
    \n {postCommitCommand.join(' ')}\n
    \n )}\n {postCommitScript &&
    {t('public~Script')}
    }\n {postCommitScript && (\n
    \n {postCommitScript}\n
    \n )}\n {!_.isEmpty(postCommitArgs) &&
    {t('public~Args')}
    }\n {!_.isEmpty(postCommitArgs) && (\n
    \n {postCommitArgs.join(' ')}\n
    \n )}\n
    \n
    \n ) : null;\n};\n\nexport type BuildHooksProps = {\n resource: K8sResourceKind;\n};\n\nBuildHooks.displayName = 'BuildHooks';\n","import * as React from 'react';\nimport * as _ from 'lodash-es';\nimport { Base64 } from 'js-base64';\nimport { PasteIcon } from '@patternfly/react-icons/dist/esm/icons/paste-icon';\nimport { Button, AlertVariant } from '@patternfly/react-core';\nimport { useTranslation } from 'react-i18next';\n\nimport { K8sResourceKind, k8sGet } from '../../module/k8s';\nimport { ExpandableAlert } from './alerts';\nimport { SectionHeading } from './headings';\nimport { ResourceLink } from './resource-link';\nimport { useAccessReview } from './rbac';\nimport { SecretModel } from '../../models';\nimport { errorModal } from '../modals/error-modal';\n\nconst kubeAPIServerURL = window.SERVER_FLAGS.kubeAPIServerURL || 'https://';\nenum TriggerTypes {\n Bitbucket = 'Bitbucket',\n ConfigChange = 'ConfigChange',\n Generic = 'Generic',\n GitHub = 'GitHub',\n GitLab = 'GitLab',\n ImageChange = 'ImageChange',\n}\nconst webhookTriggerTypes = new Set([\n TriggerTypes.Bitbucket,\n TriggerTypes.Generic,\n TriggerTypes.GitHub,\n TriggerTypes.GitLab,\n]);\nconst getTriggerProperty = (trigger: WebhookTrigger) => trigger.type.toLowerCase();\n\nconst getTableColumnClasses = (canGetSecret: boolean) => {\n if (canGetSecret) {\n return [\n 'pf-v5-c-table__td',\n 'pf-v5-c-table__td pf-m-hidden pf-m-visible-on-xl pf-v5-u-w-50-on-xl pf-m-break-word',\n 'pf-v5-c-table__td pf-m-hidden pf-m-visible-on-md',\n 'pf-v5-c-table__td',\n ];\n }\n return [\n 'pf-v5-c-table__td pf-v5-u-w-16-on-md',\n 'pf-v5-c-table__td pf-v5-u-w-58-on-xl pf-m-break-word',\n 'pf-v5-c-table__td pf-m-hidden pf-m-visible-on-md pf-v5-u-w-25-on-md',\n 'pf-v5-c-table__td pf-m-hidden',\n ];\n};\n\nexport const WebhookTriggers: React.FC = (props) => {\n const { t } = useTranslation();\n const { resource } = props;\n const { name, namespace } = resource.metadata;\n const { triggers } = resource.spec;\n const canGetSecret = useAccessReview({\n group: SecretModel.apiGroup,\n resource: SecretModel.plural,\n verb: 'get',\n namespace,\n });\n const tableColumnClasses = getTableColumnClasses(canGetSecret);\n const [webhookSecrets, setWebhookSecrets] = React.useState([]);\n const [webhookTriggers, setWebhookTriggers] = React.useState([]);\n const [secretNames, setSecretNames] = React.useState([]);\n const [secretErrors, setSecretErrors] = React.useState([]);\n const [isLoaded, setLoaded] = React.useState(false);\n\n React.useEffect(() => {\n setWebhookTriggers((previousTriggers) => {\n const newTriggers = _.filter(triggers, ({ type }) => webhookTriggerTypes.has(type));\n return _.isEqual(previousTriggers, newTriggers) ? previousTriggers : newTriggers;\n });\n }, [triggers]);\n\n React.useEffect(() => {\n const newSecretNames: string[] = _.uniq(\n webhookTriggers.reduce((acc: string[], webhook: WebhookTrigger): string[] => {\n const triggerProperty = getTriggerProperty(webhook);\n const secretName = _.get(webhook, [triggerProperty, 'secretReference', 'name']);\n return secretName ? [...acc, secretName] : acc;\n }, []),\n );\n setSecretNames(newSecretNames);\n }, [webhookTriggers]);\n\n React.useEffect(() => {\n if (!canGetSecret) {\n return;\n }\n let errors: string[] = [];\n Promise.all(\n secretNames.map(\n (webhookName: string): Promise => {\n return k8sGet(SecretModel, webhookName, namespace).then(\n (secret) => secret,\n (error) => {\n errors = [...errors, `Error: ${error.message}`];\n return null;\n },\n );\n },\n ),\n ).then((secrets) => {\n setSecretErrors(errors);\n setWebhookSecrets(_.compact(secrets));\n setLoaded(true);\n });\n }, [secretNames, isLoaded, canGetSecret, namespace]);\n\n if (_.isEmpty(webhookTriggers)) {\n return null;\n }\n\n const getWebhookURL = (trigger: WebhookTrigger, secret?: string) => {\n const triggerProperty = getTriggerProperty(trigger);\n return `${kubeAPIServerURL}/apis/build.openshift.io/v1/namespaces/${namespace}/buildconfigs/${name}/webhooks/${\n secret ? secret : ''\n }/${triggerProperty}`;\n };\n\n const getSecretReference = (trigger: WebhookTrigger) => {\n const triggerProperty = getTriggerProperty(trigger);\n const secretName = _.get(trigger, [triggerProperty, 'secretReference', 'name']);\n if (!secretName) {\n return No secret;\n }\n const webhookSecret: K8sResourceKind = webhookSecrets.find(\n (secret: K8sResourceKind) => secret.metadata.name === secretName,\n );\n if (!webhookSecret) {\n return secretName;\n }\n return (\n \n );\n };\n\n const copyWebhookToClipboard = (trigger: WebhookTrigger) => {\n const triggerProperty = getTriggerProperty(trigger);\n\n // In case of obsolete `secret` field on the trigger.\n // https://github.com/openshift/api/blob/master/build/v1/types.go#L950\n if (_.has(trigger, [triggerProperty, 'secret'])) {\n const webhookSecret = _.get(trigger, [triggerProperty, 'secret']);\n const url = getWebhookURL(trigger, webhookSecret);\n navigator.clipboard.writeText(url);\n return;\n }\n\n const secretName = _.get(trigger, [triggerProperty, 'secretReference', 'name']);\n const webhookSecret: K8sResourceKind = webhookSecrets.find(\n (secret: K8sResourceKind) => secret.metadata.name === secretName,\n );\n if (!_.has(webhookSecret, 'data.WebHookSecretKey')) {\n errorModal({\n error: t(\n 'public~Secret referenced in the {{triggerProperty}} webhook trigger does not contain \"WebHookSecretKey\" key. Webhook trigger wonโ€™t work due to the invalid secret reference',\n { triggerProperty },\n ),\n });\n return;\n }\n const webhookSecretValue = Base64.decode(webhookSecret.data.WebHookSecretKey);\n const url = getWebhookURL(trigger, webhookSecretValue);\n navigator.clipboard.writeText(url);\n };\n\n const getClipboardButton = (trigger: WebhookTrigger) => {\n const triggerProperty = getTriggerProperty(trigger);\n const plainSecret = _.get(trigger, [triggerProperty, 'secret']);\n const secretReference = _.get(trigger, [triggerProperty, 'secretReference', 'name']);\n const webhookSecret: K8sResourceKind = webhookSecrets.find(\n (secret: K8sResourceKind) => secret.metadata.name === secretReference,\n );\n return webhookSecret || plainSecret ? (\n \n ) : null;\n };\n\n return (\n
    \n {!_.isEmpty(secretErrors) && (\n (\n
    \n {error}\n
    \n ))}\n />\n )}\n \n
    \n \n \n \n \n \n \n \n \n \n {_.map(webhookTriggers, (trigger, i) => {\n const webhookURL = getWebhookURL(trigger);\n const secretReference = getSecretReference(trigger);\n const clipboardButton = getClipboardButton(trigger);\n return (\n \n \n \n \n \n \n );\n })}\n \n
    {t('public~Type')}{t('public~Webhook URL')}{t('public~Secret')}\n
    {trigger.type}{webhookURL || '-'}{secretReference}{clipboardButton}
    \n
    \n
    \n );\n};\n\nexport type WebhookTriggersProps = {\n resource: K8sResourceKind;\n};\n\nexport type WebhookTrigger = {\n type: string;\n [key: string]: any;\n};\n\nWebhookTriggers.displayName = 'WebhookTriggers';\n","import * as React from 'react';\n\n// When pages share a resource (e.g., pod.jsx and container.jsx),\n// the scroll position will be maintained when navigating between\n// pages. Use to always reset the scroll position\n// back to the top of the navigated to page when pages share a resource.\nexport class ScrollToTopOnMount extends React.Component {\n componentDidMount() {\n document.getElementById('content-scrollable').scrollTop = 0;\n }\n\n render() {\n return null;\n }\n}\n\nexport const useScrollToTopOnMount = () =>\n React.useEffect(() => {\n document.getElementById('content-scrollable').scrollTop = 0;\n }, []);\n","import * as React from 'react';\nimport * as _ from 'lodash-es';\nimport { useTranslation } from 'react-i18next';\nimport { ContainerSpec } from '../../module/k8s';\n\nconst ContainerRow: React.FC = ({ container }) => {\n const resourceLimits = _.get(container, 'resources.limits');\n const ports = _.get(container, 'ports');\n return (\n
    \n
    {container.name}
    \n
    \n {container.image || '-'}\n
    \n
    \n {_.map(resourceLimits, (v, k) => `${k}: ${v}`).join(', ') || '-'}\n
    \n
    \n {_.map(ports, (port) => `${port.containerPort}/${port.protocol}`).join(', ') || '-'}\n
    \n
    \n );\n};\n\nexport const ContainerTable: React.FC = ({ containers }) => {\n const { t } = useTranslation();\n return (\n
    \n
    \n
    {t('public~Name')}
    \n
    {t('public~Image')}
    \n
    {t('public~Resource limits')}
    \n
    {t('public~Ports')}
    \n
    \n
    \n {_.map(containers, (c, i) => (\n \n ))}\n
    \n
    \n );\n};\n\nexport type ContainerRowProps = {\n container: ContainerSpec;\n};\n\nexport type ContainerTableProps = {\n containers: ContainerSpec[];\n};\n","import * as React from 'react';\nimport * as classNames from 'classnames';\nimport * as _ from 'lodash-es';\nimport { withTranslation } from 'react-i18next';\n\nclass SimpleTab extends React.PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n }\n\n onClick() {\n this.props.onClick(this.props.title);\n }\n\n render() {\n const { active, title } = this.props;\n const className = classNames('co-m-horizontal-nav__menu-item', {\n 'co-m-horizontal-nav-item--active': active,\n });\n return (\n
  • \n \n
  • \n );\n }\n}\n\nclass SimpleTabNav_ extends React.Component {\n constructor(props) {\n super(props);\n this.state = { selectedTab: props.selectedTab };\n }\n\n onClickTab = (name) => {\n this.props.onClickTab && this.props.onClickTab(name);\n this.setState({\n selectedTab: name,\n });\n };\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const selectedTab = (\n _.find(nextProps.tabs, { name: prevState.selectedTab }) ||\n _.find(nextProps.tabs, { name: nextProps.selectedTab }) ||\n _.head(nextProps.tabs)\n ).name;\n if (prevState.selectedTab !== selectedTab) {\n return {\n selectedTab,\n };\n }\n return null;\n }\n\n render() {\n const { tabs, tabProps, additionalClassNames } = this.props;\n const { selectedTab } = this.state;\n const selectedTabData = _.find(tabs, { name: selectedTab }) || _.head(tabs);\n const content =\n !React.isValidElement(selectedTabData.component) && !Array.isArray(selectedTabData.component)\n ? React.createElement(selectedTabData.component, tabProps)\n : selectedTabData.component;\n\n return (\n <>\n
      \n {_.map(tabs, (tab) => (\n \n ))}\n
    \n {content}\n \n );\n }\n}\n\nexport const SimpleTabNav = withTranslation()(SimpleTabNav_) as React.FC;\n\nexport type Tab = {\n name: string;\n component: React.FunctionComponent<{}> | React.ReactElement;\n};\n\ntype SimpleTabNavProps = {\n onClickTab?: (name: string) => void;\n selectedTab?: string;\n tabProps: any;\n tabs: Tab[];\n additionalClassNames?: string;\n};\n\ntype SimpleTabNavState = {\n selectedTab: string;\n};\n\ntype SimpleTabProps = {\n active: boolean;\n onClick: (title: string) => void;\n title: string;\n};\n","import * as React from 'react';\nimport { Dropdown } from './dropdown';\nimport { useTranslation } from 'react-i18next';\nimport { NumberSpinner } from './number-spinner';\n\nexport const RequestSizeInput: React.FC = ({\n children,\n defaultRequestSizeUnit,\n defaultRequestSizeValue,\n describedBy,\n dropdownUnits,\n inputID,\n isInputDisabled,\n minValue,\n name,\n onChange,\n placeholder,\n required,\n testID,\n}) => {\n const parsedRequestSizeValue = parseInt(defaultRequestSizeValue, 10);\n const defaultValue = Number.isFinite(parsedRequestSizeValue) ? parsedRequestSizeValue : null;\n const [unit, setUnit] = React.useState(defaultRequestSizeUnit);\n const [value, setValue] = React.useState(defaultValue);\n\n const onValueChange: React.ReactEventHandler = (event) => {\n setValue(parseInt(event.currentTarget.value, 10));\n onChange({ value: event.currentTarget.value, unit });\n };\n\n const changeValueBy = (changeBy: number) => {\n // When default defaultRequestSizeValue is not set, value becomes NaN and increment decrement buttons of NumberSpinner don't work.\n const newValue = Number.isFinite(value) ? value + changeBy : 0 + changeBy;\n setValue(newValue);\n onChange({ value: newValue, unit });\n };\n\n const onUnitChange = (newUnit) => {\n setUnit(newUnit);\n onChange({ value, unit: newUnit });\n };\n\n React.useEffect(() => {\n setUnit(defaultRequestSizeUnit);\n setValue(defaultValue);\n }, [defaultRequestSizeUnit, defaultValue]);\n\n const { t } = useTranslation();\n const inputName = `${name}Value`;\n const dropdownName = `${name}Unit`;\n return (\n
    \n
    \n \n \n
    \n {children}\n
    \n );\n};\n\nexport type RequestSizeInputProps = {\n placeholder?: string;\n name: string;\n onChange: Function;\n required?: boolean;\n dropdownUnits: any;\n defaultRequestSizeUnit: string;\n defaultRequestSizeValue: string;\n describedBy?: string;\n step?: number;\n minValue?: number;\n inputID?: string;\n testID?: string;\n isInputDisabled?: boolean;\n};\n","import * as React from 'react';\nimport { Alert, AlertActionLink } from '@patternfly/react-core';\nimport { useTranslation } from 'react-i18next';\n\nimport { K8sKind, k8sPatch, k8sUpdate, K8sResourceKind } from '../../module/k8s/index';\nimport { errorModal } from '../modals/index';\n\nexport const togglePaused = (model: K8sKind, obj: K8sResourceKind) => {\n // a MachineConfigPool can be created without a spec, despite the API saying it is required\n if (!obj.spec) {\n const newObj = {\n ...obj,\n spec: {\n ...(obj.spec || {}),\n paused: true,\n },\n };\n\n return k8sUpdate(model, newObj);\n }\n\n const patch = [\n {\n path: '/spec/paused',\n op: 'add',\n value: !obj.spec.paused,\n },\n ];\n\n return k8sPatch(model, obj, patch);\n};\n\nexport const WorkloadPausedAlert = ({ model, obj }) => {\n const { t } = useTranslation();\n return (\n {t('public~{{ metadataName }} is paused', { metadataName: obj.metadata.name })}}\n actionLinks={\n \n togglePaused(model, obj).catch((err) => errorModal({ error: err.message }))\n }\n >\n {obj.kind === 'MachineConfigPool'\n ? t('public~Resume updates')\n : t('public~Resume rollouts')}\n \n }\n >\n {t('public~This will stop any new rollouts or triggers from running until resumed.')}\n \n );\n};\n","import * as React from 'react';\nimport * as _ from 'lodash-es';\nimport * as classNames from 'classnames';\nimport { Button } from '@patternfly/react-core';\nimport { PlusCircleIcon } from '@patternfly/react-icons/dist/esm/icons/plus-circle-icon';\nimport { MinusCircleIcon } from '@patternfly/react-icons/dist/esm/icons/minus-circle-icon';\n/* eslint-disable-next-line */\nimport { withTranslation, WithTranslation } from 'react-i18next';\n\nclass ListInput_ extends React.Component {\n private helpID: string = _.uniqueId('list-view-help-');\n constructor(props: ListInputProps) {\n super(props);\n this.state = {\n values: props.initialValues || [''],\n };\n }\n\n componentDidUpdate(prevProps: ListInputProps, prevState: ListInputState) {\n if (prevState.values !== this.state.values) {\n const values = _.compact(this.state.values);\n this.props.onChange(values);\n }\n }\n\n valueChanged(i: number, v: string) {\n this.setState((state) => {\n const values = [...state.values];\n values[i] = v;\n return { values };\n });\n }\n\n addValue() {\n this.setState((state) => ({ values: [...state.values, ''] }));\n }\n\n removeValue(i: number) {\n this.setState((state) => {\n const values = [...state.values];\n values.splice(i, 1);\n return {\n values: _.isEmpty(values) ? [''] : values,\n };\n });\n }\n\n render() {\n const { label, required, helpText, t } = this.props;\n const { values } = this.state;\n const missingValues = required && (_.isEmpty(values) || _.every(values, (v) => !v));\n const isEmpty = values.length === 1 && (_.isEmpty(values) || _.every(values, (v) => !v));\n return (\n
    \n \n {_.map(values, (v: string, i: number) => (\n
    \n
    \n ) =>\n this.valueChanged(i, e.currentTarget.value)\n }\n required={missingValues && i === 0}\n aria-describedby={helpText ? this.helpID : undefined}\n data-test-list-input-for={label}\n />\n
    \n this.removeValue(i)}\n aria-label={t('public~Remove')}\n variant=\"plain\"\n disabled={isEmpty}\n >\n \n \n
    \n ))}\n {helpText && (\n
    \n {helpText}\n
    \n )}\n this.addValue()}\n type=\"button\"\n variant=\"link\"\n >\n \n {t('public~Add more')}\n \n
    \n );\n }\n}\n\nexport const ListInput = withTranslation()(ListInput_);\n\ntype ListInputState = {\n values: string[];\n};\n\ntype ChangeCallback = (values: string[]) => void;\n\ntype ListInputProps = WithTranslation & {\n label: string;\n initialValues?: string[];\n onChange: ChangeCallback;\n helpText?: string;\n required?: boolean;\n};\n","import * as React from 'react';\nimport * as _ from 'lodash-es';\n\nimport { Volume } from '../../module/k8s';\nimport { getVolumeLocation, getVolumeType } from '../../module/k8s/pods';\nimport { ResourceLink } from './resource-link';\n\nexport const VolumeType: React.FC = ({ volume, namespace }) => {\n if (volume) {\n if (volume.secret) {\n return ;\n }\n\n if (volume.configMap) {\n return ;\n }\n\n if (volume.persistentVolumeClaim) {\n return (\n \n );\n }\n }\n\n const type = getVolumeType(volume);\n const loc = _.trim(getVolumeLocation(volume));\n return type ? (\n <>\n {type.label}\n {loc && (\n <>\n {' '}\n ({loc})\n \n )}\n \n ) : null;\n};\n\nexport type VolumeTypeProps = {\n volume: Volume;\n namespace: string;\n};\n","import * as React from 'react';\n\n// 12 works well because it divides evenly for 2, 3, and 4 column layouts\nconst skeletonTiles = Array.from({ length: 12 }, (_, k: number) => (\n
    \n));\nexport const skeletonCatalog = (\n
    \n
    \n
    {skeletonTiles}
    \n
    \n);\n","import * as React from 'react';\nimport classNames from 'classnames';\n\nexport const HintBlock: React.FC = ({ title, children, className }) => {\n const classes = classNames('co-hint-block', className);\n\n return (\n
    \n

    {title}

    \n
    {children}
    \n
    \n );\n};\n\nexport type HintBlockProps = {\n title: string;\n children: React.ReactNode;\n className?: string;\n};\n","import * as React from 'react';\nimport { OverviewItem } from '@console/shared';\nimport { OwnerReferences } from './owner-references';\nimport { useTranslation } from 'react-i18next';\n\nconst OperatorBackedOwnerReferences: React.FC = ({ item }) => {\n const { t } = useTranslation();\n\n return item.isOperatorBackedService ? (\n \n {t('public~Managed by:')}\n \n \n \n \n ) : null;\n};\n\ntype OperatorBackedOwnerReferencesProps = {\n item: OverviewItem;\n};\n\nOperatorBackedOwnerReferences.displayName = 'OperatorBackedOwnerReferences';\n\nexport default OperatorBackedOwnerReferences;\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { getReleaseNotesLink } from '../../module/k8s';\nimport { ExternalLink } from '../utils';\n\nexport const ReleaseNotesLink: React.FC = ({ version }) => {\n const releaseNotesLink = getReleaseNotesLink(version);\n const { t } = useTranslation();\n return (\n releaseNotesLink && (\n \n )\n );\n};\n\ntype ReleaseNotesLinkProps = {\n version: string;\n};\n","export * from './notification-drawer';\n","export { default as NotificationDrawer } from './notification-drawer';\nexport { default as NotificationDrawerHeading } from './notification-drawer-heading';\nexport { default as NotificationEntry, NotificationTypes } from './notification-entry';\nexport { default as NotificationCategory } from './notification-category';\n","import * as React from 'react';\nimport { Drawer, DrawerContent, DrawerPanelContent, DrawerPanelBody } from '@patternfly/react-core';\n\nimport NotificationDrawerHeading from './notification-drawer-heading';\n\nconst NotificationDrawer: React.FC = ({\n isExpanded,\n isInline,\n children,\n notificationEntries,\n className,\n onClose,\n}) => {\n // Added check for `isExpanded` due to flaw in patternfly drawer. Remove the check on patternfly version upgrade\n const panelContent = isExpanded && (\n \n {notificationEntries}\n \n \n );\n return (\n \n {children}\n \n );\n};\n\nNotificationDrawer.displayName = 'NotificationDrawer';\n\nexport type NotificationDrawerProps = {\n isInline: boolean;\n isExpanded: boolean;\n notificationEntries?: JSX.Element[];\n count?: number;\n children: React.ReactNode;\n className: string;\n /** A callback for when the close button is clicked */\n onClose: () => void;\n};\n\nexport default NotificationDrawer;\n","import * as React from 'react';\nimport * as classNames from 'classnames';\nimport { Badge } from '@patternfly/react-core';\n\nconst NotificationCategory: React.FC = ({\n label,\n count,\n isExpanded,\n children,\n onExpandContents,\n}) => (\n \n onExpandContents(!isExpanded)}\n >\n
    {label}
    \n
    \n {count}\n
    \n \n \n \n \n \n \n);\n\ntype NotificationCategoryProps = {\n children: React.ReactNode;\n count: number;\n isExpanded: boolean;\n label: string;\n onExpandContents: React.Dispatch>;\n};\n\nexport default NotificationCategory;\n","import * as React from 'react';\nimport { useK8sWatchResources } from '@console/internal/components/utils/k8s-watch-hook';\nimport { K8sResourceKind } from '@console/internal/module/k8s';\nimport { BuildConfigOverviewItem } from '../types';\nimport { getBuildConfigsForResource } from '../utils';\n\nexport type BuildConfigData = {\n loaded: boolean;\n loadError: string;\n buildConfigs: BuildConfigOverviewItem[];\n};\n\nexport const useBuildConfigsWatcher = (resource: K8sResourceKind): BuildConfigData => {\n const { namespace } = resource.metadata;\n const watchedResources = React.useMemo(\n () => ({\n buildConfigs: {\n isList: true,\n kind: 'BuildConfig',\n namespace,\n },\n builds: {\n isList: true,\n kind: 'Build',\n namespace,\n },\n }),\n [namespace],\n );\n\n const resources = useK8sWatchResources(watchedResources);\n\n const result = React.useMemo(() => {\n const resourceWithLoadError = Object.values(resources).find((r) => r.loadError);\n if (resourceWithLoadError) {\n return { loaded: false, loadError: resourceWithLoadError.loadError, buildConfigs: null };\n }\n if (\n Object.keys(resources).length > 0 &&\n Object.keys(resources).every((key) => resources[key].loaded)\n ) {\n const resourceBuildConfigs = getBuildConfigsForResource(resource, resources);\n return { loaded: true, loadError: null, buildConfigs: resourceBuildConfigs };\n }\n return { loaded: false, loadError: null, buildConfigs: null };\n }, [resource, resources]);\n\n return result;\n};\n","export const joinGrammaticallyListOfItems = (items: string[], separator = 'and') => {\n const result = items.join(', ');\n const lastCommaIdx = result.lastIndexOf(',');\n\n return items.length > 1 && lastCommaIdx >= 0\n ? `${result.substr(0, lastCommaIdx)} ${separator}${result.substr(lastCommaIdx + 1)}`\n : result;\n};\n\nexport const assureEndsWith = (sentence: string, appendix: string) => {\n if (!sentence || !appendix || sentence.endsWith(appendix)) {\n return sentence;\n }\n\n return `${sentence}${appendix}`;\n};\n","import * as React from 'react';\nimport { ChartLabel } from '@patternfly/react-charts';\nimport * as classNames from 'classnames';\nimport i18next, { TFunction } from 'i18next';\nimport * as _ from 'lodash';\nimport { ImpersonateKind, useSafetyFirst } from '@console/dynamic-plugin-sdk';\nimport { DaemonSetModel, PodModel, JobModel, CronJobModel } from '@console/internal/models';\nimport {\n K8sResourceKind,\n K8sKind,\n SelfSubjectAccessReviewKind,\n HorizontalPodAutoscalerKind,\n} from '@console/internal/module/k8s';\nimport { RevisionModel } from '@console/knative-plugin';\nimport { AllPodStatus } from '../constants';\nimport { ExtPodKind } from '../types';\nimport { checkPodEditAccess, getPodStatus } from './pod-utils';\n\nimport './pod-ring-text.scss';\n\ntype PodRingLabelType = {\n subTitle: string;\n title: string;\n titleComponent: React.ReactElement;\n};\n\ntype PodRingLabelData = {\n title: string;\n longTitle: boolean;\n subTitle: string;\n longSubtitle: boolean;\n reversed: boolean;\n};\n\nconst podKindString = (count: number) =>\n count === 1 ? i18next.t('console-shared~Pod') : i18next.t('console-shared~Pods');\n\nconst isPendingPods = (\n pods: ExtPodKind[],\n currentPodCount: number,\n desiredPodCount: number,\n): boolean =>\n (pods?.length === 1 && pods[0].status?.phase === 'Pending') ||\n (!currentPodCount && !!desiredPodCount);\n\nexport const getFailedPods = (pods: ExtPodKind[]): number => {\n if (!pods?.length) {\n return 0;\n }\n\n return pods.reduce((acc, currValue) => {\n if ([AllPodStatus.CrashLoopBackOff, AllPodStatus.Failed].includes(getPodStatus(currValue))) {\n return acc + 1;\n }\n return acc;\n }, 0);\n};\n\nconst getTitleAndSubtitle = (\n isPending: boolean,\n currentPodCount: number,\n desiredPodCount: number,\n t: TFunction,\n) => {\n let titlePhrase;\n let subTitlePhrase = '';\n let longTitle = false;\n let longSubtitle = false;\n\n // handles the initial state when the first pod is coming up and the state for no pods(scaled to zero)\n if (!currentPodCount) {\n titlePhrase = isPending ? '0' : t('console-shared~Scaled to 0');\n longTitle = !isPending;\n if (desiredPodCount) {\n subTitlePhrase = t('console-shared~Scaling to {{podSubTitle}}', {\n podSubTitle: desiredPodCount,\n });\n longSubtitle = true;\n }\n }\n\n // handles the idle state or scaling to desired no. of pods\n if (currentPodCount) {\n titlePhrase = currentPodCount.toString();\n if (currentPodCount === desiredPodCount) {\n subTitlePhrase = podKindString(currentPodCount);\n } else {\n subTitlePhrase = t('console-shared~Scaling to {{podSubTitle}}', {\n podSubTitle: desiredPodCount,\n });\n longSubtitle = true;\n }\n }\n\n return { title: titlePhrase, longTitle, subTitle: subTitlePhrase, longSubtitle };\n};\n\nconst getTitleComponent = (\n longTitle: boolean = false,\n longSubtitle: boolean = false,\n reversed: boolean = false,\n) => {\n const labelClasses = classNames('pf-v5-chart-donut-title', {\n 'pod-ring__center-text--reversed': reversed,\n 'pod-ring__center-text': !reversed,\n 'pod-ring__long-text': longTitle,\n });\n return React.createElement(ChartLabel, {\n dy: longSubtitle ? -5 : 0,\n style: { lineHeight: '11px' },\n className: labelClasses,\n });\n};\n\nexport const podRingLabel = (\n obj: K8sResourceKind,\n ownerKind: string,\n pods: ExtPodKind[],\n t: TFunction,\n): PodRingLabelData => {\n let currentPodCount;\n let desiredPodCount;\n let isPending;\n let titleData;\n const podRingLabelData: PodRingLabelData = {\n title: '',\n subTitle: '',\n longTitle: false,\n longSubtitle: false,\n reversed: false,\n };\n\n const failedPodCount = getFailedPods(pods);\n switch (ownerKind) {\n case DaemonSetModel.kind:\n currentPodCount = (obj.status?.currentNumberScheduled || 0) + failedPodCount;\n desiredPodCount = obj.status?.desiredNumberScheduled;\n desiredPodCount = obj.status?.desiredNumberScheduled;\n isPending = isPendingPods(pods, currentPodCount, desiredPodCount);\n titleData = getTitleAndSubtitle(isPending, currentPodCount, desiredPodCount, t);\n podRingLabelData.title = titleData.title;\n podRingLabelData.subTitle = titleData.subTitle;\n podRingLabelData.longSubtitle = titleData.longSubtitle;\n break;\n case RevisionModel.kind:\n currentPodCount = (obj.status?.readyReplicas || 0) + failedPodCount;\n desiredPodCount = obj.spec?.replicas;\n isPending = isPendingPods(pods, currentPodCount, desiredPodCount);\n if (!isPending && !desiredPodCount) {\n podRingLabelData.title = t('console-shared~Autoscaled');\n podRingLabelData.subTitle = t('console-shared~to 0');\n podRingLabelData.reversed = true;\n break;\n }\n if (isPending) {\n podRingLabelData.title = '0';\n podRingLabelData.subTitle = t('console-shared~Scaling to {{podSubTitle}}', {\n podSubTitle: desiredPodCount,\n });\n } else {\n podRingLabelData.title = currentPodCount;\n podRingLabelData.subTitle = podKindString(currentPodCount);\n }\n break;\n case PodModel.kind:\n case JobModel.kind:\n podRingLabelData.title = '1';\n podRingLabelData.subTitle = PodModel.label;\n break;\n case CronJobModel.kind:\n podRingLabelData.title = `${pods.length}`;\n podRingLabelData.subTitle = podKindString(currentPodCount);\n break;\n default:\n currentPodCount = (obj.status?.readyReplicas || 0) + failedPodCount;\n desiredPodCount = obj.spec?.replicas;\n isPending = isPendingPods(pods, currentPodCount, desiredPodCount);\n titleData = getTitleAndSubtitle(isPending, currentPodCount, desiredPodCount, t);\n podRingLabelData.title = titleData.title;\n podRingLabelData.subTitle = titleData.subTitle;\n podRingLabelData.longTitle = titleData.longTitle;\n podRingLabelData.longSubtitle = titleData.longSubtitle;\n break;\n }\n\n return podRingLabelData;\n};\n\nexport const hpaPodRingLabel = (\n obj: K8sResourceKind,\n hpa: HorizontalPodAutoscalerKind,\n pods: ExtPodKind[],\n t: TFunction,\n): PodRingLabelData => {\n const desiredPodCount = obj.spec?.replicas;\n const desiredPods = hpa.status?.desiredReplicas || desiredPodCount;\n const currentPods = hpa.status?.currentReplicas;\n const scaling =\n (!currentPods && !!desiredPods) || !pods?.every((p) => p.status?.phase === 'Running');\n return {\n title: scaling ? t('console-shared~Autoscaling') : t('console-shared~Autoscaled'),\n subTitle: t('console-shared~to {{count}} Pod', { count: desiredPods }),\n longTitle: false,\n longSubtitle: false,\n reversed: true,\n };\n};\n\nexport const usePodRingLabel = (\n obj: K8sResourceKind,\n ownerKind: string,\n pods: ExtPodKind[],\n hpaControlledScaling: boolean = false,\n t: TFunction,\n hpa?: HorizontalPodAutoscalerKind,\n): PodRingLabelType => {\n const podRingLabelData = hpaControlledScaling\n ? hpaPodRingLabel(obj, hpa, pods, t)\n : podRingLabel(obj, ownerKind, pods, t);\n const { title, subTitle, longTitle, longSubtitle, reversed } = podRingLabelData;\n\n return React.useMemo(\n () => ({\n title,\n subTitle,\n titleComponent: getTitleComponent(longTitle, longSubtitle, reversed),\n }),\n [longSubtitle, longTitle, reversed, subTitle, title],\n );\n};\n\nexport const usePodScalingAccessStatus = (\n obj: K8sResourceKind,\n resourceKind: K8sKind,\n pods: ExtPodKind[],\n enableScaling?: boolean,\n impersonate?: ImpersonateKind,\n) => {\n const isKnativeRevision = obj.kind === 'Revision';\n const isPod = obj.kind === 'Pod';\n const isScalingAllowed = !isKnativeRevision && !isPod && enableScaling;\n const [editable, setEditable] = useSafetyFirst(false);\n\n React.useEffect(() => {\n if (isScalingAllowed) {\n checkPodEditAccess(obj, resourceKind, impersonate, 'scale')\n .then((resp: SelfSubjectAccessReviewKind) =>\n setEditable(_.get(resp, 'status.allowed', false)),\n )\n .catch((error) => {\n // console.log is used here instead of throw error\n // throw error will break the thread and likely end-up in a white screen\n // eslint-disable-next-line\n console.log('Checking pod edit acceess failed:', error);\n setEditable(false);\n });\n }\n }, [pods, obj, resourceKind, impersonate, setEditable, isScalingAllowed]);\n\n return editable;\n};\n","import { KebabOption } from '@console/internal/components/utils';\nimport { K8sKind, K8sResourceKind } from '@console/internal/module/k8s';\nimport { setSinkSourceModal } from '../components/modals';\n\nexport const setSinkSource = (model: K8sKind, source: K8sResourceKind): KebabOption => {\n return {\n // t('knative-plugin~Move sink')\n labelKey: 'knative-plugin~Move sink',\n callback: () =>\n setSinkSourceModal({\n source,\n }),\n accessReview: {\n group: model.apiGroup,\n resource: model.plural,\n name: source.metadata.name,\n namespace: source.metadata.namespace,\n verb: 'update',\n },\n };\n};\n","import {\n CronJobModel,\n DeploymentConfigModel,\n DeploymentModel,\n StatefulSetModel,\n} from '@console/internal/models';\nimport {\n apiVersionForModel,\n K8sResourceKind,\n PodKind,\n WatchK8sResources,\n} from '@console/internal/module/k8s';\nimport { PodRCData } from '../types';\nimport {\n getJobsForCronJob,\n getPodsForResource,\n getReplicaSetsForResource,\n getReplicationControllersForResource,\n getRolloutStatus,\n getStatefulSetsResource,\n} from './resource-utils';\n\nexport const getPodsForDeploymentConfig = (\n deploymentConfig: K8sResourceKind,\n resources: any,\n): PodRCData => {\n const obj: K8sResourceKind = {\n ...deploymentConfig,\n apiVersion: apiVersionForModel(DeploymentConfigModel),\n kind: DeploymentConfigModel.kind,\n };\n const { visibleReplicationControllers } = getReplicationControllersForResource(obj, resources);\n const [current, previous] = visibleReplicationControllers;\n const isRollingOut = getRolloutStatus(obj, current, previous);\n return {\n obj,\n current,\n previous,\n pods: [...(current?.pods || []), ...(previous?.pods || [])],\n isRollingOut,\n };\n};\n\nexport const getPodsForDeploymentConfigs = (\n deploymentConfigs: K8sResourceKind[],\n resources: any,\n): PodRCData[] =>\n deploymentConfigs ? deploymentConfigs.map((dc) => getPodsForDeploymentConfig(dc, resources)) : [];\n\nexport const getPodsForDeployment = (deployment: K8sResourceKind, resources: any): PodRCData => {\n const obj: K8sResourceKind = {\n ...deployment,\n apiVersion: apiVersionForModel(DeploymentModel),\n kind: DeploymentModel.kind,\n };\n const replicaSets = getReplicaSetsForResource(obj, resources);\n const [current, previous] = replicaSets;\n const isRollingOut = !!current && !!previous;\n\n return {\n obj,\n current,\n previous,\n isRollingOut,\n pods: [...(current?.pods || []), ...(previous?.pods || [])],\n };\n};\n\nexport const getPodsForDeployments = (\n deployments: K8sResourceKind[],\n resources: any,\n): PodRCData[] => (deployments ? deployments.map((d) => getPodsForDeployment(d, resources)) : []);\n\nexport const getPodsForStatefulSet = (ss: K8sResourceKind, resources: any): PodRCData => {\n const obj: K8sResourceKind = {\n ...ss,\n apiVersion: apiVersionForModel(StatefulSetModel),\n kind: StatefulSetModel.kind,\n };\n const statefulSets = getStatefulSetsResource(obj, resources);\n const [current, previous] = statefulSets;\n const isRollingOut = !!current && !!previous;\n\n return {\n obj,\n current,\n previous,\n isRollingOut,\n pods: [...(current?.pods || []), ...(previous?.pods || [])],\n };\n};\n\nexport const getPodsForStatefulSets = (ss: K8sResourceKind[], resources: any): PodRCData[] =>\n ss ? ss.map((s) => getPodsForStatefulSet(s, resources)) : [];\n\nexport const getPodsForDaemonSet = (ds: K8sResourceKind, resources: any): PodRCData => {\n const obj: K8sResourceKind = {\n ...ds,\n apiVersion: apiVersionForModel(StatefulSetModel),\n kind: StatefulSetModel.kind,\n };\n return {\n obj,\n current: undefined,\n previous: undefined,\n isRollingOut: undefined,\n pods: getPodsForResource(ds, resources),\n };\n};\n\nexport const getPodsForDaemonSets = (ds: K8sResourceKind[], resources: any): PodRCData[] =>\n ds ? ds.map((d) => getPodsForDaemonSet(d, resources)) : [];\n\nexport const getPodsForCronJob = (cronJob: K8sResourceKind, resources: any): PodRCData => {\n const obj: K8sResourceKind = {\n ...cronJob,\n apiVersion: apiVersionForModel(CronJobModel),\n kind: CronJobModel.kind,\n };\n const jobs = getJobsForCronJob(cronJob?.metadata?.uid, resources);\n return {\n obj,\n current: undefined,\n previous: undefined,\n isRollingOut: undefined,\n pods: jobs?.reduce((acc, job) => {\n acc.push(...getPodsForResource(job, resources));\n return acc;\n }, []),\n };\n};\n\nexport const getPodsForCronJobs = (cronJobs: K8sResourceKind[], resources: any): PodRCData[] =>\n cronJobs ? cronJobs.map((cronJob) => getPodsForCronJob(cronJob, resources)) : [];\n\n/**\n * Extract the resources from `getResourcesToWatchForPods` which are watched with `useK8sWatchResources`.\n */\nexport const getPodsDataForResource = (\n resource: K8sResourceKind,\n kind: string,\n resources: any,\n): PodRCData => {\n switch (kind) {\n case 'DeploymentConfig':\n return getPodsForDeploymentConfig(resource, resources);\n case 'Deployment':\n return getPodsForDeployment(resource, resources);\n case 'StatefulSet':\n return getPodsForStatefulSet(resource, resources);\n case 'DaemonSet':\n return getPodsForDaemonSet(resource, resources);\n case 'CronJob':\n return getPodsForCronJob(resource, resources);\n case 'Pod':\n return {\n obj: resource,\n current: undefined,\n previous: undefined,\n isRollingOut: true,\n pods: [resource as PodKind],\n };\n default:\n return {\n obj: resource,\n current: undefined,\n previous: undefined,\n isRollingOut: undefined,\n pods: getPodsForResource(resource, resources),\n };\n }\n};\n\n/**\n * Return a `WatchK8sResources` object for `useK8sWatchResources` to get all related `Pods`\n * for a given kind and namespace.\n *\n * - It watches for all `Pods` and all `ReplicationControllers` for a `DeploymentConfig`\n * - It watches for all `Pods` and all `ReplicaSets` for a `Deployment`\n * - It watches for all `Pods` and all `StatefulSets` for a `StatefulSet`\n * - It watches for all `Pods` and all `Jobs` for a `CronJob`\n * - And it watches for all `Pods` for all other kinds, or when no kind is provided.\n *\n * See also `getPodsDataForResource` above\n */\nexport const getResourcesToWatchForPods = (\n kind: string,\n namespace: string,\n): WatchK8sResources => {\n if (!kind) {\n return {\n pods: {\n isList: true,\n kind: 'Pod',\n namespace,\n },\n };\n }\n switch (kind) {\n case 'DeploymentConfig':\n return {\n pods: {\n isList: true,\n kind: 'Pod',\n namespace,\n },\n replicationControllers: {\n isList: true,\n kind: 'ReplicationController',\n namespace,\n },\n };\n case 'Deployment':\n return {\n pods: {\n isList: true,\n kind: 'Pod',\n namespace,\n },\n replicaSets: {\n isList: true,\n kind: 'ReplicaSet',\n namespace,\n },\n };\n case 'StatefulSet':\n return {\n pods: {\n isList: true,\n kind: 'Pod',\n namespace,\n },\n statefulSets: {\n isList: true,\n kind: 'StatefulSet',\n namespace,\n },\n };\n case 'CronJob':\n return {\n pods: {\n isList: true,\n kind: 'Pod',\n namespace,\n },\n jobs: {\n isList: true,\n kind: 'Job',\n namespace,\n },\n };\n default:\n return {\n pods: {\n isList: true,\n kind: 'Pod',\n namespace,\n },\n };\n }\n};\n","import * as _ from 'lodash';\nimport * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n formatPrometheusDuration,\n parsePrometheusDuration,\n} from '@openshift-console/plugin-shared/src/datetime/prometheus';\nimport {\n Dropdown as DropdownDeprecated,\n DropdownToggle as DropdownToggleDeprecated,\n DropdownItem as DropdownItemDeprecated,\n} from '@patternfly/react-core/deprecated';\n\nimport { useBoolean } from './hooks/useBoolean';\n\nconst OFF_KEY = 'OFF_KEY';\n\ntype Props = {\n interval: number;\n setInterval: (v: number) => void;\n id?: string;\n};\n\nconst IntervalDropdown: React.FC = ({ id, interval, setInterval }) => {\n const [isOpen, toggleIsOpen, , setClosed] = useBoolean(false);\n const { t } = useTranslation();\n\n const onChange = React.useCallback(\n (v: string) => setInterval(v === OFF_KEY ? null : parsePrometheusDuration(v)),\n [setInterval],\n );\n\n const intervalOptions = {\n [OFF_KEY]: t('public~Refresh off'),\n '15s': t('public~{{count}} second', { count: 15 }),\n '30s': t('public~{{count}} second', { count: 30 }),\n '1m': t('public~{{count}} minute', { count: 1 }),\n '5m': t('public~{{count}} minute', { count: 5 }),\n '15m': t('public~{{count}} minute', { count: 15 }),\n '30m': t('public~{{count}} minute', { count: 30 }),\n '1h': t('public~{{count}} hour', { count: 1 }),\n '2h': t('public~{{count}} hour', { count: 2 }),\n '1d': t('public~{{count}} day', { count: 1 }),\n };\n\n const selectedKey = interval === null ? OFF_KEY : formatPrometheusDuration(interval);\n\n return (\n (\n onChange(key)}>\n {name}\n \n ))}\n isOpen={isOpen}\n onSelect={setClosed}\n toggle={\n \n {intervalOptions[selectedKey]}\n \n }\n className=\"monitoring-dashboards__variable-dropdown\"\n />\n );\n};\n\nexport default IntervalDropdown;\n","import { PrometheusRulesResponse } from '@console/dynamic-plugin-sdk';\nimport { coFetchJSON } from '@console/internal/co-fetch';\n\n/**\n * Merges prometheus monitoring alerts with external sources\n */\nexport const fetchAlerts = async (\n prometheusURL: string,\n externalAlertsFetch?: Array<{\n id: string;\n getAlertingRules: (namespace?: string) => Promise;\n }>,\n namespace?: string,\n): Promise => {\n if (!externalAlertsFetch || externalAlertsFetch.length === 0) {\n return coFetchJSON(prometheusURL);\n }\n\n const resolvedExternalAlertsSources = externalAlertsFetch.map((extensionProperties) => ({\n id: extensionProperties.id,\n fetch: extensionProperties.getAlertingRules,\n }));\n\n const sourceIds = ['prometheus', ...resolvedExternalAlertsSources.map((source) => source.id)];\n\n try {\n const groups = await Promise.allSettled([\n coFetchJSON(prometheusURL),\n ...resolvedExternalAlertsSources.map((source) => source.fetch(namespace)),\n ]).then((results) =>\n results\n .map((result, i) => ({ sourceId: sourceIds[i], alerts: result }))\n .flatMap((result) =>\n result.alerts.status === 'fulfilled' && result.alerts.value?.data?.groups\n ? result.alerts.value.data.groups.map((group) => ({\n ...group,\n rules: [...group.rules.map((rule) => ({ ...rule, sourceId: result.sourceId }))],\n }))\n : [],\n ),\n );\n\n return { data: { groups }, status: 'success' };\n } catch {\n return coFetchJSON(prometheusURL);\n }\n};\n","export * from './types';\nexport * from './validation';\n","import * as _ from 'lodash';\nimport { ValidationErrorType, ValidationObject } from './types';\n\nconst alphanumericRegex = '[a-zA-Z0-9]';\nconst alphanumericRegexWithDash = '[-a-zA-Z0-9]';\n\nconst DNS1123_MAX_LENGTH = 253;\n\ntype DNSValidationMsgs = {\n emptyMsg: string;\n startEndAlphanumbericMsg: string;\n errorMsg: string;\n uppercaseMsg: string;\n longMsg: string;\n shortMsg: string;\n};\n\nexport const asValidationObject = (\n messageKey: string,\n type: ValidationErrorType = ValidationErrorType.Error,\n): ValidationObject => ({\n messageKey,\n type,\n});\n\n// DNS-1123 subdomain\nexport const validateDNS1123SubdomainValue = (\n value: string,\n {\n emptyMsg,\n errorMsg,\n uppercaseMsg,\n startEndAlphanumbericMsg,\n shortMsg,\n longMsg,\n }: DNSValidationMsgs,\n { min, max }: { min?: number; max?: number } = {\n min: undefined,\n max: DNS1123_MAX_LENGTH,\n },\n): ValidationObject => {\n const maxLength = max || DNS1123_MAX_LENGTH;\n\n if (!value) {\n return asValidationObject(emptyMsg, ValidationErrorType.TrivialError);\n }\n\n if (value.match(/^\\$\\{[A-Z_]+\\}$/)) {\n return asValidationObject('template parameter', ValidationErrorType.Warn);\n }\n\n if (min && value.length < min) {\n return asValidationObject(shortMsg);\n }\n if (value.length > maxLength) {\n return asValidationObject(longMsg);\n }\n\n const startsWithAlphaNumeric = value.charAt(0).match(alphanumericRegex);\n const endsWithAlphaNumeric = value.charAt(value.length - 1).match(alphanumericRegex);\n\n if (!startsWithAlphaNumeric || !endsWithAlphaNumeric) {\n return asValidationObject(startEndAlphanumbericMsg);\n }\n\n for (const c of value) {\n if (c.toLowerCase() !== c) {\n return asValidationObject(uppercaseMsg);\n }\n\n if (!c.match(alphanumericRegexWithDash)) {\n return asValidationObject(errorMsg);\n }\n }\n return null;\n};\n\nexport const alignWithDNS1123 = (str) => {\n if (!str) {\n return '';\n }\n\n const chars = str.toLowerCase().replace(/\\./g, '-').split('');\n\n const firstValidCharIndex = chars.findIndex((c) => c.match(alphanumericRegex));\n const lastValidCharIndex = _.findLastIndex(chars, (c: string) => c.match(alphanumericRegex));\n\n if (firstValidCharIndex < 0) {\n return '';\n }\n\n let result = chars\n .slice(firstValidCharIndex, lastValidCharIndex + 1)\n .filter((c) => c.match(alphanumericRegexWithDash));\n\n if (result.length > DNS1123_MAX_LENGTH) {\n result = result.slice(0, DNS1123_MAX_LENGTH);\n }\n\n return result.join('');\n};\n","export const dimensifyHeader = (header: any[], columnClasses: string[]) => {\n if (!header || !columnClasses || header.length !== columnClasses.length) {\n console.warn('wrong dimensions specified for header'); // eslint-disable-line no-console\n return header;\n }\n\n return header.map((column, idx) => ({\n ...column,\n props: {\n ...column.props,\n className: columnClasses[idx],\n },\n }));\n};\n\ntype DimensionResolver = (isLast?: boolean) => string;\n\nexport const dimensifyRow = (columnClasses: any[]): DimensionResolver => {\n let index = 0;\n return (isLast = false) => {\n if (index >= columnClasses.length) {\n console.warn('wrong dimensions specified for row (too many columns)'); // eslint-disable-line no-console\n return null;\n }\n\n if (isLast && index !== columnClasses.length - 1) {\n console.warn('wrong dimensions specified for row (not enough columns)'); // eslint-disable-line no-console\n }\n return columnClasses[index++];\n };\n};\n","import { StorageClass } from '@console/internal/components/storage-class-form';\n\nexport const cephStorageProvisioners = [\n 'ceph.rook.io/block',\n 'cephfs.csi.ceph.com',\n 'rbd.csi.ceph.com',\n];\n\nconst objectStorageProvisioners = ['noobaa.io/obc', 'ceph.rook.io/bucket'];\n\n// To check if the provisioner is OCS based\nexport const isCephProvisioner = (scProvisioner: string): boolean =>\n cephStorageProvisioners.some((provisioner: string) => scProvisioner?.includes(provisioner));\n\nexport const isObjectSC = (sc: StorageClass) =>\n objectStorageProvisioners.some((provisioner: string) => sc.provisioner?.includes(provisioner));\n","const ICON_OPERATOR = 'icon-operator';\nexport type CSVIcon = { base64data: string; mediatype: string };\nexport const getImageForCSVIcon = (icon: CSVIcon | undefined) => {\n return icon ? `data:${icon.mediatype};base64,${icon.base64data}` : ICON_OPERATOR;\n};\n\nexport const getDefaultOperatorIcon = () => ICON_OPERATOR;\n","import { ALL_NAMESPACES_KEY } from '../constants/common';\n\nexport const formatNamespacedRouteForResource = (resource, namespace) =>\n namespace === ALL_NAMESPACES_KEY\n ? `/k8s/all-namespaces/${resource}`\n : `/k8s/ns/${namespace}/${resource}`;\n\nexport const formatNamespacedRouteForHref = (href: string, namespace: string) =>\n namespace === ALL_NAMESPACES_KEY ? `${href}/all-namespaces` : `${href}/ns/${namespace}`;\n","import * as _ from 'lodash';\nimport { toRequirements, requirementToString } from '@console/dynamic-plugin-sdk/src/utils/k8s';\n\nexport const getLabelsAsString = (obj: any, path: string = 'metadata.labels'): string[] => {\n const labels = _.get(obj, path);\n const requirements = toRequirements(labels);\n return _.map(requirements, requirementToString);\n};\n","import * as _ from 'lodash';\nimport { Alert, AlertSeverity, AlertStates } from '@console/dynamic-plugin-sdk';\nimport { alertSeverityOrder } from '@console/internal/components/monitoring/utils';\n\nexport const sortMonitoringAlerts = (alerts: Alert[]): Alert[] =>\n _.sortBy(alerts, alertSeverityOrder) as Alert[];\n\nexport const getSeverityAlertType = (alerts: Alert[]): AlertSeverity => {\n const sortedAlerts = sortMonitoringAlerts(alerts);\n const severityType = (sortedAlerts[0]?.labels?.severity as AlertSeverity) ?? AlertSeverity.None;\n return severityType;\n};\n\nexport const getFiringAlerts = (alerts: Alert[]): Alert[] =>\n _.filter(alerts, (alert) => alert.state === AlertStates.Firing);\n\nexport const shouldHideMonitoringAlertDecorator = (severityAlertType: AlertSeverity): boolean =>\n severityAlertType === AlertSeverity.None || severityAlertType === AlertSeverity.Info;\n","import * as _ from 'lodash';\nimport { K8sResourceKind } from '@console/internal/module/k8s';\n\nexport const isHelmResource = (resource: K8sResourceKind): boolean =>\n resource?.metadata?.labels?.['app.kubernetes.io/managed-by'] === 'Helm' ||\n resource?.metadata?.labels?.heritage === 'Helm' ||\n _.has(resource?.metadata?.labels, 'helm.sh/chart');\n","import { TFunction } from 'i18next';\nimport { Map as ImmutableMap } from 'immutable';\nimport YAML from 'js-yaml';\nimport * as _ from 'lodash';\nimport { PodDisruptionBudgetModel } from '@console/app/src/models';\nimport {\n AddAction,\n isAddAction,\n CatalogItemType,\n isCatalogItemType,\n isPerspective,\n Perspective,\n} from '@console/dynamic-plugin-sdk';\nimport { FirehoseResult } from '@console/internal/components/utils';\nimport * as denyOtherNamespacesImg from '@console/internal/imgs/network-policy-samples/1-deny-other-namespaces.svg';\nimport * as limitCertainAppImg from '@console/internal/imgs/network-policy-samples/2-limit-certain-apps.svg';\nimport * as allowIngressImg from '@console/internal/imgs/network-policy-samples/3-allow-ingress.svg';\nimport * as defaultDenyAllImg from '@console/internal/imgs/network-policy-samples/4-default-deny-all.svg';\nimport * as webAllowExternalImg from '@console/internal/imgs/network-policy-samples/5-web-allow-external.svg';\nimport * as webDbAllowAllNsImg from '@console/internal/imgs/network-policy-samples/6-web-db-allow-all-ns.svg';\nimport * as webAllowProductionImg from '@console/internal/imgs/network-policy-samples/7-web-allow-production.svg';\nimport {\n BuildConfigModel,\n ClusterRoleModel,\n ConsoleLinkModel,\n ConsoleOperatorConfigModel,\n NetworkPolicyModel,\n ResourceQuotaModel,\n RoleModel,\n} from '@console/internal/models';\nimport {\n apiVersionForModel,\n GroupVersionKind,\n K8sKind,\n K8sResourceKind,\n referenceForModel,\n} from '@console/internal/module/k8s';\nimport { LoadedExtension } from '@console/plugin-sdk/src';\nimport { subscribeToExtensions } from '@console/plugin-sdk/src/api/pluginSubscriptionService';\nimport { defaultCatalogCategories } from './default-categories';\n\nexport type Sample = {\n highlightText?: string;\n title: string;\n img?: string;\n description: string;\n id: string;\n yaml?: string;\n lazyYaml?: () => Promise;\n snippet?: boolean;\n targetResource: {\n apiVersion: string;\n kind: string;\n };\n};\n\ntype ProjectAccessRoles = {\n availableClusterRoles: string[];\n};\n\nconst getTargetResource = (model: K8sKind) => ({\n apiVersion: apiVersionForModel(model),\n kind: model.kind,\n});\n\nconst defaultProjectAccessRoles: ProjectAccessRoles = {\n availableClusterRoles: ['admin', 'edit', 'view'],\n};\n\nconst samplePinnedResources = [\n { group: 'apps', version: 'v1', resource: 'deployments' },\n { group: '', version: 'v1', resource: 'secrets' },\n { group: '', version: 'v1', resource: 'configmaps' },\n { group: '', version: 'v1', resource: 'pods' },\n];\n\nconst clusterRoleBindingSamples = (t: TFunction): Sample[] => [\n {\n title: t('console-shared~Allow reading Nodes in the core API groups (for ClusterRoleBinding)'),\n description: t(\n 'console-shared~This \"ClusterRole\" is allowed to read the resource \"Nodes\" in the core group (because a Node is cluster-scoped, this must be bound with a \"ClusterRoleBinding\" to be effective).',\n ),\n id: 'read-nodes',\n targetResource: getTargetResource(ClusterRoleModel),\n },\n {\n title: t(\n 'console-shared~\"GET/POST\" requests to non-resource endpoint and all subpaths (for ClusterRoleBinding)',\n ),\n description: t(\n 'console-shared~This \"ClusterRole\" is allowed to \"GET\" and \"POST\" requests to the non-resource endpoint \"/healthz\" and all subpaths (must be in the \"ClusterRole\" bound with a \"ClusterRoleBinding\" to be effective).',\n ),\n id: 'get-and-post-to-non-resource-endpoints',\n targetResource: getTargetResource(ClusterRoleModel),\n },\n];\n\nconst defaultSamples = (t: TFunction) =>\n ImmutableMap()\n .setIn(\n [referenceForModel(BuildConfigModel)],\n [\n {\n title: t('console-shared~Build from Dockerfile'),\n description: t(\n 'console-shared~A Dockerfile build performs an image build using a Dockerfile in the source repository or specified in build configuration.',\n ),\n id: 'docker-build',\n targetResource: getTargetResource(BuildConfigModel),\n },\n {\n title: t('console-shared~Source-to-Image (S2I) build'),\n description: t(\n 'console-shared~S2I is a tool for building reproducible container images. It produces ready-to-run images by injecting the application source into a container image and assembling a new image.',\n ),\n id: 's2i-build',\n targetResource: getTargetResource(BuildConfigModel),\n },\n ],\n )\n .setIn(\n [referenceForModel(NetworkPolicyModel)],\n [\n {\n highlightText: t('console-shared~Limit'),\n title: t('console-shared~access to the current namespace'),\n img: denyOtherNamespacesImg,\n description: t(\n 'console-shared~Deny traffic from other namespaces while allowing all traffic from the namespaces the Pod is living in.',\n ),\n id: 'deny-other-namespaces',\n targetResource: getTargetResource(NetworkPolicyModel),\n },\n {\n highlightText: t('console-shared~Limit'),\n title: t('console-shared~traffic to an application within the same namespace'),\n img: limitCertainAppImg,\n description: t(\n 'console-shared~Allow inbound traffic from only certain Pods. One typical use case is to restrict the connections to a database only to the specific applications.',\n ),\n id: 'db-or-api-allow-app',\n targetResource: getTargetResource(NetworkPolicyModel),\n },\n {\n highlightText: t('console-shared~Allow'),\n title: t('console-shared~http and https ingress within the same namespace'),\n img: allowIngressImg,\n description: t(\n 'console-shared~Define ingress rules for specific port numbers of an application. The rule applies to all port numbers if not specified.',\n ),\n id: 'api-allow-http-and-https',\n targetResource: getTargetResource(NetworkPolicyModel),\n },\n {\n highlightText: t('console-shared~Deny'),\n title: t('console-shared~all non-whitelisted traffic in the current namespace'),\n img: defaultDenyAllImg,\n description: t(\n 'console-shared~A fundamental policy by blocking all cross-pod traffics expect whitelisted ones through the other Network Policies being deployed.',\n ),\n id: 'default-deny-all',\n targetResource: getTargetResource(NetworkPolicyModel),\n },\n {\n highlightText: t('console-shared~Allow'),\n title: t('console-shared~traffic from external clients'),\n img: webAllowExternalImg,\n description: t(\n 'console-shared~Allow external service from public Internet directly or through a Load Balancer to access the Pod.',\n ),\n id: 'web-allow-external',\n targetResource: getTargetResource(NetworkPolicyModel),\n },\n {\n highlightText: t('console-shared~Allow'),\n title: t('console-shared~traffic to an application from all namespaces'),\n img: webDbAllowAllNsImg,\n description: t(\n 'console-shared~One typical use case is for a common database which is used by deployments in different namespaces.',\n ),\n id: 'web-db-allow-all-ns',\n targetResource: getTargetResource(NetworkPolicyModel),\n },\n {\n highlightText: t('console-shared~Allow'),\n title: t('console-shared~traffic from all Pods in a particular namespace'),\n img: webAllowProductionImg,\n description: t(\n 'console-shared~Typical use case should be \"only allow deployments in production namespaces to access the database\" or \"allow monitoring tools (in another namespace) to scrape metrics from current namespace.\"',\n ),\n id: 'web-allow-production',\n targetResource: getTargetResource(NetworkPolicyModel),\n },\n ],\n )\n .setIn(\n [referenceForModel(ResourceQuotaModel)],\n [\n {\n title: t('console-shared~Set compute resource quota'),\n description: t(\n 'console-shared~Limit the total amount of memory and CPU that can be used in a namespace.',\n ),\n id: 'rq-compute',\n targetResource: getTargetResource(ResourceQuotaModel),\n },\n {\n title: t('console-shared~Set maximum count for any resource'),\n description: t(\n 'console-shared~Restrict maximum count of each resource so users cannot create more than the allotted amount.',\n ),\n id: 'rq-counts',\n targetResource: getTargetResource(ResourceQuotaModel),\n },\n {\n title: t('console-shared~Specify resource quotas for a given storage class'),\n description: t(\n 'console-shared~Limit the size and number of persistent volume claims that can be created with a storage class.',\n ),\n id: 'rq-storageclass',\n targetResource: getTargetResource(ResourceQuotaModel),\n },\n ],\n )\n .setIn(\n [referenceForModel(RoleModel)],\n [\n {\n title: t('console-shared~Allow reading the resource in API group'),\n description: t(\n 'console-shared~This \"Role\" is allowed to read the resource \"Pods\" in the core API group.',\n ),\n id: 'read-pods-within-ns',\n targetResource: getTargetResource(RoleModel),\n },\n {\n title: t('console-shared~Allow reading/writing the resource in API group'),\n description: t(\n 'console-shared~This \"Role\" is allowed to read and write the \"Deployments\" in both the \"extensions\" and \"apps\" API groups.',\n ),\n id: 'read-write-deployment-in-ext-and-apps-apis',\n targetResource: getTargetResource(RoleModel),\n },\n {\n title: t(\n 'console-shared~Allow different access rights to different types of resource and API groups',\n ),\n description: t(\n 'console-shared~This \"Role\" is allowed to read \"Pods\" and read/write \"Jobs\" resources in API groups.',\n ),\n id: 'read-pods-and-read-write-jobs',\n targetResource: getTargetResource(RoleModel),\n },\n {\n title: t(\n 'console-shared~Allow reading a ConfigMap in a specific namespace (for RoleBinding)',\n ),\n description: t(\n 'console-shared~This \"Role\" is allowed to read a \"ConfigMap\" named \"my-config\" (must be bound with a \"RoleBinding\" to limit to a single \"ConfigMap\" in a single namespace).',\n ),\n id: 'read-configmap-within-ns',\n targetResource: getTargetResource(RoleModel),\n },\n ...clusterRoleBindingSamples(t),\n ],\n )\n .setIn([referenceForModel(ClusterRoleModel)], clusterRoleBindingSamples(t))\n .setIn(\n [referenceForModel(ConsoleLinkModel)],\n [\n {\n title: t('console-shared~Add a link to the user menu'),\n description: t(\n 'console-shared~The user menu appears in the right side of the masthead below the username.',\n ),\n id: 'cl-user-menu',\n targetResource: getTargetResource(ConsoleLinkModel),\n },\n {\n title: t('console-shared~Add a link to the application menu'),\n description: t(\n 'console-shared~The application menu appears in the masthead below the 9x9 grid icon. Application menu links can include an optional image and section heading.',\n ),\n id: 'cl-application-menu',\n targetResource: getTargetResource(ConsoleLinkModel),\n },\n {\n title: t('console-shared~Add a link to the namespace dashboard'),\n description: t(\n 'console-shared~Namespace dashboard links appear on the project dashboard and namespace details pages in a section called \"Launcher\". Namespace dashboard links can optionally be restricted to a specific namespace or namespaces.',\n ),\n id: 'cl-namespace-dashboard',\n targetResource: getTargetResource(ConsoleLinkModel),\n },\n ],\n )\n .setIn(\n [referenceForModel(ConsoleOperatorConfigModel)],\n [\n {\n title: t('console-shared~Add catalog categories'),\n description: t(\n 'console-shared~Provides a list of default categories which are shown in the Developer Catalog. The categories must be added below customization developerCatalog.',\n ),\n id: 'devcatalog-categories',\n snippet: true,\n lazyYaml: () => YAML.dump(defaultCatalogCategories),\n targetResource: getTargetResource(ConsoleOperatorConfigModel),\n },\n {\n title: t('console-shared~Add project access roles'),\n description: t(\n 'console-shared~Provides a list of default roles which are shown in the Project Access. The roles must be added below customization projectAccess.',\n ),\n id: 'projectaccess-roles',\n snippet: true,\n lazyYaml: () => YAML.dump(defaultProjectAccessRoles),\n targetResource: getTargetResource(ConsoleOperatorConfigModel),\n },\n {\n title: t('console-shared~Add page actions'),\n description: t(\n 'console-shared~Provides a list of all available actions on the Add page in the Developer perspective. The IDs must be added below customization addPage disabledActions to hide these actions.',\n ),\n id: 'addpage-actions',\n snippet: true,\n lazyYaml: () => {\n // Similar to useTranslationExt\n const translateExtension = (key: string) => {\n if (key.length < 3 || key[0] !== '%' || key[key.length - 1] !== '%') {\n return key;\n }\n return t(key.substr(1, key.length - 2));\n };\n return new Promise((resolve) => {\n // Using subscribeToExtensions here instead of useExtensions hook because\n // this lazyYaml method is not called in a render flow.\n // We should probably have a yaml snippets extension later for this.\n const unsubscribe = subscribeToExtensions(\n (extensions: LoadedExtension[]) => {\n const sortedExtensions = extensions\n .slice()\n .sort((a, b) => a.properties.id.localeCompare(b.properties.id));\n const yaml = sortedExtensions\n .map((extension) => {\n const { id, label, description } = extension.properties;\n const labelComment = translateExtension(label).split('\\n').join('\\n # ');\n const descriptionComment = translateExtension(description)\n .split('\\n')\n .join('\\n # ');\n return `- # ${labelComment}\\n # ${descriptionComment}\\n ${id}`;\n })\n .join('\\n');\n resolve(yaml);\n unsubscribe();\n },\n isAddAction,\n );\n });\n },\n targetResource: getTargetResource(ConsoleOperatorConfigModel),\n },\n {\n title: t('console-shared~Add sub-catalog types'),\n description: t(\n 'console-shared~Provides a list of all the available sub-catalog types which are shown in the Developer Catalog. The types must be added below spec customization developerCatalog',\n ),\n id: 'devcatalog-types',\n snippet: true,\n lazyYaml: () => {\n return new Promise((resolve) => {\n const unsubscribe = subscribeToExtensions(\n (extensions: LoadedExtension[]) => {\n const enabledTypes = {\n state: 'Enabled',\n enabled: extensions.map((extension) => extension.properties.type),\n };\n resolve(YAML.dump(enabledTypes));\n unsubscribe();\n },\n isCatalogItemType,\n );\n });\n },\n targetResource: getTargetResource(ConsoleOperatorConfigModel),\n },\n {\n title: t('console-shared~Add user perspectives'),\n description: t(\n 'console-shared~Provides a list of all the available user perspectives which are shown in the perspective dropdown. The perspectives must be added below spec customization.',\n ),\n id: 'user-perspectives',\n snippet: true,\n lazyYaml: () => {\n return new Promise((resolve) => {\n const unsubscribe = subscribeToExtensions(\n (extensions: LoadedExtension[]) => {\n const yaml = extensions.map((extension) => {\n const { id } = extension.properties;\n return {\n id,\n visibility: {\n state: 'Enabled',\n },\n };\n });\n resolve(YAML.dump(yaml));\n unsubscribe();\n },\n isPerspective,\n );\n });\n },\n targetResource: getTargetResource(ConsoleOperatorConfigModel),\n },\n {\n title: t('console-shared~Add pinned resources'),\n description: t(\n 'console-shared~Provides a list of resources to be pinned on the Developer perspective navigation. The pinned resources must be added below spec customization perspectives.',\n ),\n id: 'dev-pinned-resources',\n snippet: true,\n lazyYaml: () => YAML.dump(samplePinnedResources),\n targetResource: getTargetResource(ConsoleOperatorConfigModel),\n },\n ],\n )\n .setIn(\n [referenceForModel(PodDisruptionBudgetModel)],\n [\n {\n title: t('console-shared~Set maxUnavaliable to 0'),\n description: t(\n 'console-shared~An eviction is allowed if at most 0 pods selected by \"selector\" are unavailable after the eviction.',\n ),\n id: 'pdb-max-unavailable',\n targetResource: getTargetResource(PodDisruptionBudgetModel),\n },\n {\n title: t('console-shared~Set minAvailable to 25%'),\n description: t(\n 'console-shared~An eviction is allowed if at least 25% of pods selected by \"selector\" will still be available after the eviction.',\n ),\n id: 'pdb-min-available',\n targetResource: getTargetResource(PodDisruptionBudgetModel),\n },\n ],\n );\n\nexport const getResourceSidebarSamples = (\n kindObj: K8sKind,\n yamlSamplesList: FirehoseResult,\n t: TFunction,\n) => {\n const yamlSamplesData = !_.isEmpty(yamlSamplesList)\n ? _.filter(\n yamlSamplesList.data,\n (sample: K8sResourceKind) =>\n sample.spec.targetResource.apiVersion === apiVersionForModel(kindObj) &&\n sample.spec.targetResource.kind === kindObj.kind,\n )\n : [];\n const existingSamples = defaultSamples(t).get(referenceForModel(kindObj)) || [];\n const extensionSamples = !_.isEmpty(yamlSamplesData)\n ? yamlSamplesData.map((sample: K8sResourceKind) => {\n return {\n id: sample.metadata.uid,\n ...sample.spec,\n };\n })\n : [];\n\n const allSamples = [...existingSamples, ...extensionSamples];\n\n // For the time being, `snippets` are a superset of `samples`\n const snippets = allSamples.filter((sample: Sample) => sample.snippet);\n const samples = allSamples.filter((sample: Sample) => !sample.snippet);\n\n return { snippets, samples };\n};\n","import * as React from 'react';\nimport {\n Select as SelectDeprecated,\n SelectOption as SelectOptionDeprecated,\n SelectVariant as SelectVariantDeprecated,\n} from '@patternfly/react-core/deprecated';\nimport { useTranslation } from 'react-i18next';\n\nexport const MultiSelectDropdown: React.FC = ({\n onChange,\n placeholder,\n id,\n options,\n defaultSelected = [],\n}) => {\n const [isOpen, setOpen] = React.useState(false);\n const [selected, setSelected] = React.useState(defaultSelected || []);\n const onSelect = (event: React.MouseEvent | React.ChangeEvent, selection: string) => {\n let cSelected: string[] = selected;\n if (selected.includes(selection)) {\n cSelected = selected.filter((item) => item !== selection);\n } else {\n cSelected = [...selected, selection];\n }\n setSelected(cSelected);\n onChange(cSelected);\n };\n\n const { t } = useTranslation();\n\n const items: JSX.Element[] = options.map((item) => {\n return ;\n });\n return (\n
    \n setOpen(isExpanded)}\n onSelect={onSelect}\n selections={selected}\n isOpen={isOpen}\n placeholderText={placeholder || t('console-shared~Select options')}\n aria-labelledby={id}\n noResultsFoundText={t('console-shared~No results found')}\n >\n {items}\n \n
    \n );\n};\n\nexport type MultiSelectDropdownProps = {\n id?: string;\n options?: string[];\n defaultSelected?: string[];\n placeholder?: string;\n onChange: (selected: string[]) => void;\n};\n","import { Terminal, ITerminalAddon } from 'xterm';\nimport './xterm-addon-fullscreen.scss';\n\nexport class XtermAddonFullscreen implements ITerminalAddon {\n private terminal: Terminal | undefined;\n\n public activate(terminal: Terminal): void {\n this.terminal = terminal;\n }\n\n public dispose(): void {\n if (this.terminal?.element.classList.contains('fullscreen')) {\n this.terminal?.element.classList.remove('fullscreen');\n }\n }\n\n public toggleFullScreen(fullscreen?: boolean): void {\n let fn: string;\n\n if (typeof fullscreen === 'undefined') {\n fn = this.terminal?.element.classList.contains('fullscreen') ? 'remove' : 'add';\n } else if (!fullscreen) {\n fn = 'remove';\n } else {\n fn = 'add';\n }\n\n this.terminal?.element.classList[fn]('fullscreen');\n }\n}\n","import { TFunction } from 'i18next';\nimport * as yup from 'yup';\n\nexport const nameRegex = /^[a-z]([a-z0-9]-?)*[a-z0-9]$/;\nexport const nameValidationSchema = (t: TFunction, maxLength = 263) =>\n yup\n .string()\n .matches(nameRegex, {\n message: t(\n 'console-shared~Name must consist of lower-case letters, numbers and hyphens. It must start with a letter and end with a letter or number.',\n ),\n excludeEmptyString: true,\n })\n .max(\n maxLength,\n // see https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n t('console-shared~Cannot be longer than {{characterCount}} characters.', {\n characterCount: maxLength,\n }),\n )\n .required(t('console-shared~Required'));\n","import * as _ from 'lodash';\nimport { K8sResourceKind, Patch } from '@console/internal/module/k8s';\n\nexport const getPluginPatch = (\n console: K8sResourceKind,\n plugin: string,\n enabled: boolean,\n): Patch => {\n if (!enabled) {\n return {\n path: '/spec/plugins',\n value: console.spec.plugins.filter((p: string) => p !== plugin),\n op: 'replace',\n };\n }\n\n // Create the array if it doesn't exist. Append to the array otherwise.\n return _.isEmpty(console.spec.plugins)\n ? {\n path: '/spec/plugins',\n value: [plugin],\n op: 'add',\n }\n : {\n path: '/spec/plugins/-',\n value: plugin,\n op: 'add',\n };\n};\n\nexport const getPatchForRemovingPlugins = (console: K8sResourceKind, plugins: string[]): Patch => {\n return {\n path: '/spec/plugins',\n value: console.spec?.plugins?.filter((p: string) => !plugins.includes(p)),\n op: 'replace',\n };\n};\n\nexport const isPluginEnabled = (console: K8sResourceKind, plugin: string): boolean =>\n !!console?.spec?.plugins?.includes(plugin);\n","import * as React from 'react';\nimport { useK8sWatchResources } from '@console/internal/components/utils/k8s-watch-hook';\nimport { K8sResourceKind, JobKind } from '@console/internal/module/k8s';\nimport { getJobsForCronJob } from '../utils';\n\nexport const useJobsForCronJobWatcher = (\n cronJob: K8sResourceKind,\n): { loaded: boolean; loadError: string; jobs: JobKind[] } => {\n const { namespace, uid } = cronJob.metadata;\n const [loaded, setLoaded] = React.useState(false);\n const [loadError, setLoadError] = React.useState('');\n const [jobs, setJobs] = React.useState([]);\n const watchedResources = React.useMemo(\n () => ({\n jobs: {\n isList: true,\n kind: 'Job',\n namespace,\n },\n }),\n [namespace],\n );\n const resources = useK8sWatchResources(watchedResources);\n\n React.useEffect(() => {\n const errorKey = Object.keys(resources).find((key) => resources[key].loadError);\n if (errorKey) {\n setLoadError(resources[errorKey].loadError);\n return;\n }\n setLoadError('');\n if (\n Object.keys(resources).length > 0 &&\n Object.keys(resources).every((key) => resources[key].loaded)\n ) {\n const resourceJobs = getJobsForCronJob(uid, resources);\n setJobs(resourceJobs);\n setLoaded(true);\n }\n }, [uid, resources]);\n\n return { loaded, loadError, jobs };\n};\n","import * as React from 'react';\nimport { useSafetyFirst } from '@console/dynamic-plugin-sdk';\nimport { useK8sWatchResources } from '@console/internal/components/utils/k8s-watch-hook';\nimport { K8sResourceKind } from '@console/internal/module/k8s';\nimport { PodRCData } from '../types';\nimport { getPodsDataForResource, getResourcesToWatchForPods } from '../utils';\nimport { useDebounceCallback } from './debounce';\nimport { useDeepCompareMemoize } from './deep-compare-memoize';\n\n/**\n * Watches for all Pods for a kind and namespace.\n * Kind and namespace is used from the given `resource` and can be overridden\n * with the `kind` and `namespace` parameters.\n */\nexport const usePodsWatcher = (\n resource: K8sResourceKind,\n kind?: string,\n namespace?: string,\n): { loaded: boolean; loadError: string; podData: PodRCData } => {\n const [loaded, setLoaded] = useSafetyFirst(false);\n const [loadError, setLoadError] = useSafetyFirst('');\n const [podData, setPodData] = useSafetyFirst(undefined);\n const watchKind = kind || resource?.kind;\n const watchNS = namespace || resource?.metadata.namespace;\n const watchedResources = React.useMemo(\n () => (watchKind ? getResourcesToWatchForPods(watchKind, watchNS) : {}),\n [watchKind, watchNS],\n );\n\n const resources = useK8sWatchResources(watchedResources);\n\n const updateResults = React.useCallback(\n (watchedResource, updatedResources) => {\n const errorKey = Object.keys(updatedResources).find((key) => updatedResources[key].loadError);\n if (errorKey) {\n setLoadError(updatedResources[errorKey].loadError);\n return;\n }\n setLoadError('');\n if (\n Object.keys(updatedResources).length > 0 &&\n Object.keys(updatedResources).every((key) => updatedResources[key].loaded)\n ) {\n const updatedPods = getPodsDataForResource(watchedResource, watchKind, updatedResources);\n setPodData(updatedPods);\n setLoaded(true);\n }\n },\n [setLoadError, setLoaded, setPodData, watchKind],\n );\n\n const debouncedUpdateResources = useDebounceCallback(updateResults, 250);\n\n React.useEffect(() => {\n debouncedUpdateResources(resource, resources);\n }, [debouncedUpdateResources, resources, resource]);\n\n return useDeepCompareMemoize({ loaded, loadError, podData });\n};\n","import * as React from 'react';\nimport { useK8sWatchResources } from '@console/internal/components/utils/k8s-watch-hook';\nimport { K8sResourceKind } from '@console/internal/module/k8s';\nimport { PodControllerOverviewItem } from '../types';\nimport { getReplicationControllersForResource } from '../utils';\n\nexport const useReplicationControllersWatcher = (\n resource: K8sResourceKind,\n): {\n loaded: boolean;\n loadError: string;\n mostRecentRC: K8sResourceKind;\n visibleReplicationControllers: PodControllerOverviewItem[];\n} => {\n const { namespace } = resource.metadata;\n const watchedResources = React.useMemo(\n () => ({\n replicationControllers: {\n isList: true,\n kind: 'ReplicationController',\n namespace,\n },\n pods: {\n isList: true,\n kind: 'Pod',\n namespace,\n },\n }),\n [namespace],\n );\n const resources = useK8sWatchResources(watchedResources);\n\n const { loaded, loadError, mostRecentRC, visibleReplicationControllers } = React.useMemo(() => {\n const resourcesLoaded =\n Object.keys(resources).length > 0 &&\n Object.keys(resources).every((key) => resources[key].loaded);\n const resourceWithLoadError = Object.values(resources).find((r) => r.loadError);\n if (!resourcesLoaded || resourceWithLoadError) {\n return {\n loaded: resourcesLoaded,\n loadError: resourceWithLoadError ? resourceWithLoadError.loadError : null,\n mostRecentRC: null,\n visibleReplicationControllers: [],\n };\n }\n\n return {\n loaded: true,\n loadError: null,\n ...getReplicationControllersForResource(resource, resources),\n };\n }, [resources, resource]);\n\n return { loaded, loadError, mostRecentRC, visibleReplicationControllers };\n};\n","import * as React from 'react';\nimport { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';\nimport { K8sResourceKind, RouteKind } from '@console/internal/module/k8s';\nimport { getRoutesForServices } from '../utils';\nimport { useServicesWatcher } from './useServicesWatcher';\n\nexport const useRoutesWatcher = (\n resource: K8sResourceKind,\n): { loaded: boolean; loadError: string; routes: RouteKind[] } => {\n const watchedServices = useServicesWatcher(resource);\n const [allRoutes, loaded, loadError] = useK8sWatchResource({\n isList: true,\n kind: 'Route',\n namespace: resource?.metadata?.namespace,\n });\n\n const servicesNames = React.useMemo(\n () =>\n !watchedServices.loadError && watchedServices.loaded\n ? watchedServices.services.map((s) => s.metadata?.name)\n : [],\n [watchedServices.loadError, watchedServices.loaded, watchedServices.services],\n );\n\n const routes = React.useMemo(() => getRoutesForServices(servicesNames, allRoutes), [\n servicesNames,\n allRoutes,\n ]);\n\n return {\n loaded: loaded && watchedServices.loaded,\n loadError: loadError || watchedServices.loadError,\n routes,\n };\n};\n","import * as React from 'react';\nimport { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';\nimport { referenceForModel } from '@console/internal/module/k8s';\nimport {\n ClusterServiceVersionModel,\n ClusterServiceVersionKind,\n} from '@console/operator-lifecycle-manager';\n\ntype CsvWatchResource = {\n csvData: ClusterServiceVersionKind[];\n csvLoaded: boolean;\n csvError: {};\n};\nexport const useCsvWatchResource = (ns: string): CsvWatchResource => {\n const csvResource = React.useMemo(\n () => ({\n isList: true,\n kind: referenceForModel(ClusterServiceVersionModel),\n namespace: ns,\n optional: true,\n }),\n [ns],\n );\n\n const [csvData, csvLoaded, csvError] = useK8sWatchResource(\n csvResource,\n );\n return { csvData, csvLoaded, csvError };\n};\n","import { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\n// FIXME upgrading redux types is causing many errors at this time\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { useSelector } from 'react-redux';\nimport { Location } from 'react-router-dom-v5-compat';\nimport { getBreadcrumbPath } from '@console/internal/components/utils/breadcrumbs';\nimport { K8sKind } from '@console/internal/module/k8s';\nimport { getActiveNamespace } from '@console/internal/reducers/ui';\nimport { RootState } from '@console/internal/redux';\nimport { ALL_NAMESPACES_KEY } from '../constants/common';\n\nexport const useTabbedTableBreadcrumbsFor = (\n kindObj: K8sKind,\n location: Location,\n params: { [key: string]: string },\n navOption: string,\n subTab: string = null,\n customBreadcrumbName?: string,\n customBreadcrumbURLRequired?: boolean,\n customBreadCrumbDetailsPrefix?: string,\n) => {\n const { t } = useTranslation();\n const { label, labelKey, labelPlural, labelPluralKey } = kindObj;\n const currentNamespace = useSelector((state: RootState) => getActiveNamespace(state));\n const nsURL =\n ALL_NAMESPACES_KEY === currentNamespace ? 'all-namespaces' : `ns/${currentNamespace}`;\n return useMemo(\n () =>\n subTab === null\n ? []\n : [\n {\n name: customBreadcrumbName || (labelPluralKey ? t(labelPluralKey) : labelPlural),\n path: customBreadcrumbURLRequired\n ? `/${navOption}/${nsURL}/${subTab}`\n : getBreadcrumbPath(params),\n },\n {\n name: t('console-shared~{{label}} details', {\n label: customBreadCrumbDetailsPrefix || (labelKey ? t(labelKey) : label),\n }),\n path: location,\n },\n ],\n [\n subTab,\n customBreadcrumbName,\n customBreadcrumbURLRequired,\n customBreadCrumbDetailsPrefix,\n labelPluralKey,\n t,\n labelPlural,\n navOption,\n nsURL,\n location,\n params,\n labelKey,\n label,\n ],\n );\n};\n","import { useMemo, useCallback } from 'react';\nimport * as _ from 'lodash';\nimport { ExtensionK8sModel, K8sModel, useActivePerspective } from '@console/dynamic-plugin-sdk';\nimport { referenceForExtensionModel, useModelFinder } from '@console/internal/module/k8s';\nimport { PINNED_RESOURCES_LOCAL_STORAGE_KEY } from '../constants';\nimport { usePerspectives, Perspective } from './perspective-utils';\nimport { useTelemetry } from './useTelemetry';\nimport { useUserSettingsCompatibility } from './useUserSettingsCompatibility';\n\ntype PinnedResourcesType = {\n [perspective: string]: string[];\n};\n\nconst PINNED_RESOURCES_CONFIG_MAP_KEY = 'console.pinnedResources';\n\nexport const usePinnedResources = (): [string[], (pinnedResources: string[]) => void, boolean] => {\n const fireTelemetryEvent = useTelemetry();\n const [activePerspective] = useActivePerspective();\n const perspectiveExtensions = usePerspectives();\n const { findModel } = useModelFinder();\n\n const getPins = useCallback(\n (id: string, defaultPins: ExtensionK8sModel[]): ExtensionK8sModel[] => {\n let customizedPins: ExtensionK8sModel[] = null;\n if (window.SERVER_FLAGS.perspectives) {\n const perspectives: Perspective[] = JSON.parse(window.SERVER_FLAGS.perspectives);\n const perspective = perspectives.find((p: Perspective) => p.id === id);\n customizedPins = perspective?.pinnedResources?.map((pr) => {\n const model: K8sModel = findModel(pr.group, pr.resource);\n return (\n model && {\n group: pr.group,\n version: pr.version,\n kind: model.kind,\n }\n );\n });\n }\n return customizedPins ?? defaultPins ?? [];\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n const defaultPins: PinnedResourcesType = useMemo(\n () =>\n perspectiveExtensions.reduce(\n (acc, e) => ({\n ...acc,\n [e.properties.id]: getPins(e.properties.id, e.properties.defaultPins)?.map((gvk) =>\n referenceForExtensionModel(gvk),\n ),\n }),\n {},\n ),\n [perspectiveExtensions, getPins],\n );\n const [pinnedResources, setPinnedResources, loaded] = useUserSettingsCompatibility<\n PinnedResourcesType\n >(PINNED_RESOURCES_CONFIG_MAP_KEY, PINNED_RESOURCES_LOCAL_STORAGE_KEY, null, true);\n\n const pins = useMemo(() => {\n if (!loaded) {\n return [];\n }\n if (_.isEmpty(pinnedResources) || !pinnedResources?.[activePerspective]) {\n return defaultPins[activePerspective] ?? [];\n }\n return pinnedResources[activePerspective] ?? [];\n }, [loaded, pinnedResources, activePerspective, defaultPins]);\n\n const setPins = useCallback(\n (newPins: string[]) => {\n setPinnedResources((prevPR) => {\n _.difference(\n newPins,\n prevPR?.[activePerspective]?.length > 0 ? prevPR[activePerspective] : pins,\n ).forEach((resource) =>\n fireTelemetryEvent('Navigation Added', {\n resource,\n perspective: activePerspective,\n }),\n );\n\n _.difference(\n prevPR?.[activePerspective]?.length > 0 ? prevPR[activePerspective] : pins,\n newPins,\n ).forEach((resource) =>\n fireTelemetryEvent('Navigation Removed', {\n resource,\n perspective: activePerspective,\n }),\n );\n\n return { ...prevPR, [activePerspective]: newPins };\n });\n },\n [setPinnedResources, activePerspective, pins, fireTelemetryEvent],\n );\n\n return [pins, setPins, loaded];\n};\n","import * as React from 'react';\n\nconst MAX_MOBILE_WIDTH = 767;\nconst MOBILE_MEDIA_QUERY = `(max-width: ${MAX_MOBILE_WIDTH}px)`;\n\nexport const useIsMobile = () => {\n const [isMobile, setIsMobile] = React.useState(window.innerWidth <= MAX_MOBILE_WIDTH);\n\n React.useEffect(() => {\n const mobileResolutionMatch = window.matchMedia(MOBILE_MEDIA_QUERY);\n\n const updateIsMobile = (e) => {\n setIsMobile(e.matches);\n };\n\n // support safari with fallback to addListener / removeListener\n if (mobileResolutionMatch.addEventListener) {\n mobileResolutionMatch.addEventListener('change', updateIsMobile);\n } else {\n mobileResolutionMatch.addListener(updateIsMobile);\n }\n\n // Remove event listener on cleanup\n return () => {\n if (mobileResolutionMatch.removeEventListener) {\n mobileResolutionMatch.removeEventListener('change', updateIsMobile);\n } else {\n mobileResolutionMatch.removeListener(updateIsMobile);\n }\n };\n }, []); // Empty array ensures that effect is only run on mount\n\n return isMobile;\n};\n","import * as React from 'react';\nimport { useResizeObserver } from './useResizeObserver';\n\ntype BoundingClientRect = ClientRect | null;\n\nexport const useBoundingClientRect = (targetElement: HTMLElement | null): BoundingClientRect => {\n const [clientRect, setClientRect] = React.useState(() =>\n targetElement ? targetElement.getBoundingClientRect() : null,\n );\n\n const observerCallback = React.useCallback(() => {\n setClientRect(targetElement ? targetElement.getBoundingClientRect() : null);\n }, [targetElement]);\n\n useResizeObserver(observerCallback);\n\n return clientRect;\n};\n","import { useEffect } from 'react';\n\nexport const useEventListener = (\n target: EventTarget,\n event: keyof WindowEventMap,\n callback: EventListener,\n) => {\n useEffect(() => {\n target.addEventListener(event, callback);\n return () => {\n target.removeEventListener(event, callback);\n };\n }, [target, event, callback]);\n};\n","import * as React from 'react';\nimport { Modal as PfModal, ModalProps as PfModalProps } from '@patternfly/react-core';\nimport * as cx from 'classnames';\nimport './Modal.scss';\n\ntype ModalProps = {\n isFullScreen?: boolean;\n ref?: React.LegacyRef;\n} & PfModalProps;\n\nconst Modal: React.FC = ({ isFullScreen = false, className, ...props }) => (\n (isFullScreen ? document.body : document.querySelector('#modal-container'))}\n />\n);\n\nexport default Modal;\n","import * as React from 'react';\nimport { consoleFetchJSON as coFetchJSON } from '@console/dynamic-plugin-sdk/src/utils/fetch';\nimport { FLAGS } from '../constants';\nimport { useFlag } from './flag';\n\nconst COPY_LOGIN_COMMANDS_ENDPOINT = '/api/copy-login-commands';\n\nexport const useCopyLoginCommands = (): [string, string] => {\n const [requestTokenURL, setRequestTokenURL] = React.useState();\n const [externalLoginCommand, setExternalLoginCommand] = React.useState();\n const authEnabled = useFlag(FLAGS.AUTH_ENABLED);\n React.useEffect(() => {\n if (authEnabled) {\n coFetchJSON(COPY_LOGIN_COMMANDS_ENDPOINT, 'GET', {}, 5000)\n .then((resp) => {\n const newRequestTokenURL = resp?.requestTokenURL ?? '';\n const newExternalLoginCommand = resp?.externalLoginCommand ?? '';\n if (newRequestTokenURL) {\n setRequestTokenURL(newRequestTokenURL);\n setExternalLoginCommand('');\n } else if (newExternalLoginCommand) {\n setExternalLoginCommand(newExternalLoginCommand);\n setRequestTokenURL('');\n }\n })\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.warn(`GET ${COPY_LOGIN_COMMANDS_ENDPOINT} failed: ${err}`);\n setRequestTokenURL('');\n setExternalLoginCommand('');\n });\n }\n }, [authEnabled]);\n\n return [requestTokenURL, externalLoginCommand];\n};\n","export * from './PopupKebabMenu';\n","import * as React from 'react';\nimport { DropdownMenu as DropdownMenuDeprecated } from '@patternfly/react-core/deprecated';\nimport * as classNames from 'classnames';\nimport * as _ from 'lodash';\nimport { history, KebabItem, KebabOption } from '@console/internal/components/utils';\nimport './PopupKebabMenu.scss';\n\nexport interface PopupKebabMenuProps {\n kebabOptions: KebabOption[];\n className?: string;\n onClose?(): void;\n eventX: number;\n eventY: number;\n container?: Element;\n}\ninterface PopopKebabMenuState {\n menuTop: number;\n menuLeft: number;\n}\n\nconst MENU_PADDING = 20;\n\nexport class PopupKebabMenu extends React.Component {\n state = {\n menuTop: 0,\n menuLeft: 0,\n };\n\n private menu: Element;\n\n componentDidMount() {\n document.addEventListener('focus', this.handleBlur, true);\n this.updateMenuPosition();\n }\n\n componentDidUpdate(prevProps) {\n if (\n this.props.eventX !== prevProps.eventX ||\n this.props.eventY !== prevProps.eventY ||\n !_.isEqual(this.props.kebabOptions, prevProps.kebabOptions)\n ) {\n this.updateMenuPosition();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('focus', this.handleBlur, true);\n }\n\n updateMenuPosition = () => {\n const { container, eventX, eventY } = this.props;\n let menuTop = eventY;\n let menuLeft = eventX;\n\n if (container) {\n const menu: Element = this.menu.firstElementChild;\n if (menu) {\n const elementRect = container.getBoundingClientRect();\n const menuRect = menu.getBoundingClientRect();\n\n if (\n eventY + menuRect.height + menuRect.top >\n elementRect.top + elementRect.height - MENU_PADDING\n ) {\n menuTop = Math.max(\n elementRect.top + elementRect.height - menuRect.height - menuRect.top - MENU_PADDING,\n 0,\n );\n }\n if (\n eventX + menuRect.width + menuRect.left >\n elementRect.left + elementRect.width - MENU_PADDING\n ) {\n menuLeft = Math.max(\n elementRect.left + elementRect.width - menuRect.width - menuRect.left - MENU_PADDING,\n 0,\n );\n }\n }\n }\n\n if (menuTop !== this.state.menuTop || menuLeft !== this.state.menuLeft) {\n this.setState({ menuTop, menuLeft });\n }\n };\n\n handleClose = () => {\n const { onClose } = this.props;\n\n onClose && onClose();\n };\n\n handleMenuMouseDown = (e) => {\n e.stopPropagation();\n };\n\n handleBlur = (e) => {\n if (!this.menu.contains(e.target)) {\n let focusTarget;\n\n const menuItems = this.menu.querySelectorAll('button');\n if (_.first(menuItems) === e.relatedTarget) {\n focusTarget = _.last(menuItems);\n } else if (_.last(menuItems) === e.relatedTarget) {\n focusTarget = _.first(menuItems);\n } else {\n focusTarget = e.relatedTarget;\n }\n\n focusTarget.focus();\n }\n };\n\n onKebabOptionClick = (event, option: KebabOption) => {\n event.stopPropagation();\n\n if (option.callback) {\n option.callback();\n }\n\n if (option.href) {\n history.push(option.href);\n }\n\n this.handleClose();\n };\n\n setMenu = (ref) => {\n this.menu = ref;\n };\n\n render() {\n const { className, kebabOptions } = this.props;\n const { menuTop, menuLeft } = this.state;\n const visibleOptions = _.reject(kebabOptions, (o) => _.get(o, 'hidden', false));\n const classes = classNames('ocs-popup-kebab-menu', className);\n\n return (\n
    \n \n
    \n \n \n \n {_.map(visibleOptions, (o, i) => (\n
  • \n \n
  • \n ))}\n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n","import * as React from 'react';\nimport DropdownWithSwitchMenu from './DropdownWithSwitchMenu';\nimport DropdownWithSwitchToggle from './DropdownWithSwitchToggle';\n\nconst DropdownWithSwitch: React.FC = ({\n isDisabled,\n isFullWidth,\n toggleLabel,\n ...dropdownWithSwitchMenuProps\n}) => {\n const menuRef = React.useRef(null);\n const [isOpen, setOpen] = React.useState(false);\n const switchMenuProps: React.ComponentProps = {\n ...dropdownWithSwitchMenuProps,\n menuRef,\n setOpen,\n };\n const onToggle = React.useCallback((menuState: boolean) => {\n setOpen(menuState);\n }, []);\n\n return (\n }\n menuRef={menuRef}\n isOpen={isOpen}\n onToggle={onToggle}\n />\n );\n};\n\ntype DropdownWithSwitchProps = Omit<\n React.ComponentProps,\n 'menuRef' | 'setOpen'\n> & {\n isDisabled?: boolean;\n isFullWidth?: boolean;\n toggleLabel: string;\n};\n\nexport default DropdownWithSwitch;\n","import { MachineSetKind } from '@console/internal/module/k8s';\n\n// How to find the instance type varies by provider\n// Amazon: obj.spec?.template?.spec?.providerSpec?.value?.instanceType\n// Azure: obj.spec?.template?.spec?.providerSpec?.value?.vmSize\n// GCP: obj.spec?.template?.spec?.providerSpec?.value?.machineType\n// OpenStack: obj.spec?.template?.spec?.providerSpec?.value?.flavor\n// RHV: Field is being removed in favor of users setting memory/CPU explicitly\n// vSphere has no single field to gather this information\nexport const getMachineSetInstanceType = (obj: MachineSetKind): string =>\n obj.spec?.template?.spec?.providerSpec?.value?.instanceType ||\n obj.spec?.template?.spec?.providerSpec?.value?.vmSize ||\n obj.spec?.template?.spec?.providerSpec?.value?.machineType ||\n obj.spec?.template?.spec?.providerSpec?.value?.flavor;\n","import { K8sResourceKind } from '@console/internal/module/k8s';\n\nexport const getRequester = (obj: K8sResourceKind): string =>\n obj.metadata.annotations?.['openshift.io/requester'];\nexport const getDescription = (obj: K8sResourceKind): string =>\n obj.metadata.annotations?.['openshift.io/description'];\n","import { K8sResourceKind, StorageClassResourceKind } from '@console/internal/module/k8s';\n\nexport const getRequestedPVCSize = (pvc: K8sResourceKind): string =>\n pvc?.spec?.resources?.requests?.storage;\n\nexport const onlyPvcSCs = (\n scObj: StorageClassResourceKind,\n scResourceLoadError: boolean,\n scResource: StorageClassResourceKind | null,\n) =>\n !scResourceLoadError\n ? scObj.provisioner.includes(scResource?.provisioner) &&\n scObj.parameters?.encrypted === scResource?.parameters?.encrypted\n : true;\n","import * as React from 'react';\nimport { ActionGroup, Alert, Button, ButtonVariant } from '@patternfly/react-core';\nimport { DownloadIcon } from '@patternfly/react-icons/dist/esm/icons/download-icon';\nimport * as cx from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport { ButtonBar } from '@console/internal/components/utils';\nimport { Shadows, useScrollShadows, useScrollContainer } from '../../hooks';\nimport { FormFooterProps } from './form-utils-types';\n\nimport './FormFooter.scss';\n\nconst FormFooter: React.FC = ({\n handleSubmit,\n handleReset,\n handleCancel,\n handleDownload,\n submitLabel,\n resetLabel,\n cancelLabel,\n infoTitle,\n infoMessage,\n isSubmitting,\n errorMessage,\n successMessage,\n disableSubmit,\n hideSubmit = false,\n showAlert,\n sticky,\n}) => {\n const { t } = useTranslation();\n const [scrollContainer, footerElementRef] = useScrollContainer();\n const shadowPosition = useScrollShadows(sticky ? scrollContainer : null);\n return (\n \n \n {showAlert && (\n \n {infoMessage ||\n t('console-shared~Click {{submit}} to save changes or {{reset}} to cancel changes.', {\n submit: submitLabel,\n reset: resetLabel,\n })}\n \n )}\n \n {!hideSubmit && (\n \n {submitLabel || t('console-shared~Save')}\n \n )}\n {handleReset && (\n \n {resetLabel || t('console-shared~Reload')}\n \n )}\n {handleCancel && (\n \n {cancelLabel || t('console-shared~Cancel')}\n \n )}\n {handleDownload && (\n }\n >\n {t('console-shared~Download')}\n \n )}\n \n \n
    \n );\n};\nexport default FormFooter;\n","import * as React from 'react';\nimport { Title, FormHelperText } from '@patternfly/react-core';\n\ntype SpacerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';\n\ntype FormHeaderProps = {\n title: React.ReactNode;\n helpText?: React.ReactNode;\n marginTop?: SpacerSize;\n marginBottom?: SpacerSize;\n};\n\nconst FormHeader: React.FC = ({ title, helpText, marginTop, marginBottom }) => {\n const marginStyles = {\n ...(marginTop ? { marginTop: `var(--pf-v5-global--spacer--${marginTop})` } : {}),\n ...(marginBottom ? { marginBottom: `var(--pf-v5-global--spacer--${marginBottom})` } : {}),\n };\n\n return (\n
    \n \n {title}\n \n \n {helpText}\n \n
    \n );\n};\n\nexport default FormHeader;\n","import * as React from 'react';\nimport classnames from 'classnames';\n\ninterface PageBodyProps {\n children?: React.ReactNode;\n flexLayout?: boolean;\n}\n\nconst PageBody: React.FC = ({ children, flexLayout }) => (\n \n {children}\n
    \n);\n\nexport default PageBody;\n","import * as React from 'react';\n\ntype FlexFormProps = {\n children?: React.ReactNode;\n};\n\nconst FlexForm: React.FC> = ({\n children,\n ...props\n}) => (\n
    \n {children}\n
    \n);\n\nexport default FlexForm;\n","import * as React from 'react';\nimport { ActionGroup, Button, ButtonVariant } from '@patternfly/react-core';\nimport { CheckIcon } from '@patternfly/react-icons/dist/esm/icons/check-icon';\nimport CloseButton from '../close-button/CloseButton';\nimport { ActionGroupWithIconsProps } from './form-utils-types';\n\nconst ActionGroupWithIcons: React.FC = ({\n onSubmit,\n onClose,\n isDisabled,\n}) => {\n return (\n \n {onSubmit && (\n \n \n \n )}\n \n \n );\n};\n\nexport default ActionGroupWithIcons;\n","import * as React from 'react';\nimport * as classNames from 'classnames';\n\ntype FormBodyProps = {\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n flexLayout?: boolean;\n disablePaneBody?: boolean;\n};\n\nconst FormBody: React.FC> = ({\n children,\n className,\n style,\n disablePaneBody = false,\n flexLayout = false,\n ...props\n}) => (\n \n {children}\n
    \n);\n\nexport default FormBody;\n","/* eslint-disable no-unused-vars, no-undef */\nimport * as React from 'react';\nimport { Checkbox } from '@patternfly/react-core';\nimport { CheckboxFieldProps } from './field-types';\nimport ToggleableFieldBase from './ToggleableFieldBase';\n\nconst CheckboxField: React.FC = (baseProps) => (\n \n {(props) => }\n \n);\n\nexport default CheckboxField;\n","import * as React from 'react';\nimport { StatusComponent as Status } from '@console/dynamic-plugin-sdk';\n\nexport { StatusComponent as Status } from '@console/dynamic-plugin-sdk';\n\nexport const StatusIcon: React.FC = ({ status }) => (\n \n);\n\ntype StatusIconProps = {\n status: string;\n};\n","import * as React from 'react';\nimport { StatusComponentProps } from '@console/dynamic-plugin-sdk';\nimport { WarningStatus } from './statuses';\n\nconst NodeUnschedulableStatus: React.FC = ({\n status,\n title,\n iconOnly,\n noTooltip,\n className,\n}) => {\n const statusProps = { title: title || status, iconOnly, noTooltip, className };\n return ;\n};\n\ntype NodeUnschedulableStatusProps = StatusComponentProps & {\n status: string;\n};\n\nexport default NodeUnschedulableStatus;\n","import * as React from 'react';\nimport { FormGroup, FormHelperText, HelperText, HelperTextItem } from '@patternfly/react-core';\nimport cx from 'classnames';\nimport { useField, useFormikContext, FormikValues } from 'formik';\nimport { Dropdown } from '@console/internal/components/utils';\nimport { useFormikValidationFix } from '../../hooks';\nimport { RedExclamationCircleIcon } from '../status';\nimport { DropdownFieldProps } from './field-types';\nimport { getFieldId } from './field-utils';\n\nconst DropdownField: React.FC = ({ label, helpText, required, ...props }) => {\n const [field, { touched, error }] = useField(props.name);\n const { setFieldValue, setFieldTouched } = useFormikContext();\n const fieldId = getFieldId(props.name, 'dropdown');\n const isValid = !(touched && error);\n const errorMessage = !isValid ? error : '';\n\n useFormikValidationFix(field.value);\n\n return (\n \n {\n props.onChange && props.onChange(value);\n // Validation is automatically done by the useFormikValidationFix above\n setFieldValue(props.name, value, false);\n setFieldTouched(props.name, true, false);\n }}\n />\n\n \n \n {!isValid ? (\n }>\n {errorMessage}\n \n ) : (\n {helpText}\n )}\n \n \n \n );\n};\n\nexport default DropdownField;\n","import * as React from 'react';\nimport { FormGroup } from '@patternfly/react-core';\nimport { FormikValues, useField, useFormikContext } from 'formik';\nimport { DroppableFileInput } from '@console/internal/components/utils/file-input';\nimport { DroppableFileInputFieldProps } from './field-types';\nimport { getFieldId } from './field-utils';\n\nconst DroppableFileInputField: React.FC = ({\n name,\n label,\n helpText,\n onChange,\n}) => {\n const [field] = useField(name);\n const { setFieldValue } = useFormikContext();\n const fieldId = getFieldId(name, 'droppable-input');\n return (\n \n {\n setFieldValue(name, fileData);\n onChange && onChange(fileData);\n }}\n inputFileData={field.value}\n inputFieldHelpText={helpText}\n aria-describedby={helpText ? `${fieldId}-helper` : undefined}\n />\n \n );\n};\n\nexport default DroppableFileInputField;\n","import * as React from 'react';\nimport { FormGroup, FormHelperText, HelperText, HelperTextItem } from '@patternfly/react-core';\nimport { useFormikContext, FormikValues } from 'formik';\nimport * as _ from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { errorModal } from '@console/internal/components/modals';\nimport { NameValueEditor } from '@console/internal/components/utils/name-value-editor';\nimport { SecretModel, ConfigMapModel } from '@console/internal/models';\nimport { k8sGet } from '@console/internal/module/k8s';\nimport { EnvironmentFieldProps } from './field-types';\nimport { getFieldId } from './field-utils';\n\nconst EnvironmentField: React.FC = ({\n label,\n helpText,\n required,\n envs,\n ...props\n}) => {\n const {\n obj: {\n metadata: { namespace },\n },\n } = props;\n const { setFieldValue, values } = useFormikContext();\n const { t } = useTranslation();\n const fieldId = getFieldId(props.name, 'env-input');\n const environmentVariables = React.useMemo(() => {\n return !_.isEmpty(envs) ? envs.map((env) => _.values(env)) : [['', '']];\n }, [envs]);\n const [nameValue, setNameValue] = React.useState(environmentVariables);\n const [configMaps, setConfigMaps] = React.useState({});\n const [secrets, setSecrets] = React.useState({});\n const handleNameValuePairs = React.useCallback(\n ({ nameValuePairs }) => {\n const updatedNameValuePairs = _.compact(\n nameValuePairs.map(([name, value]) => {\n if (_.isObject(value)) {\n return { name, valueFrom: value };\n }\n if (value.length) {\n return { name, value };\n }\n return null;\n }),\n );\n setNameValue(nameValuePairs);\n setFieldValue(props.name, updatedNameValuePairs);\n },\n [props.name, setFieldValue],\n );\n\n React.useEffect(() => {\n if (values.formReloadCount) {\n setNameValue(environmentVariables);\n }\n // this effect only handles reload, so we disable dep on environmentVariables\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [values.formReloadCount]);\n\n React.useEffect(() => {\n Promise.all([k8sGet(ConfigMapModel, null, namespace), k8sGet(SecretModel, null, namespace)])\n .then(([nsConfigMaps, nsSecrets]) => {\n setConfigMaps(nsConfigMaps);\n setSecrets(nsSecrets);\n })\n .catch(async (err) => {\n if (err?.response?.status !== 403) {\n try {\n await errorModal({ error: err?.message });\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n });\n }, [namespace]);\n\n return (\n \n \n\n \n \n {helpText}\n \n \n \n );\n};\n\nexport default EnvironmentField;\n","import * as React from 'react';\nimport {\n FormGroup,\n FormHelperText,\n FormSelect,\n FormSelectOption,\n HelperText,\n HelperTextItem,\n} from '@patternfly/react-core';\nimport { useField, useFormikContext, FormikValues } from 'formik';\nimport { useFormikValidationFix } from '../../hooks';\nimport { RedExclamationCircleIcon } from '../status';\nimport { FormSelectFieldOption, FormSelectFieldProps } from './field-types';\nimport { getFieldId } from './field-utils';\n\nconst FormSelectField: React.FC = ({\n label,\n helpText,\n required,\n options,\n ...props\n}) => {\n const [field, { touched, error }] = useField(props.name);\n const { setFieldValue, setFieldTouched } = useFormikContext();\n const fieldId = getFieldId(props.name, 'dropdown');\n const isValid = !(touched && error);\n const errorMessage = !isValid ? error : '';\n\n useFormikValidationFix(field.value);\n\n // PF bug workaround\n // Return to field.value when fixed: https://github.com/patternfly/patternfly-react/issues/5687\n const hasSelectedOption: boolean = options.some(({ value }) => field.value === value);\n const placeholderOption: FormSelectFieldOption = options.find(\n ({ isPlaceholder }) => isPlaceholder,\n );\n const safeValue: string = hasSelectedOption\n ? field.value\n : placeholderOption\n ? placeholderOption.value\n : field.value;\n\n return (\n \n {\n props.onChange && props.onChange(value);\n // Validation is automatically done by the useFormikValidationFix above\n setFieldValue(props.name, value, false);\n setFieldTouched(props.name, true, false);\n }}\n value={safeValue}\n >\n {options.map((option) => (\n \n ))}\n \n\n \n \n {!isValid ? (\n }>\n {errorMessage}\n \n ) : (\n {helpText}\n )}\n \n \n \n );\n};\n\nexport default FormSelectField;\n","import * as React from 'react';\nimport {\n FormGroup,\n FormHelperText,\n HelperText,\n HelperTextItem,\n gridItemSpanValueShape,\n} from '@patternfly/react-core';\nimport { FieldArray, useFormikContext, FormikValues } from 'formik';\nimport * as _ from 'lodash';\nimport { useFormikValidationFix } from '../../../hooks/formik-validation-fix';\nimport SecondaryStatus from '../../status/SecondaryStatus';\nimport { MultiColumnFieldProps } from '../field-types';\nimport { getSpans } from './multicolumn-field-utils';\nimport MultiColumnFieldFooter from './MultiColumnFieldFooter';\nimport MultiColumnFieldHeader from './MultiColumnFieldHeader';\nimport MultiColumnFieldRow from './MultiColumnFieldRow';\nimport './MultiColumnField.scss';\n\nconst MultiColumnField: React.FC = ({\n children,\n name,\n label,\n helpText,\n required,\n addLabel,\n headers,\n emptyValues,\n emptyMessage,\n isReadOnly,\n disableDeleteRow,\n tooltipDeleteRow,\n disableAddRow,\n tooltipAddRow,\n spans,\n complexFields,\n rowRenderer,\n ...props\n}) => {\n const { values } = useFormikContext();\n const fieldValue = _.get(values, name, []);\n const totalFieldCount: gridItemSpanValueShape = React.Children.count(\n children,\n ) as gridItemSpanValueShape;\n const fieldSpans = spans || getSpans(totalFieldCount);\n useFormikValidationFix(fieldValue);\n return (\n {\n return (\n \n {fieldValue.length < 1 ? (\n emptyMessage && (\n
    \n \n
    \n )\n ) : (\n \n )}\n {fieldValue.length > 0 &&\n fieldValue.map((value, index) => (\n remove(index)}\n >\n {children}\n \n ))}\n {!isReadOnly && (\n push(emptyValues)}\n />\n )}\n\n \n \n {helpText}\n \n \n \n );\n }}\n />\n );\n};\n\nexport default MultiColumnField;\n","import * as React from 'react';\nimport { FormGroup, FormHelperText, HelperText, HelperTextItem } from '@patternfly/react-core';\nimport { useField, useFormikContext, FormikValues } from 'formik';\nimport { NsDropdown } from '@console/internal/components/utils';\nimport { useFormikValidationFix } from '../../hooks';\nimport { RedExclamationCircleIcon } from '../status';\nimport { DropdownFieldProps } from './field-types';\nimport { getFieldId } from './field-utils';\n\nconst NSDropdownField: React.FC = ({\n label,\n helpText,\n required,\n fullWidth,\n ...props\n}) => {\n const [field, { touched, error }] = useField(props.name);\n const { setFieldValue, setFieldTouched } = useFormikContext();\n const fieldId = getFieldId(props.name, 'ns-dropdown');\n const isValid = !(touched && error);\n const errorMessage = !isValid ? error : '';\n\n useFormikValidationFix(field.value);\n\n return (\n \n {\n setFieldValue(props.name, value);\n setFieldTouched(props.name, true);\n }}\n />\n\n \n \n {!isValid ? (\n }>\n {errorMessage}\n \n ) : (\n {helpText}\n )}\n \n \n \n );\n};\n\nexport default NSDropdownField;\n","import * as React from 'react';\nimport { FormGroup, FormHelperText, HelperText, HelperTextItem } from '@patternfly/react-core';\nimport { useField, useFormikContext, FormikValues } from 'formik';\nimport * as _ from 'lodash';\nimport { NumberSpinner } from '@console/internal/components/utils';\nimport { useFormikValidationFix } from '../../hooks';\nimport { RedExclamationCircleIcon } from '../status';\nimport { FieldProps } from './field-types';\nimport { getFieldId } from './field-utils';\n\ninterface NumberSpinnerFieldProps extends FieldProps {\n setOutputAsIntegerFlag?: boolean;\n}\n\nconst NumberSpinnerField: React.FC = ({\n label,\n helpText,\n required,\n ...props\n}) => {\n const [field, { touched, error }] = useField(props.name);\n const { setFieldValue, setFieldTouched } = useFormikContext();\n const fieldId = getFieldId(props.name, 'number-spinner');\n const isValid = !(touched && error);\n const errorMessage = !isValid ? error : '';\n\n useFormikValidationFix(field.value);\n\n const handleChange: React.ReactEventHandler = React.useCallback(\n (event) => {\n field.onChange(event);\n setFieldValue(\n props.name,\n props?.setOutputAsIntegerFlag\n ? _.toInteger(event.currentTarget.value)\n : event.currentTarget.value,\n );\n },\n [field, props.name, setFieldValue, props?.setOutputAsIntegerFlag],\n );\n\n return (\n \n {\n setFieldValue(props.name, _.toInteger(field.value) + operation);\n setFieldTouched(props.name, true);\n }}\n aria-describedby={helpText ? `${fieldId}-helper` : undefined}\n />\n\n \n \n {!isValid ? (\n }>\n {errorMessage}\n \n ) : (\n {helpText}\n )}\n \n \n \n );\n};\n\nexport default NumberSpinnerField;\n","import * as React from 'react';\nimport { FormGroup, FormHelperText, HelperText, HelperTextItem } from '@patternfly/react-core';\nimport cx from 'classnames';\nimport { useField, useFormikContext, FormikValues } from 'formik';\nimport { Firehose, FirehoseResource } from '@console/internal/components/utils';\nimport { K8sResourceKind } from '@console/internal/module/k8s';\nimport { useFormikValidationFix } from '../../hooks';\nimport ResourceDropdown, { ResourceDropdownItems } from '../dropdown/ResourceDropdown';\nimport { RedExclamationCircleIcon } from '../status';\nimport { DropdownFieldProps } from './field-types';\nimport { getFieldId } from './field-utils';\n\nexport interface ResourceDropdownFieldProps extends DropdownFieldProps {\n dataSelector: string[] | number[] | symbol[];\n resources: FirehoseResource[];\n showBadge?: boolean;\n onLoad?: (items: ResourceDropdownItems) => void;\n onChange?: (key: string, name?: string | object, resource?: K8sResourceKind) => void;\n resourceFilter?: (resource: K8sResourceKind) => boolean;\n autoSelect?: boolean;\n placeholder?: string;\n actionItems?: {\n actionTitle: string;\n actionKey: string;\n }[];\n appendItems?: ResourceDropdownItems;\n customResourceKey?: (key: string, resource: K8sResourceKind) => string;\n dataTest?: string;\n menuClassName?: string;\n}\n\nconst ResourceDropdownField: React.FC = ({\n label,\n helpText,\n required,\n fullWidth,\n dataSelector,\n resources,\n onLoad,\n resourceFilter,\n dataTest,\n ...props\n}) => {\n const [field, { touched, error }] = useField(props.name);\n const { setFieldValue, setFieldTouched } = useFormikContext();\n const fieldId = getFieldId(props.name, 'ns-dropdown');\n const isValid = !(touched && error);\n const errorMessage = !isValid ? error : '';\n\n useFormikValidationFix(field.value);\n\n return (\n \n \n {\n props.onChange && props.onChange(value, name, resource);\n setFieldValue(props.name, value);\n setFieldTouched(props.name, true);\n }}\n />\n \n\n \n \n {!isValid ? (\n }>\n {errorMessage}\n \n ) : (\n {helpText}\n )}\n \n \n \n );\n};\n\nexport default ResourceDropdownField;\n","import * as React from 'react';\nimport { FormGroup, FormHelperText, HelperText, HelperTextItem } from '@patternfly/react-core';\nimport { useField, useFormikContext, FormikValues } from 'formik';\nimport { RequestSizeInput } from '@console/internal/components/utils';\nimport { useFormikValidationFix } from '../../hooks';\nimport { RedExclamationCircleIcon } from '../status';\nimport { ResourceLimitFieldProps } from './field-types';\nimport { getFieldId } from './field-utils';\n\nconst ResourceLimitField: React.FC = ({\n label,\n unitName,\n unitOptions,\n helpText,\n ...props\n}) => {\n const [field, { touched, error }] = useField(props.name);\n const [fieldUnit] = useField(unitName);\n const { setFieldValue, setFieldTouched } = useFormikContext();\n const fieldId = getFieldId(props.name, 'resource-limit');\n const isValid = !(touched && error);\n const errorMessage = !isValid ? error : '';\n\n useFormikValidationFix(field.value);\n\n return (\n \n {\n setFieldValue(props.name, val.value);\n setFieldTouched(props.name, true);\n setFieldValue(unitName, val.unit);\n }}\n dropdownUnits={unitOptions}\n defaultRequestSizeUnit={fieldUnit.value}\n defaultRequestSizeValue={field.value}\n describedBy={`${fieldId}-helper`}\n />\n\n \n \n {!isValid ? (\n }>\n {errorMessage}\n \n ) : (\n {helpText}\n )}\n \n \n \n );\n};\n\nexport default ResourceLimitField;\n","import * as React from 'react';\nimport { Switch } from '@patternfly/react-core';\nimport { CheckboxFieldProps } from './field-types';\nimport ToggleableFieldBase from './ToggleableFieldBase';\n\nconst SwitchField: React.FC = (baseProps) => (\n \n {({ isValid, ...props }) => }\n \n);\n\nexport default SwitchField;\n","import * as React from 'react';\nimport {\n FormGroup,\n FormHelperText,\n HelperText,\n HelperTextItem,\n TextArea,\n} from '@patternfly/react-core';\nimport { useField } from 'formik';\nimport { RedExclamationCircleIcon } from '../status';\nimport { TextAreaProps } from './field-types';\nimport { getFieldId } from './field-utils';\n\nconst TextAreaField: React.FC = (\n { label, helpText, required, onChange, ...props },\n ref,\n) => {\n const [field, { touched, error }] = useField(props.name);\n const fieldId = getFieldId(props.name, 'input');\n const isValid = !(touched && error);\n const errorMessage = !isValid ? error : '';\n\n return (\n \n {\n onChange && onChange(value);\n field.onChange(event);\n }}\n />\n\n \n \n {!isValid ? (\n }>\n {errorMessage}\n \n ) : (\n {helpText}\n )}\n \n \n \n );\n};\n\nexport default React.forwardRef(TextAreaField);\n","import * as React from 'react';\nimport { Button } from '@patternfly/react-core';\nimport { InfoCircleIcon } from '@patternfly/react-icons/dist/esm/icons/info-circle-icon';\nimport { FormikValues, useField, useFormikContext } from 'formik';\nimport { isEmpty } from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport {\n useResolvedExtensions,\n isYAMLTemplate,\n YAMLTemplate,\n WatchK8sResource,\n} from '@console/dynamic-plugin-sdk';\nimport { AsyncComponent } from '@console/internal/components/utils';\nimport { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';\nimport { ConsoleYAMLSampleModel } from '@console/internal/models';\nimport { getYAMLTemplates } from '@console/internal/models/yaml-templates';\nimport { definitionFor, K8sResourceCommon, referenceForModel } from '@console/internal/module/k8s';\nimport { getResourceSidebarSamples } from '../../utils';\nimport { CodeEditorFieldProps } from './field-types';\n\nimport './CodeEditorField.scss';\n\nconst SampleResource: WatchK8sResource = {\n kind: referenceForModel(ConsoleYAMLSampleModel),\n isList: true,\n};\n\nconst CodeEditorField: React.FC = ({\n name,\n label,\n model,\n schema,\n showSamples,\n showShortcuts,\n showMiniMap,\n minHeight,\n onSave,\n language,\n}) => {\n const [field] = useField(name);\n const { setFieldValue } = useFormikContext();\n const { t } = useTranslation();\n const editorRef = React.useRef();\n\n const [sidebarOpen, setSidebarOpen] = React.useState(true);\n\n const [sampleResources, loaded, loadError] = useK8sWatchResource(\n SampleResource,\n );\n\n const { samples, snippets } = model\n ? getResourceSidebarSamples(\n model,\n {\n data: sampleResources,\n loaded,\n loadError,\n },\n t,\n )\n : { samples: [], snippets: [] };\n\n const definition = model ? definitionFor(model) : { properties: [] };\n const hasSchema = !!schema || (!!definition && !isEmpty(definition.properties));\n const hasSidebarContent = hasSchema || (showSamples && !isEmpty(samples)) || !isEmpty(snippets);\n\n const [templateExtensions] = useResolvedExtensions(isYAMLTemplate);\n\n const sanitizeYamlContent = React.useCallback(\n (id: string = 'default', yaml: string = '', kind: string) => {\n if (yaml) {\n return yaml;\n }\n const yamlByExtension: string = getYAMLTemplates(\n templateExtensions?.filter((e) => e.properties.model.kind === kind),\n ).getIn([kind, id]);\n return yamlByExtension?.trim() || '';\n },\n [templateExtensions],\n );\n\n return (\n
    \n
    \n import('../editor/CodeEditor').then((c) => c.default)}\n forwardRef={editorRef}\n value={field.value}\n minHeight={minHeight ?? '200px'}\n onChange={(yaml: string) => setFieldValue(name, yaml)}\n onSave={onSave}\n showShortcuts={showShortcuts}\n showMiniMap={showMiniMap}\n language={language}\n toolbarLinks={\n !sidebarOpen &&\n hasSidebarContent && [\n ,\n ]\n }\n />\n
    \n {sidebarOpen && hasSidebarContent && (\n
    \n import('../editor/CodeEditorSidebar').then((c) => c.default)}\n editorRef={editorRef}\n model={model}\n schema={schema}\n samples={showSamples ? samples : []}\n snippets={snippets}\n sanitizeYamlContent={sanitizeYamlContent}\n sidebarLabel={label}\n toggleSidebar={() => setSidebarOpen(!sidebarOpen)}\n />\n
    \n )}\n
    \n );\n};\n\nexport default CodeEditorField;\n","import * as React from 'react';\nimport {\n FormGroup,\n EmptyState,\n Button,\n TextInput,\n EmptyStateBody,\n EmptyStateActions,\n EmptyStateHeader,\n EmptyStateFooter,\n FormHelperText,\n HelperText,\n HelperTextItem,\n} from '@patternfly/react-core';\nimport { useField, useFormikContext, FormikValues } from 'formik';\nimport * as fuzzy from 'fuzzysearch';\nimport * as _ from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { LoadingInline } from '@console/internal/components/utils';\nimport { useDebounceCallback } from '../../../hooks/debounce';\nimport { RedExclamationCircleIcon } from '../../status';\nimport { getFieldId } from '../field-utils';\nimport SelectorCard from './SelectorCard';\nimport './ItemSelectorField.scss';\n\ninterface Item {\n name: string;\n title: string;\n displayName?: string;\n iconUrl?: string;\n}\n\ninterface NormalizedItem {\n [item: string]: Item;\n}\n\ninterface ItemSelectorFieldProps {\n itemList: NormalizedItem;\n name: string;\n loadingItems?: boolean;\n recommended?: string;\n label?: string;\n autoSelect?: boolean;\n onSelect?: (name: string) => void;\n showIfSingle?: boolean;\n showFilter?: boolean;\n showCount?: boolean;\n emptyStateMessage?: string;\n}\n\nconst ItemSelectorField: React.FC = ({\n itemList,\n name,\n loadingItems,\n recommended,\n onSelect,\n label,\n autoSelect,\n showIfSingle = false,\n showFilter = false,\n showCount = false,\n emptyStateMessage,\n}) => {\n const { t } = useTranslation();\n const [selected, { error: selectedError, touched: selectedTouched }] = useField(name);\n const { setFieldValue, setFieldTouched, validateForm } = useFormikContext();\n const [filteredList, setFilteredList] = React.useState(itemList);\n const [filterText, setFilterText] = React.useState('');\n const itemCount = _.keys(filteredList).length;\n\n const handleItemChange = React.useCallback(\n (item: string) => {\n setFieldValue(name, item);\n setFieldTouched(name, true);\n validateForm();\n onSelect && onSelect(item);\n },\n [name, setFieldValue, setFieldTouched, validateForm, onSelect],\n );\n\n React.useEffect(() => {\n if (!selected.value && _.keys(itemList).length === 1) {\n const image = _.find(filteredList);\n handleItemChange(image.name);\n }\n if (!selected.value && recommended) {\n handleItemChange(recommended);\n setFieldTouched(name, false);\n }\n if (!selected.value && autoSelect && !_.isEmpty(filteredList)) {\n const image = _.get(_.keys(filteredList), 0);\n handleItemChange(filteredList[image]?.name);\n }\n }, [\n autoSelect,\n itemList,\n filteredList,\n handleItemChange,\n selected.value,\n recommended,\n name,\n setFieldTouched,\n ]);\n\n const filterSources = React.useCallback(\n (text: string) => {\n const subList = _.pickBy(itemList, (val) =>\n fuzzy(text.toLowerCase(), val.title.toLowerCase()),\n );\n if (selected.value) {\n subList[selected.value] = itemList[selected.value];\n }\n setFilteredList(subList);\n },\n [itemList, selected.value],\n );\n\n const debounceFilterText = useDebounceCallback<(text: string) => void>(filterSources);\n\n const handleFilterChange = (_event, text: string) => {\n setFilterText(text);\n debounceFilterText(text);\n };\n\n const handleClearFilter = () => {\n setFilterText('');\n filterSources('');\n };\n\n if (!showIfSingle && itemCount === 1) {\n return null;\n }\n\n const fieldId = getFieldId(name, 'itemselector');\n const isValid = !(selectedTouched && selectedError);\n const errorMessage = !isValid ? selectedError : '';\n\n return (\n \n {loadingItems ? (\n \n ) : (\n <>\n {showFilter && (\n
    \n \n {showCount && (\n \n {t('console-shared~{{count}} item', { count: itemCount })}\n \n )}\n
    \n )}\n {showFilter && itemCount === 0 ? (\n \n {t('console-shared~No results match the filter criteria')}}\n headingLevel=\"h2\"\n />\n \n {emptyStateMessage && {emptyStateMessage}}\n \n \n \n \n \n ) : (\n \n {_.values(filteredList).map((item) => (\n \n ))}\n
    \n )}\n \n )}\n\n {!isValid && (\n \n \n }>\n {errorMessage}\n \n \n \n )}\n \n );\n};\n\nexport default ItemSelectorField;\n","import * as React from 'react';\nimport { InputGroup, TextInput, TextArea, InputGroupItem } from '@patternfly/react-core';\nimport BaseInputField from './BaseInputField';\nimport { GroupInputProps, GroupTextType } from './field-types';\n\nconst InputGroupField: React.FC = ({\n beforeInput,\n afterInput,\n groupTextType,\n ...baseProps\n}) => {\n return (\n \n {(props) => {\n return (\n \n {beforeInput}\n \n {groupTextType === GroupTextType.TextArea ? (\n