From 41f431ee63515890309c472d98835001f79b2465 Mon Sep 17 00:00:00 2001 From: Radoslaw Szwajkowski Date: Thu, 8 Oct 2026 20:01:24 +0200 Subject: [PATCH] OCPNETUI-179: Migrate to @openshift/api-types Reference-Url: https://www.npmjs.com/package/@openshift/api-types Signed-off-by: Radoslaw Szwajkowski --- .eslintrc.json | 2 +- package-lock.json | 15 +- package.json | 2 +- src/templates/ingress.ts | 2 +- src/templates/nads.ts | 2 +- src/templates/route.ts | 2 +- src/templates/service.ts | 2 +- src/utils/hooks/useClusterNetworkFeatures.ts | 4 +- src/utils/models/index.ts | 61 +++++- src/utils/models/k8sModels.ts | 180 ++++++++++++++++++ src/utils/models/network-policy.ts | 28 ++- src/utils/resources/networkpolicies/utils.ts | 2 +- src/utils/types/k8sTypes.ts | 51 +++++ .../createprojectmodal/CreateProjectModal.tsx | 2 +- src/views/createprojectmodal/useClusterUDN.ts | 4 +- .../ingresses/actions/IngressActions.tsx | 4 +- .../actions/hooks/useIngressActions.ts | 6 +- .../ingresses/details/IngressDetailsPage.tsx | 8 +- .../components/IngressDetailsPageTitle.tsx | 8 +- .../tabs/details/IngressDetailsTab.tsx | 4 +- .../IngressDetailsSection.tsx | 6 +- .../IngressDetailsSection/TLSCert.tsx | 6 +- .../IngressRulesSection.tsx | 4 +- .../IngressRulesSection/RulesRow.tsx | 2 +- .../IngressRulesSection/RulesRows.tsx | 4 +- .../details/tabs/details/utils/utils.ts | 4 +- .../details/tabs/yaml/IngressYAMLTab.tsx | 4 +- src/views/ingresses/list/IngressesList.tsx | 14 +- .../list/components/IngressTableRow.tsx | 6 +- .../list/hooks/useIngressColumns.tsx | 8 +- src/views/ingresses/list/utils/utils.ts | 31 ++- .../nads/actions/hooks/useNADsActions.tsx | 4 +- .../form/NetworkAttachmentDefinitionForm.tsx | 2 +- .../SriovParameters/SriovParameters.tsx | 2 +- src/views/nads/form/hooks/useNetworkModels.ts | 4 +- src/views/nads/form/hooks/useOVNK8sNetwork.ts | 4 +- src/views/nads/form/utils/constants.ts | 2 +- src/views/nads/form/utils/utils.ts | 2 +- .../list/NetworkAttachmentDefinitionList.tsx | 7 +- .../components/NADListEmpty/NADListEmpty.tsx | 6 +- .../nads/list/components/NADsRow/NADsRow.tsx | 9 +- .../actions/NetworkPolicyActions.tsx | 4 +- .../actions/hooks/useNetworkPolicyActions.tsx | 9 +- .../details/NetworkPolicyDetailsPage.tsx | 8 +- .../NetworkPolicyDetailsPageTitle.tsx | 11 +- .../tabs/details/NetworkPolicyDetails.tsx | 4 +- .../NetworkPolicyDetailsIngress.tsx | 4 +- .../NetworkPolicyDetailsMetadata.tsx | 10 +- .../details/tabs/yaml/NetworkPolicyYAML.tsx | 4 +- .../networkpolicies/list/EnableMultiPage.tsx | 8 +- .../list/MultiNetworkPolicyList.tsx | 14 +- .../list/NetworkPolicyList.tsx | 14 +- .../list/NetworkPolicyPage.tsx | 4 +- .../components/NetworkPolicyEmptyState.tsx | 2 +- .../list/components/NetworkPolicyRow.tsx | 13 +- .../list/hooks/useIsMultiEnabled.tsx | 4 +- .../list/hooks/useNetworkPolicyColumn.tsx | 14 +- src/views/networkpolicies/list/utils.ts | 6 +- .../networkpolicies/new/NADsSelector.tsx | 2 +- .../networkpolicies/new/NetworkPolicyForm.tsx | 2 +- .../new/NetworkPolicyFormSections.tsx | 8 +- .../components/NetworkPolicyPodsPreview.tsx | 8 +- .../hooks/useNetworkPolicyPodPreviewData.ts | 8 +- .../routes/actions/hooks/useRouteActions.ts | 6 +- src/views/routes/details/EditRoute.tsx | 4 +- src/views/routes/details/RouteDetailsPage.tsx | 4 +- .../RouteDetailsPageTitle.tsx | 4 +- .../DetailsSectionLeftColumn.tsx | 2 +- src/views/routes/form/AlternateService.tsx | 4 +- .../routes/form/AlternateServicesSection.tsx | 4 +- src/views/routes/form/RouteForm.tsx | 2 +- src/views/routes/form/RouteFormPage.tsx | 2 +- src/views/routes/form/ServiceSelector.tsx | 4 +- src/views/routes/form/Targetport.tsx | 4 +- src/views/routes/form/constants.ts | 4 +- src/views/routes/form/utils.ts | 2 +- src/views/routes/list/RoutesList.tsx | 6 +- src/views/routes/list/components/RouteRow.tsx | 2 +- .../routes/list/hooks/useRouteColumns.ts | 2 +- src/views/services/actions/ServiceActions.tsx | 4 +- .../actions/hooks/useServiceActions.tsx | 10 +- .../services/details/ServiceDetailsPage.tsx | 8 +- .../components/ServiceDetailsPageTitle.tsx | 8 +- .../details/tabs/details/ServiceAddress.tsx | 4 +- .../details/tabs/details/ServiceDetails.tsx | 8 +- .../details/tabs/pods/ServicePods.tsx | 15 +- .../details/tabs/pods/components/PodRow.tsx | 10 +- .../tabs/pods/components/PodStatus.tsx | 11 +- .../details/tabs/pods/hooks/usePodColumns.tsx | 31 +-- .../details/tabs/pods/hooks/usePodFilters.tsx | 4 +- src/views/services/details/tabs/pods/utils.ts | 71 +++---- .../details/tabs/yaml/ServiceYAML.tsx | 4 +- src/views/services/list/ServiceList.tsx | 14 +- .../list/components/ServiceLocation.tsx | 4 +- .../services/list/components/ServiceRow.tsx | 6 +- .../services/list/hooks/useServiceColumn.tsx | 8 +- .../list/components/UserDefinedNetworkRow.tsx | 4 +- src/views/udns/list/constants.ts | 4 +- webpack.config.ts | 2 +- 99 files changed, 610 insertions(+), 357 deletions(-) create mode 100644 src/utils/models/k8sModels.ts create mode 100644 src/utils/types/k8sTypes.ts diff --git a/.eslintrc.json b/.eslintrc.json index 2d8e0046..927b6118 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -64,7 +64,7 @@ ], "react/display-name": "off", "react/prop-types": "off", - "simple-import-sort/exports": "error", + "simple-import-sort/exports": "off", "simple-import-sort/imports": [ "warn", { diff --git a/package-lock.json b/package-lock.json index 56825935..84c50213 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "0.0.1", "license": "Apache-2.0", "dependencies": { - "@kubevirt-ui/kubevirt-api": "^1.4.2", "@openshift-console/dynamic-plugin-sdk": "4.19.1", "@openshift-console/dynamic-plugin-sdk-internal": "4.19.0", "@patternfly/quickstarts": "6.4.0", @@ -59,6 +58,7 @@ "devDependencies": { "@cypress/webpack-preprocessor": "^5.15.5", "@openshift-console/dynamic-plugin-sdk-webpack": "4.19.0", + "@openshift/api-types": "1.0.0", "@openshift/dynamic-plugin-sdk-webpack": "4.0.2", "@types/js-yaml": "^4.0.9", "@types/node": "^18.0.0", @@ -3019,12 +3019,6 @@ "tslib": "2" } }, - "node_modules/@kubevirt-ui/kubevirt-api": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@kubevirt-ui/kubevirt-api/-/kubevirt-api-1.4.2.tgz", - "integrity": "sha512-7t15bvfqYTG+bVrVx8YhpRRVcnqXutRI9+OfUdTm/t9X9HDn9Mnm4ID26I+sVW6ML5SfF533mNugi8FuN2/L2g==", - "license": "Apache-2.0" - }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", @@ -3145,6 +3139,13 @@ "typescript": ">=5.7.2" } }, + "node_modules/@openshift/api-types": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@openshift/api-types/-/api-types-1.0.0.tgz", + "integrity": "sha512-LUWH0raMvKQUN63inYmA8+73iKAwLPDYqkTKncSoHEgjZ2YNvuqvcyHOvLkczFdx9ALWuAU9NIMatjGJ9zpe6w==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/@openshift/dynamic-plugin-sdk-webpack": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@openshift/dynamic-plugin-sdk-webpack/-/dynamic-plugin-sdk-webpack-4.0.2.tgz", diff --git a/package.json b/package.json index 96d02dbb..0b64880e 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,6 @@ "shared-modules:sync": "./scripts/align-shared-modules.sh" }, "dependencies": { - "@kubevirt-ui/kubevirt-api": "^1.4.2", "@openshift-console/dynamic-plugin-sdk": "4.19.1", "@openshift-console/dynamic-plugin-sdk-internal": "4.19.0", "@patternfly/quickstarts": "6.4.0", @@ -78,6 +77,7 @@ }, "devDependencies": { "@cypress/webpack-preprocessor": "^5.15.5", + "@openshift/api-types": "1.0.0", "@openshift-console/dynamic-plugin-sdk-webpack": "4.19.0", "@openshift/dynamic-plugin-sdk-webpack": "4.0.2", "@types/js-yaml": "^4.0.9", diff --git a/src/templates/ingress.ts b/src/templates/ingress.ts index 98f5aa99..68e5e891 100644 --- a/src/templates/ingress.ts +++ b/src/templates/ingress.ts @@ -1,4 +1,4 @@ -import { IngressModel } from '@kubevirt-ui/kubevirt-api/console'; +import { IngressModel } from '@utils/models'; export const IngressYAMLTemplates = ` apiVersion: ${IngressModel.apiGroup}/${IngressModel.apiVersion} diff --git a/src/templates/nads.ts b/src/templates/nads.ts index 1bf0cd77..3972e3fc 100644 --- a/src/templates/nads.ts +++ b/src/templates/nads.ts @@ -1,4 +1,4 @@ -import NetworkAttachmentDefinitionModel from '@kubevirt-ui/kubevirt-api/console/models/NetworkAttachmentDefinitionModel'; +import { NetworkAttachmentDefinitionModel } from '@utils/models'; export const NetworkAttachmentDefinitionsYAMLTemplates = ` apiVersion: ${NetworkAttachmentDefinitionModel.apiGroup}/${NetworkAttachmentDefinitionModel.apiVersion} diff --git a/src/templates/route.ts b/src/templates/route.ts index 36a99eb5..86fa6cc4 100644 --- a/src/templates/route.ts +++ b/src/templates/route.ts @@ -1,4 +1,4 @@ -import { RouteModel } from '@kubevirt-ui/kubevirt-api/console'; +import { RouteModel } from '@utils/models'; export const RouteYAMLTemplates = ` apiVersion: ${RouteModel.apiGroup}/${RouteModel.apiVersion} diff --git a/src/templates/service.ts b/src/templates/service.ts index 053bea7f..2576e143 100644 --- a/src/templates/service.ts +++ b/src/templates/service.ts @@ -1,4 +1,4 @@ -import { ServiceModel } from '@kubevirt-ui/kubevirt-api/console'; +import { ServiceModel } from '@utils/models'; export const ServiceYAMLTemplates = ` apiVersion: ${ServiceModel.apiVersion} diff --git a/src/utils/hooks/useClusterNetworkFeatures.ts b/src/utils/hooks/useClusterNetworkFeatures.ts index f6f5a631..f37696e1 100644 --- a/src/utils/hooks/useClusterNetworkFeatures.ts +++ b/src/utils/hooks/useClusterNetworkFeatures.ts @@ -1,7 +1,7 @@ import { useEffect, useState } from 'react'; -import { ConfigMapModel, modelToGroupVersionKind } from '@kubevirt-ui/kubevirt-api/console'; import { K8sResourceKind, useK8sWatchResource } from '@openshift-console/dynamic-plugin-sdk'; +import { ConfigMapModel, getGroupVersionKindForModel } from '@utils/models'; const networkConfigMapName = 'openshift-network-features'; const networkConfigMapNamespace = 'openshift-config-managed'; @@ -37,7 +37,7 @@ export const useClusterNetworkFeatures = (): [ClusterNetworkFeatures, boolean] = const [featuresLoaded, setFeaturesLoaded] = useState(false); const [config, configLoaded] = useK8sWatchResource({ - groupVersionKind: modelToGroupVersionKind(ConfigMapModel), + groupVersionKind: getGroupVersionKindForModel(ConfigMapModel), name: networkConfigMapName, namespace: networkConfigMapNamespace, }); diff --git a/src/utils/models/index.ts b/src/utils/models/index.ts index 2fa964cb..60c81b2b 100644 --- a/src/utils/models/index.ts +++ b/src/utils/models/index.ts @@ -1,6 +1,12 @@ +export * from './k8sModels'; export * from './network-policy'; -import { modelToGroupVersionKind, modelToRef } from '@kubevirt-ui/kubevirt-api/console'; + +import { getGroupVersionKindForModel } from '@openshift-console/dynamic-plugin-sdk'; import { K8sModel } from '@openshift-console/dynamic-plugin-sdk'; +import { getReferenceForModel } from '@utils/resources/shared'; + +export { getGroupVersionKindForModel } from '@openshift-console/dynamic-plugin-sdk'; +export { getReferenceForModel } from '@utils/resources/shared'; export const QuickStartModel: K8sModel = { abbr: 'CQS', @@ -76,8 +82,8 @@ export const UserDefinedNetworkModel: K8sModel = { }; export const UserDefinedNetworkModelGroupVersionKind = - modelToGroupVersionKind(UserDefinedNetworkModel); -export const UserDefinedNetworkModelRef = modelToRef(UserDefinedNetworkModel); + getGroupVersionKindForModel(UserDefinedNetworkModel); +export const UserDefinedNetworkModelRef = getReferenceForModel(UserDefinedNetworkModel); export const ClusterUserDefinedNetworkModel: K8sModel = { abbr: 'CUDN', @@ -96,7 +102,52 @@ export const ClusterUserDefinedNetworkModel: K8sModel = { plural: 'clusteruserdefinednetworks', }; -export const ClusterUserDefinedNetworkModelGroupVersionKind = modelToGroupVersionKind( +export const ClusterUserDefinedNetworkModelGroupVersionKind = getGroupVersionKindForModel( + ClusterUserDefinedNetworkModel, +); +export const ClusterUserDefinedNetworkModelRef = getReferenceForModel( ClusterUserDefinedNetworkModel, ); -export const ClusterUserDefinedNetworkModelRef = modelToRef(ClusterUserDefinedNetworkModel); + +export const NetworkAttachmentDefinitionModelGroupVersionKind = getGroupVersionKindForModel( + // Avoid circular: import directly + { + abbr: 'NAD', + apiGroup: 'k8s.cni.cncf.io', + apiVersion: 'v1', + kind: 'NetworkAttachmentDefinition', + label: 'Network Attachment Definition', + labelPlural: 'Network Attachment Definitions', + plural: 'network-attachment-definitions', + }, +); + +export const NetworkAttachmentDefinitionModelRef = getReferenceForModel({ + abbr: 'NAD', + apiGroup: 'k8s.cni.cncf.io', + apiVersion: 'v1', + kind: 'NetworkAttachmentDefinition', + label: 'Network Attachment Definition', + labelPlural: 'Network Attachment Definitions', + plural: 'network-attachment-definitions', +}); + +export const SriovNetworkNodePolicyModelRef = getReferenceForModel({ + abbr: 'SRNNPM', + apiGroup: 'sriovnetwork.openshift.io', + apiVersion: 'v1', + kind: 'SriovNetworkNodePolicy', + label: 'SriovNetworkNodePolicy', + labelPlural: 'SriovNetworkNodePolicies', + plural: 'sriovnetworknodepolicies', +}); + +export const HyperConvergedModelRef = getReferenceForModel({ + abbr: 'HC', + apiGroup: 'hco.kubevirt.io', + apiVersion: 'v1beta1', + kind: 'HyperConverged', + label: 'HyperConverged', + labelPlural: 'HyperConvergeds', + plural: 'hyperconvergeds', +}); diff --git a/src/utils/models/k8sModels.ts b/src/utils/models/k8sModels.ts new file mode 100644 index 00000000..84969e97 --- /dev/null +++ b/src/utils/models/k8sModels.ts @@ -0,0 +1,180 @@ +import { K8sModel } from '@openshift-console/dynamic-plugin-sdk'; + +const NS = 'plugin__networking-console-plugin'; + +export const ServiceModel: K8sModel = { + abbr: 'S', + apiVersion: 'v1', + id: 'service', + kind: 'Service', + label: 'Service', + labelKey: `${NS}~Service`, + labelPlural: 'Services', + labelPluralKey: `${NS}~Services`, + namespaced: true, + plural: 'services', +}; + +export const PodModel: K8sModel = { + abbr: 'P', + apiVersion: 'v1', + id: 'pod', + kind: 'Pod', + label: 'Pod', + labelKey: `${NS}~Pod`, + labelPlural: 'Pods', + labelPluralKey: `${NS}~Pods`, + namespaced: true, + plural: 'pods', +}; + +export const NamespaceModel: K8sModel = { + abbr: 'NS', + apiVersion: 'v1', + id: 'namespace', + kind: 'Namespace', + label: 'Namespace', + labelKey: `${NS}~Namespace`, + labelPlural: 'Namespaces', + labelPluralKey: `${NS}~Namespaces`, + plural: 'namespaces', +}; + +export const ProjectModel: K8sModel = { + abbr: 'PR', + apiGroup: 'project.openshift.io', + apiVersion: 'v1', + id: 'project', + kind: 'Project', + label: 'Project', + labelKey: `${NS}~Project`, + labelPlural: 'Projects', + labelPluralKey: `${NS}~Projects`, + plural: 'projects', +}; + +export const ProjectRequestModel: K8sModel = { + abbr: '', + apiGroup: 'project.openshift.io', + apiVersion: 'v1', + id: 'projectrequest', + kind: 'ProjectRequest', + label: 'ProjectRequest', + labelKey: `${NS}~ProjectRequest`, + labelPlural: 'ProjectRequests', + labelPluralKey: `${NS}~ProjectRequests`, + plural: 'projectrequests', +}; + +export const IngressModel: K8sModel = { + abbr: 'I', + apiGroup: 'networking.k8s.io', + apiVersion: 'v1', + id: 'ingress', + kind: 'Ingress', + label: 'Ingress', + labelKey: `${NS}~Ingress`, + labelPlural: 'Ingresses', + labelPluralKey: `${NS}~Ingresses`, + namespaced: true, + plural: 'ingresses', +}; + +export const RouteModel: K8sModel = { + abbr: 'RT', + apiGroup: 'route.openshift.io', + apiVersion: 'v1', + id: 'route', + kind: 'Route', + label: 'Route', + labelKey: `${NS}~Route`, + labelPlural: 'Routes', + labelPluralKey: `${NS}~Routes`, + namespaced: true, + plural: 'routes', +}; + +export const ConfigMapModel: K8sModel = { + abbr: 'CM', + apiVersion: 'v1', + id: 'configmap', + kind: 'ConfigMap', + label: 'ConfigMap', + labelKey: `${NS}~ConfigMap`, + labelPlural: 'ConfigMaps', + labelPluralKey: `${NS}~ConfigMaps`, + namespaced: true, + plural: 'configmaps', +}; + +export const NetworkPolicyModel: K8sModel = { + abbr: 'NP', + apiGroup: 'networking.k8s.io', + apiVersion: 'v1', + id: 'networkpolicy', + kind: 'NetworkPolicy', + label: 'NetworkPolicy', + labelKey: `${NS}~NetworkPolicy`, + labelPlural: 'NetworkPolicies', + labelPluralKey: `${NS}~NetworkPolicies`, + namespaced: true, + plural: 'networkpolicies', +}; + +export const NetworkAttachmentDefinitionModel: K8sModel = { + abbr: 'NAD', + apiGroup: 'k8s.cni.cncf.io', + apiVersion: 'v1', + crd: true, + id: 'network-attachment-definition', + kind: 'NetworkAttachmentDefinition', + label: 'Network Attachment Definition', + labelKey: `${NS}~Network Attachment Definition`, + labelPlural: 'Network Attachment Definitions', + labelPluralKey: `${NS}~Network Attachment Definitions`, + legacyPluralURL: true, + namespaced: true, + plural: 'network-attachment-definitions', +}; + +export const SriovNetworkNodePolicyModel: K8sModel = { + abbr: 'SRNNPM', + apiGroup: 'sriovnetwork.openshift.io', + apiVersion: 'v1', + crd: true, + id: 'sriov-network-node-policy', + kind: 'SriovNetworkNodePolicy', + label: 'SriovNetworkNodePolicy', + labelKey: `${NS}~SriovNetworkNodePolicy`, + labelPlural: 'SriovNetworkNodePolicies', + labelPluralKey: `${NS}~SriovNetworkNodePolicies`, + namespaced: true, + plural: 'sriovnetworknodepolicies', +}; + +export const SecretModel: K8sModel = { + abbr: 'S', + apiVersion: 'v1', + id: 'secret', + kind: 'Secret', + label: 'Secret', + labelKey: `${NS}~Secret`, + labelPlural: 'Secrets', + labelPluralKey: `${NS}~Secrets`, + namespaced: true, + plural: 'secrets', +}; + +export const HyperConvergedModel: K8sModel = { + abbr: 'HC', + apiGroup: 'hco.kubevirt.io', + apiVersion: 'v1beta1', + crd: true, + kind: 'HyperConverged', + label: 'HyperConverged', + labelKey: `${NS}~HyperConverged`, + labelPlural: 'HyperConvergeds', + labelPluralKey: `${NS}~HyperConvergeds`, + namespaced: true, + plural: 'hyperconvergeds', +}; diff --git a/src/utils/models/network-policy.ts b/src/utils/models/network-policy.ts index e1719eea..a36adf83 100644 --- a/src/utils/models/network-policy.ts +++ b/src/utils/models/network-policy.ts @@ -1,17 +1,13 @@ import * as _ from 'lodash'; -import { NetworkPolicyModel } from '@kubevirt-ui/kubevirt-api/console'; -import { - IoK8sApiNetworkingV1NetworkPolicy, - IoK8sApiNetworkingV1NetworkPolicyIngressRule, - IoK8sApiNetworkingV1NetworkPolicyPort, -} from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { Selector } from '@openshift-console/dynamic-plugin-sdk'; import { t } from '@utils/hooks/useNetworkingTranslation'; +import { NetworkPolicyModel } from '@utils/models'; import { NetworkPolicyPeer as K8SPeer, NetworkPolicyPort as K8SPort, } from '@utils/resources/networkpolicies/types'; +import { NetworkPolicy, NetworkPolicyIngressRule, NetworkPolicyPort } from '@utils/types/k8sTypes'; import { NetworkPolicyEgressIngress } from '@views/networkpolicies/new/utils/types'; import { MultiNetworkPolicyModel } from '.'; @@ -122,8 +118,8 @@ type Rule = { from?: K8SPeer[]; ports?: K8SPort[]; to?: K8SPeer[] }; const ruleToK8s = ( rule: NetworkPolicyRule, direction: NetworkPolicyEgressIngress, -): IoK8sApiNetworkingV1NetworkPolicyIngressRule => { - const res: IoK8sApiNetworkingV1NetworkPolicyIngressRule = {}; +): NetworkPolicyIngressRule => { + const res: NetworkPolicyIngressRule = {}; if (rule.peers.length > 0) { const peers = rule.peers.map((p) => { const peer: K8SPeer = {}; @@ -154,7 +150,7 @@ const ruleToK8s = ( ({ port: p.port, protocol: p.protocol, - }) as IoK8sApiNetworkingV1NetworkPolicyPort, + }) as NetworkPolicyPort, ); } return res; @@ -163,13 +159,13 @@ const ruleToK8s = ( export const networkPolicyToK8sResource = ( from: NetworkPolicy, isMultiNetworkPolicy: boolean, -): IoK8sApiNetworkingV1NetworkPolicy => { +): NetworkPolicy => { const podSelector = selectorToK8s(from.podSelector); const policyTypes: string[] = []; const model = isMultiNetworkPolicy ? MultiNetworkPolicyModel : NetworkPolicyModel; - const res: IoK8sApiNetworkingV1NetworkPolicy = { + const res: NetworkPolicy = { apiVersion: `${model.apiGroup}/${model.apiVersion}`, kind: model.kind, metadata: { @@ -242,8 +238,8 @@ export const checkNetworkPolicyValidity = (from: NetworkPolicy): ConversionError return undefined; }; -// const NetworkPolicySchema = object({ -// spec: object({ +// const NetworkPolicySchema = object({ +// spec: object({ // egress: array().default([]).optional(), // ingress: array().default([]), // podSelector: object({}).default({}), @@ -257,9 +253,7 @@ export const checkNetworkPolicyValidity = (from: NetworkPolicy): ConversionError // }).optional(), // }); -export const networkPolicyNormalizeK8sResource = ( - from: IoK8sApiNetworkingV1NetworkPolicy, -): IoK8sApiNetworkingV1NetworkPolicy => { +export const networkPolicyNormalizeK8sResource = (from: NetworkPolicy): NetworkPolicy => { // This normalization is performed in order to make sure that converting from and to k8s back and forth remains consistent const clone = _.cloneDeep(from); if (clone.spec) { @@ -440,7 +434,7 @@ const rulesFromK8s = ( }; export const networkPolicyFromK8sResource = ( - from: IoK8sApiNetworkingV1NetworkPolicy, + from: NetworkPolicy, ): ConversionError | NetworkPolicy => { if (!from.metadata) { return errors.isMissing('metadata'); diff --git a/src/utils/resources/networkpolicies/utils.ts b/src/utils/resources/networkpolicies/utils.ts index c26043b2..53af1fd6 100644 --- a/src/utils/resources/networkpolicies/utils.ts +++ b/src/utils/resources/networkpolicies/utils.ts @@ -1,5 +1,5 @@ -import { NetworkPolicyModel } from '@kubevirt-ui/kubevirt-api/console'; import { K8sResourceCommon } from '@openshift-console/dynamic-plugin-sdk'; +import { NetworkPolicyModel } from '@utils/models'; import { MultiNetworkPolicyModel } from '@utils/models'; export const getPolicyModel = (obj: K8sResourceCommon) => diff --git a/src/utils/types/k8sTypes.ts b/src/utils/types/k8sTypes.ts new file mode 100644 index 00000000..b8e537ae --- /dev/null +++ b/src/utils/types/k8sTypes.ts @@ -0,0 +1,51 @@ +/** + * Derived type aliases for Kubernetes resources from @openshift/api-types. + * + * Top-level resource types are re-exported directly from the barrel. + * Sub-resource types are derived using indexed access + NonNullable + * so we never depend on opaque numbered interface names. + */ + +// --------------------------------------------------------------------------- +// Top-level resource kinds (from the barrel export) +// --------------------------------------------------------------------------- + +export type { + CoreV1PodKind as Pod, + CoreV1ServiceKind as Service, + NetworkingK8SIoV1IngressKind as Ingress, + NetworkingK8SIoV1NetworkPolicyKind as NetworkPolicy, +} from '@openshift/api-types/dist/kubernetes/all'; + +import type { + CoreV1PodKind, + NetworkingK8SIoV1IngressKind, + NetworkingK8SIoV1NetworkPolicyKind, +} from '@openshift/api-types/dist/kubernetes/all'; + +// --------------------------------------------------------------------------- +// Networking — Ingress derived types +// --------------------------------------------------------------------------- + +export type IngressSpec = NonNullable; +export type IngressRule = NonNullable[number]; +export type IngressServiceBackend = NonNullable< + NonNullable['service'] +>; + +// --------------------------------------------------------------------------- +// Networking — NetworkPolicy derived types +// --------------------------------------------------------------------------- + +export type NetworkPolicySpec = NonNullable; +export type NetworkPolicyIngressRule = NonNullable[number]; +export type NetworkPolicyPort = NonNullable[number]; + +// --------------------------------------------------------------------------- +// Core — Pod derived types +// --------------------------------------------------------------------------- + +export type Container = NonNullable['containers'][number]; +export type ContainerStatus = NonNullable< + NonNullable['containerStatuses'] +>[number]; diff --git a/src/views/createprojectmodal/CreateProjectModal.tsx b/src/views/createprojectmodal/CreateProjectModal.tsx index ea452683..724ef573 100644 --- a/src/views/createprojectmodal/CreateProjectModal.tsx +++ b/src/views/createprojectmodal/CreateProjectModal.tsx @@ -2,7 +2,6 @@ import React, { FC, useState } from 'react'; import { FormProvider, useForm } from 'react-hook-form'; import { useNavigate } from 'react-router-dom-v5-compat'; -import { ProjectModel, ProjectRequestModel } from '@kubevirt-ui/kubevirt-api/console'; import { k8sCreate, k8sDelete, K8sResourceCommon } from '@openshift-console/dynamic-plugin-sdk'; import { Button, @@ -16,6 +15,7 @@ import { import ExternalLink from '@utils/components/ExternalLink/ExternalLink'; import { documentationURLs, getDocumentationURL, isManaged } from '@utils/constants/documentation'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { ProjectModel, ProjectRequestModel } from '@utils/models'; import { UserDefinedNetworkModel } from '@utils/models'; import { getName, getResourceURL } from '@utils/resources/shared'; diff --git a/src/views/createprojectmodal/useClusterUDN.ts b/src/views/createprojectmodal/useClusterUDN.ts index daf113dd..78d71f14 100644 --- a/src/views/createprojectmodal/useClusterUDN.ts +++ b/src/views/createprojectmodal/useClusterUDN.ts @@ -1,6 +1,6 @@ -import { modelToGroupVersionKind } from '@kubevirt-ui/kubevirt-api/console'; import { K8sResourceCommon, useK8sWatchResource } from '@openshift-console/dynamic-plugin-sdk'; import { useIsAdmin } from '@utils/hooks/useIsAdmin'; +import { getGroupVersionKindForModel } from '@utils/models'; import { ClusterUserDefinedNetworkModel } from '@utils/models'; const useClusterUDN = () => { @@ -9,7 +9,7 @@ const useClusterUDN = () => { return useK8sWatchResource( isAdmin ? { - groupVersionKind: modelToGroupVersionKind(ClusterUserDefinedNetworkModel), + groupVersionKind: getGroupVersionKindForModel(ClusterUserDefinedNetworkModel), isList: true, } : null, diff --git a/src/views/ingresses/actions/IngressActions.tsx b/src/views/ingresses/actions/IngressActions.tsx index 91fff9e4..3f5ef069 100644 --- a/src/views/ingresses/actions/IngressActions.tsx +++ b/src/views/ingresses/actions/IngressActions.tsx @@ -1,11 +1,11 @@ import React, { FC } from 'react'; -import { IoK8sApiNetworkingV1Ingress } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import ActionsDropdown from '@utils/components/ActionsDropdown/ActionsDropdown'; +import { Ingress } from '@utils/types/k8sTypes'; import useIngressActions from '@views/ingresses/actions/hooks/useIngressActions'; type IngressActionsProps = { - ingress: IoK8sApiNetworkingV1Ingress; + ingress: Ingress; isKebabToggle?: boolean; }; diff --git a/src/views/ingresses/actions/hooks/useIngressActions.ts b/src/views/ingresses/actions/hooks/useIngressActions.ts index 3d773cb6..593d7932 100644 --- a/src/views/ingresses/actions/hooks/useIngressActions.ts +++ b/src/views/ingresses/actions/hooks/useIngressActions.ts @@ -1,7 +1,5 @@ import { useNavigate } from 'react-router-dom-v5-compat'; -import { IngressModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1Ingress } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { Action, useActiveNamespace, @@ -10,9 +8,11 @@ import { useLabelsModal, } from '@openshift-console/dynamic-plugin-sdk'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { IngressModel } from '@utils/models'; import { asAccessReview, getResourceURL } from '@utils/resources/shared'; +import { Ingress } from '@utils/types/k8sTypes'; -type UseIngressActions = (ingress: IoK8sApiNetworkingV1Ingress) => [actions: Action[]]; +type UseIngressActions = (ingress: Ingress) => [actions: Action[]]; const useIngressActions: UseIngressActions = (ingress) => { const { t } = useNetworkingTranslation(); diff --git a/src/views/ingresses/details/IngressDetailsPage.tsx b/src/views/ingresses/details/IngressDetailsPage.tsx index fe0f0a23..1c43c858 100644 --- a/src/views/ingresses/details/IngressDetailsPage.tsx +++ b/src/views/ingresses/details/IngressDetailsPage.tsx @@ -1,9 +1,9 @@ import React, { FC } from 'react'; -import { IngressModel, modelToGroupVersionKind } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1Ingress } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { HorizontalNav, useK8sWatchResource } from '@openshift-console/dynamic-plugin-sdk'; import StatusBox from '@utils/components/StatusBox/StatusBox'; +import { getGroupVersionKindForModel, IngressModel } from '@utils/models'; +import { Ingress } from '@utils/types/k8sTypes'; import IngressDetailsPageTitle from '@views/ingresses/details/components/IngressDetailsPageTitle'; import useIngressTabs from '@views/ingresses/details/hooks/useIngressTabs'; @@ -13,8 +13,8 @@ type IngressDetailsPageProps = { }; const IngressDetailsPage: FC = ({ name, namespace }) => { - const [ingress, loaded, error] = useK8sWatchResource({ - groupVersionKind: modelToGroupVersionKind(IngressModel), + const [ingress, loaded, error] = useK8sWatchResource({ + groupVersionKind: getGroupVersionKindForModel(IngressModel), name, namespace, }); diff --git a/src/views/ingresses/details/components/IngressDetailsPageTitle.tsx b/src/views/ingresses/details/components/IngressDetailsPageTitle.tsx index 6b109a7e..77d8af7b 100644 --- a/src/views/ingresses/details/components/IngressDetailsPageTitle.tsx +++ b/src/views/ingresses/details/components/IngressDetailsPageTitle.tsx @@ -1,16 +1,16 @@ import React, { FC } from 'react'; -import { IngressModel, modelToRef } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1Ingress } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { Title } from '@patternfly/react-core'; import DetailsPageTitle from '@utils/components/DetailsPageTitle/DetailsPageTitle'; import { useLastNamespacePath } from '@utils/hooks/useLastNamespacePath'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getReferenceForModel, IngressModel } from '@utils/models'; import { getName } from '@utils/resources/shared'; +import { Ingress } from '@utils/types/k8sTypes'; import IngressActions from '@views/ingresses/actions/IngressActions'; type IngressDetailsPageTitleProps = { - ingress: IoK8sApiNetworkingV1Ingress; + ingress: Ingress; }; const IngressDetailsPageTitle: FC = ({ ingress }) => { @@ -20,7 +20,7 @@ const IngressDetailsPageTitle: FC = ({ ingress }) return ( diff --git a/src/views/ingresses/details/tabs/details/IngressDetailsTab.tsx b/src/views/ingresses/details/tabs/details/IngressDetailsTab.tsx index 9318c513..0bc98f51 100644 --- a/src/views/ingresses/details/tabs/details/IngressDetailsTab.tsx +++ b/src/views/ingresses/details/tabs/details/IngressDetailsTab.tsx @@ -1,16 +1,16 @@ import React, { FC } from 'react'; -import { IoK8sApiNetworkingV1Ingress } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { Grid, GridItem, PageSection } from '@patternfly/react-core'; import DetailsSectionTitle from '@utils/components/DetailsSectionTitle/DetailsSectionTitle'; import Loading from '@utils/components/Loading/Loading'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { Ingress } from '@utils/types/k8sTypes'; import IngressDetailsSection from '@views/ingresses/details/tabs/details/components/IngressDetailsSection/IngressDetailsSection'; import IngressRulesSection from './components/IngressRulesSection/IngressRulesSection'; type IngressDetailsTabProps = { - obj: IoK8sApiNetworkingV1Ingress; + obj: Ingress; }; const IngressDetailsTab: FC = ({ obj: ingress }) => { diff --git a/src/views/ingresses/details/tabs/details/components/IngressDetailsSection/IngressDetailsSection.tsx b/src/views/ingresses/details/tabs/details/components/IngressDetailsSection/IngressDetailsSection.tsx index c411362a..bd7e5918 100644 --- a/src/views/ingresses/details/tabs/details/components/IngressDetailsSection/IngressDetailsSection.tsx +++ b/src/views/ingresses/details/tabs/details/components/IngressDetailsSection/IngressDetailsSection.tsx @@ -1,7 +1,5 @@ import React, { FC } from 'react'; -import { IngressModel, NamespaceModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1Ingress } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { getGroupVersionKindForModel, ResourceLink, @@ -15,6 +13,7 @@ import { DetailsItem } from '@utils/components/DetailsItem/DetailsItem'; import { LabelList } from '@utils/components/DetailsItem/LabelList'; import { OwnerReferences } from '@utils/components/OwnerReference/owner-references'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { IngressModel, NamespaceModel } from '@utils/models'; import { getCreationTimestamp, getLabels, @@ -22,11 +21,12 @@ import { getNamespace, getUID, } from '@utils/resources/shared'; +import { Ingress } from '@utils/types/k8sTypes'; import TLSCert from './TLSCert'; type IngressDetailsSectionProps = { - ingress: IoK8sApiNetworkingV1Ingress; + ingress: Ingress; }; const IngressDetailsSection: FC = ({ ingress }) => { diff --git a/src/views/ingresses/details/tabs/details/components/IngressDetailsSection/TLSCert.tsx b/src/views/ingresses/details/tabs/details/components/IngressDetailsSection/TLSCert.tsx index eca718d2..628b2654 100644 --- a/src/views/ingresses/details/tabs/details/components/IngressDetailsSection/TLSCert.tsx +++ b/src/views/ingresses/details/tabs/details/components/IngressDetailsSection/TLSCert.tsx @@ -1,12 +1,12 @@ import React, { FC } from 'react'; -import { SecretModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1Ingress } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { getGroupVersionKindForModel, ResourceIcon } from '@openshift-console/dynamic-plugin-sdk'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { SecretModel } from '@utils/models'; +import { Ingress } from '@utils/types/k8sTypes'; type TLSCertProps = { - ingress: IoK8sApiNetworkingV1Ingress; + ingress: Ingress; }; const TLSCert: FC = ({ ingress }) => { diff --git a/src/views/ingresses/details/tabs/details/components/IngressRulesSection/IngressRulesSection.tsx b/src/views/ingresses/details/tabs/details/components/IngressRulesSection/IngressRulesSection.tsx index 7f5f19af..d3298c71 100644 --- a/src/views/ingresses/details/tabs/details/components/IngressRulesSection/IngressRulesSection.tsx +++ b/src/views/ingresses/details/tabs/details/components/IngressRulesSection/IngressRulesSection.tsx @@ -1,15 +1,15 @@ import React, { FC } from 'react'; -import { IoK8sApiNetworkingV1Ingress } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { Table } from '@patternfly/react-table'; import DetailsSectionTitle from '@utils/components/DetailsSectionTitle/DetailsSectionTitle'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; import { getNamespace } from '@utils/resources/shared'; +import { Ingress } from '@utils/types/k8sTypes'; import RulesHeader from '@views/ingresses/details/tabs/details/components/IngressRulesSection/RulesHeader'; import RulesRows from '@views/ingresses/details/tabs/details/components/IngressRulesSection/RulesRows'; type IngressRulesSectionProps = { - ingress: IoK8sApiNetworkingV1Ingress; + ingress: Ingress; }; const IngressRulesSection: FC = ({ ingress }) => { diff --git a/src/views/ingresses/details/tabs/details/components/IngressRulesSection/RulesRow.tsx b/src/views/ingresses/details/tabs/details/components/IngressRulesSection/RulesRow.tsx index a85aa6de..616c49f1 100644 --- a/src/views/ingresses/details/tabs/details/components/IngressRulesSection/RulesRow.tsx +++ b/src/views/ingresses/details/tabs/details/components/IngressRulesSection/RulesRow.tsx @@ -1,8 +1,8 @@ import React, { FC } from 'react'; -import { ServiceModel } from '@kubevirt-ui/kubevirt-api/console'; import { getGroupVersionKindForModel, ResourceLink } from '@openshift-console/dynamic-plugin-sdk'; import { Td, Tr } from '@patternfly/react-table'; +import { ServiceModel } from '@utils/models'; import { IngressPathRule } from '@views/ingresses/details/tabs/details/utils/types'; type RulesRowProps = { diff --git a/src/views/ingresses/details/tabs/details/components/IngressRulesSection/RulesRows.tsx b/src/views/ingresses/details/tabs/details/components/IngressRulesSection/RulesRows.tsx index 2e418762..2a074df7 100644 --- a/src/views/ingresses/details/tabs/details/components/IngressRulesSection/RulesRows.tsx +++ b/src/views/ingresses/details/tabs/details/components/IngressRulesSection/RulesRows.tsx @@ -1,9 +1,9 @@ import React, { FC } from 'react'; -import { IoK8sApiNetworkingV1IngressSpec } from '@kubevirt-ui/kubevirt-api/kubernetes/models/IoK8sApiNetworkingV1IngressSpec'; import { Tbody } from '@patternfly/react-table'; import EmptyBox from '@utils/components/EmptyBox/EmptyBox'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { IngressSpec } from '@utils/types/k8sTypes'; import { isEmpty } from '@utils/utils'; import RulesRow from '@views/ingresses/details/tabs/details/components/IngressRulesSection/RulesRow'; import { IngressPathRule } from '@views/ingresses/details/tabs/details/utils/types'; @@ -11,7 +11,7 @@ import { getPort } from '@views/ingresses/details/tabs/details/utils/utils'; type RulesRowsProps = { namespace: string; - spec: IoK8sApiNetworkingV1IngressSpec; + spec: IngressSpec; }; const RulesRows: FC = ({ namespace, spec }) => { diff --git a/src/views/ingresses/details/tabs/details/utils/utils.ts b/src/views/ingresses/details/tabs/details/utils/utils.ts index 09419f4d..a862c657 100644 --- a/src/views/ingresses/details/tabs/details/utils/utils.ts +++ b/src/views/ingresses/details/tabs/details/utils/utils.ts @@ -1,4 +1,4 @@ -import { IoK8sApiNetworkingV1IngressServiceBackend } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; +import { IngressServiceBackend } from '@utils/types/k8sTypes'; -export const getPort = (service: IoK8sApiNetworkingV1IngressServiceBackend): number | string => +export const getPort = (service: IngressServiceBackend): number | string => service?.port?.number || service?.port?.name; diff --git a/src/views/ingresses/details/tabs/yaml/IngressYAMLTab.tsx b/src/views/ingresses/details/tabs/yaml/IngressYAMLTab.tsx index d7af86d2..d43ffaea 100644 --- a/src/views/ingresses/details/tabs/yaml/IngressYAMLTab.tsx +++ b/src/views/ingresses/details/tabs/yaml/IngressYAMLTab.tsx @@ -1,11 +1,11 @@ import React, { FC, Suspense } from 'react'; -import { IoK8sApiNetworkingV1IngressSpec } from '@kubevirt-ui/kubevirt-api/kubernetes/models/IoK8sApiNetworkingV1IngressSpec'; import { ResourceYAMLEditor } from '@openshift-console/dynamic-plugin-sdk'; import Loading from '@utils/components/Loading/Loading'; +import { IngressSpec } from '@utils/types/k8sTypes'; type IngressYAMLTabProps = { - obj: IoK8sApiNetworkingV1IngressSpec; + obj: IngressSpec; }; const IngressYAMLTab: FC = ({ obj: ingress }) => { diff --git a/src/views/ingresses/list/IngressesList.tsx b/src/views/ingresses/list/IngressesList.tsx index cf239795..980af78d 100644 --- a/src/views/ingresses/list/IngressesList.tsx +++ b/src/views/ingresses/list/IngressesList.tsx @@ -1,8 +1,6 @@ import React, { FC } from 'react'; import { useNavigate } from 'react-router-dom-v5-compat'; -import { IngressModel, modelToGroupVersionKind } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1Ingress } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { ListPageBody, ListPageCreateButton, @@ -17,7 +15,9 @@ import ListEmptyState from '@utils/components/ListEmptyState/ListEmptyState'; import { DOC_URL_NETWORK_INGRESS } from '@utils/constants/documentation'; import { SHARED_DEFAULT_PATH_NEW_RESOURCE_YAML } from '@utils/constants/ui'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getGroupVersionKindForModel, IngressModel } from '@utils/models'; import { getResourceURL } from '@utils/resources/shared'; +import { Ingress } from '@utils/types/k8sTypes'; import { getValidNamespace } from '@utils/utils'; import useIngressColumns from '@views/ingresses/list/hooks/useIngressColumns'; @@ -33,8 +33,8 @@ const IngressesList: FC = ({ namespace }) => { const navigate = useNavigate(); const validNamespace = getValidNamespace(namespace || activeNamespace); - const [ingress, loaded, loadError] = useK8sWatchResource({ - groupVersionKind: modelToGroupVersionKind(IngressModel), + const [ingress, loaded, loadError] = useK8sWatchResource({ + groupVersionKind: getGroupVersionKindForModel(IngressModel), isList: true, namespace, }); @@ -43,7 +43,7 @@ const IngressesList: FC = ({ namespace }) => { const title = t('Ingresses'); return ( - + createButtonlink={SHARED_DEFAULT_PATH_NEW_RESOURCE_YAML} data={data} error={loadError} @@ -56,7 +56,7 @@ const IngressesList: FC = ({ namespace }) => { @@ -74,7 +74,7 @@ const IngressesList: FC = ({ namespace }) => { - + columns={columns} data={filteredData} loaded={loaded} diff --git a/src/views/ingresses/list/components/IngressTableRow.tsx b/src/views/ingresses/list/components/IngressTableRow.tsx index d937c046..e018607b 100644 --- a/src/views/ingresses/list/components/IngressTableRow.tsx +++ b/src/views/ingresses/list/components/IngressTableRow.tsx @@ -1,8 +1,6 @@ import React, { FC } from 'react'; import classNames from 'classnames'; -import { IngressModel, NamespaceModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1Ingress } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { getGroupVersionKindForModel, ResourceLink, @@ -13,11 +11,13 @@ import { LabelList } from '@utils/components/DetailsItem/LabelList'; import HostDetails from '@utils/components/HostData/HostDetails'; import MutedText from '@utils/components/MutedText/MutedText'; import { t } from '@utils/hooks/useNetworkingTranslation'; +import { IngressModel, NamespaceModel } from '@utils/models'; +import { Ingress } from '@utils/types/k8sTypes'; import IngressActions from '@views/ingresses/actions/IngressActions'; import { getHostsStr } from '@views/ingresses/list/utils/utils'; import { tableColumnClasses } from '@views/services/list/hooks/useServiceColumn'; -type IngressTableRowProps = RowProps; +type IngressTableRowProps = RowProps; const IngressTableRow: FC = ({ activeColumnIDs, obj: ingress }) => { const hostsStr = getHostsStr(ingress); diff --git a/src/views/ingresses/list/hooks/useIngressColumns.tsx b/src/views/ingresses/list/hooks/useIngressColumns.tsx index 4fb42b84..6c1452cf 100644 --- a/src/views/ingresses/list/hooks/useIngressColumns.tsx +++ b/src/views/ingresses/list/hooks/useIngressColumns.tsx @@ -1,10 +1,10 @@ import { useMemo } from 'react'; -import { IngressModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1Ingress } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { TableColumn, useActiveColumns } from '@openshift-console/dynamic-plugin-sdk'; import { sortable } from '@patternfly/react-table'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { IngressModel } from '@utils/models'; +import { Ingress } from '@utils/types/k8sTypes'; import { objectColumnSorting } from '@utils/utils/sorting'; import { tableColumnClasses } from '@views/services/list/hooks/useServiceColumn'; @@ -15,7 +15,7 @@ type UseIngressColumns = () => { id: string; title: string }[]; const useIngressColumns: UseIngressColumns = () => { const { t } = useNetworkingTranslation(); - const columns: TableColumn[] = useMemo(() => { + const columns: TableColumn[] = useMemo(() => { return [ { id: 'name', @@ -53,7 +53,7 @@ const useIngressColumns: UseIngressColumns = () => { ]; }, [t]); - const [activeColumns] = useActiveColumns({ + const [activeColumns] = useActiveColumns({ columnManagementID: IngressModel.kind, columns, showNamespaceOverride: false, diff --git a/src/views/ingresses/list/utils/utils.ts b/src/views/ingresses/list/utils/utils.ts index 2050d1a1..2f936ea1 100644 --- a/src/views/ingresses/list/utils/utils.ts +++ b/src/views/ingresses/list/utils/utils.ts @@ -1,31 +1,26 @@ -import { - IoK8sApiNetworkingV1Ingress, - IoK8sApiNetworkingV1IngressRule, -} from '@kubevirt-ui/kubevirt-api/kubernetes/models'; +import { Ingress, IngressRule } from '@utils/types/k8sTypes'; import { get, isString } from '@utils/utils'; -export const ingressValidHosts = (ingress: IoK8sApiNetworkingV1Ingress) => +export const ingressValidHosts = (ingress: Ingress) => get(ingress, 'spec.rules', []) - .map((rule: IoK8sApiNetworkingV1IngressRule) => rule?.host) + .map((rule: IngressRule) => rule?.host) .filter(isString); -export const getHostsStr = (ingress: IoK8sApiNetworkingV1Ingress) => { +export const getHostsStr = (ingress: Ingress) => { const hosts = ingressValidHosts(ingress); const hostsStr = hosts.join(', '); return hosts?.length ? hostsStr : null; }; -export const sortIngressesByHosts = - (direction: string) => (a: IoK8sApiNetworkingV1Ingress, b: IoK8sApiNetworkingV1Ingress) => { - const { first, second } = - direction === 'asc' ? { first: a, second: b } : { first: b, second: a }; +export const sortIngressesByHosts = (direction: string) => (a: Ingress, b: Ingress) => { + const { first, second } = direction === 'asc' ? { first: a, second: b } : { first: b, second: a }; - const firstHosts = getHostsStr(first); - const secondHosts = getHostsStr(second); + const firstHosts = getHostsStr(first); + const secondHosts = getHostsStr(second); - return firstHosts?.localeCompare(secondHosts, undefined, { - numeric: true, - sensitivity: 'base', - }); - }; + return firstHosts?.localeCompare(secondHosts, undefined, { + numeric: true, + sensitivity: 'base', + }); +}; diff --git a/src/views/nads/actions/hooks/useNADsActions.tsx b/src/views/nads/actions/hooks/useNADsActions.tsx index f5734b9b..fe35c45e 100644 --- a/src/views/nads/actions/hooks/useNADsActions.tsx +++ b/src/views/nads/actions/hooks/useNADsActions.tsx @@ -1,7 +1,5 @@ import { useNavigate } from 'react-router-dom-v5-compat'; -import { NetworkAttachmentDefinitionModelRef } from '@kubevirt-ui/kubevirt-api/console'; -import NetworkAttachmentDefinitionModel from '@kubevirt-ui/kubevirt-api/console/models/NetworkAttachmentDefinitionModel'; import { Action, useAnnotationsModal, @@ -9,6 +7,8 @@ import { useLabelsModal, } from '@openshift-console/dynamic-plugin-sdk'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { NetworkAttachmentDefinitionModelRef } from '@utils/models'; +import { NetworkAttachmentDefinitionModel } from '@utils/models'; import { isUserDefinedNetworkNAD } from '@utils/resources/nads/helpers'; import { NetworkAttachmentDefinitionKind } from '@utils/resources/nads/types'; import { asAccessReview, getName, getNamespace } from '@utils/resources/shared'; diff --git a/src/views/nads/form/NetworkAttachmentDefinitionForm.tsx b/src/views/nads/form/NetworkAttachmentDefinitionForm.tsx index 1ea3a163..391787b5 100644 --- a/src/views/nads/form/NetworkAttachmentDefinitionForm.tsx +++ b/src/views/nads/form/NetworkAttachmentDefinitionForm.tsx @@ -2,7 +2,6 @@ import React, { FC, useEffect, useState } from 'react'; import { FormProvider, useForm } from 'react-hook-form'; import { useNavigate } from 'react-router-dom-v5-compat'; -import NetworkAttachmentDefinitionModel from '@kubevirt-ui/kubevirt-api/console/models/NetworkAttachmentDefinitionModel'; import { useActiveNamespace } from '@openshift-console/dynamic-plugin-sdk'; import { ActionGroup, @@ -19,6 +18,7 @@ import { import PopoverHelpIcon from '@utils/components/PopoverHelpIcon/PopoverHelpIcon'; import { ALL_NAMESPACES_KEY, DEFAULT_NAMESPACE } from '@utils/constants'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { NetworkAttachmentDefinitionModel } from '@utils/models'; import { NetworkAttachmentDefinitionKind } from '@utils/resources/nads/types'; import { resourcePathFromModel } from '@utils/resources/shared'; import { isEmpty } from '@utils/utils'; diff --git a/src/views/nads/form/components/NetworkTypeParameters/components/SriovParameters/SriovParameters.tsx b/src/views/nads/form/components/NetworkTypeParameters/components/SriovParameters/SriovParameters.tsx index 1051272c..f9fdeabf 100644 --- a/src/views/nads/form/components/NetworkTypeParameters/components/SriovParameters/SriovParameters.tsx +++ b/src/views/nads/form/components/NetworkTypeParameters/components/SriovParameters/SriovParameters.tsx @@ -1,7 +1,6 @@ import React, { FC, Ref, useState } from 'react'; import { Controller, useFormContext } from 'react-hook-form'; -import SriovNetworkNodePolicyModel from '@kubevirt-ui/kubevirt-api/console/models/SriovNetworkNodePolicyModel'; import { getGroupVersionKindForModel, K8sResourceKind, @@ -19,6 +18,7 @@ import { } from '@patternfly/react-core'; import PopoverHelpIcon from '@utils/components/PopoverHelpIcon/PopoverHelpIcon'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { SriovNetworkNodePolicyModel } from '@utils/models'; import { NetworkAttachmentDefinitionFormInput, NetworkTypeKeys, diff --git a/src/views/nads/form/hooks/useNetworkModels.ts b/src/views/nads/form/hooks/useNetworkModels.ts index 68a0dd2a..3bc809ea 100644 --- a/src/views/nads/form/hooks/useNetworkModels.ts +++ b/src/views/nads/form/hooks/useNetworkModels.ts @@ -1,6 +1,6 @@ -import { SriovNetworkNodePolicyModelRef } from '@kubevirt-ui/kubevirt-api/console'; -import { HyperConvergedModelRef } from '@kubevirt-ui/kubevirt-api/console/models/HyperConvergedModel'; import { useK8sModels } from '@openshift-console/dynamic-plugin-sdk'; +import { SriovNetworkNodePolicyModelRef } from '@utils/models'; +import { HyperConvergedModelRef } from '@utils/models'; const useNetworkModels = (): [hasHyperConvergedCRD: boolean, hasSriovNetNodePolicyCRD: boolean] => { const [models] = useK8sModels(); diff --git a/src/views/nads/form/hooks/useOVNK8sNetwork.ts b/src/views/nads/form/hooks/useOVNK8sNetwork.ts index 3bcc2579..6a1cd2af 100644 --- a/src/views/nads/form/hooks/useOVNK8sNetwork.ts +++ b/src/views/nads/form/hooks/useOVNK8sNetwork.ts @@ -1,11 +1,11 @@ -import { modelToGroupVersionKind } from '@kubevirt-ui/kubevirt-api/console'; import { K8sResourceKind, useK8sWatchResource } from '@openshift-console/dynamic-plugin-sdk'; +import { getGroupVersionKindForModel } from '@utils/models'; import { CLUSTER_NETWORK_CONFIG_NAME, NetworkConfigModel, OVN_K8S } from '../utils/constants'; const useOVNK8sNetwork = (): [boolean, boolean] => { const [networkConfig, loaded] = useK8sWatchResource({ - groupVersionKind: modelToGroupVersionKind(NetworkConfigModel), + groupVersionKind: getGroupVersionKindForModel(NetworkConfigModel), isList: false, name: CLUSTER_NETWORK_CONFIG_NAME, namespaced: false, diff --git a/src/views/nads/form/utils/constants.ts b/src/views/nads/form/utils/constants.ts index a164621a..7a42fa8d 100644 --- a/src/views/nads/form/utils/constants.ts +++ b/src/views/nads/form/utils/constants.ts @@ -1,5 +1,5 @@ -import NetworkAttachmentDefinitionModel from '@kubevirt-ui/kubevirt-api/console/models/NetworkAttachmentDefinitionModel'; import { K8sModel } from '@openshift-console/dynamic-plugin-sdk'; +import { NetworkAttachmentDefinitionModel } from '@utils/models'; import { generateName } from '@utils/utils'; export const CLUSTER_NETWORK_CONFIG_NAME = 'cluster'; diff --git a/src/views/nads/form/utils/utils.ts b/src/views/nads/form/utils/utils.ts index 6a20abcf..bbdad7e7 100644 --- a/src/views/nads/form/utils/utils.ts +++ b/src/views/nads/form/utils/utils.ts @@ -1,5 +1,5 @@ -import NetworkAttachmentDefinitionModel from '@kubevirt-ui/kubevirt-api/console/models/NetworkAttachmentDefinitionModel'; import { k8sCreate } from '@openshift-console/dynamic-plugin-sdk'; +import { NetworkAttachmentDefinitionModel } from '@utils/models'; import { IPAMConfig, NetworkAttachmentDefinitionAnnotations, diff --git a/src/views/nads/list/NetworkAttachmentDefinitionList.tsx b/src/views/nads/list/NetworkAttachmentDefinitionList.tsx index 7babb450..3fb64e55 100644 --- a/src/views/nads/list/NetworkAttachmentDefinitionList.tsx +++ b/src/views/nads/list/NetworkAttachmentDefinitionList.tsx @@ -1,9 +1,6 @@ import React, { FC } from 'react'; import { useNavigate } from 'react-router-dom-v5-compat'; -import NetworkAttachmentDefinitionModel, { - NetworkAttachmentDefinitionModelGroupVersionKind, -} from '@kubevirt-ui/kubevirt-api/console/models/NetworkAttachmentDefinitionModel'; import { ListPageBody, ListPageCreateButton, @@ -18,6 +15,10 @@ import { DEFAULT_NAMESPACE } from '@utils/constants'; import { documentationURLs, getDocumentationURL } from '@utils/constants/documentation'; import { SHARED_DEFAULT_PATH_NEW_RESOURCE_FORM } from '@utils/constants/ui'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { + NetworkAttachmentDefinitionModel, + NetworkAttachmentDefinitionModelGroupVersionKind, +} from '@utils/models'; import { NetworkAttachmentDefinitionKind } from '@utils/resources/nads/types'; import { resourcePathFromModel } from '@utils/resources/shared'; import { isEmpty } from '@utils/utils'; diff --git a/src/views/nads/list/components/NADListEmpty/NADListEmpty.tsx b/src/views/nads/list/components/NADListEmpty/NADListEmpty.tsx index afc6ff3a..614b4563 100644 --- a/src/views/nads/list/components/NADListEmpty/NADListEmpty.tsx +++ b/src/views/nads/list/components/NADListEmpty/NADListEmpty.tsx @@ -1,8 +1,6 @@ import React, { FC } from 'react'; import { useNavigate } from 'react-router-dom-v5-compat'; -import NetworkAttachmentDefinitionModel from '@kubevirt-ui/kubevirt-api/console/models/NetworkAttachmentDefinitionModel'; -import { modelToGroupVersionKind } from '@kubevirt-ui/kubevirt-api/console/modelUtils'; import { useK8sWatchResource } from '@openshift-console/dynamic-plugin-sdk'; import { QuickStart } from '@patternfly/quickstarts'; import { @@ -16,6 +14,8 @@ import { RocketIcon } from '@patternfly/react-icons/dist/esm/icons/rocket-icon'; import { DEFAULT_NAMESPACE } from '@utils/constants'; import { SHARED_DEFAULT_PATH_NEW_RESOURCE_FORM } from '@utils/constants/ui'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { NetworkAttachmentDefinitionModel } from '@utils/models'; +import { getGroupVersionKindForModel } from '@utils/models'; import { QuickStartModel } from '@utils/models'; import { resourcePathFromModel } from '@utils/resources/shared'; @@ -29,7 +29,7 @@ const NADListEmpty: FC = ({ namespace }) => { const searchText = 'network attachment definition'; const [quickStarts, quickStartsLoaded] = useK8sWatchResource({ - groupVersionKind: modelToGroupVersionKind(QuickStartModel), + groupVersionKind: getGroupVersionKindForModel(QuickStartModel), isList: true, }); const hasQuickStarts = diff --git a/src/views/nads/list/components/NADsRow/NADsRow.tsx b/src/views/nads/list/components/NADsRow/NADsRow.tsx index 20e4b91a..6ebbd60e 100644 --- a/src/views/nads/list/components/NADsRow/NADsRow.tsx +++ b/src/views/nads/list/components/NADsRow/NADsRow.tsx @@ -1,7 +1,5 @@ import React, { FC } from 'react'; -import { modelToGroupVersionKind, NamespaceModel } from '@kubevirt-ui/kubevirt-api/console'; -import NetworkAttachmentDefinitionModel from '@kubevirt-ui/kubevirt-api/console/models/NetworkAttachmentDefinitionModel'; import { getGroupVersionKindForModel, ResourceLink, @@ -11,6 +9,8 @@ import { import { Badge } from '@patternfly/react-core'; import MutedText from '@utils/components/MutedText/MutedText'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getGroupVersionKindForModel, NamespaceModel } from '@utils/models'; +import { NetworkAttachmentDefinitionModel } from '@utils/models'; import { isUserDefinedNetworkNAD } from '@utils/resources/nads/helpers'; import { getConfigAsJSON, getType } from '@utils/resources/nads/selectors'; import { NetworkAttachmentDefinitionKind } from '@utils/resources/nads/types'; @@ -40,7 +40,10 @@ const NADsRow: FC = ({ activeColumnIDs, obj }) => { {isUDNManaged && {t('UserDefinedNetwork')}} - + {type || } diff --git a/src/views/networkpolicies/actions/NetworkPolicyActions.tsx b/src/views/networkpolicies/actions/NetworkPolicyActions.tsx index a3717bf1..0783a5e0 100644 --- a/src/views/networkpolicies/actions/NetworkPolicyActions.tsx +++ b/src/views/networkpolicies/actions/NetworkPolicyActions.tsx @@ -1,13 +1,13 @@ import React, { FC } from 'react'; -import { IoK8sApiNetworkingV1NetworkPolicy } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import ActionsDropdown from '@utils/components/ActionsDropdown/ActionsDropdown'; +import { NetworkPolicy } from '@utils/types/k8sTypes'; import useNetworkPolicyActions from './hooks/useNetworkPolicyActions'; type NetworkPolicyActionsProps = { isKebabToggle?: boolean; - obj: IoK8sApiNetworkingV1NetworkPolicy; + obj: NetworkPolicy; }; const NetworkPolicyActions: FC = ({ isKebabToggle, obj }) => { diff --git a/src/views/networkpolicies/actions/hooks/useNetworkPolicyActions.tsx b/src/views/networkpolicies/actions/hooks/useNetworkPolicyActions.tsx index dd3ad3fd..d51d9f9a 100644 --- a/src/views/networkpolicies/actions/hooks/useNetworkPolicyActions.tsx +++ b/src/views/networkpolicies/actions/hooks/useNetworkPolicyActions.tsx @@ -1,7 +1,5 @@ import { useNavigate } from 'react-router-dom-v5-compat'; -import { modelToRef } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1NetworkPolicy } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { Action, useAnnotationsModal, @@ -9,10 +7,12 @@ import { useLabelsModal, } from '@openshift-console/dynamic-plugin-sdk'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getReferenceForModel } from '@utils/models'; import { getPolicyModel } from '@utils/resources/networkpolicies/utils'; import { asAccessReview, getName, getNamespace } from '@utils/resources/shared'; +import { NetworkPolicy } from '@utils/types/k8sTypes'; -type NetworkPolicyActionProps = (obj: IoK8sApiNetworkingV1NetworkPolicy) => [actions: Action[]]; +type NetworkPolicyActionProps = (obj: NetworkPolicy) => [actions: Action[]]; const useNetworkPolicyActions: NetworkPolicyActionProps = (obj) => { const { t } = useNetworkingTranslation(); @@ -42,7 +42,8 @@ const useNetworkPolicyActions: NetworkPolicyActionProps = (obj) => { }, { accessReview: asAccessReview(policyModel, obj, 'update'), - cta: () => navigate(`/k8s/ns/${objNamespace}/${modelToRef(policyModel)}/${objName}/yaml`), + cta: () => + navigate(`/k8s/ns/${objNamespace}/${getReferenceForModel(policyModel)}/${objName}/yaml`), id: 'edit-network-policies', label: t('Edit {{kind}}', { kind: policyModel.kind }), }, diff --git a/src/views/networkpolicies/details/NetworkPolicyDetailsPage.tsx b/src/views/networkpolicies/details/NetworkPolicyDetailsPage.tsx index 1746f387..347d28dd 100644 --- a/src/views/networkpolicies/details/NetworkPolicyDetailsPage.tsx +++ b/src/views/networkpolicies/details/NetworkPolicyDetailsPage.tsx @@ -1,13 +1,13 @@ import React, { FC } from 'react'; -import { modelToGroupVersionKind } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1NetworkPolicy } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { HorizontalNav, K8sModel, useK8sWatchResource, } from '@openshift-console/dynamic-plugin-sdk'; import StatusBox from '@utils/components/StatusBox/StatusBox'; +import { getGroupVersionKindForModel } from '@utils/models'; +import { NetworkPolicy } from '@utils/types/k8sTypes'; import NetworkPolicyPageTitle from './components/NetworkPolicyDetailsPageTitle'; import { useNetworkPolicyTabs } from './hooks/useNetworkPolicyTabs'; @@ -19,8 +19,8 @@ export type NetworkPolicyPageNavProps = { }; const NetworkPolicyDetailsPage: FC = ({ kindObj, name, namespace }) => { - const [networkPolicy, loaded, error] = useK8sWatchResource({ - groupVersionKind: modelToGroupVersionKind(kindObj), + const [networkPolicy, loaded, error] = useK8sWatchResource({ + groupVersionKind: getGroupVersionKindForModel(kindObj), name, namespace, }); diff --git a/src/views/networkpolicies/details/components/NetworkPolicyDetailsPageTitle.tsx b/src/views/networkpolicies/details/components/NetworkPolicyDetailsPageTitle.tsx index 38c65c42..78408057 100644 --- a/src/views/networkpolicies/details/components/NetworkPolicyDetailsPageTitle.tsx +++ b/src/views/networkpolicies/details/components/NetworkPolicyDetailsPageTitle.tsx @@ -1,16 +1,16 @@ import React, { FC } from 'react'; -import { modelToRef } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1NetworkPolicy } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { Title } from '@patternfly/react-core'; import DetailsPageTitle from '@utils/components/DetailsPageTitle/DetailsPageTitle'; import { useLastNamespacePath } from '@utils/hooks/useLastNamespacePath'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getReferenceForModel } from '@utils/models'; import { getPolicyModel } from '@utils/resources/networkpolicies/utils'; +import { NetworkPolicy } from '@utils/types/k8sTypes'; import NetworkPolicyActions from '@views/networkpolicies/actions/NetworkPolicyActions'; type NetworkAttachmentDefinitionPageTitleProps = { - networkPolicy: IoK8sApiNetworkingV1NetworkPolicy; + networkPolicy: NetworkPolicy; }; const NetworkAttachmentDefinitionPageTitle: FC = ({ @@ -24,7 +24,10 @@ const NetworkAttachmentDefinitionPageTitle: FC diff --git a/src/views/networkpolicies/details/tabs/details/NetworkPolicyDetails.tsx b/src/views/networkpolicies/details/tabs/details/NetworkPolicyDetails.tsx index 1c750b48..dffb2ae6 100644 --- a/src/views/networkpolicies/details/tabs/details/NetworkPolicyDetails.tsx +++ b/src/views/networkpolicies/details/tabs/details/NetworkPolicyDetails.tsx @@ -1,17 +1,17 @@ import React, { FC } from 'react'; -import { IoK8sApiNetworkingV1NetworkPolicy } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { Grid, GridItem, PageSection } from '@patternfly/react-core'; import DetailsSectionTitle from '@utils/components/DetailsSectionTitle/DetailsSectionTitle'; import Loading from '@utils/components/Loading/Loading'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { NetworkPolicy } from '@utils/types/k8sTypes'; import NetworkPolicyDetailsEgress from './components/NetworkPolicyDetailsEgress'; import NetworkPolicyDetailsIngress from './components/NetworkPolicyDetailsIngress'; import NetworkPolicyDetailsMetadata from './components/NetworkPolicyDetailsMetadata'; type NetworkPolicyDetailsProps = { - obj: IoK8sApiNetworkingV1NetworkPolicy; + obj: NetworkPolicy; }; const NetworkPolicyDetails: FC = ({ obj: networkPolicy }) => { diff --git a/src/views/networkpolicies/details/tabs/details/components/NetworkPolicyDetailsIngress.tsx b/src/views/networkpolicies/details/tabs/details/components/NetworkPolicyDetailsIngress.tsx index c3bf9574..b23378f6 100644 --- a/src/views/networkpolicies/details/tabs/details/components/NetworkPolicyDetailsIngress.tsx +++ b/src/views/networkpolicies/details/tabs/details/components/NetworkPolicyDetailsIngress.tsx @@ -1,7 +1,6 @@ import React, { FC } from 'react'; import { Trans } from 'react-i18next'; -import { IoK8sApiNetworkingV1NetworkPolicy } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { useFlag } from '@openshift-console/dynamic-plugin-sdk'; import { Divider, Grid, GridItem } from '@patternfly/react-core'; import DetailsSectionTitle from '@utils/components/DetailsSectionTitle/DetailsSectionTitle'; @@ -9,6 +8,7 @@ import ExternalLink from '@utils/components/ExternalLink/ExternalLink'; import { FLAGS } from '@utils/constants'; import { getNetworkPolicyDocURL, isManaged } from '@utils/constants/documentation'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { NetworkPolicy } from '@utils/types/k8sTypes'; import { isEmpty } from '@utils/utils'; import { consolidatePeers } from '../utils/utils'; @@ -16,7 +16,7 @@ import { consolidatePeers } from '../utils/utils'; import NetworkPolicyDetailsRow from './NetworkPolicyDetailsRow/NetworkPolicyDetailsRow'; type NetworkPolicyDetailsIngressProps = { - networkPolicy: IoK8sApiNetworkingV1NetworkPolicy; + networkPolicy: NetworkPolicy; }; const NetworkPolicyDetailsIngress: FC = ({ networkPolicy }) => { diff --git a/src/views/networkpolicies/details/tabs/details/components/NetworkPolicyDetailsMetadata.tsx b/src/views/networkpolicies/details/tabs/details/components/NetworkPolicyDetailsMetadata.tsx index 124fdb85..5ed13739 100644 --- a/src/views/networkpolicies/details/tabs/details/components/NetworkPolicyDetailsMetadata.tsx +++ b/src/views/networkpolicies/details/tabs/details/components/NetworkPolicyDetailsMetadata.tsx @@ -1,7 +1,5 @@ import React, { FC } from 'react'; -import { modelToGroupVersionKind, NamespaceModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1NetworkPolicy } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { ResourceLink, Timestamp, @@ -14,10 +12,12 @@ import { DetailsItem } from '@utils/components/DetailsItem/DetailsItem'; import { LabelList } from '@utils/components/DetailsItem/LabelList'; import { OwnerReferences } from '@utils/components/OwnerReference/owner-references'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getGroupVersionKindForModel, NamespaceModel } from '@utils/models'; import { getPolicyModel } from '@utils/resources/networkpolicies/utils'; +import { NetworkPolicy } from '@utils/types/k8sTypes'; type NetworkPolicyDetailsMetadataProps = { - networkPolicy: IoK8sApiNetworkingV1NetworkPolicy; + networkPolicy: NetworkPolicy; }; const NetworkPolicyDetailsMetadata: FC = ({ networkPolicy }) => { @@ -42,7 +42,7 @@ const NetworkPolicyDetailsMetadata: FC = ({ n @@ -56,7 +56,7 @@ const NetworkPolicyDetailsMetadata: FC = ({ n valueClassName="co-editable-label-group" > diff --git a/src/views/networkpolicies/details/tabs/yaml/NetworkPolicyYAML.tsx b/src/views/networkpolicies/details/tabs/yaml/NetworkPolicyYAML.tsx index dda0018a..254fd539 100644 --- a/src/views/networkpolicies/details/tabs/yaml/NetworkPolicyYAML.tsx +++ b/src/views/networkpolicies/details/tabs/yaml/NetworkPolicyYAML.tsx @@ -1,11 +1,11 @@ import React, { FC, Suspense } from 'react'; -import { IoK8sApiNetworkingV1NetworkPolicy } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { ResourceYAMLEditor } from '@openshift-console/dynamic-plugin-sdk'; import Loading from '@utils/components/Loading/Loading'; +import { NetworkPolicy } from '@utils/types/k8sTypes'; type NetworkPolicyYAMLPageProps = { - obj?: IoK8sApiNetworkingV1NetworkPolicy; + obj?: NetworkPolicy; }; const NetworkPolicyYAMLPage: FC = ({ obj: networkPolicy }) => { diff --git a/src/views/networkpolicies/list/EnableMultiPage.tsx b/src/views/networkpolicies/list/EnableMultiPage.tsx index 92003d1d..84974b46 100644 --- a/src/views/networkpolicies/list/EnableMultiPage.tsx +++ b/src/views/networkpolicies/list/EnableMultiPage.tsx @@ -1,7 +1,6 @@ import React, { FC, useState } from 'react'; import { useNavigate } from 'react-router-dom-v5-compat'; -import { modelToGroupVersionKind, modelToRef } from '@kubevirt-ui/kubevirt-api/console'; import { k8sPatch, K8sResourceCommon, @@ -20,6 +19,7 @@ import { Tooltip, } from '@patternfly/react-core'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getGroupVersionKindForModel, getReferenceForModel } from '@utils/models'; import { MultiNetworkPolicyModel } from '@utils/models'; import { createNamespacePath } from '@utils/utils/helpers'; import { NetworkConfigModel } from '@views/nads/form/utils/constants'; @@ -34,7 +34,7 @@ const EnableMultiPage: FC = ({ namespace }) => { const [error, setError] = useState(); const [networkClusterConfig, loaded] = useK8sWatchResource<{ spec: any } & K8sResourceCommon>({ - groupVersionKind: modelToGroupVersionKind(NetworkConfigModel), + groupVersionKind: getGroupVersionKindForModel(NetworkConfigModel), name: 'cluster', }); @@ -63,7 +63,9 @@ const EnableMultiPage: FC = ({ namespace }) => { model: NetworkConfigModel, resource: networkClusterConfig, }); - navigate(`/k8s/${createNamespacePath(namespace)}/${modelToRef(MultiNetworkPolicyModel)}`); + navigate( + `/k8s/${createNamespacePath(namespace)}/${getReferenceForModel(MultiNetworkPolicyModel)}`, + ); } catch (apiError) { setError(apiError); } diff --git a/src/views/networkpolicies/list/MultiNetworkPolicyList.tsx b/src/views/networkpolicies/list/MultiNetworkPolicyList.tsx index b1b1dc7c..d849b354 100644 --- a/src/views/networkpolicies/list/MultiNetworkPolicyList.tsx +++ b/src/views/networkpolicies/list/MultiNetworkPolicyList.tsx @@ -1,7 +1,5 @@ import React, { FC } from 'react'; -import { modelToGroupVersionKind } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1NetworkPolicy } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { ListPageBody, ListPageFilter, @@ -15,7 +13,9 @@ import { documentationURLs, getDocumentationURL } from '@utils/constants/documen import { SHARED_DEFAULT_PATH_NEW_RESOURCE_FORM } from '@utils/constants/ui'; import usePagination from '@utils/hooks/usePagination/usePagination'; import { paginationDefaultValues } from '@utils/hooks/usePagination/utils/constants'; +import { getGroupVersionKindForModel } from '@utils/models'; import { MultiNetworkPolicyModel } from '@utils/models'; +import { NetworkPolicy } from '@utils/types/k8sTypes'; import { isEmpty } from '@utils/utils'; import NetworkPolicyEmptyState from './components/NetworkPolicyEmptyState'; @@ -29,10 +29,8 @@ type MultiNetworkPolicyListProps = { }; const MultiNetworkPolicyList: FC = ({ namespace }) => { - const [multinetworkPolicies, loaded, loadError] = useK8sWatchResource< - IoK8sApiNetworkingV1NetworkPolicy[] - >({ - groupVersionKind: modelToGroupVersionKind(MultiNetworkPolicyModel), + const [multinetworkPolicies, loaded, loadError] = useK8sWatchResource({ + groupVersionKind: getGroupVersionKindForModel(MultiNetworkPolicyModel), isList: true, namespace, }); @@ -43,7 +41,7 @@ const MultiNetworkPolicyList: FC = ({ namespace }) const paginatedData = filteredData?.slice(pagination.startIndex, pagination.endIndex); return ( - + createButtonlink={SHARED_DEFAULT_PATH_NEW_RESOURCE_FORM} data={data} error={loadError} @@ -93,7 +91,7 @@ const MultiNetworkPolicyList: FC = ({ namespace }) /> )} - + columns={activeColumns} data={paginatedData} loaded={loaded} diff --git a/src/views/networkpolicies/list/NetworkPolicyList.tsx b/src/views/networkpolicies/list/NetworkPolicyList.tsx index a29c74d6..694379c9 100644 --- a/src/views/networkpolicies/list/NetworkPolicyList.tsx +++ b/src/views/networkpolicies/list/NetworkPolicyList.tsx @@ -1,7 +1,5 @@ import React, { FC } from 'react'; -import { modelToGroupVersionKind, NetworkPolicyModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1NetworkPolicy } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { ListPageBody, ListPageFilter, @@ -17,6 +15,8 @@ import { getNetworkPolicyDocURL } from '@utils/constants/documentation'; import { SHARED_DEFAULT_PATH_NEW_RESOURCE_FORM } from '@utils/constants/ui'; import usePagination from '@utils/hooks/usePagination/usePagination'; import { paginationDefaultValues } from '@utils/hooks/usePagination/utils/constants'; +import { getGroupVersionKindForModel, NetworkPolicyModel } from '@utils/models'; +import { NetworkPolicy } from '@utils/types/k8sTypes'; import { isEmpty } from '@utils/utils'; import NetworkPolicyEmptyState from './components/NetworkPolicyEmptyState'; @@ -30,10 +30,8 @@ type NetworkPolicyListProps = { }; const NetworkPolicyList: FC = ({ namespace }) => { - const [networkPolicies, loaded, loadError] = useK8sWatchResource< - IoK8sApiNetworkingV1NetworkPolicy[] - >({ - groupVersionKind: modelToGroupVersionKind(NetworkPolicyModel), + const [networkPolicies, loaded, loadError] = useK8sWatchResource({ + groupVersionKind: getGroupVersionKindForModel(NetworkPolicyModel), isList: true, namespace, }); @@ -44,7 +42,7 @@ const NetworkPolicyList: FC = ({ namespace }) => { const hasOpenshiftFlag = useFlag(FLAGS.OPENSHIFT); return ( - + createButtonlink={SHARED_DEFAULT_PATH_NEW_RESOURCE_FORM} data={data} error={loadError} @@ -94,7 +92,7 @@ const NetworkPolicyList: FC = ({ namespace }) => { /> )} - + columns={activeColumns} data={filteredData} loaded={loaded} diff --git a/src/views/networkpolicies/list/NetworkPolicyPage.tsx b/src/views/networkpolicies/list/NetworkPolicyPage.tsx index 3fd32387..e66eb36c 100644 --- a/src/views/networkpolicies/list/NetworkPolicyPage.tsx +++ b/src/views/networkpolicies/list/NetworkPolicyPage.tsx @@ -1,12 +1,12 @@ import React, { FC, useMemo } from 'react'; import { useLocation, useNavigate } from 'react-router-dom-v5-compat'; -import { modelToGroupVersionKind, NetworkPolicyModel } from '@kubevirt-ui/kubevirt-api/console'; import { ListPageCreateButton, ListPageHeader } from '@openshift-console/dynamic-plugin-sdk'; import { Tab, Tabs, TabTitleText } from '@patternfly/react-core'; import { ALL_NAMESPACES, DEFAULT_NAMESPACE } from '@utils/constants'; import { SHARED_DEFAULT_PATH_NEW_RESOURCE_FORM } from '@utils/constants/ui'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getGroupVersionKindForModel, NetworkPolicyModel } from '@utils/models'; import { MultiNetworkPolicyModel } from '@utils/models'; import { resourcePathFromModel } from '@utils/resources/shared'; @@ -42,7 +42,7 @@ const NetworkPolicyPage: FC = ({ namespace }) => { diff --git a/src/views/networkpolicies/list/components/NetworkPolicyEmptyState.tsx b/src/views/networkpolicies/list/components/NetworkPolicyEmptyState.tsx index 4a3809e0..70085072 100644 --- a/src/views/networkpolicies/list/components/NetworkPolicyEmptyState.tsx +++ b/src/views/networkpolicies/list/components/NetworkPolicyEmptyState.tsx @@ -1,12 +1,12 @@ import React, { FC } from 'react'; import { useLocation, useNavigate } from 'react-router-dom-v5-compat'; -import { NetworkPolicyModel } from '@kubevirt-ui/kubevirt-api/console'; import { Button, EmptyState, EmptyStateActions, EmptyStateFooter } from '@patternfly/react-core'; import { DEFAULT_NAMESPACE } from '@utils/constants'; import { SHARED_DEFAULT_PATH_NEW_RESOURCE_FORM } from '@utils/constants/ui'; import { useLastNamespacePath } from '@utils/hooks/useLastNamespacePath'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { NetworkPolicyModel } from '@utils/models'; import { MultiNetworkPolicyModel } from '@utils/models'; import { resourcePathFromModel } from '@utils/resources/shared'; import { isEmpty } from '@utils/utils'; diff --git a/src/views/networkpolicies/list/components/NetworkPolicyRow.tsx b/src/views/networkpolicies/list/components/NetworkPolicyRow.tsx index e5587071..d6f00d44 100644 --- a/src/views/networkpolicies/list/components/NetworkPolicyRow.tsx +++ b/src/views/networkpolicies/list/components/NetworkPolicyRow.tsx @@ -2,9 +2,6 @@ import React, { FC } from 'react'; import { Link } from 'react-router-dom-v5-compat'; import { isEmpty } from 'lodash'; -import { NamespaceModel } from '@kubevirt-ui/kubevirt-api/console'; -import { modelToGroupVersionKind } from '@kubevirt-ui/kubevirt-api/console/modelUtils'; -import { IoK8sApiNetworkingV1NetworkPolicy } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { getGroupVersionKindForModel, ResourceLink, @@ -13,11 +10,14 @@ import { } from '@openshift-console/dynamic-plugin-sdk'; import { Selector } from '@utils/components/Selector/Selector'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { NamespaceModel } from '@utils/models'; +import { getGroupVersionKindForModel } from '@utils/models'; import { getPolicyModel } from '@utils/resources/networkpolicies/utils'; import { getName, getNamespace } from '@utils/resources/shared'; +import { NetworkPolicy } from '@utils/types/k8sTypes'; import NetworkPolicyActions from '@views/networkpolicies/actions/NetworkPolicyActions'; -type NetworkPolicyRowType = RowProps; +type NetworkPolicyRowType = RowProps; const NetworkPolicyRow: FC = ({ activeColumnIDs, obj }) => { const { t } = useNetworkingTranslation(); @@ -37,7 +37,10 @@ const NetworkPolicyRow: FC = ({ activeColumnIDs, obj }) => /> - + { const [networkClusterConfig, loaded, error] = useK8sWatchResource< { spec: any } & K8sResourceCommon >({ - groupVersionKind: modelToGroupVersionKind(NetworkConfigModel), + groupVersionKind: getGroupVersionKindForModel(NetworkConfigModel), name: 'cluster', }); diff --git a/src/views/networkpolicies/list/hooks/useNetworkPolicyColumn.tsx b/src/views/networkpolicies/list/hooks/useNetworkPolicyColumn.tsx index 03e72b2d..2088e591 100644 --- a/src/views/networkpolicies/list/hooks/useNetworkPolicyColumn.tsx +++ b/src/views/networkpolicies/list/hooks/useNetworkPolicyColumn.tsx @@ -1,21 +1,21 @@ import { useCallback } from 'react'; -import { NetworkPolicyModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1NetworkPolicy } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { TableColumn, useActiveColumns } from '@openshift-console/dynamic-plugin-sdk'; import { sortable } from '@patternfly/react-table'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; import { PaginationState } from '@utils/hooks/usePagination/utils/types'; +import { NetworkPolicyModel } from '@utils/models'; +import { NetworkPolicy } from '@utils/types/k8sTypes'; import { columnSorting, objectColumnSorting } from '@utils/utils/sorting'; type UseNetworkPolicyListColumnsValues = [ - columns: TableColumn[], - activeColumns: TableColumn[], + columns: TableColumn[], + activeColumns: TableColumn[], ]; type UseNetworkPolicyListColumns = ( pagination: PaginationState, - data: IoK8sApiNetworkingV1NetworkPolicy[], + data: NetworkPolicy[], ) => UseNetworkPolicyListColumnsValues; const useNetworkPolicyColumn: UseNetworkPolicyListColumns = (pagination, data) => { @@ -31,7 +31,7 @@ const useNetworkPolicyColumn: UseNetworkPolicyListColumns = (pagination, data) = [data, pagination], ); - const columns: TableColumn[] = [ + const columns: TableColumn[] = [ { id: 'name', sort: (_, direction) => sorting(direction, 'metadata.name'), @@ -58,7 +58,7 @@ const useNetworkPolicyColumn: UseNetworkPolicyListColumns = (pagination, data) = }, ]; - const [activeColumns] = useActiveColumns({ + const [activeColumns] = useActiveColumns({ columnManagementID: NetworkPolicyModel.kind, columns, showNamespaceOverride: false, diff --git a/src/views/networkpolicies/list/utils.ts b/src/views/networkpolicies/list/utils.ts index 6739a45e..394d55ef 100644 --- a/src/views/networkpolicies/list/utils.ts +++ b/src/views/networkpolicies/list/utils.ts @@ -1,5 +1,5 @@ -import { modelToRef, NetworkPolicyModel } from '@kubevirt-ui/kubevirt-api/console'; import { ALL_NAMESPACES } from '@utils/constants'; +import { getReferenceForModel, NetworkPolicyModel } from '@utils/models'; import { MultiNetworkPolicyModel } from '@utils/models'; import { TAB_INDEXES } from './constants'; @@ -16,8 +16,8 @@ export const getNetworkPolicyURLTab = (tabIndex: number | string, namespace: str const namespacePath = namespace === ALL_NAMESPACES ? namespace : `ns/${namespace}`; if (tabIndex === TAB_INDEXES.ENABLE_MULTI) { - return `/k8s/${namespacePath}/${modelToRef(NetworkPolicyModel)}/enable-multi`; + return `/k8s/${namespacePath}/${getReferenceForModel(NetworkPolicyModel)}/enable-multi`; } - return `/k8s/${namespacePath}/${tabIndex === TAB_INDEXES.NETWORK ? modelToRef(NetworkPolicyModel) : modelToRef(MultiNetworkPolicyModel)}`; + return `/k8s/${namespacePath}/${tabIndex === TAB_INDEXES.NETWORK ? getReferenceForModel(NetworkPolicyModel) : getReferenceForModel(MultiNetworkPolicyModel)}`; }; diff --git a/src/views/networkpolicies/new/NADsSelector.tsx b/src/views/networkpolicies/new/NADsSelector.tsx index e4cea581..29a9dd23 100644 --- a/src/views/networkpolicies/new/NADsSelector.tsx +++ b/src/views/networkpolicies/new/NADsSelector.tsx @@ -1,12 +1,12 @@ import React, { FC, useMemo } from 'react'; -import { NetworkAttachmentDefinitionModelGroupVersionKind } from '@kubevirt-ui/kubevirt-api/console'; import { useK8sWatchResource } from '@openshift-console/dynamic-plugin-sdk'; import { Alert, AlertVariant, FormGroup } from '@patternfly/react-core'; import Loading from '@utils/components/Loading/Loading'; import SelectMultiTypeahead from '@utils/components/SelectMultiTypeahead/SelectMultiTypeahead'; import { DEFAULT_NAMESPACE } from '@utils/constants'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { NetworkAttachmentDefinitionModelGroupVersionKind } from '@utils/models'; import { NetworkPolicy } from '@utils/models'; import { NetworkAttachmentDefinitionKind } from '@utils/resources/nads/types'; import { getName, getNamespace } from '@utils/resources/shared'; diff --git a/src/views/networkpolicies/new/NetworkPolicyForm.tsx b/src/views/networkpolicies/new/NetworkPolicyForm.tsx index 646a1028..2019ac5b 100644 --- a/src/views/networkpolicies/new/NetworkPolicyForm.tsx +++ b/src/views/networkpolicies/new/NetworkPolicyForm.tsx @@ -1,12 +1,12 @@ import React, { FC, useState } from 'react'; import { useParams } from 'react-router-dom-v5-compat'; -import { NetworkPolicyModel } from '@kubevirt-ui/kubevirt-api/console'; import { ResourceYAMLEditor } from '@openshift-console/dynamic-plugin-sdk'; import { Content, PageSection, Title } from '@patternfly/react-core'; import { EditorType } from '@utils/components/SyncedEditor/EditorToggle'; import { SyncedEditor } from '@utils/components/SyncedEditor/SyncedEditor'; import { safeYAMLToJS } from '@utils/components/SyncedEditor/yaml'; +import { NetworkPolicyModel } from '@utils/models'; import { MultiNetworkPolicyModel, networkPolicyToK8sResource } from '@utils/models'; import useIsMultiNetworkPolicy from './hooks/useIsMultiNetworkPolicy'; diff --git a/src/views/networkpolicies/new/NetworkPolicyFormSections.tsx b/src/views/networkpolicies/new/NetworkPolicyFormSections.tsx index d904aa15..fc818190 100644 --- a/src/views/networkpolicies/new/NetworkPolicyFormSections.tsx +++ b/src/views/networkpolicies/new/NetworkPolicyFormSections.tsx @@ -1,13 +1,12 @@ import React, { FC, FormEvent, useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom-v5-compat'; -import { NetworkPolicyModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiNetworkingV1NetworkPolicy } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { k8sCreate, useModal } from '@openshift-console/dynamic-plugin-sdk'; import { Form, PageSection, Title } from '@patternfly/react-core'; import ConfirmModal, { ConfirmModalProps } from '@utils/components/ConfirmModal/ConfirmModal'; import { useClusterNetworkFeatures } from '@utils/hooks/useClusterNetworkFeatures'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { NetworkPolicyModel } from '@utils/models'; import { checkNetworkPolicyValidity, isNetworkPolicyConversionError, @@ -18,6 +17,7 @@ import { networkPolicyToK8sResource, } from '@utils/models/index'; import { resourcePathFromModel } from '@utils/resources/shared'; +import { NetworkPolicy } from '@utils/types/k8sTypes'; import NetworkPolicyFormActionButtons from './components/NetworkPolicyFormActionButtons'; import NetworkPolicyFormAlert from './components/NetworkPolicyFormAlert'; @@ -31,8 +31,8 @@ import useIsMultiNetworkPolicy from './hooks/useIsMultiNetworkPolicy'; import NADsSelector from './NADsSelector'; type NetworkPolicyFormSectionsProps = { - formData: IoK8sApiNetworkingV1NetworkPolicy; - onChange: (newFormData: IoK8sApiNetworkingV1NetworkPolicy) => void; + formData: NetworkPolicy; + onChange: (newFormData: NetworkPolicy) => void; }; const NetworkPolicyFormSections: FC = ({ formData, onChange }) => { diff --git a/src/views/networkpolicies/new/components/NetworkPolicySelectorPreview/components/NetworkPolicyPodsPreview.tsx b/src/views/networkpolicies/new/components/NetworkPolicySelectorPreview/components/NetworkPolicyPodsPreview.tsx index cc422114..4e7d3f6c 100644 --- a/src/views/networkpolicies/new/components/NetworkPolicySelectorPreview/components/NetworkPolicyPodsPreview.tsx +++ b/src/views/networkpolicies/new/components/NetworkPolicySelectorPreview/components/NetworkPolicyPodsPreview.tsx @@ -1,14 +1,10 @@ import React, { FC, useMemo } from 'react'; -import { - modelToGroupVersionKind, - NamespaceModel, - PodModel, -} from '@kubevirt-ui/kubevirt-api/console'; import { ResourceIcon } from '@openshift-console/dynamic-plugin-sdk'; import { Alert, AlertVariant, Label, TreeView, TreeViewDataItem } from '@patternfly/react-core'; import Loading from '@utils/components/Loading/Loading'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getGroupVersionKindForModel, NamespaceModel, PodModel } from '@utils/models'; import { isEmpty } from '@utils/utils'; import { maxPreviewPods } from '../utils/const'; @@ -55,7 +51,7 @@ const NetworkPolicyPodsPreview: FC = ({ const ns = pod?.metadata?.namespace; podsByNs[ns] ??= []; podsByNs[ns].push({ - icon: , + icon: , name: pod?.metadata?.name, }); }); diff --git a/src/views/networkpolicies/new/components/NetworkPolicySelectorPreview/components/hooks/useNetworkPolicyPodPreviewData.ts b/src/views/networkpolicies/new/components/NetworkPolicySelectorPreview/components/hooks/useNetworkPolicyPodPreviewData.ts index ac9c8bab..899ad567 100644 --- a/src/views/networkpolicies/new/components/NetworkPolicySelectorPreview/components/hooks/useNetworkPolicyPodPreviewData.ts +++ b/src/views/networkpolicies/new/components/NetworkPolicySelectorPreview/components/hooks/useNetworkPolicyPodPreviewData.ts @@ -1,13 +1,13 @@ import { useMemo } from 'react'; -import { PodModel, ProjectModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiCoreV1Pod } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { K8sResourceCommon, Selector, useActiveNamespace, useK8sWatchResource, } from '@openshift-console/dynamic-plugin-sdk'; +import { PodModel, ProjectModel } from '@utils/models'; +import { Pod } from '@utils/types/k8sTypes'; import { safeSelector, selectorError } from '../../utils/utils'; @@ -20,7 +20,7 @@ type UseNetworkPolicyPodPreviewDataReturnValues = { error: string; loaded: boolean; namespaces: K8sResourceCommon[]; - pods: IoK8sApiCoreV1Pod[]; + pods: Pod[]; safeNsSelector: Selector; safePodSelector: Selector; }; @@ -45,7 +45,7 @@ const useNetworkPolicyPodPreviewData: UseNetworkPolicyPodPreviewData = ({ [podSelector], ); - const [pods, loadedPods, podsError] = useK8sWatchResource({ + const [pods, loadedPods, podsError] = useK8sWatchResource({ isList: true, kind: PodModel.kind, namespace, diff --git a/src/views/routes/actions/hooks/useRouteActions.ts b/src/views/routes/actions/hooks/useRouteActions.ts index c23a6e55..5b878ca5 100644 --- a/src/views/routes/actions/hooks/useRouteActions.ts +++ b/src/views/routes/actions/hooks/useRouteActions.ts @@ -1,6 +1,5 @@ import { useHistory } from 'react-router'; -import { modelToRef, RouteModel } from '@kubevirt-ui/kubevirt-api/console'; import { Action, useAnnotationsModal, @@ -8,6 +7,7 @@ import { useLabelsModal, } from '@openshift-console/dynamic-plugin-sdk'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getReferenceForModel, RouteModel } from '@utils/models'; import { asAccessReview, getName, getNamespace } from '@utils/resources/shared'; import { RouteKind } from '@utils/types'; @@ -40,7 +40,9 @@ const useRouteActions: UseRouteActions = (route) => { { accessReview: asAccessReview(RouteModel, route, 'update'), cta: () => - history.push(`/k8s/ns/${routeNamespace}/${modelToRef(RouteModel)}/${routeName}/form`), + history.push( + `/k8s/ns/${routeNamespace}/${getReferenceForModel(RouteModel)}/${routeName}/form`, + ), id: 'edit-routes', label: t('Edit Route'), }, diff --git a/src/views/routes/details/EditRoute.tsx b/src/views/routes/details/EditRoute.tsx index 1e7ff369..0338cb65 100644 --- a/src/views/routes/details/EditRoute.tsx +++ b/src/views/routes/details/EditRoute.tsx @@ -1,9 +1,9 @@ import React, { FC } from 'react'; import { useParams } from 'react-router-dom-v5-compat'; -import { modelToGroupVersionKind, RouteModel } from '@kubevirt-ui/kubevirt-api/console'; import { useK8sWatchResource } from '@openshift-console/dynamic-plugin-sdk'; import StatusBox from '@utils/components/StatusBox/StatusBox'; +import { getGroupVersionKindForModel, RouteModel } from '@utils/models'; import { RouteKind } from '@utils/types'; import RouteFormPage from '../form/RouteFormPage'; @@ -12,7 +12,7 @@ const RouteDetailsPage: FC = () => { const params = useParams(); const [route, loaded, error] = useK8sWatchResource({ - groupVersionKind: modelToGroupVersionKind(RouteModel), + groupVersionKind: getGroupVersionKindForModel(RouteModel), isList: false, name: params.name, namespace: params.namespace, diff --git a/src/views/routes/details/RouteDetailsPage.tsx b/src/views/routes/details/RouteDetailsPage.tsx index 462a3be2..14910aaf 100644 --- a/src/views/routes/details/RouteDetailsPage.tsx +++ b/src/views/routes/details/RouteDetailsPage.tsx @@ -1,8 +1,8 @@ import React, { FC } from 'react'; -import { modelToGroupVersionKind, RouteModel } from '@kubevirt-ui/kubevirt-api/console'; import { HorizontalNav, useK8sWatchResource } from '@openshift-console/dynamic-plugin-sdk'; import StatusBox from '@utils/components/StatusBox/StatusBox'; +import { getGroupVersionKindForModel, RouteModel } from '@utils/models'; import { RouteKind } from '@utils/types'; import RouteDetailsPageTitle from '@views/routes/details/components/RouteDetailsPageTitle/RouteDetailsPageTitle'; import useRouteTabs from '@views/routes/details/hooks/useRouteTabs'; @@ -14,7 +14,7 @@ type RouteDetailsPageProps = { const RouteDetailsPage: FC = ({ name, namespace }) => { const [route, loaded, error] = useK8sWatchResource({ - groupVersionKind: modelToGroupVersionKind(RouteModel), + groupVersionKind: getGroupVersionKindForModel(RouteModel), name, namespace: namespace, }); diff --git a/src/views/routes/details/components/RouteDetailsPageTitle/RouteDetailsPageTitle.tsx b/src/views/routes/details/components/RouteDetailsPageTitle/RouteDetailsPageTitle.tsx index c880351d..9ab800cb 100644 --- a/src/views/routes/details/components/RouteDetailsPageTitle/RouteDetailsPageTitle.tsx +++ b/src/views/routes/details/components/RouteDetailsPageTitle/RouteDetailsPageTitle.tsx @@ -1,10 +1,10 @@ import React, { FC } from 'react'; -import { modelToRef, RouteModel } from '@kubevirt-ui/kubevirt-api/console'; import { Title } from '@patternfly/react-core'; import DetailsPageTitle from '@utils/components/DetailsPageTitle/DetailsPageTitle'; import { useLastNamespacePath } from '@utils/hooks/useLastNamespacePath'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getReferenceForModel, RouteModel } from '@utils/models'; import { getName } from '@utils/resources/shared'; import { RouteKind } from '@utils/types'; import RouteActions from '@views/routes/actions/RouteActions'; @@ -20,7 +20,7 @@ const RouteDetailsPageTitle: FC = ({ route }) => { return ( diff --git a/src/views/routes/details/components/tabs/detailsTab/components/RouteDetailsSection/DetailsSectionLeftColumn.tsx b/src/views/routes/details/components/tabs/detailsTab/components/RouteDetailsSection/DetailsSectionLeftColumn.tsx index e7a496d8..9dcb5e4e 100644 --- a/src/views/routes/details/components/tabs/detailsTab/components/RouteDetailsSection/DetailsSectionLeftColumn.tsx +++ b/src/views/routes/details/components/tabs/detailsTab/components/RouteDetailsSection/DetailsSectionLeftColumn.tsx @@ -1,7 +1,6 @@ import React, { FC } from 'react'; import * as _ from 'lodash'; -import { NamespaceModel, RouteModel } from '@kubevirt-ui/kubevirt-api/console'; import { getGroupVersionKindForModel, ResourceLink, @@ -16,6 +15,7 @@ import { DetailsItem } from '@utils/components/DetailsItem/DetailsItem'; import { LabelList } from '@utils/components/DetailsItem/LabelList'; import { OwnerReferences } from '@utils/components/OwnerReference/owner-references'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { NamespaceModel, RouteModel } from '@utils/models'; import { getAnnotations, getCreationTimestamp, diff --git a/src/views/routes/form/AlternateService.tsx b/src/views/routes/form/AlternateService.tsx index c92de982..91305d1f 100644 --- a/src/views/routes/form/AlternateService.tsx +++ b/src/views/routes/form/AlternateService.tsx @@ -1,7 +1,6 @@ import React, { FC } from 'react'; import { Controller, FieldArrayWithId, useFormContext } from 'react-hook-form'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { ResourceIcon } from '@openshift-console/dynamic-plugin-sdk'; import { Button, @@ -17,6 +16,7 @@ import Select from '@utils/components/Select/Select'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; import { getName } from '@utils/resources/shared'; import { RouteKind } from '@utils/types'; +import { Service } from '@utils/types/k8sTypes'; import { AS_PREFIX_FIELD_ID, @@ -26,7 +26,7 @@ import { type AlternateServiceProps = { field: FieldArrayWithId; - filteredServices: IoK8sApiCoreV1Service[]; + filteredServices: Service[]; index: number; remove: (index: number) => void; }; diff --git a/src/views/routes/form/AlternateServicesSection.tsx b/src/views/routes/form/AlternateServicesSection.tsx index 4881a14e..cadeef53 100644 --- a/src/views/routes/form/AlternateServicesSection.tsx +++ b/src/views/routes/form/AlternateServicesSection.tsx @@ -1,18 +1,18 @@ import React, { FC } from 'react'; import { useFieldArray, useFormContext } from 'react-hook-form'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { Button, ButtonVariant } from '@patternfly/react-core'; import { PlusCircleIcon } from '@patternfly/react-icons'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; import { getName } from '@utils/resources/shared'; import { RouteKind } from '@utils/types'; +import { Service } from '@utils/types/k8sTypes'; import { isEmpty } from '@utils/utils'; import AlternateService from './AlternateService'; type AlternateServicesSectionProps = { - services: IoK8sApiCoreV1Service[]; + services: Service[]; }; const AlternateServicesSection: FC = ({ services }) => { diff --git a/src/views/routes/form/RouteForm.tsx b/src/views/routes/form/RouteForm.tsx index ca9c34e0..a4151213 100644 --- a/src/views/routes/form/RouteForm.tsx +++ b/src/views/routes/form/RouteForm.tsx @@ -2,7 +2,6 @@ import React, { FC, useEffect, useState } from 'react'; import { Controller, FormProvider, useForm } from 'react-hook-form'; import { useNavigate } from 'react-router-dom-v5-compat'; -import { RouteModel } from '@kubevirt-ui/kubevirt-api/console'; import { k8sCreate, k8sUpdate, useActiveNamespace } from '@openshift-console/dynamic-plugin-sdk'; import { Checkbox, @@ -14,6 +13,7 @@ import { } from '@patternfly/react-core'; import FormGroupHelperText from '@utils/components/FormGroupHelperText/FormGroupHelperText'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { RouteModel } from '@utils/models'; import { getName, getNamespace, resourcePathFromModel } from '@utils/resources/shared'; import { RouteKind } from '@utils/types'; import { getValidNamespace } from '@utils/utils'; diff --git a/src/views/routes/form/RouteFormPage.tsx b/src/views/routes/form/RouteFormPage.tsx index 219229d4..5f116edb 100644 --- a/src/views/routes/form/RouteFormPage.tsx +++ b/src/views/routes/form/RouteFormPage.tsx @@ -1,12 +1,12 @@ import React, { FC } from 'react'; -import { RouteModel } from '@kubevirt-ui/kubevirt-api/console'; import { ResourceYAMLEditor, useActiveNamespace } from '@openshift-console/dynamic-plugin-sdk'; import { Content, ContentVariants, PageSection, Title } from '@patternfly/react-core'; import { EditorType } from '@utils/components/SyncedEditor/EditorToggle'; import { SyncedEditor } from '@utils/components/SyncedEditor/SyncedEditor'; import { safeYAMLToJS } from '@utils/components/SyncedEditor/yaml'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { RouteModel } from '@utils/models'; import { RouteKind } from '@utils/types'; import { getValidNamespace } from '@utils/utils'; import { LAST_VIEWED_EDITOR_TYPE_USERSETTING_KEY } from '@views/networkpolicies/new/utils/const'; diff --git a/src/views/routes/form/ServiceSelector.tsx b/src/views/routes/form/ServiceSelector.tsx index 3b9c8488..a50203c1 100644 --- a/src/views/routes/form/ServiceSelector.tsx +++ b/src/views/routes/form/ServiceSelector.tsx @@ -1,7 +1,6 @@ import React, { FC } from 'react'; import { Controller, useFormContext } from 'react-hook-form'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { ResourceIcon, useK8sWatchResource } from '@openshift-console/dynamic-plugin-sdk'; import { Alert, @@ -17,6 +16,7 @@ import Select from '@utils/components/Select/Select'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; import { getName } from '@utils/resources/shared'; import { RouteKind } from '@utils/types'; +import { Service } from '@utils/types/k8sTypes'; import AlternateService from './AlternateServicesSection'; import { @@ -44,7 +44,7 @@ const ServiceSelector: FC = ({ namespace }) => { const { t } = useNetworkingTranslation(); - const [services, loaded, error] = useK8sWatchResource({ + const [services, loaded, error] = useK8sWatchResource({ groupVersionKind: ServiceGroupVersionKind, isList: true, namespace, diff --git a/src/views/routes/form/Targetport.tsx b/src/views/routes/form/Targetport.tsx index 19252cde..5385f172 100644 --- a/src/views/routes/form/Targetport.tsx +++ b/src/views/routes/form/Targetport.tsx @@ -1,15 +1,15 @@ import React, { FC } from 'react'; import { Controller, useFormContext } from 'react-hook-form'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { DropdownItem, FormGroup, ValidatedOptions } from '@patternfly/react-core'; import FormGroupHelperText from '@utils/components/FormGroupHelperText/FormGroupHelperText'; import Select from '@utils/components/Select/Select'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; import { RouteKind } from '@utils/types'; +import { Service } from '@utils/types/k8sTypes'; type TargetPortProps = { - service: IoK8sApiCoreV1Service; + service: Service; }; const TargetPort: FC = ({ service }) => { diff --git a/src/views/routes/form/constants.ts b/src/views/routes/form/constants.ts index 5d4d9039..1d9bc108 100644 --- a/src/views/routes/form/constants.ts +++ b/src/views/routes/form/constants.ts @@ -1,5 +1,5 @@ -import { modelToGroupVersionKind, ServiceModel } from '@kubevirt-ui/kubevirt-api/console'; import { t } from '@utils/hooks/useNetworkingTranslation'; +import { getGroupVersionKindForModel, ServiceModel } from '@utils/models'; export const PASSTHROUGH = 'passthrough'; export const RE_ENCRYPT = 'reencrypt'; @@ -22,7 +22,7 @@ export const passthroughInsecureTrafficTypes = { Redirect: t('Redirect'), }; -export const ServiceGroupVersionKind = modelToGroupVersionKind(ServiceModel); +export const ServiceGroupVersionKind = getGroupVersionKindForModel(ServiceModel); export const NAME_FIELD_ID = 'name'; export const HOST_FIELD_ID = 'host'; diff --git a/src/views/routes/form/utils.ts b/src/views/routes/form/utils.ts index f122cbc7..ea1903a6 100644 --- a/src/views/routes/form/utils.ts +++ b/src/views/routes/form/utils.ts @@ -1,4 +1,4 @@ -import { RouteModel } from '@kubevirt-ui/kubevirt-api/console'; +import { RouteModel } from '@utils/models'; import { RouteKind, RouteTLS } from '@utils/types'; import { generateName } from '@utils/utils'; diff --git a/src/views/routes/list/RoutesList.tsx b/src/views/routes/list/RoutesList.tsx index 7f75b552..56d02962 100644 --- a/src/views/routes/list/RoutesList.tsx +++ b/src/views/routes/list/RoutesList.tsx @@ -1,7 +1,6 @@ import React, { FC } from 'react'; import { useNavigate } from 'react-router-dom-v5-compat'; -import { modelToGroupVersionKind, RouteModel } from '@kubevirt-ui/kubevirt-api/console'; import { ListPageBody, ListPageCreateButton, @@ -16,6 +15,7 @@ import { DEFAULT_NAMESPACE } from '@utils/constants'; import { documentationURLs, getDocumentationURL } from '@utils/constants/documentation'; import { SHARED_DEFAULT_PATH_NEW_RESOURCE_FORM } from '@utils/constants/ui'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getGroupVersionKindForModel, RouteModel } from '@utils/models'; import { resourcePathFromModel } from '@utils/resources/shared'; import { RouteKind } from '@utils/types'; import RouteRow from '@views/routes/list/components/RouteRow'; @@ -32,7 +32,7 @@ const RoutesList: FC = ({ namespace }) => { const navigate = useNavigate(); const [routesFetch, loaded, loadError] = useK8sWatchResource({ - groupVersionKind: modelToGroupVersionKind(RouteModel), + groupVersionKind: getGroupVersionKindForModel(RouteModel), isList: true, namespace, }); @@ -56,7 +56,7 @@ const RoutesList: FC = ({ namespace }) => { diff --git a/src/views/routes/list/components/RouteRow.tsx b/src/views/routes/list/components/RouteRow.tsx index 3b9c98ca..2bcd54a9 100644 --- a/src/views/routes/list/components/RouteRow.tsx +++ b/src/views/routes/list/components/RouteRow.tsx @@ -1,13 +1,13 @@ import React, { FC } from 'react'; import classNames from 'classnames'; -import { NamespaceModel, RouteModel, ServiceModel } from '@kubevirt-ui/kubevirt-api/console'; import { getGroupVersionKindForModel, ResourceLink, RowProps, TableData, } from '@openshift-console/dynamic-plugin-sdk'; +import { NamespaceModel, RouteModel, ServiceModel } from '@utils/models'; import { getName, getNamespace } from '@utils/resources/shared'; import { RouteKind } from '@utils/types'; import RouteActions from '@views/routes/actions/RouteActions'; diff --git a/src/views/routes/list/hooks/useRouteColumns.ts b/src/views/routes/list/hooks/useRouteColumns.ts index 347613c0..dda506e9 100644 --- a/src/views/routes/list/hooks/useRouteColumns.ts +++ b/src/views/routes/list/hooks/useRouteColumns.ts @@ -1,9 +1,9 @@ import { useMemo } from 'react'; -import { RouteModel } from '@kubevirt-ui/kubevirt-api/console'; import { TableColumn, useActiveColumns } from '@openshift-console/dynamic-plugin-sdk'; import { sortable } from '@patternfly/react-table'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { RouteModel } from '@utils/models'; import { RouteKind } from '@utils/types'; import { sortRoutesByLocation, sortRoutesByStatus } from '../utils/utils'; diff --git a/src/views/services/actions/ServiceActions.tsx b/src/views/services/actions/ServiceActions.tsx index e4d200ae..8b1f505c 100644 --- a/src/views/services/actions/ServiceActions.tsx +++ b/src/views/services/actions/ServiceActions.tsx @@ -1,13 +1,13 @@ import React, { FC } from 'react'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import ActionsDropdown from '@utils/components/ActionsDropdown/ActionsDropdown'; +import { Service } from '@utils/types/k8sTypes'; import useServiceActions from './hooks/useServiceActions'; type ServiceActionsProps = { isKebabToggle?: boolean; - obj: IoK8sApiCoreV1Service; + obj: Service; }; const ServiceActions: FC = ({ isKebabToggle, obj }) => { diff --git a/src/views/services/actions/hooks/useServiceActions.tsx b/src/views/services/actions/hooks/useServiceActions.tsx index 912e92a8..1b2574af 100644 --- a/src/views/services/actions/hooks/useServiceActions.tsx +++ b/src/views/services/actions/hooks/useServiceActions.tsx @@ -1,7 +1,5 @@ import { useHistory } from 'react-router'; -import { modelToRef, ServiceModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { Action, useAnnotationsModal, @@ -13,9 +11,11 @@ import PodSelectorModal, { PodSelectorModalProps, } from '@utils/components/PodSelectorModal/PodSelectorModal'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getReferenceForModel, ServiceModel } from '@utils/models'; import { asAccessReview, getName, getNamespace } from '@utils/resources/shared'; +import { Service } from '@utils/types/k8sTypes'; -type ServiceActionProps = (obj: IoK8sApiCoreV1Service) => [actions: Action[]]; +type ServiceActionProps = (obj: Service) => [actions: Action[]]; const useServiceActions: ServiceActionProps = (obj) => { const { t } = useNetworkingTranslation(); @@ -55,7 +55,9 @@ const useServiceActions: ServiceActionProps = (obj) => { { accessReview: asAccessReview(ServiceModel, obj, 'update'), cta: () => - history.push(`/k8s/ns/${objNamespace}/${modelToRef(ServiceModel)}/${objName}/yaml`), + history.push( + `/k8s/ns/${objNamespace}/${getReferenceForModel(ServiceModel)}/${objName}/yaml`, + ), id: 'edit-services', label: t('Edit Service'), }, diff --git a/src/views/services/details/ServiceDetailsPage.tsx b/src/views/services/details/ServiceDetailsPage.tsx index 7048f279..0afd0301 100644 --- a/src/views/services/details/ServiceDetailsPage.tsx +++ b/src/views/services/details/ServiceDetailsPage.tsx @@ -1,9 +1,9 @@ import React, { FC } from 'react'; -import { modelToGroupVersionKind, ServiceModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { HorizontalNav, useK8sWatchResource } from '@openshift-console/dynamic-plugin-sdk'; import StatusBox from '@utils/components/StatusBox/StatusBox'; +import { getGroupVersionKindForModel, ServiceModel } from '@utils/models'; +import { Service } from '@utils/types/k8sTypes'; import ServicePageTitle from './components/ServiceDetailsPageTitle'; import { useServiceTabs } from './hooks/useServiceTabs'; @@ -14,8 +14,8 @@ export type ServicePageNavProps = { }; const ServicePageNav: FC = ({ name, namespace }) => { - const [service, loaded, error] = useK8sWatchResource({ - groupVersionKind: modelToGroupVersionKind(ServiceModel), + const [service, loaded, error] = useK8sWatchResource({ + groupVersionKind: getGroupVersionKindForModel(ServiceModel), name, namespace, }); diff --git a/src/views/services/details/components/ServiceDetailsPageTitle.tsx b/src/views/services/details/components/ServiceDetailsPageTitle.tsx index 016668a2..bc283100 100644 --- a/src/views/services/details/components/ServiceDetailsPageTitle.tsx +++ b/src/views/services/details/components/ServiceDetailsPageTitle.tsx @@ -1,15 +1,15 @@ import React, { FC } from 'react'; -import { modelToRef, ServiceModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { Title } from '@patternfly/react-core'; import DetailsPageTitle from '@utils/components/DetailsPageTitle/DetailsPageTitle'; import { useLastNamespacePath } from '@utils/hooks/useLastNamespacePath'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getReferenceForModel, ServiceModel } from '@utils/models'; +import { Service } from '@utils/types/k8sTypes'; import ServiceActions from '@views/services/actions/ServiceActions'; type ServicePageTitleProps = { - service: IoK8sApiCoreV1Service; + service: Service; }; const ServicePageTitle: FC = ({ service }) => { @@ -19,7 +19,7 @@ const ServicePageTitle: FC = ({ service }) => { return ( diff --git a/src/views/services/details/tabs/details/ServiceAddress.tsx b/src/views/services/details/tabs/details/ServiceAddress.tsx index 53b1f3bc..e3c04cf8 100644 --- a/src/views/services/details/tabs/details/ServiceAddress.tsx +++ b/src/views/services/details/tabs/details/ServiceAddress.tsx @@ -1,10 +1,10 @@ import React, { FC } from 'react'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import MutedText from '@utils/components/MutedText/MutedText'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { Service } from '@utils/types/k8sTypes'; -const ServiceAddress: FC<{ service: IoK8sApiCoreV1Service }> = ({ service }) => { +const ServiceAddress: FC<{ service: Service }> = ({ service }) => { const { t } = useNetworkingTranslation(); const ServiceType = (type) => { diff --git a/src/views/services/details/tabs/details/ServiceDetails.tsx b/src/views/services/details/tabs/details/ServiceDetails.tsx index 1f42e659..831bbd4e 100644 --- a/src/views/services/details/tabs/details/ServiceDetails.tsx +++ b/src/views/services/details/tabs/details/ServiceDetails.tsx @@ -1,8 +1,6 @@ import React, { FC } from 'react'; import * as _ from 'lodash'; -import { modelToGroupVersionKind, ServiceModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { ResourceLink, Timestamp, @@ -27,12 +25,14 @@ import Loading from '@utils/components/Loading/Loading'; import { OwnerReferences } from '@utils/components/OwnerReference/owner-references'; import { Selector } from '@utils/components/Selector/Selector'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getGroupVersionKindForModel, ServiceModel } from '@utils/models'; +import { Service } from '@utils/types/k8sTypes'; import ServiceAddress from './ServiceAddress'; import ServicePortMapping from './ServicePortMapping'; type DetailsProps = { - obj: IoK8sApiCoreV1Service; + obj: Service; }; const ServiceDetails: FC = ({ obj: service }) => { @@ -83,7 +83,7 @@ const ServiceDetails: FC = ({ obj: service }) => { valueClassName="co-editable-label-group" > diff --git a/src/views/services/details/tabs/pods/ServicePods.tsx b/src/views/services/details/tabs/pods/ServicePods.tsx index 6461612d..a352efad 100644 --- a/src/views/services/details/tabs/pods/ServicePods.tsx +++ b/src/views/services/details/tabs/pods/ServicePods.tsx @@ -1,10 +1,5 @@ import React, { FC } from 'react'; -import { modelToGroupVersionKind, PodModel } from '@kubevirt-ui/kubevirt-api/console'; -import { - IoK8sApiCoreV1Pod, - IoK8sApiCoreV1Service, -} from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { ListPageFilter, PrometheusEndpoint, @@ -14,7 +9,9 @@ import { VirtualizedTable, } from '@openshift-console/dynamic-plugin-sdk'; import { PageSection } from '@patternfly/react-core'; +import { getGroupVersionKindForModel, PodModel } from '@utils/models'; import { getNamespace } from '@utils/resources/shared'; +import { Pod, Service } from '@utils/types/k8sTypes'; import PodRow from './components/PodRow'; import usePodColumns from './hooks/usePodColumns'; @@ -23,7 +20,7 @@ import { MIGRATION__PROMETHEUS_DELAY } from './constants'; import { getCPUUsageQuery, getMemoryUsageQuery } from './utils'; type ServicePodsProps = { - obj?: IoK8sApiCoreV1Service; + obj?: Service; }; const ServicePods: FC = ({ obj: service }) => { @@ -44,8 +41,8 @@ const ServicePods: FC = ({ obj: service }) => { query: getCPUUsageQuery(namespace), }); - const [pods, loaded, loadError] = useK8sWatchResource({ - groupVersionKind: modelToGroupVersionKind(PodModel), + const [pods, loaded, loadError] = useK8sWatchResource({ + groupVersionKind: getGroupVersionKindForModel(PodModel), isList: true, namespace, selector, @@ -59,7 +56,7 @@ const ServicePods: FC = ({ obj: service }) => { return ( - + columns={columns} data={filteredData} loaded={loaded} diff --git a/src/views/services/details/tabs/pods/components/PodRow.tsx b/src/views/services/details/tabs/pods/components/PodRow.tsx index 1a412732..290d871a 100644 --- a/src/views/services/details/tabs/pods/components/PodRow.tsx +++ b/src/views/services/details/tabs/pods/components/PodRow.tsx @@ -2,8 +2,6 @@ import React, { FC } from 'react'; import classNames from 'classnames'; import * as _ from 'lodash'; -import { modelToGroupVersionKind, PodModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiCoreV1Pod } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { PrometheusResponse, ResourceLink, @@ -15,6 +13,8 @@ import { LazyActionMenu } from '@openshift-console/dynamic-plugin-sdk-internal'; import { LabelList } from '@utils/components/DetailsItem/LabelList'; import { OwnerReferences } from '@utils/components/OwnerReference/owner-references'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getGroupVersionKindForModel, PodModel } from '@utils/models'; +import { Pod } from '@utils/types/k8sTypes'; import { podColumnInfo } from '../hooks/usePodColumns'; import { formatBytesAsMiB, formatCores } from '../units'; @@ -24,7 +24,7 @@ import { PodStatus } from './PodStatus'; import { PodTraffic } from './PodTraffic'; type PodRowType = RowProps< - IoK8sApiCoreV1Pod, + Pod, { cpuUsageData: PrometheusResponse; memoryUsageData: PrometheusResponse } >; @@ -52,7 +52,7 @@ const PodRow: FC = ({ id={podColumnInfo.name.id} > @@ -125,7 +125,7 @@ const PodRow: FC = ({ className={podColumnInfo.labels.classes} id={podColumnInfo.labels.id} > - + = ({ @@ -66,7 +63,7 @@ export const PodStatus: FC = ({ pod }) => { let headerTitle = ''; if (status === 'CrashLoopBackOff') { headerTitle = t('Pod crash loop back-off'); - const containers: IoK8sApiCoreV1Container[] = pod.spec.containers; + const containers: Container[] = pod.spec.containers; footerLinks = (

