All files / modules/75-cd/components/PipelineSteps/InfraProvisioning InfraProvisioning.tsx

92.86% Statements 13/14
100% Branches 0/0
66.67% Functions 2/3
92.86% Lines 13/14

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              98x         98x 98x 98x                                                           98x 98x 98x     98x 98x 98x     98x               3x   3x                        
/*
 * 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 from 'react'
import type { IconName, MultiTypeInputType } from '@wings-software/uicore'
import type { FormikErrors } from 'formik'
import type { StepViewType, StepProps } from '@pipeline/components/AbstractSteps/Step'
import type { ExecutionElementConfig } from 'services/cd-ng'
import { StepType } from '@pipeline/components/PipelineSteps/PipelineStepInterface'
import { PipelineStep } from '@pipeline/components/PipelineSteps/PipelineStep'
import { InfraProvisioningBaseWithRef } from './InfraProvisioningBase'
 
export interface InfraProvisioningData {
  provisioner: ExecutionElementConfig
  originalProvisioner?: Partial<ExecutionElementConfig>
  provisionerEnabled: boolean
  provisionerSnippetLoading?: boolean
}
 
export interface InfraProvisioningDataUI extends Omit<InfraProvisioningData, 'provisioner'> {
  provisioner: {
    stage: {
      spec: {
        execution: ExecutionElementConfig
      }
    }
  }
}
 
export interface InfraProvisioningProps {
  initialValues: InfraProvisioningData
  template?: InfraProvisioningData
  path?: string
  readonly?: boolean
  stepViewType?: StepViewType
  onUpdate?: (data: InfraProvisioningData) => void
  onChange?: (data: InfraProvisioningData) => void
  allowableTypes: MultiTypeInputType[]
}
 
export class InfraProvisioning extends PipelineStep<any> {
  protected type = StepType.InfraProvisioning
  protected defaultValues: any = {}
 
  // TODO: replace with right icon (if needed)
  protected stepIcon: IconName = 'cross'
  protected stepName = 'Infrastructure provisioning'
  protected stepPaletteVisible = false
 
  constructor() {
    super()
  }
 
  validateInputSet(): FormikErrors<any> {
    return {}
  }
 
  renderStep(props: StepProps<any>): JSX.Element {
    const { initialValues, onUpdate, onChange, allowableTypes, stepViewType, formikRef } = props
 
    return (
      <InfraProvisioningBaseWithRef
        initialValues={initialValues}
        stepViewType={stepViewType}
        onUpdate={onUpdate}
        onChange={onChange}
        allowableTypes={allowableTypes}
        ref={formikRef}
      />
    )
  }
}