Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 10x 10x 10x 10x 10x 9x 3x 10x 6x 6x 10x 6x 10x 2x | /*
* Copyright 2021 Harness Inc. All rights reserved.
* Use of this source code is governed by the PolyForm Shield 1.0.0 license
* that can be found in the licenses directory at the root of this repository, also available at
* https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
*/
import React, { useEffect, useMemo } from 'react'
import { useParams } from 'react-router-dom'
import { Text, Container, Utils } from '@wings-software/uicore'
import { Color } from '@harness/design-system'
import { useValidateK8sConnectivity } from 'services/cv'
import { FormConnectorReferenceField } from '@connectors/components/ConnectorReferenceField/FormConnectorReferenceField'
import type { ConnectorReferenceFieldProps } from '@connectors/components/ConnectorReferenceField/ConnectorReferenceField'
import type { ProjectPathProps } from '@common/interfaces/RouteInterfaces'
import ValidationStatus from '@cv/pages/components/ValidationStatus/ValidationStatus'
import { useStrings } from 'framework/strings'
import { determineValidationStatus } from './kubernetesChangeSource.utils'
import type { ChangeSourceProps } from '../../ChangeSourceDrawer.types'
export default function KubernetesChangeSource(props: ChangeSourceProps): JSX.Element {
const { formik, isEdit } = props
const { getString } = useStrings()
const { orgIdentifier, projectIdentifier, accountId } = useParams<ProjectPathProps & { identifier: string }>()
const { loading, error, refetch, data } = useValidateK8sConnectivity({ lazy: true })
useEffect(() => {
if (!isEdit && formik.values?.spec?.connectorRef && !loading) {
refetch({
queryParams: {
accountId,
projectIdentifier,
orgIdentifier,
tracingId: Utils.randomId(),
connectorIdentifier: formik.values.spec.connectorRef
}
})
}
}, [formik.values?.spec?.connectorRef])
useEffect(() => {
Eif (isEdit || !formik.values?.spec?.connectorRef) {
return
}
if (error || data?.data === false || loading) {
formik.setFieldValue('spec', { ...formik.values?.spec, isConnectorInvalid: true })
} else if (data?.data) {
delete formik.values?.spec?.isConnectorInvalid
formik.setFieldValue('spec', { ...formik.values?.spec })
}
}, [data, error, loading])
const validationResult = useMemo(
() => determineValidationStatus({ isEdit, loading, result: data?.data, error, getString }),
[isEdit, loading, error]
)
return (
<Container data-name="kubechangesource">
<FormConnectorReferenceField
width={400}
formik={formik}
type={formik.values?.type as ConnectorReferenceFieldProps['type']}
name={'spec.connectorRef'}
disabled={isEdit}
accountIdentifier={accountId}
projectIdentifier={projectIdentifier}
orgIdentifier={orgIdentifier}
placeholder={getString('cv.healthSource.connectors.selectConnector', {
sourceType: formik?.values?.type
})}
label={
<Text color={Color.BLACK} font={'small'} margin={{ bottom: 'small' }}>
{getString('connectors.selectConnector')}
</Text>
}
tooltipProps={{ dataTooltipId: 'selectKubeConnector' }}
/>
<ValidationStatus
validationStatus={validationResult.status}
textToDisplay={validationResult.text}
onRetry={() =>
refetch({
queryParams: {
accountId,
projectIdentifier,
orgIdentifier,
tracingId: Utils.randomId(),
connectorIdentifier: formik.values.spec.connectorRef
}
})
}
/>
</Container>
)
}
|