diff --git a/src/views/services/details/tabs/pods/hooks/usePodColumns.tsx b/src/views/services/details/tabs/pods/hooks/usePodColumns.tsx index 903d4ce3..b8e737e3 100644 --- a/src/views/services/details/tabs/pods/hooks/usePodColumns.tsx +++ b/src/views/services/details/tabs/pods/hooks/usePodColumns.tsx @@ -1,8 +1,6 @@ import { useMemo } from 'react'; import classNames from 'classnames'; -import { modelToRef, PodModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiCoreV1Pod } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { PrometheusResponse, TableColumn, @@ -10,6 +8,8 @@ import { } from '@openshift-console/dynamic-plugin-sdk'; import { sortable } from '@patternfly/react-table'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getReferenceForModel, PodModel } from '@utils/models'; +import { Pod } from '@utils/types/k8sTypes'; import { PROMETHEUS_BASE_PATH, PROMETHEUS_TENANCY_BASE_PATH } from '../constants'; import { @@ -98,7 +98,7 @@ const usePodColumns = ( ): { id: string; title: string }[] => { const { t } = useNetworkingTranslation(); - const columns: TableColumn[] = useMemo( + const columns: TableColumn[] = useMemo( () => [ { id: podColumnInfo.name.id, @@ -117,8 +117,7 @@ const usePodColumns = ( { id: podColumnInfo.status.id, props: { className: podColumnInfo.status.classes }, - sort: (data, direction) => - data.sort(sortResourceByValue(direction, podPhase)), + sort: (data, direction) => data.sort(sortResourceByValue(direction, podPhase)), title: t(podColumnInfo.status.title), transforms: [sortable], }, @@ -126,20 +125,14 @@ const usePodColumns = ( id: podColumnInfo.ready.id, props: { className: podColumnInfo.ready.classes }, sort: (data, direction) => - data.sort( - sortResourceByValue( - direction, - (obj) => podReadiness(obj).readyCount, - ), - ), + data.sort(sortResourceByValue(direction, (obj) => podReadiness(obj).readyCount)), title: t(podColumnInfo.ready.title), transforms: [sortable], }, { id: podColumnInfo.restarts.id, props: { className: podColumnInfo.restarts.classes }, - sort: (data, direction) => - data.sort(sortResourceByValue(direction, podRestarts)), + sort: (data, direction) => data.sort(sortResourceByValue(direction, podRestarts)), title: t(podColumnInfo.restarts.title), transforms: [sortable], }, @@ -155,9 +148,7 @@ const usePodColumns = ( props: { className: podColumnInfo.memory.classes }, sort: (data, direction) => data.sort( - sortResourceByValue(direction, (obj) => - getPodMemoryUsage(memoryUsageData, obj), - ), + sortResourceByValue(direction, (obj) => getPodMemoryUsage(memoryUsageData, obj)), ), title: t(podColumnInfo.memory.title), transforms: [sortable], @@ -167,9 +158,7 @@ const usePodColumns = ( props: { className: podColumnInfo.cpu.classes }, sort: (data, direction) => data.sort( - sortResourceByValue(direction, (obj) => - getPodCPUUsage(cpuUsageData, obj), - ), + sortResourceByValue(direction, (obj) => getPodCPUUsage(cpuUsageData, obj)), ), title: t(podColumnInfo.cpu.title), transforms: [sortable], @@ -219,8 +208,8 @@ const usePodColumns = ( [cpuUsageData, memoryUsageData, t], ); - const [activeColumns] = useActiveColumns({ - columnManagementID: modelToRef(PodModel) + 'service-tab', + const [activeColumns] = useActiveColumns({ + columnManagementID: getReferenceForModel(PodModel) + 'service-tab', columns, showNamespaceOverride: false, }); diff --git a/src/views/services/details/tabs/pods/hooks/usePodFilters.tsx b/src/views/services/details/tabs/pods/hooks/usePodFilters.tsx index 314921c3..146f4be5 100644 --- a/src/views/services/details/tabs/pods/hooks/usePodFilters.tsx +++ b/src/views/services/details/tabs/pods/hooks/usePodFilters.tsx @@ -1,12 +1,12 @@ import * as _ from 'lodash'; -import { IoK8sApiCoreV1Pod } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { RowFilter } from '@openshift-console/dynamic-plugin-sdk'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { Pod } from '@utils/types/k8sTypes'; import { podPhaseFilterReducer } from '../utils'; -export const usePodFilters = (): RowFilter[] => { +export const usePodFilters = (): RowFilter[] => { const { t } = useNetworkingTranslation(); return [ diff --git a/src/views/services/details/tabs/pods/utils.ts b/src/views/services/details/tabs/pods/utils.ts index 3bfa9bab..b4ae811d 100644 --- a/src/views/services/details/tabs/pods/utils.ts +++ b/src/views/services/details/tabs/pods/utils.ts @@ -2,18 +2,15 @@ import * as _ from 'lodash'; -import { - IoK8sApiCoreV1ContainerStatus, - IoK8sApiCoreV1Pod, -} from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { K8sResourceCommon, PrometheusResponse } from '@openshift-console/dynamic-plugin-sdk'; import { SortByDirection } from '@patternfly/react-table'; import { getName, getNamespace } from '@utils/resources/shared'; +import { ContainerStatus, Pod } from '@utils/types/k8sTypes'; export type PodPhase = string; // (See https://github.com/kubernetes/kubernetes/blob/release-1.17/pkg/printers/internalversion/printers.go) -export const podPhase = (pod: IoK8sApiCoreV1Pod): PodPhase => { +export const podPhase = (pod: Pod): PodPhase => { if (!pod || !pod.status) { return ''; } @@ -33,29 +30,26 @@ export const podPhase = (pod: IoK8sApiCoreV1Pod): PodPhase => { let initializing = false; let phase = pod.status.phase || pod.status.reason; - _.each( - pod.status.initContainerStatuses, - (container: IoK8sApiCoreV1ContainerStatus, i: number) => { - const { terminated, waiting } = container.state; - if (terminated && terminated.exitCode === 0) { - return true; - } + _.each(pod.status.initContainerStatuses, (container: ContainerStatus, i: number) => { + const { terminated, waiting } = container.state; + if (terminated && terminated.exitCode === 0) { + return true; + } - initializing = true; - if (terminated && terminated.reason) { - phase = `Init:${terminated.reason}`; - } else if (terminated && !terminated.reason) { - phase = terminated.signal - ? `Init:Signal:${terminated.signal}` - : `Init:ExitCode:${terminated.exitCode}`; - } else if (waiting && waiting.reason && waiting.reason !== 'PodInitializing') { - phase = `Init:${waiting.reason}`; - } else { - phase = `Init:${i}/${pod.status.initContainerStatuses.length}`; - } - return false; - }, - ); + initializing = true; + if (terminated && terminated.reason) { + phase = `Init:${terminated.reason}`; + } else if (terminated && !terminated.reason) { + phase = terminated.signal + ? `Init:Signal:${terminated.signal}` + : `Init:ExitCode:${terminated.exitCode}`; + } else if (waiting && waiting.reason && waiting.reason !== 'PodInitializing') { + phase = `Init:${waiting.reason}`; + } else { + phase = `Init:${i}/${pod.status.initContainerStatuses.length}`; + } + return false; + }); if (!initializing) { let hasRunning = false; @@ -88,7 +82,7 @@ export const podPhase = (pod: IoK8sApiCoreV1Pod): PodPhase => { return phase; }; -export const podPhaseFilterReducer = (pod: IoK8sApiCoreV1Pod): PodPhase => { +export const podPhaseFilterReducer = (pod: Pod): PodPhase => { const status = podPhase(pod); if (status === 'Terminating') { return status; @@ -123,13 +117,11 @@ export const sortResourceByValue = return aName.localeCompare(bName, lang, compareOpts); }; -export const podReadiness = ( - pod: IoK8sApiCoreV1Pod, -): { readyCount: number; totalContainers: number } => { +export const podReadiness = (pod: Pod): { readyCount: number; totalContainers: number } => { // Don't include init containers in readiness count. This is consistent with the CLI. const containerStatuses = pod?.status?.containerStatuses || []; return containerStatuses.reduce( - (acc, { ready }: IoK8sApiCoreV1ContainerStatus) => { + (acc, { ready }: ContainerStatus) => { if (ready) { acc.readyCount = acc.readyCount + 1; } @@ -139,7 +131,7 @@ export const podReadiness = ( ); }; -export const podRestarts = (pod: IoK8sApiCoreV1Pod): number => { +export const podRestarts = (pod: Pod): number => { if (!pod || !pod.status) { return 0; } @@ -149,21 +141,18 @@ export const podRestarts = (pod: IoK8sApiCoreV1Pod): number => { }); const toCheck = isInitializing ? initContainerStatuses : containerStatuses; return toCheck.reduce( - (restartCount, status: IoK8sApiCoreV1ContainerStatus) => restartCount + status.restartCount, + (restartCount, status: ContainerStatus) => restartCount + status.restartCount, 0, ); }; -export const isContainerCrashLoopBackOff = ( - pod: IoK8sApiCoreV1Pod, - containerName: string, -): boolean => { +export const isContainerCrashLoopBackOff = (pod: Pod, containerName: string): boolean => { const containerStatus = pod?.status?.containerStatuses?.find((c) => c.name === containerName); const waitingReason = containerStatus?.state?.waiting?.reason; return waitingReason === 'CrashLoopBackOff'; }; -export const isWindowsPod = (pod: IoK8sApiCoreV1Pod): boolean => { +export const isWindowsPod = (pod: Pod): boolean => { return pod?.spec?.tolerations?.some((t) => t.key === 'os' && t.value === 'Windows'); }; @@ -172,7 +161,7 @@ export const getMemoryUsageQuery = (namespace: string) => export const getCPUUsageQuery = (namespace: string) => `pod:container_cpu_usage:sum{namespace='${namespace}'}`; -export const getPodCPUUsage = (cpuUsage: PrometheusResponse, pod: IoK8sApiCoreV1Pod) => { +export const getPodCPUUsage = (cpuUsage: PrometheusResponse, pod: Pod) => { const podUsage = cpuUsage?.data?.result?.find( (result) => result?.metric?.pod === getName(pod) && result?.metric?.namespace === getNamespace(pod), @@ -181,7 +170,7 @@ export const getPodCPUUsage = (cpuUsage: PrometheusResponse, pod: IoK8sApiCoreV1 return podUsage?.value?.[1]; }; -export const getPodMemoryUsage = (memoryUsage: PrometheusResponse, pod: IoK8sApiCoreV1Pod) => { +export const getPodMemoryUsage = (memoryUsage: PrometheusResponse, pod: Pod) => { const podUsage = memoryUsage?.data?.result?.find( (result) => result?.metric?.pod === getName(pod) && result?.metric?.namespace === getNamespace(pod), diff --git a/src/views/services/details/tabs/yaml/ServiceYAML.tsx b/src/views/services/details/tabs/yaml/ServiceYAML.tsx index 9f1a7ac3..01199efe 100644 --- a/src/views/services/details/tabs/yaml/ServiceYAML.tsx +++ b/src/views/services/details/tabs/yaml/ServiceYAML.tsx @@ -1,11 +1,11 @@ import React, { FC, Suspense } from 'react'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { ResourceYAMLEditor } from '@openshift-console/dynamic-plugin-sdk'; import Loading from '@utils/components/Loading/Loading'; +import { Service } from '@utils/types/k8sTypes'; type ServiceYAMLPageProps = { - obj?: IoK8sApiCoreV1Service; + obj?: Service; }; const ServiceYAMLPage: FC = ({ obj: service }) => { diff --git a/src/views/services/list/ServiceList.tsx b/src/views/services/list/ServiceList.tsx index c0b36e09..7d36e47d 100644 --- a/src/views/services/list/ServiceList.tsx +++ b/src/views/services/list/ServiceList.tsx @@ -1,8 +1,6 @@ import React, { FC } from 'react'; import { useNavigate } from 'react-router-dom-v5-compat'; -import { modelToGroupVersionKind, ServiceModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { ListPageBody, ListPageCreateButton, @@ -20,7 +18,9 @@ import { SHARED_DEFAULT_PATH_NEW_RESOURCE_YAML, } from '@utils/constants/ui'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getGroupVersionKindForModel, ServiceModel } from '@utils/models'; import { resourcePathFromModel } from '@utils/resources/shared'; +import { Service } from '@utils/types/k8sTypes'; import ServiceRow from './components/ServiceRow'; import useServiceColumn from './hooks/useServiceColumn'; @@ -34,8 +34,8 @@ const ServiceList: FC = ({ namespace }) => { const { t } = useNetworkingTranslation(); const navigate = useNavigate(); - const [service, loaded, loadError] = useK8sWatchResource({ - groupVersionKind: modelToGroupVersionKind(ServiceModel), + const [service, loaded, loadError] = useK8sWatchResource({ + groupVersionKind: getGroupVersionKindForModel(ServiceModel), isList: true, namespace, }); @@ -45,7 +45,7 @@ const ServiceList: FC = ({ namespace }) => { const title = t('Services'); return ( - + createButtonlink={SHARED_DEFAULT_PATH_NEW_RESOURCE_FORM} data={data} error={loadError} @@ -58,7 +58,7 @@ const ServiceList: FC = ({ namespace }) => { @@ -76,7 +76,7 @@ const ServiceList: FC = ({ namespace }) => { - + columns={columns} data={filteredData} loaded={loaded} diff --git a/src/views/services/list/components/ServiceLocation.tsx b/src/views/services/list/components/ServiceLocation.tsx index 34558b51..2c6cc94c 100644 --- a/src/views/services/list/components/ServiceLocation.tsx +++ b/src/views/services/list/components/ServiceLocation.tsx @@ -1,11 +1,11 @@ import React, { FC } from 'react'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import HostDetails from '@utils/components/HostData/HostDetails'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { Service } from '@utils/types/k8sTypes'; type ServiceLocationProps = { - service: IoK8sApiCoreV1Service; + service: Service; }; const ServiceLocation: FC = ({ service }) => { diff --git a/src/views/services/list/components/ServiceRow.tsx b/src/views/services/list/components/ServiceRow.tsx index 1496521c..c13b25cb 100644 --- a/src/views/services/list/components/ServiceRow.tsx +++ b/src/views/services/list/components/ServiceRow.tsx @@ -2,8 +2,6 @@ import React, { FC } from 'react'; import { Link } from 'react-router-dom-v5-compat'; import * as _ from 'lodash'; -import { ServiceModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { getGroupVersionKindForModel, ResourceLink, @@ -12,14 +10,16 @@ import { } from '@openshift-console/dynamic-plugin-sdk'; import { LabelList } from '@utils/components/DetailsItem/LabelList'; import { Selector } from '@utils/components/Selector/Selector'; +import { ServiceModel } from '@utils/models'; import { getName, getNamespace } from '@utils/resources/shared'; +import { Service } from '@utils/types/k8sTypes'; import ServiceActions from '@views/services/actions/ServiceActions'; import { tableColumnClasses } from '../hooks/useServiceColumn'; import ServiceLocation from './ServiceLocation'; -type ServiceRowType = RowProps; +type ServiceRowType = RowProps; const ServiceGroupVersionKind = getGroupVersionKindForModel(ServiceModel); diff --git a/src/views/services/list/hooks/useServiceColumn.tsx b/src/views/services/list/hooks/useServiceColumn.tsx index 965c6cfc..5d8a3a58 100644 --- a/src/views/services/list/hooks/useServiceColumn.tsx +++ b/src/views/services/list/hooks/useServiceColumn.tsx @@ -1,10 +1,10 @@ import { useMemo } from 'react'; -import { ServiceModel } from '@kubevirt-ui/kubevirt-api/console'; -import { IoK8sApiCoreV1Service } from '@kubevirt-ui/kubevirt-api/kubernetes/models'; import { TableColumn, useActiveColumns } from '@openshift-console/dynamic-plugin-sdk'; import { sortable } from '@patternfly/react-table'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { ServiceModel } from '@utils/models'; +import { Service } from '@utils/types/k8sTypes'; import { objectColumnSorting } from '@utils/utils/sorting'; export const tableColumnClasses = [ @@ -19,7 +19,7 @@ export const tableColumnClasses = [ const useServiceColumn = (): { id: string; title: string }[] => { const { t } = useNetworkingTranslation(); - const columns: TableColumn[] = useMemo( + const columns: TableColumn[] = useMemo( () => [ { id: 'name', @@ -65,7 +65,7 @@ const useServiceColumn = (): { id: string; title: string }[] => { [t], ); - const [activeColumns] = useActiveColumns({ + const [activeColumns] = useActiveColumns({ columnManagementID: ServiceModel.kind, columns, showNamespaceOverride: false, diff --git a/src/views/udns/list/components/UserDefinedNetworkRow.tsx b/src/views/udns/list/components/UserDefinedNetworkRow.tsx index df77921a..ecfdba3d 100644 --- a/src/views/udns/list/components/UserDefinedNetworkRow.tsx +++ b/src/views/udns/list/components/UserDefinedNetworkRow.tsx @@ -1,6 +1,5 @@ import React, { FC } from 'react'; -import { modelToGroupVersionKind, NamespaceModel } from '@kubevirt-ui/kubevirt-api/console'; import { getGroupVersionKindForModel, ResourceLink, @@ -9,6 +8,7 @@ import { } from '@openshift-console/dynamic-plugin-sdk'; import MutedText from '@utils/components/MutedText/MutedText'; import { useNetworkingTranslation } from '@utils/hooks/useNetworkingTranslation'; +import { getGroupVersionKindForModel, NamespaceModel } from '@utils/models'; import { UserDefinedNetworkModel } from '@utils/models'; import { getName, getNamespace } from '@utils/resources/shared'; import { getModel, getMTU, getTopology } from '@utils/resources/udns/selectors'; @@ -39,7 +39,7 @@ const UserDefinedNetworkRow: FC = ({ activeColumnIDs, {model === UserDefinedNetworkModel ? ( ) : ( diff --git a/src/views/udns/list/constants.ts b/src/views/udns/list/constants.ts index 57f876c2..30dfd509 100644 --- a/src/views/udns/list/constants.ts +++ b/src/views/udns/list/constants.ts @@ -1,6 +1,6 @@ -import { modelToGroupVersionKind, ProjectModel } from '@kubevirt-ui/kubevirt-api/console'; +import { getGroupVersionKindForModel, ProjectModel } from '@utils/models'; -export const ProjectGroupVersionKind = modelToGroupVersionKind(ProjectModel); +export const ProjectGroupVersionKind = getGroupVersionKindForModel(ProjectModel); export const PROJECT_NAME = 'metadata.namespace'; export const PRIMARY_USER_DEFINED_LABEL = 'k8s.ovn.org/primary-user-defined-network'; diff --git a/webpack.config.ts b/webpack.config.ts index 11ea745f..328a022c 100644 --- a/webpack.config.ts +++ b/webpack.config.ts @@ -57,7 +57,7 @@ const config: Configuration = { }, }, { - exclude: /node_modules\/(?!(@kubevirt-ui)\/kubevirt-api).*/, + exclude: /node_modules/, test: /\.(jsx?|tsx?)$/, use: [ {