@spinnaker/cloudfoundry 0.0.0-main-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1085 -0
- package/LICENSE.txt +203 -0
- package/dist/cf.module.d.ts +24 -0
- package/dist/cf.settings.d.ts +7 -0
- package/dist/common/applicationName.validator.d.ts +1 -0
- package/dist/deploymentStrategy/CloudFoundryDeploymentStrategySelector.d.ts +21 -0
- package/dist/deploymentStrategy/strategies/redblack/redblack.strategy.d.ts +10 -0
- package/dist/deploymentStrategy/strategies/rollingredblack/AdditionalFields.d.ts +22 -0
- package/dist/domain/ICloudFoundryAccount.d.ts +7 -0
- package/dist/domain/ICloudFoundryApplication.d.ts +4 -0
- package/dist/domain/ICloudFoundryCluster.d.ts +5 -0
- package/dist/domain/ICloudFoundryDroplet.d.ts +19 -0
- package/dist/domain/ICloudFoundryInstance.d.ts +4 -0
- package/dist/domain/ICloudFoundryLoadBalancer.d.ts +25 -0
- package/dist/domain/ICloudFoundryServerGroup.d.ts +41 -0
- package/dist/domain/ICloudFoundrySpace.d.ts +9 -0
- package/dist/domain/index.d.ts +8 -0
- package/dist/help/cloudfoundry.help.d.ts +1 -0
- package/dist/image/image.reader.cf.d.ts +4 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +5929 -0
- package/dist/index.js.map +1 -0
- package/dist/instance/details/CloudFoundryInstanceActions.d.ts +11 -0
- package/dist/instance/details/CloudFoundryInstanceDetails.d.ts +23 -0
- package/dist/instance/details/index.d.ts +1 -0
- package/dist/instance/details/sections/CloudFoundryInstanceDetailsSection.d.ts +9 -0
- package/dist/instance/details/sections/index.d.ts +1 -0
- package/dist/loadBalancer/configure/CloudFoundryMapLoadBalancerModal.d.ts +33 -0
- package/dist/loadBalancer/configure/loadBalancerDetails.d.ts +32 -0
- package/dist/loadBalancer/details/CloudFoundryLoadBalancerActions.d.ts +10 -0
- package/dist/loadBalancer/details/CloudFoundryLoadBalancerDetails.d.ts +26 -0
- package/dist/loadBalancer/details/index.d.ts +1 -0
- package/dist/loadBalancer/details/sections/CloudFoundryLoadBalancerDetailsSection.d.ts +9 -0
- package/dist/loadBalancer/details/sections/CloudFoundryLoadBalancerLinksSection.d.ts +9 -0
- package/dist/loadBalancer/details/sections/CloudFoundryLoadBalancerStatusSection.d.ts +9 -0
- package/dist/loadBalancer/details/sections/index.d.ts +3 -0
- package/dist/loadBalancer/index.d.ts +3 -0
- package/dist/loadBalancer/loadBalancer.transformer.d.ts +25 -0
- package/dist/pipeline/config/validation/cfTargetImpedance.validator.d.ts +9 -0
- package/dist/pipeline/config/validation/instanceSize.validator.d.ts +15 -0
- package/dist/pipeline/config/validation/requiredRoutes.validator.d.ts +4 -0
- package/dist/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfig.d.ts +7 -0
- package/dist/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfigForm.d.ts +13 -0
- package/dist/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestDetailsTab.d.ts +6 -0
- package/dist/pipeline/stages/bakeCloudFoundryManifest/bakeCloudFoundryManifestStage.d.ts +1 -0
- package/dist/pipeline/stages/cloneServerGroup/CloudFoundryCloneServerGroupStageConfig.d.ts +11 -0
- package/dist/pipeline/stages/cloneServerGroup/cloudFoundryCloneServerGroupStage.module.d.ts +1 -0
- package/dist/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsConfig.d.ts +9 -0
- package/dist/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsStageConfigForm.d.ts +26 -0
- package/dist/pipeline/stages/createServiceBindings/cloudFoundryCreateServiceBindingsStage.d.ts +1 -0
- package/dist/pipeline/stages/createServiceKey/CloudFoundryCreateServiceKeyStageConfig.d.ts +19 -0
- package/dist/pipeline/stages/createServiceKey/cloudFoundryCreateServiceKeyStage.module.d.ts +1 -0
- package/dist/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsConfig.d.ts +10 -0
- package/dist/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsStageConfigForm.d.ts +20 -0
- package/dist/pipeline/stages/deleteServiceBindings/cloudFoundryDeleteServiceBindingsStage.d.ts +1 -0
- package/dist/pipeline/stages/deleteServiceKey/CloudFoundryDeleteServiceKeyStageConfig.d.ts +19 -0
- package/dist/pipeline/stages/deleteServiceKey/cloudFoundryDeleteServiceKeyStage.module.d.ts +1 -0
- package/dist/pipeline/stages/deployService/CloudFoundryDeployServiceStageConfig.d.ts +24 -0
- package/dist/pipeline/stages/deployService/CreateServiceInstanceDirectInput.d.ts +29 -0
- package/dist/pipeline/stages/deployService/CreateUserProvidedInput.d.ts +19 -0
- package/dist/pipeline/stages/deployService/ICloudFoundryServiceManifestSource.d.ts +24 -0
- package/dist/pipeline/stages/deployService/ServiceTagsInput.d.ts +17 -0
- package/dist/pipeline/stages/deployService/cloudFoundryDeployServiceStage.module.d.ts +1 -0
- package/dist/pipeline/stages/destroyAsg/cloudFoundryDestroyAsgStage.module.d.ts +1 -0
- package/dist/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfig.d.ts +5 -0
- package/dist/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfigForm.d.ts +19 -0
- package/dist/pipeline/stages/destroyService/cloudFoundryDestroyServiceStage.module.d.ts +1 -0
- package/dist/pipeline/stages/disableAsg/cloudFoundryDisableAsgStage.module.d.ts +1 -0
- package/dist/pipeline/stages/enableAsg/cloudFoundryEnableAsgStage.module.d.ts +1 -0
- package/dist/pipeline/stages/mapLoadBalancers/cloudFoundryMapLoadBalancersStage.module.d.ts +1 -0
- package/dist/pipeline/stages/resizeAsg/CloudFoundryResizeAsgStageConfig.d.ts +17 -0
- package/dist/pipeline/stages/resizeAsg/cloudFoundryResizeAsgStage.module.d.ts +1 -0
- package/dist/pipeline/stages/rollbackCluster/CloudFoundryRollbackClusterStageConfig.d.ts +17 -0
- package/dist/pipeline/stages/rollbackCluster/cloudFoundryRollbackClusterStage.module.d.ts +1 -0
- package/dist/pipeline/stages/runJob/CloudFoundryRunJobStageConfig.d.ts +14 -0
- package/dist/pipeline/stages/runJob/RunJobExecutionDetails.d.ts +6 -0
- package/dist/pipeline/stages/runJob/cloudFoundryRunJob.module.d.ts +1 -0
- package/dist/pipeline/stages/shareService/CloudFoundryShareServiceExecutionDetails.d.ts +6 -0
- package/dist/pipeline/stages/shareService/CloudFoundryShareServiceStageConfig.d.ts +21 -0
- package/dist/pipeline/stages/shareService/cloudFoundryShareServiceStage.module.d.ts +1 -0
- package/dist/pipeline/stages/unmapLoadBalancers/cloudFoundryUnmapLoadBalancersStage.module.d.ts +1 -0
- package/dist/pipeline/stages/unshareService/CloudFoundryUnshareServiceExecutionDetails.d.ts +6 -0
- package/dist/pipeline/stages/unshareService/CloudFoundryUnshareServiceStageConfig.d.ts +18 -0
- package/dist/pipeline/stages/unshareService/cloudFoundryUnshareServiceStage.module.d.ts +1 -0
- package/dist/presentation/forms/index.d.ts +2 -0
- package/dist/presentation/forms/inputs/FormikConfigField.d.ts +10 -0
- package/dist/presentation/forms/inputs/index.d.ts +1 -0
- package/dist/presentation/forms/serverGroup/Buildpacks.d.ts +8 -0
- package/dist/presentation/forms/serverGroup/EnvironmentVariables.d.ts +8 -0
- package/dist/presentation/forms/serverGroup/HealthCheck.d.ts +12 -0
- package/dist/presentation/forms/serverGroup/InstanceParameters.d.ts +12 -0
- package/dist/presentation/forms/serverGroup/Routes.d.ts +10 -0
- package/dist/presentation/forms/serverGroup/Services.d.ts +5 -0
- package/dist/presentation/forms/serverGroup/index.d.ts +6 -0
- package/dist/presentation/index.d.ts +3 -0
- package/dist/presentation/pipeline/index.d.ts +1 -0
- package/dist/presentation/pipeline/stages/CloudFoundryAsgStageConfig.d.ts +14 -0
- package/dist/presentation/pipeline/stages/CloudFoundryLoadBalancersExecutionDetails.d.ts +6 -0
- package/dist/presentation/pipeline/stages/CloudFoundryLoadBalancersStageConfig.d.ts +25 -0
- package/dist/presentation/pipeline/stages/CloudFoundryServiceExecutionDetails.d.ts +6 -0
- package/dist/presentation/pipeline/stages/CloudFoundryServiceKeyExecutionDetails.d.ts +6 -0
- package/dist/presentation/pipeline/stages/index.d.ts +5 -0
- package/dist/presentation/widgets/accountRegionClusterSelector/AccountRegionClusterSelector.d.ts +33 -0
- package/dist/presentation/widgets/accountRegionClusterSelector/FormikAccountRegionClusterSelector.d.ts +32 -0
- package/dist/presentation/widgets/accountRegionClusterSelector/index.d.ts +2 -0
- package/dist/presentation/widgets/index.d.ts +1 -0
- package/dist/presentation/widgets/recentLogs/CloudFoundryRecentLogs.d.ts +27 -0
- package/dist/routeDomains/index.d.ts +1 -0
- package/dist/routeDomains/routeDomainSelectField.d.ts +15 -0
- package/dist/serverGroup/configure/index.d.ts +4 -0
- package/dist/serverGroup/configure/serverGroupCommandBuilder.service.cf.d.ts +12 -0
- package/dist/serverGroup/configure/serverGroupCommandBuilderShim.service.cf.d.ts +14 -0
- package/dist/serverGroup/configure/serverGroupConfigurationModel.cf.d.ts +65 -0
- package/dist/serverGroup/configure/wizard/CreateServerGroupModal.d.ts +31 -0
- package/dist/serverGroup/configure/wizard/ServerGroupTemplateSelection.d.ts +16 -0
- package/dist/serverGroup/configure/wizard/sections/artifactSettings/ArtifactSettings.cf.d.ts +17 -0
- package/dist/serverGroup/configure/wizard/sections/artifactSettings/ConstantArtifactSettings.cf.d.ts +11 -0
- package/dist/serverGroup/configure/wizard/sections/basicSettings/BasicSettings.cf.d.ts +24 -0
- package/dist/serverGroup/configure/wizard/sections/cloneSettings/CloneSettings.cf.d.ts +21 -0
- package/dist/serverGroup/configure/wizard/sections/configurationSettings/ConfigurationSettings.cf.d.ts +22 -0
- package/dist/serverGroup/details/cfServerGroupDetailsGetter.d.ts +4 -0
- package/dist/serverGroup/details/cloudFoundryServerGroupActions.d.ts +24 -0
- package/dist/serverGroup/details/mapLoadBalancers/CloudFoundryMapLoadBalancersModal.d.ts +28 -0
- package/dist/serverGroup/details/mapLoadBalancers/CloudFoundryUnmapLoadBalancersModal.d.ts +28 -0
- package/dist/serverGroup/details/resize/CloudFoundryResizeServerGroupModal.d.ts +37 -0
- package/dist/serverGroup/details/rollback/CloudFoundryRollbackServerGroupModal.d.ts +36 -0
- package/dist/serverGroup/details/sections/ApplicationManagerSection.d.ts +6 -0
- package/dist/serverGroup/details/sections/BoundServicesSection.d.ts +6 -0
- package/dist/serverGroup/details/sections/BuildSection.d.ts +6 -0
- package/dist/serverGroup/details/sections/EnvironmentVariablesSection.d.ts +6 -0
- package/dist/serverGroup/details/sections/HealthCheckSection.d.ts +6 -0
- package/dist/serverGroup/details/sections/ICloudFoundryServerGroupDetailsSectionProps.d.ts +5 -0
- package/dist/serverGroup/details/sections/MetricsSection.d.ts +6 -0
- package/dist/serverGroup/details/sections/PackageSection.d.ts +6 -0
- package/dist/serverGroup/details/sections/ServerGroupInformationSection.d.ts +6 -0
- package/dist/serverGroup/details/sections/ServerGroupSizingSection.d.ts +6 -0
- package/dist/serverGroup/details/sections/index.d.ts +9 -0
- package/dist/serverGroup/index.d.ts +5 -0
- package/dist/serverGroup/serverGroup.transformer.d.ts +10 -0
- package/package.json +52 -0
- package/src/cf.module.ts +85 -0
- package/src/cf.settings.ts +14 -0
- package/src/common/applicationName.validator.ts +43 -0
- package/src/common/cloudFoundry.less +16 -0
- package/src/deploymentStrategy/CloudFoundryDeploymentStrategySelector.tsx +175 -0
- package/src/deploymentStrategy/strategies/redblack/redblack.strategy.ts +11 -0
- package/src/deploymentStrategy/strategies/rollingredblack/AdditionalFields.tsx +161 -0
- package/src/domain/ICloudFoundryAccount.ts +9 -0
- package/src/domain/ICloudFoundryApplication.ts +5 -0
- package/src/domain/ICloudFoundryCluster.ts +6 -0
- package/src/domain/ICloudFoundryDroplet.ts +22 -0
- package/src/domain/ICloudFoundryInstance.ts +5 -0
- package/src/domain/ICloudFoundryLoadBalancer.ts +29 -0
- package/src/domain/ICloudFoundryServerGroup.ts +47 -0
- package/src/domain/ICloudFoundrySpace.ts +10 -0
- package/src/domain/index.ts +8 -0
- package/src/help/cloudfoundry.help.ts +31 -0
- package/src/image/image.reader.cf.ts +17 -0
- package/src/index.ts +7 -0
- package/src/instance/details/CloudFoundryInstanceActions.tsx +59 -0
- package/src/instance/details/CloudFoundryInstanceDetails.tsx +154 -0
- package/src/instance/details/index.ts +1 -0
- package/src/instance/details/sections/CloudFoundryInstanceDetailsSection.tsx +49 -0
- package/src/instance/details/sections/index.ts +1 -0
- package/src/loadBalancer/configure/CloudFoundryMapLoadBalancerModal.tsx +210 -0
- package/src/loadBalancer/configure/loadBalancerDetails.tsx +228 -0
- package/src/loadBalancer/details/CloudFoundryLoadBalancerActions.tsx +61 -0
- package/src/loadBalancer/details/CloudFoundryLoadBalancerDetails.tsx +148 -0
- package/src/loadBalancer/details/index.ts +1 -0
- package/src/loadBalancer/details/sections/CloudFoundryLoadBalancerDetailsSection.tsx +63 -0
- package/src/loadBalancer/details/sections/CloudFoundryLoadBalancerLinksSection.tsx +34 -0
- package/src/loadBalancer/details/sections/CloudFoundryLoadBalancerStatusSection.tsx +27 -0
- package/src/loadBalancer/details/sections/index.ts +3 -0
- package/src/loadBalancer/index.ts +3 -0
- package/src/loadBalancer/loadBalancer.transformer.ts +144 -0
- package/src/logo/cf.icon.svg +12 -0
- package/src/logo/cf.logo.less +5 -0
- package/src/logo/cf.logo.svg +12 -0
- package/src/pipeline/config/validation/cfTargetImpedance.validator.ts +60 -0
- package/src/pipeline/config/validation/instanceSize.validator.ts +66 -0
- package/src/pipeline/config/validation/requiredRoutes.validator.ts +26 -0
- package/src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfig.tsx +62 -0
- package/src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfigForm.tsx +174 -0
- package/src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestDetailsTab.tsx +35 -0
- package/src/pipeline/stages/bakeCloudFoundryManifest/bakeCloudFoundryManifestConfig.spec.tsx +80 -0
- package/src/pipeline/stages/bakeCloudFoundryManifest/bakeCloudFoundryManifestStage.ts +35 -0
- package/src/pipeline/stages/cloneServerGroup/CloudFoundryCloneServerGroupStageConfig.tsx +113 -0
- package/src/pipeline/stages/cloneServerGroup/cloudFoundryCloneServerGroupStage.module.ts +14 -0
- package/src/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsConfig.spec.tsx +35 -0
- package/src/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsConfig.tsx +69 -0
- package/src/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsStageConfigForm.tsx +230 -0
- package/src/pipeline/stages/createServiceBindings/cloudFoundryCreateServiceBindingsStage.ts +19 -0
- package/src/pipeline/stages/createServiceBindings/cloudFoundryCreateServiceBindingsStageForm.spec.tsx +50 -0
- package/src/pipeline/stages/createServiceKey/CloudFoundryCreateServiceKeyStageConfig.tsx +116 -0
- package/src/pipeline/stages/createServiceKey/cloudFoundryCreateServiceKeyStage.module.ts +21 -0
- package/src/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsConfig.tsx +69 -0
- package/src/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsStageConfigForm.tsx +158 -0
- package/src/pipeline/stages/deleteServiceBindings/cloudFoundryDeleteServiceBindingsStage.ts +19 -0
- package/src/pipeline/stages/deleteServiceBindings/cloudFoundryDeleteServiceBindingsStageForm.spec.tsx +49 -0
- package/src/pipeline/stages/deleteServiceKey/CloudFoundryDeleteServiceKeyStageConfig.tsx +116 -0
- package/src/pipeline/stages/deleteServiceKey/cloudFoundryDeleteServiceKeyStage.module.ts +22 -0
- package/src/pipeline/stages/deployService/CloudFoundryDeployServiceStageConfig.tsx +198 -0
- package/src/pipeline/stages/deployService/CreateServiceInstanceDirectInput.tsx +164 -0
- package/src/pipeline/stages/deployService/CreateUserProvidedInput.tsx +116 -0
- package/src/pipeline/stages/deployService/ICloudFoundryServiceManifestSource.ts +27 -0
- package/src/pipeline/stages/deployService/ServiceTagsInput.tsx +89 -0
- package/src/pipeline/stages/deployService/cloudFoundryDeployServiceStage.module.ts +153 -0
- package/src/pipeline/stages/deployService/cloudfoundryDeployServiceStage.less +12 -0
- package/src/pipeline/stages/destroyAsg/cloudFoundryDestroyAsgStage.module.ts +23 -0
- package/src/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfig.tsx +46 -0
- package/src/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfigForm.tsx +134 -0
- package/src/pipeline/stages/destroyService/cloudFoundryDestroyServiceStage.module.ts +20 -0
- package/src/pipeline/stages/disableAsg/cloudFoundryDisableAsgStage.module.ts +18 -0
- package/src/pipeline/stages/enableAsg/cloudFoundryEnableAsgStage.module.ts +18 -0
- package/src/pipeline/stages/mapLoadBalancers/cloudFoundryMapLoadBalancersStage.module.ts +21 -0
- package/src/pipeline/stages/resizeAsg/CloudFoundryResizeAsgStageConfig.tsx +148 -0
- package/src/pipeline/stages/resizeAsg/cloudFoundryResizeAsgStage.module.ts +52 -0
- package/src/pipeline/stages/rollbackCluster/CloudFoundryRollbackClusterStageConfig.tsx +90 -0
- package/src/pipeline/stages/rollbackCluster/cloudFoundryRollbackClusterStage.module.ts +19 -0
- package/src/pipeline/stages/runJob/CloudFoundryRunJobStageConfig.tsx +100 -0
- package/src/pipeline/stages/runJob/RunJobExecutionDetails.tsx +62 -0
- package/src/pipeline/stages/runJob/cloudFoundryRunJob.module.ts +24 -0
- package/src/pipeline/stages/shareService/CloudFoundryShareServiceExecutionDetails.tsx +52 -0
- package/src/pipeline/stages/shareService/CloudFoundryShareServiceStageConfig.tsx +141 -0
- package/src/pipeline/stages/shareService/cloudFoundryShareServiceStage.module.ts +21 -0
- package/src/pipeline/stages/unmapLoadBalancers/cloudFoundryUnmapLoadBalancersStage.module.ts +21 -0
- package/src/pipeline/stages/unshareService/CloudFoundryUnshareServiceExecutionDetails.tsx +46 -0
- package/src/pipeline/stages/unshareService/CloudFoundryUnshareServiceStageConfig.tsx +114 -0
- package/src/pipeline/stages/unshareService/cloudFoundryUnshareServiceStage.module.ts +21 -0
- package/src/presentation/forms/index.ts +2 -0
- package/src/presentation/forms/inputs/FormikConfigField.tsx +28 -0
- package/src/presentation/forms/inputs/index.ts +1 -0
- package/src/presentation/forms/serverGroup/Buildpacks.tsx +69 -0
- package/src/presentation/forms/serverGroup/EnvironmentVariables.tsx +94 -0
- package/src/presentation/forms/serverGroup/HealthCheck.tsx +57 -0
- package/src/presentation/forms/serverGroup/InstanceParameters.tsx +63 -0
- package/src/presentation/forms/serverGroup/Routes.tsx +74 -0
- package/src/presentation/forms/serverGroup/Services.tsx +62 -0
- package/src/presentation/forms/serverGroup/index.ts +6 -0
- package/src/presentation/index.ts +3 -0
- package/src/presentation/pipeline/index.ts +1 -0
- package/src/presentation/pipeline/stages/CloudFoundryAsgStageConfig.tsx +67 -0
- package/src/presentation/pipeline/stages/CloudFoundryLoadBalancersExecutionDetails.tsx +53 -0
- package/src/presentation/pipeline/stages/CloudFoundryLoadBalancersStageConfig.tsx +116 -0
- package/src/presentation/pipeline/stages/CloudFoundryServiceExecutionDetails.tsx +46 -0
- package/src/presentation/pipeline/stages/CloudFoundryServiceKeyExecutionDetails.tsx +52 -0
- package/src/presentation/pipeline/stages/index.ts +5 -0
- package/src/presentation/widgets/accountRegionClusterSelector/AccountRegionClusterSelector.spec.tsx +385 -0
- package/src/presentation/widgets/accountRegionClusterSelector/AccountRegionClusterSelector.tsx +231 -0
- package/src/presentation/widgets/accountRegionClusterSelector/FormikAccountRegionClusterSelector.tsx +164 -0
- package/src/presentation/widgets/accountRegionClusterSelector/index.ts +2 -0
- package/src/presentation/widgets/index.ts +1 -0
- package/src/presentation/widgets/recentLogs/CloudFoundryRecentLogs.tsx +112 -0
- package/src/routeDomains/index.ts +1 -0
- package/src/routeDomains/routeDomainSelectField.tsx +48 -0
- package/src/serverGroup/configure/index.ts +4 -0
- package/src/serverGroup/configure/serverGroupCommandBuilder.service.cf.ts +168 -0
- package/src/serverGroup/configure/serverGroupCommandBuilderShim.service.cf.ts +64 -0
- package/src/serverGroup/configure/serverGroupConfigurationModel.cf.ts +77 -0
- package/src/serverGroup/configure/wizard/CreateServerGroupModal.tsx +194 -0
- package/src/serverGroup/configure/wizard/ServerGroupTemplateSelection.tsx +55 -0
- package/src/serverGroup/configure/wizard/sections/artifactSettings/ArtifactSettings.cf.tsx +78 -0
- package/src/serverGroup/configure/wizard/sections/artifactSettings/ConstantArtifactSettings.cf.tsx +49 -0
- package/src/serverGroup/configure/wizard/sections/basicSettings/BasicSettings.cf.tsx +163 -0
- package/src/serverGroup/configure/wizard/sections/cloneSettings/CloneSettings.cf.tsx +101 -0
- package/src/serverGroup/configure/wizard/sections/configurationSettings/ConfigurationSettings.cf.tsx +230 -0
- package/src/serverGroup/configure/wizard/serverGroup.less +3 -0
- package/src/serverGroup/details/cfServerGroupDetailsGetter.ts +60 -0
- package/src/serverGroup/details/cloudFoundryServerGroupActions.tsx +365 -0
- package/src/serverGroup/details/mapLoadBalancers/CloudFoundryMapLoadBalancersModal.tsx +137 -0
- package/src/serverGroup/details/mapLoadBalancers/CloudFoundryUnmapLoadBalancersModal.tsx +137 -0
- package/src/serverGroup/details/resize/CloudFoundryResizeServerGroupModal.tsx +232 -0
- package/src/serverGroup/details/rollback/CloudFoundryRollbackServerGroupModal.tsx +179 -0
- package/src/serverGroup/details/sections/ApplicationManagerSection.tsx +28 -0
- package/src/serverGroup/details/sections/BoundServicesSection.tsx +39 -0
- package/src/serverGroup/details/sections/BuildSection.tsx +61 -0
- package/src/serverGroup/details/sections/EnvironmentVariablesSection.tsx +34 -0
- package/src/serverGroup/details/sections/HealthCheckSection.tsx +28 -0
- package/src/serverGroup/details/sections/ICloudFoundryServerGroupDetailsSectionProps.ts +6 -0
- package/src/serverGroup/details/sections/MetricsSection.tsx +28 -0
- package/src/serverGroup/details/sections/PackageSection.tsx +27 -0
- package/src/serverGroup/details/sections/ServerGroupInformationSection.tsx +58 -0
- package/src/serverGroup/details/sections/ServerGroupSizingSection.tsx +27 -0
- package/src/serverGroup/details/sections/index.ts +9 -0
- package/src/serverGroup/index.ts +5 -0
- package/src/serverGroup/serverGroup.transformer.ts +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/common/applicationName.validator.ts","../src/help/cloudfoundry.help.ts","../src/instance/details/CloudFoundryInstanceActions.tsx","../src/instance/details/sections/CloudFoundryInstanceDetailsSection.tsx","../src/instance/details/CloudFoundryInstanceDetails.tsx","../src/loadBalancer/loadBalancer.transformer.ts","../src/loadBalancer/details/CloudFoundryLoadBalancerActions.tsx","../src/loadBalancer/details/sections/CloudFoundryLoadBalancerDetailsSection.tsx","../src/loadBalancer/details/sections/CloudFoundryLoadBalancerStatusSection.tsx","../src/loadBalancer/details/sections/CloudFoundryLoadBalancerLinksSection.tsx","../src/loadBalancer/details/CloudFoundryLoadBalancerDetails.tsx","../src/presentation/forms/inputs/FormikConfigField.tsx","../src/presentation/forms/serverGroup/Buildpacks.tsx","../src/presentation/forms/serverGroup/EnvironmentVariables.tsx","../src/presentation/forms/serverGroup/HealthCheck.tsx","../src/presentation/forms/serverGroup/InstanceParameters.tsx","../src/presentation/forms/serverGroup/Routes.tsx","../src/presentation/forms/serverGroup/Services.tsx","../src/presentation/widgets/accountRegionClusterSelector/AccountRegionClusterSelector.tsx","../src/presentation/widgets/accountRegionClusterSelector/FormikAccountRegionClusterSelector.tsx","../src/presentation/pipeline/stages/CloudFoundryAsgStageConfig.tsx","../src/presentation/pipeline/stages/CloudFoundryLoadBalancersExecutionDetails.tsx","../src/presentation/pipeline/stages/CloudFoundryLoadBalancersStageConfig.tsx","../src/presentation/pipeline/stages/CloudFoundryServiceExecutionDetails.tsx","../src/presentation/pipeline/stages/CloudFoundryServiceKeyExecutionDetails.tsx","../src/loadBalancer/configure/CloudFoundryMapLoadBalancerModal.tsx","../src/logo/cf.logo.svg","../src/pipeline/config/validation/cfTargetImpedance.validator.ts","../src/pipeline/config/validation/instanceSize.validator.ts","../src/pipeline/config/validation/requiredRoutes.validator.ts","../src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfigForm.tsx","../src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfig.tsx","../src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestDetailsTab.tsx","../src/pipeline/stages/bakeCloudFoundryManifest/bakeCloudFoundryManifestStage.ts","../src/serverGroup/configure/serverGroupCommandBuilder.service.cf.ts","../src/serverGroup/configure/serverGroupCommandBuilderShim.service.cf.ts","../src/serverGroup/configure/wizard/ServerGroupTemplateSelection.tsx","../src/serverGroup/configure/wizard/sections/artifactSettings/ArtifactSettings.cf.tsx","../src/serverGroup/configure/wizard/sections/artifactSettings/ConstantArtifactSettings.cf.tsx","../src/deploymentStrategy/strategies/rollingredblack/AdditionalFields.tsx","../src/deploymentStrategy/CloudFoundryDeploymentStrategySelector.tsx","../../../node_modules/style-inject/dist/style-inject.es.js","../src/serverGroup/configure/wizard/sections/basicSettings/BasicSettings.cf.tsx","../src/serverGroup/configure/wizard/sections/cloneSettings/CloneSettings.cf.tsx","../src/serverGroup/configure/wizard/sections/configurationSettings/ConfigurationSettings.cf.tsx","../src/serverGroup/configure/wizard/CreateServerGroupModal.tsx","../src/pipeline/stages/cloneServerGroup/CloudFoundryCloneServerGroupStageConfig.tsx","../src/pipeline/stages/cloneServerGroup/cloudFoundryCloneServerGroupStage.module.ts","../src/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsStageConfigForm.tsx","../src/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsConfig.tsx","../src/pipeline/stages/createServiceBindings/cloudFoundryCreateServiceBindingsStage.ts","../src/pipeline/stages/createServiceKey/CloudFoundryCreateServiceKeyStageConfig.tsx","../src/pipeline/stages/createServiceKey/cloudFoundryCreateServiceKeyStage.module.ts","../src/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsStageConfigForm.tsx","../src/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsConfig.tsx","../src/pipeline/stages/deleteServiceBindings/cloudFoundryDeleteServiceBindingsStage.ts","../src/pipeline/stages/deleteServiceKey/CloudFoundryDeleteServiceKeyStageConfig.tsx","../src/pipeline/stages/deleteServiceKey/cloudFoundryDeleteServiceKeyStage.module.ts","../src/pipeline/stages/deployService/ServiceTagsInput.tsx","../src/pipeline/stages/deployService/CreateServiceInstanceDirectInput.tsx","../src/pipeline/stages/deployService/CreateUserProvidedInput.tsx","../src/pipeline/stages/deployService/CloudFoundryDeployServiceStageConfig.tsx","../src/pipeline/stages/deployService/cloudFoundryDeployServiceStage.module.ts","../src/pipeline/stages/destroyAsg/cloudFoundryDestroyAsgStage.module.ts","../src/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfigForm.tsx","../src/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfig.tsx","../src/pipeline/stages/destroyService/cloudFoundryDestroyServiceStage.module.ts","../src/pipeline/stages/disableAsg/cloudFoundryDisableAsgStage.module.ts","../src/pipeline/stages/enableAsg/cloudFoundryEnableAsgStage.module.ts","../src/pipeline/stages/mapLoadBalancers/cloudFoundryMapLoadBalancersStage.module.ts","../src/pipeline/stages/resizeAsg/CloudFoundryResizeAsgStageConfig.tsx","../src/pipeline/stages/resizeAsg/cloudFoundryResizeAsgStage.module.ts","../src/pipeline/stages/rollbackCluster/CloudFoundryRollbackClusterStageConfig.tsx","../src/pipeline/stages/rollbackCluster/cloudFoundryRollbackClusterStage.module.ts","../src/pipeline/stages/runJob/CloudFoundryRunJobStageConfig.tsx","../src/presentation/widgets/recentLogs/CloudFoundryRecentLogs.tsx","../src/pipeline/stages/runJob/RunJobExecutionDetails.tsx","../src/pipeline/stages/runJob/cloudFoundryRunJob.module.ts","../src/pipeline/stages/shareService/CloudFoundryShareServiceExecutionDetails.tsx","../src/pipeline/stages/shareService/CloudFoundryShareServiceStageConfig.tsx","../src/pipeline/stages/shareService/cloudFoundryShareServiceStage.module.ts","../src/pipeline/stages/unmapLoadBalancers/cloudFoundryUnmapLoadBalancersStage.module.ts","../src/pipeline/stages/unshareService/CloudFoundryUnshareServiceExecutionDetails.tsx","../src/pipeline/stages/unshareService/CloudFoundryUnshareServiceStageConfig.tsx","../src/pipeline/stages/unshareService/cloudFoundryUnshareServiceStage.module.ts","../src/serverGroup/details/sections/ServerGroupInformationSection.tsx","../src/serverGroup/details/sections/ApplicationManagerSection.tsx","../src/serverGroup/details/sections/MetricsSection.tsx","../src/serverGroup/details/sections/ServerGroupSizingSection.tsx","../src/serverGroup/details/sections/HealthCheckSection.tsx","../src/serverGroup/details/sections/PackageSection.tsx","../src/serverGroup/details/sections/BuildSection.tsx","../src/serverGroup/details/sections/BoundServicesSection.tsx","../src/serverGroup/details/sections/EnvironmentVariablesSection.tsx","../src/serverGroup/serverGroup.transformer.ts","../src/serverGroup/details/mapLoadBalancers/CloudFoundryMapLoadBalancersModal.tsx","../src/serverGroup/details/mapLoadBalancers/CloudFoundryUnmapLoadBalancersModal.tsx","../src/serverGroup/details/resize/CloudFoundryResizeServerGroupModal.tsx","../src/serverGroup/details/rollback/CloudFoundryRollbackServerGroupModal.tsx","../src/serverGroup/details/cloudFoundryServerGroupActions.tsx","../src/serverGroup/details/cfServerGroupDetailsGetter.ts","../src/cf.module.ts","../src/cf.settings.ts"],"sourcesContent":["import { ApplicationNameValidator } from '@spinnaker/core';\n\nclass CloudFoundryApplicationNameValidator {\n private static MAX_RESOURCE_NAME_LENGTH = 63;\n\n private static validateSpecialCharacters(name: string, _warnings: string[], errors: string[]): void {\n const alphanumPattern = /^([a-zA-Z][a-zA-Z0-9]*)?$/;\n if (!alphanumPattern.test(name)) {\n const alphanumWithDashPattern = /^([a-zA-Z][a-zA-Z0-9-]*)?$/;\n if (!alphanumWithDashPattern.test(name)) {\n errors.push(\n 'The application name must begin with a letter and must contain only letters, digits or dashes. ' +\n 'No special characters are allowed.',\n );\n }\n }\n }\n\n private static validateLength(name: string, errors: string[]): void {\n if (name.length > CloudFoundryApplicationNameValidator.MAX_RESOURCE_NAME_LENGTH) {\n errors.push(\n `The maximum length for an application in Cloud Foundry is ${CloudFoundryApplicationNameValidator.MAX_RESOURCE_NAME_LENGTH} characters.`,\n );\n }\n }\n\n public validate(name = '') {\n const warnings: string[] = [];\n const errors: string[] = [];\n\n if (name && name.length) {\n CloudFoundryApplicationNameValidator.validateSpecialCharacters(name, warnings, errors);\n CloudFoundryApplicationNameValidator.validateLength(name, errors);\n }\n\n return {\n warnings,\n errors,\n };\n }\n}\n\nApplicationNameValidator.registerValidator('cloudfoundry', new CloudFoundryApplicationNameValidator());\n","import { HelpContentsRegistry } from '@spinnaker/core';\n\nconst helpContents: { [key: string]: string } = {\n 'cf.service.deploy.timeout':\n '(Optional) <b>Override Deploy Timeout</b> is the maximum amount of time allowed for service deployment before Spinnaker reports a timeout error (default: 450 seconds). If a timeout error is reported by Spinnaker, the request may still be processed and a service may still be created.',\n 'cf.service.destroy.timeout':\n '(Optional) <b>Override Destroy Timeout</b> is the maximum amount of time allowed for service destruction before Spinnaker reports a timeout error (default: 450 seconds). If a timeout error is reported by Spinnaker, the request may still be processed and the service may be deleted.',\n 'cf.serverGroup.stack':\n '(Optional) <b>Stack</b> is one of the core naming components of a cluster, used to create vertical stacks of dependent services for integration testing.',\n 'cf.serverGroup.detail':\n '(Optional) <b>Detail</b> is a string of free-form alphanumeric characters and hyphens to describe any other variables.',\n 'cf.serverGroup.startApplication':\n '<b>Start on creation</b> is a boolean value that determines if the server group is started upon creation. Default value is <code>true</code>.',\n 'cf.serverGroup.requiredRoutes':\n '<b>Route</b> is a URI in the form of <code>some.host.some.domain[:9999][/some/path]</code> (port and path are optional). The domain has to be a valid domain in the CloudFoundry Org (Region) that this server group runs in.',\n 'cf.serverGroup.routes':\n '(Optional) <b>Route</b> is a URI in the form of <code>some.host.some.domain[:9999][/some/path]</code> (port and path are optional). The domain has to be a valid domain in the CloudFoundry Org (Region) that this server group runs in.',\n 'cf.artifact.package': `<p>This option allows you to create a new server group from an existing Droplet. You can use this to relocate an existing Cloud Foundry application from one space to another or to launch a clone of an application with different root filesystem or resource settings.</p>`,\n 'cf.artifact.trigger.account': `<p>Specify an artifact account if the trigger source produces an artifact that requires authentication credentials to retrieve. Otherwise, leave blank.</p>`,\n 'cf.runJob.logsUrl':\n '<p>(Optional) A templated URL to an external logging system. The URL is used in the pipeline execution stage task details.</p>' +\n '<p><a href=\"http://spinnaker.github.io/guides/user/pipeline-expressions\" target=\"_blank\">Pipeline expressions</a> can be used to interpolate values from the stage context, for example:' +\n '<ul>' +\n '<li><code>${appGuid}</code> the selected cluster CF app GUID.</li>' +\n '<li><code>${name}</code> the task name.</li>' +\n '</ul>' +\n '</p>',\n 'cf.runJob.jobName': '(Optional) If left empty, a random string will be generated.',\n};\n\nObject.keys(helpContents).forEach((key) => HelpContentsRegistry.register(key, helpContents[key]));\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport type { Application } from '@spinnaker/core';\nimport { ConfirmationModalService, InstanceWriter, ReactInjector } from '@spinnaker/core';\nimport type { ICloudFoundryInstance } from '../../domain';\n\nexport interface ICloudFoundryInstanceActionsProps {\n application: Application;\n instance: ICloudFoundryInstance;\n}\n\nexport class CloudFoundryInstanceActions extends React.Component<ICloudFoundryInstanceActionsProps> {\n private terminateInstance = () => {\n const { application, instance } = this.props;\n const instanceClone = cloneDeep(instance) as any;\n instanceClone.placement = {};\n instanceClone.id = instance.name;\n const taskMonitor = {\n application: application,\n title: 'Terminating ' + instance.name,\n onTaskComplete() {\n if (ReactInjector.$state.includes('**.serverGroup', { instanceId: instance.name })) {\n ReactInjector.$state.go('^');\n }\n },\n };\n\n const submitMethod = () => {\n return InstanceWriter.terminateInstance(instance, application, { cloudProvider: 'cloudfoundry' });\n };\n\n ConfirmationModalService.confirm({\n header: 'Really terminate ' + instance.name + '?',\n buttonText: 'Terminate',\n account: instance.account,\n taskMonitorConfig: taskMonitor,\n submitMethod,\n });\n };\n\n public render(): JSX.Element {\n return (\n <div className=\"actions\">\n <Dropdown className=\"dropdown\" id=\"instance-actions-dropdown\">\n <Dropdown.Toggle className=\"btn btn-sm btn-primary dropdown-toggle\">Instance Actions</Dropdown.Toggle>\n <Dropdown.Menu className=\"dropdown-menu\">\n <li>\n <a className=\"clickable\" onClick={this.terminateInstance}>\n Terminate\n </a>\n </li>\n </Dropdown.Menu>\n </Dropdown>\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { AccountTag, CollapsibleSection, timestamp } from '@spinnaker/core';\nimport type { ICloudFoundryInstance } from '../../../domain';\n\nexport interface ICloudFoundryInstanceDetailsSectionProps {\n instance: ICloudFoundryInstance;\n}\n\nexport class CloudFoundryInstanceDetailsSection extends React.Component<ICloudFoundryInstanceDetailsSectionProps> {\n constructor(props: ICloudFoundryInstanceDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { instance } = this.props;\n return (\n <div>\n <CollapsibleSection heading=\"Instance Information\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Launched</dt>\n <dd>{timestamp(instance.launchTime)}</dd>\n <dt>In</dt>\n <dd>\n <AccountTag account={instance.account} />\n </dd>\n <dt>Region</dt>\n <dd>{instance.region}</dd>\n </dl>\n </CollapsibleSection>\n <CollapsibleSection heading=\"Status\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>\n <span className={'glyphicon glyphicon-' + instance.healthState + '-triangle'} />\n </dt>\n <dd>{instance.healthState}</dd>\n\n {instance.details && (\n <div>\n <dt>Details</dt>\n <dd>{instance.details}</dd>\n </div>\n )}\n </dl>\n </CollapsibleSection>\n </div>\n );\n }\n}\n","import { UISref } from '@uirouter/react';\nimport { UIRouterContext } from '@uirouter/react-hybrid';\nimport { flattenDeep } from 'lodash';\nimport React from 'react';\n\nimport type { Application, ILoadBalancer } from '@spinnaker/core';\nimport { InstanceReader, RecentHistoryService, Spinner } from '@spinnaker/core';\n\nimport { CloudFoundryInstanceActions } from './CloudFoundryInstanceActions';\nimport type { ICloudFoundryInstance } from '../../domain';\nimport { CloudFoundryInstanceDetailsSection } from './sections';\n\ninterface InstanceFromStateParams {\n instanceId: string;\n}\n\ninterface InstanceManager {\n account: string;\n region: string;\n category: string; // e.g., serverGroup, loadBalancer.\n name: string; // Parent resource name, not instance name.\n instances: ICloudFoundryInstance[];\n}\n\ninterface ICloudFoundryInstanceDetailsState {\n instance?: ICloudFoundryInstance;\n instanceIdNotFound: string;\n loading: boolean;\n}\n\ninterface ICloudFoundryInstanceDetailsProps {\n app: Application;\n instance: InstanceFromStateParams;\n loading: boolean;\n}\n\n@UIRouterContext\nexport class CloudFoundryInstanceDetails extends React.Component<\n ICloudFoundryInstanceDetailsProps,\n ICloudFoundryInstanceDetailsState\n> {\n constructor(props: ICloudFoundryInstanceDetailsProps) {\n super(props);\n\n this.state = {\n loading: true,\n instanceIdNotFound: props.instance.instanceId,\n };\n }\n\n public componentDidMount(): void {\n this.props.app.ready().then(() => this.retrieveInstance(this.props.instance));\n }\n\n private retrieveInstance(instanceFromParams: InstanceFromStateParams): void {\n const instanceLocatorPredicate = (dataSource: InstanceManager) => {\n return dataSource.instances.some((possibleMatch) => possibleMatch.id === instanceFromParams.instanceId);\n };\n\n const dataSources: InstanceManager[] = flattenDeep([\n this.props.app.getDataSource('serverGroups').data,\n this.props.app.getDataSource('loadBalancers').data,\n this.props.app\n .getDataSource('loadBalancers')\n .data.map((loadBalancer: ILoadBalancer) => loadBalancer.serverGroups),\n ]);\n\n const instanceManager = dataSources.find(instanceLocatorPredicate);\n\n if (instanceManager) {\n const recentHistoryExtraData: { [key: string]: string } = {\n region: instanceManager.region,\n account: instanceManager.account,\n };\n if (instanceManager.category === 'serverGroup') {\n recentHistoryExtraData.serverGroup = instanceManager.name;\n }\n RecentHistoryService.addExtraDataToLatest('instances', recentHistoryExtraData);\n InstanceReader.getInstanceDetails(instanceManager.account, instanceManager.region, instanceFromParams.instanceId)\n .then((instanceDetails: ICloudFoundryInstance) => {\n instanceDetails.account = instanceManager.account;\n instanceDetails.region = instanceManager.region;\n return instanceDetails;\n })\n .then((instance) => {\n this.setState({\n instance,\n loading: false,\n });\n });\n }\n }\n\n public render(): JSX.Element {\n const { app } = this.props;\n const { instance, instanceIdNotFound, loading } = this.state;\n const CloseButton = (\n <div className=\"close-button\">\n <UISref to=\"^\">\n <span className=\"glyphicon glyphicon-remove\" />\n </UISref>\n </div>\n );\n const loadingHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"horizontal center middle\">\n <Spinner size=\"small\" />\n </div>\n </div>\n );\n const notFoundHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"header-text horizontal middle\">\n <h3 className=\"horizontal middle space-between flex-1\">{instanceIdNotFound}</h3>\n </div>\n </div>\n );\n const instanceHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"header-text horizontal middle\">\n <span className={'glyphicon glyphicon-hdd ' + instance.healthState} />\n <h3 className=\"horizontal middle space-between flex-1\">{instance.name}</h3>\n </div>\n <CloudFoundryInstanceActions application={app} instance={instance} />\n </div>\n );\n const notFoundContent = () => (\n <div className=\"content\">\n <div className=\"content-section\">\n <div className=\"content-body text-center\">\n <h3>Instance not found.</h3>\n </div>\n </div>\n </div>\n );\n const instanceContent = () => (\n <div className=\"content\">\n <CloudFoundryInstanceDetailsSection instance={instance} />\n </div>\n );\n return (\n <div className=\"details-panel\">\n {loading && loadingHeader()}\n {!loading && instance && instanceHeader()}\n {!loading && instance && instanceContent()}\n {!loading && !instance && notFoundHeader()}\n {!loading && !instance && notFoundContent()}\n </div>\n );\n }\n}\n","import { camelCase, chain, cloneDeep, has } from 'lodash';\n\nimport type {\n Application,\n IInstance,\n IInstanceCounts,\n ILoadBalancer,\n ILoadBalancerUpsertCommand,\n IServerGroup,\n} from '@spinnaker/core';\nimport type {\n ICloudFoundryLoadBalancer,\n ICloudFoundryLoadBalancerUpsertCommand,\n ICloudFoundryServerGroup,\n ICloudFoundrySpace,\n} from '../domain';\n\nexport class CloudFoundryLoadBalancerUpsertDescription\n implements ILoadBalancerUpsertCommand, ICloudFoundryLoadBalancer {\n public id: string;\n public credentials: string;\n public account: string;\n public loadBalancerName: string;\n public name: string;\n public region: string;\n public cloudProvider: string;\n public serverGroups: ICloudFoundryServerGroup[];\n public space: ICloudFoundrySpace;\n\n constructor(loadBalancer: ICloudFoundryLoadBalancer) {\n this.id = loadBalancer.id;\n this.credentials = loadBalancer.account;\n this.account = this.credentials;\n this.cloudProvider = loadBalancer.cloudProvider;\n this.loadBalancerName = loadBalancer.name;\n this.name = loadBalancer.name;\n this.region = loadBalancer.region;\n this.serverGroups = loadBalancer.serverGroups;\n this.space = loadBalancer.space;\n }\n}\n\nexport class CloudFoundryLoadBalancerTransformer {\n public static $inject = ['$q'];\n constructor(private $q: ng.IQService) {}\n\n public normalizeLoadBalancer(loadBalancer: ILoadBalancer): PromiseLike<ILoadBalancer> {\n loadBalancer.provider = loadBalancer.type;\n loadBalancer.instanceCounts = this.buildInstanceCounts(loadBalancer.serverGroups);\n loadBalancer.instances = [];\n loadBalancer.serverGroups.forEach((serverGroup) => {\n serverGroup.account = loadBalancer.account;\n serverGroup.region = loadBalancer.region;\n serverGroup.cloudProvider = loadBalancer.provider;\n\n if (serverGroup.detachedInstances) {\n serverGroup.detachedInstances = (serverGroup.detachedInstances as any).map((id: string) => ({ id }));\n }\n serverGroup.instances = serverGroup.instances\n .concat(serverGroup.detachedInstances || [])\n .map((instance: any) => this.transformInstance(instance, loadBalancer));\n });\n\n const activeServerGroups = loadBalancer.serverGroups.filter((sg) => !sg.isDisabled);\n loadBalancer.instances = chain(activeServerGroups).map('instances').flatten().value() as IInstance[];\n return this.$q.resolve(loadBalancer);\n }\n\n public constructNewCloudFoundryLoadBalancerTemplate(\n application: Application,\n ): ICloudFoundryLoadBalancerUpsertCommand {\n return {\n cloudProvider: 'cloudfoundry',\n credentials: undefined,\n name: application.name,\n id: undefined,\n host: '',\n path: '',\n port: '',\n region: '',\n domain: '',\n serverGroups: [],\n routes: [],\n };\n }\n\n public convertLoadBalancerForEditing(\n loadBalancer: ICloudFoundryLoadBalancer,\n application: Application,\n ): PromiseLike<ICloudFoundryLoadBalancer> {\n return application\n .getDataSource('loadBalancers')\n .ready()\n .then(() => {\n const upToDateLoadBalancer = application\n .getDataSource('loadBalancers')\n .data.find((candidate: ILoadBalancer) => {\n return candidate.name === loadBalancer.name && candidate.account === loadBalancer.account;\n });\n\n if (upToDateLoadBalancer) {\n loadBalancer.serverGroups = cloneDeep(upToDateLoadBalancer.serverGroups);\n }\n return loadBalancer;\n });\n }\n\n public convertLoadBalancerToUpsertDescription(\n loadBalancer: ICloudFoundryLoadBalancer,\n ): CloudFoundryLoadBalancerUpsertDescription {\n return new CloudFoundryLoadBalancerUpsertDescription(loadBalancer);\n }\n\n private buildInstanceCounts(serverGroups: IServerGroup[]): IInstanceCounts {\n const instanceCounts: IInstanceCounts = chain(serverGroups)\n .map('instances')\n .flatten()\n .reduce(\n (acc: IInstanceCounts, instance: any) => {\n if (has(instance, 'health.state')) {\n acc[camelCase(instance.health.state)]++;\n }\n return acc;\n },\n { up: 0, down: 0, outOfService: 0, succeeded: 0, failed: 0, starting: 0, unknown: 0 },\n )\n .value();\n\n instanceCounts.outOfService += chain(serverGroups).map('detachedInstances').flatten().value().length;\n return instanceCounts;\n }\n\n private transformInstance(instance: any, loadBalancer: ILoadBalancer) {\n instance.provider = loadBalancer.type;\n instance.account = loadBalancer.account;\n instance.region = loadBalancer.region;\n instance.loadBalancers = [loadBalancer.name];\n const health = instance.health || {};\n instance.healthState = health.state ?? 'OutOfService';\n instance.health = [health];\n\n return instance as IInstance;\n }\n}\n","import React from 'react';\n\nimport { Dropdown } from 'react-bootstrap';\n\nimport type { Application, ILoadBalancer, ILoadBalancerDeleteCommand } from '@spinnaker/core';\nimport { ConfirmationModalService, LoadBalancerWriter, ReactInjector } from '@spinnaker/core';\n\nexport interface ICloudFoundryLoadBalancerActionsProps {\n application: Application;\n loadBalancer: ILoadBalancer;\n}\n\nexport class CloudFoundryLoadBalancerActions extends React.Component<ICloudFoundryLoadBalancerActionsProps> {\n private deleteLoadBalancer = () => {\n const { application, loadBalancer } = this.props;\n const taskMonitor = {\n application: application,\n title: 'Deleting ' + loadBalancer.name,\n onTaskComplete() {\n if (ReactInjector.$state.includes('**.serverGroup', { instanceId: loadBalancer.name })) {\n ReactInjector.$state.go('^');\n }\n },\n };\n\n const submitMethod = () => {\n const loadBalancerDeleteCommand: ILoadBalancerDeleteCommand = {\n cloudProvider: loadBalancer.cloudProvider,\n credentials: loadBalancer.account,\n regions: [loadBalancer.region],\n loadBalancerName: loadBalancer.name,\n };\n return LoadBalancerWriter.deleteLoadBalancer(loadBalancerDeleteCommand, application);\n };\n\n ConfirmationModalService.confirm({\n header: 'Really delete ' + loadBalancer.name + '?',\n buttonText: 'Delete ' + loadBalancer.name,\n account: loadBalancer.account,\n taskMonitorConfig: taskMonitor,\n submitMethod,\n });\n };\n\n public render(): JSX.Element {\n return (\n <div className=\"actions\">\n <Dropdown className=\"dropdown\" id=\"instance-actions-dropdown\">\n <Dropdown.Toggle className=\"btn btn-sm btn-primary dropdown-toggle\">Load Balancer Actions</Dropdown.Toggle>\n <Dropdown.Menu className=\"dropdown-menu\">\n <li>\n <a className=\"clickable\" onClick={this.deleteLoadBalancer}>\n Delete Load Balancer\n </a>\n </li>\n </Dropdown.Menu>\n </Dropdown>\n </div>\n );\n }\n}\n","import { UISref } from '@uirouter/react';\nimport React from 'react';\n\nimport { AccountTag, CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryLoadBalancer } from '../../../domain';\n\nexport interface ICloudFoundryLoadBalancerDetailsSectionProps {\n loadBalancer: ICloudFoundryLoadBalancer;\n}\n\nexport class CloudFoundryLoadBalancerDetailsSection extends React.Component<\n ICloudFoundryLoadBalancerDetailsSectionProps\n> {\n constructor(props: ICloudFoundryLoadBalancerDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { loadBalancer } = this.props;\n return (\n <>\n <CollapsibleSection heading=\"Load Balancer Details\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>In</dt>\n <dd>\n <AccountTag account={loadBalancer.account} />\n </dd>\n <dt>Organization</dt>\n <dd>{loadBalancer.space.organization.name}</dd>\n <dt>Space</dt>\n <dd>{loadBalancer.space.name}</dd>\n {loadBalancer.serverGroups && (\n <>\n <dt>Server Groups</dt>\n <dd>\n <ul>\n {loadBalancer.serverGroups.map((serverGroup, index) => {\n return (\n <li key={index}>\n <UISref\n to=\"^.serverGroup\"\n params={{\n region: serverGroup.region,\n accountId: serverGroup.account,\n serverGroup: serverGroup.name,\n provider: 'cloudfoundry',\n }}\n >\n <a>{serverGroup.name}</a>\n </UISref>\n </li>\n );\n })}\n </ul>\n </dd>\n </>\n )}\n </dl>\n </CollapsibleSection>\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection, HealthCounts } from '@spinnaker/core';\nimport type { ICloudFoundryLoadBalancer } from '../../../domain';\n\nexport interface ICloudFoundryLoadBalancerStatusSectionProps {\n loadBalancer: ICloudFoundryLoadBalancer;\n}\n\nexport class CloudFoundryLoadBalancerStatusSection extends React.Component<\n ICloudFoundryLoadBalancerStatusSectionProps\n> {\n constructor(props: ICloudFoundryLoadBalancerStatusSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { loadBalancer } = this.props;\n return (\n <>\n <CollapsibleSection heading=\"Status\" defaultExpanded={true}>\n <HealthCounts className=\"pull-left\" container={loadBalancer.instanceCounts} />\n </CollapsibleSection>\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryLoadBalancer } from '../../../domain';\n\nexport interface ICloudFoundryLoadBalancerLinksSectionProps {\n loadBalancer: ICloudFoundryLoadBalancer;\n}\n\nexport class CloudFoundryLoadBalancerLinksSection extends React.Component<ICloudFoundryLoadBalancerLinksSectionProps> {\n constructor(props: ICloudFoundryLoadBalancerLinksSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { loadBalancer } = this.props;\n return (\n <>\n <CollapsibleSection heading=\"Application links\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>HTTP</dt>\n <dd>\n <a href={'http://' + loadBalancer.name}>{'http://' + loadBalancer.name}</a>\n </dd>\n <dt>HTTPS</dt>\n <dd>\n <a href={'https://' + loadBalancer.name}>{'https://' + loadBalancer.name}</a>\n </dd>\n </dl>\n </CollapsibleSection>\n </>\n );\n }\n}\n","import { UISref } from '@uirouter/react';\nimport { UIRouterContext } from '@uirouter/react-hybrid';\nimport React from 'react';\n\nimport type { Application, LoadBalancerWriter } from '@spinnaker/core';\nimport { Spinner } from '@spinnaker/core';\n\nimport { CloudFoundryLoadBalancerActions } from './CloudFoundryLoadBalancerActions';\nimport type { ICloudFoundryLoadBalancer } from '../../domain';\nimport { CloudFoundryLoadBalancerDetailsSection } from './sections';\nimport { CloudFoundryLoadBalancerLinksSection } from './sections/CloudFoundryLoadBalancerLinksSection';\nimport { CloudFoundryLoadBalancerStatusSection } from './sections/CloudFoundryLoadBalancerStatusSection';\n\ninterface ILoadBalancer {\n name: string;\n accountId: string;\n region: string;\n}\n\ninterface ICloudFoundryLoadBalancerDetailsState {\n loadBalancer: ICloudFoundryLoadBalancer;\n loadBalancerNotFound?: string;\n loading: boolean;\n refreshListenerUnsubscribe: () => void;\n}\n\nexport interface ICloudFoundryLoadBalancerDetailsProps {\n app: Application;\n loadBalancer: ILoadBalancer;\n loadBalancerWriter: LoadBalancerWriter;\n}\n\n@UIRouterContext\nexport class CloudFoundryLoadBalancerDetails extends React.Component<\n ICloudFoundryLoadBalancerDetailsProps,\n ICloudFoundryLoadBalancerDetailsState\n> {\n constructor(props: ICloudFoundryLoadBalancerDetailsProps) {\n super(props);\n this.state = {\n loading: true,\n loadBalancer: undefined,\n refreshListenerUnsubscribe: () => {},\n };\n\n props.app\n .getDataSource('loadBalancers')\n .ready()\n .then(() => this.extractLoadBalancer());\n }\n\n public componentWillUnmount(): void {\n this.state.refreshListenerUnsubscribe();\n }\n\n private extractLoadBalancer(): void {\n const { name } = this.props.loadBalancer;\n const loadBalancer: ICloudFoundryLoadBalancer = this.props.app\n .getDataSource('loadBalancers')\n .data.find((test: ICloudFoundryLoadBalancer) => {\n return test.name === name && test.account === this.props.loadBalancer.accountId;\n });\n\n this.setState({\n loading: false,\n loadBalancer,\n });\n\n this.state.refreshListenerUnsubscribe();\n\n if (loadBalancer) {\n this.setState({\n refreshListenerUnsubscribe: this.props.app\n .getDataSource('loadBalancers')\n .onRefresh(null, () => this.extractLoadBalancer()),\n });\n } else {\n this.setState({\n refreshListenerUnsubscribe: () => {},\n });\n // this.autoClose();\n }\n }\n\n public render(): JSX.Element {\n const { app } = this.props;\n const { loadBalancer, loadBalancerNotFound, loading } = this.state;\n\n const CloseButton = (\n <div className=\"close-button\">\n <UISref to=\"^\">\n <span className=\"glyphicon glyphicon-remove\" />\n </UISref>\n </div>\n );\n const loadingHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"horizontal center middle\">\n <Spinner size=\"small\" />\n </div>\n </div>\n );\n const notFoundHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"header-text horizontal middle\">\n <h3 className=\"horizontal middle space-between flex-1\">{loadBalancerNotFound}</h3>\n </div>\n </div>\n );\n const loadBalancerHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"header-text horizontal middle\">\n <i className=\"fa icon-sitemap\" />\n <h3 className=\"horizontal middle space-between flex-1\">{loadBalancer.name}</h3>\n </div>\n <CloudFoundryLoadBalancerActions application={app} loadBalancer={loadBalancer} />\n </div>\n );\n const notFoundContent = () => (\n <div className=\"content\">\n <div className=\"content-section\">\n <div className=\"content-body text-center\">\n <h3>Instance not found.</h3>\n </div>\n </div>\n </div>\n );\n const loadBalancerContent = () => (\n <div className=\"content\">\n <CloudFoundryLoadBalancerDetailsSection loadBalancer={loadBalancer} />\n <CloudFoundryLoadBalancerStatusSection loadBalancer={loadBalancer} />\n <CloudFoundryLoadBalancerLinksSection loadBalancer={loadBalancer} />\n </div>\n );\n return (\n <div className=\"details-panel\">\n {loading && loadingHeader()}\n {!loading && !!loadBalancer && loadBalancerHeader()}\n {!loading && !!loadBalancer && loadBalancerContent()}\n {!loading && !loadBalancer && notFoundHeader()}\n {!loading && !loadBalancer && notFoundContent()}\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { HelpField } from '@spinnaker/core';\n\nexport interface IFormikConfigFieldProps {\n label: string;\n helpKey?: string;\n children?: React.ReactNode;\n}\n\nexport class FormikConfigField extends React.Component<IFormikConfigFieldProps> {\n constructor(props: IFormikConfigFieldProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { label, helpKey, children } = this.props;\n return (\n <div className={'StandardFieldLayout flex-container-h baseline margin-between-lg'}>\n <label className={`sm-label-right`}>\n <span className=\"label-text\">{label} </span>\n {helpKey && <HelpField id={helpKey} />}\n </label>\n <div className={`flex-grow`}>{children}</div>\n </div>\n );\n }\n}\n","import { FieldArray, getIn } from 'formik';\nimport React from 'react';\n\nimport { FormikFormField, TextInput } from '@spinnaker/core';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup/configure/serverGroupConfigurationModel.cf';\n\nexport interface IBuildpacksProps {\n fieldName: string;\n onChange?: (value: string[]) => void;\n}\n\nexport class Buildpacks extends React.Component<IBuildpacksProps> {\n public render() {\n const { fieldName, onChange } = this.props;\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <b>Buildpacks</b>\n <FieldArray\n name={fieldName}\n render={(arrayHelpers) => {\n const serverGroupCommand: ICloudFoundryCreateServerGroupCommand = arrayHelpers.form.values;\n const buildpacks: string[] = getIn(serverGroupCommand, fieldName) || [];\n\n return (\n <table className=\"table table-condensed packed metadata\">\n <tbody>\n {buildpacks.map((_, index: number) => (\n <tr key={index}>\n <td>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={`${fieldName}[${index}]`}\n onChange={() => {\n onChange && onChange(getIn(serverGroupCommand, fieldName) || []);\n }}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </div>\n </td>\n <td>\n <a className=\"btn btn-link sm-label\" onClick={() => arrayHelpers.remove(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n </a>\n </td>\n </tr>\n ))}\n </tbody>\n <tfoot>\n <tr>\n <td colSpan={2}>\n <button type=\"button\" className=\"add-new col-md-12\" onClick={() => arrayHelpers.push('')}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add New Buildpack\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n );\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n","import { FieldArray, getIn } from 'formik';\nimport React from 'react';\n\nimport { FormikFormField, TextInput } from '@spinnaker/core';\nimport type { ICloudFoundryEnvVar } from '../../../domain';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup/configure/serverGroupConfigurationModel.cf';\n\nexport interface IEnvironmentVariablesProps {\n fieldName: string;\n onChange?: (value: string[]) => void;\n}\n\nexport class EnvironmentVariables extends React.Component<IEnvironmentVariablesProps> {\n public render() {\n const { fieldName, onChange } = this.props;\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <b>Environment Variables</b>\n <FieldArray\n name={fieldName}\n render={(arrayHelpers) => {\n const serverGroupCommand: ICloudFoundryCreateServerGroupCommand = arrayHelpers.form.values;\n const environmentVariables: string[] = getIn(serverGroupCommand, fieldName) || [];\n\n return (\n <table className=\"table table-condensed packed tags\">\n <thead>\n <tr>\n <th>Name</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n {environmentVariables.map((_, index: number) => {\n const envPath = `${fieldName}[${index}]`;\n return (\n <tr key={index}>\n <td>\n <FormikFormField\n name={`${envPath}.key`}\n onChange={() => {\n onChange && onChange(getIn(serverGroupCommand, fieldName) || []);\n }}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </td>\n <td>\n <FormikFormField\n name={`${envPath}.value`}\n onChange={() => {\n onChange && onChange(getIn(serverGroupCommand, fieldName) || []);\n }}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </td>\n <td>\n <a className=\"btn btn-link sm-label\">\n <span\n className=\"glyphicon glyphicon-trash\"\n onClick={() => arrayHelpers.remove(index)}\n />\n </a>\n </td>\n </tr>\n );\n })}\n </tbody>\n <tfoot>\n <tr>\n <td colSpan={3}>\n <button\n type=\"button\"\n className=\"add-new col-md-12\"\n onClick={() => arrayHelpers.push({ key: '', value: '' } as ICloudFoundryEnvVar)}\n >\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add New Environment Variable\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n );\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { FormikFormField, RadioButtonInput, TextInput } from '@spinnaker/core';\n\nexport interface IHealthCheckProps {\n healthCheckHttpEndpointFieldName: string;\n healthCheckType: string;\n healthCheckTypeFieldName: string;\n onHealthCheckHttpEndpointChange?: (value: string) => void;\n onHealthCheckTypeChange?: (value: string) => void;\n}\n\nexport class HealthCheck extends React.Component<IHealthCheckProps> {\n private HEALTH_CHECK_TYPE_OPTIONS = [\n { label: 'port', value: 'port' },\n { label: 'HTTP', value: 'http' },\n { label: 'process', value: 'process' },\n ];\n\n public render() {\n const {\n healthCheckTypeFieldName,\n healthCheckType,\n healthCheckHttpEndpointFieldName,\n onHealthCheckTypeChange,\n onHealthCheckHttpEndpointChange,\n } = this.props;\n\n return (\n <div className=\"col-md-9\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={healthCheckTypeFieldName}\n label=\"Health Check Type\"\n input={(props) => <RadioButtonInput {...props} inline={true} options={this.HEALTH_CHECK_TYPE_OPTIONS} />}\n onChange={(value) => {\n onHealthCheckTypeChange && onHealthCheckTypeChange(value);\n }}\n />\n </div>\n {healthCheckType === 'http' && (\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={healthCheckHttpEndpointFieldName}\n label=\"Endpoint\"\n input={(props) => <TextInput {...props} required={true} />}\n onChange={(value) => {\n onHealthCheckHttpEndpointChange && onHealthCheckHttpEndpointChange(value);\n }}\n required={true}\n />\n </div>\n )}\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { FormikFormField, TextInput } from '@spinnaker/core';\n\nexport interface IInstanceParametersProps {\n diskQuotaFieldName: string;\n instancesFieldName: string;\n memoryFieldName: string;\n onDiskQuotaChange?: (value: string) => void;\n onInstancesChange?: (value: string) => void;\n onMemoryChange?: (value: string) => void;\n}\n\nexport class InstanceParameters extends React.Component<IInstanceParametersProps> {\n public render() {\n const {\n diskQuotaFieldName,\n instancesFieldName,\n memoryFieldName,\n onDiskQuotaChange,\n onInstancesChange,\n onMemoryChange,\n } = this.props;\n\n return (\n <div>\n <div className=\"col-md-9\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={memoryFieldName}\n input={(props) => <TextInput {...props} />}\n label=\"Memory\"\n onChange={(value) => {\n onMemoryChange && onMemoryChange(value);\n }}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={diskQuotaFieldName}\n input={(props) => <TextInput {...props} />}\n label=\"Disk Quota\"\n onChange={(value) => {\n onDiskQuotaChange && onDiskQuotaChange(value);\n }}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={instancesFieldName}\n input={(props) => <TextInput type=\"number\" {...props} />}\n label=\"Instances\"\n onChange={(value) => {\n onInstancesChange && onInstancesChange(value);\n }}\n required={true}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n","import { FieldArray, getIn } from 'formik';\nimport React from 'react';\n\nimport { FormikFormField, HelpField, TextInput } from '@spinnaker/core';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup/configure/serverGroupConfigurationModel.cf';\n\nexport interface IRoutesProps {\n fieldName: string;\n onChange?: (value: string[]) => void;\n isRequired?: boolean;\n singleRouteOnly?: boolean;\n}\n\nexport class Routes extends React.Component<IRoutesProps> {\n public render() {\n const { fieldName, isRequired, onChange, singleRouteOnly } = this.props;\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <b>{singleRouteOnly ? 'Route' : 'Routes'}</b>\n \n {!isRequired && <HelpField id=\"cf.serverGroup.routes\" />}\n {!!isRequired && <HelpField id=\"cf.serverGroup.requiredRoutes\" />}\n <FieldArray\n name={fieldName}\n render={(arrayHelpers) => {\n const serverGroupCommand: ICloudFoundryCreateServerGroupCommand = arrayHelpers.form.values;\n const routes: string[] = getIn(serverGroupCommand, fieldName) || [];\n\n return (\n <table className=\"table table-condensed packed metadata\">\n <tbody>\n {routes.map((_, index: number) => (\n <tr key={index}>\n <td>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={`${fieldName}[${index}]`}\n onChange={() => {\n onChange && onChange(getIn(serverGroupCommand, fieldName) || []);\n }}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </div>\n </td>\n <td hidden={singleRouteOnly}>\n <a className=\"btn btn-link sm-label\" onClick={() => arrayHelpers.remove(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n </a>\n </td>\n </tr>\n ))}\n </tbody>\n <tfoot>\n <tr hidden={singleRouteOnly}>\n <td colSpan={2}>\n <button type=\"button\" className=\"add-new col-md-12\" onClick={() => arrayHelpers.push('')}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add New Route\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n );\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n","import { FieldArray, getIn } from 'formik';\nimport React from 'react';\n\nimport { FormikFormField, TextInput } from '@spinnaker/core';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup/configure/serverGroupConfigurationModel.cf';\n\nexport interface IServicesProps {\n fieldName: string;\n}\n\nexport const Services: React.SFC<IServicesProps> = ({ fieldName }: IServicesProps) => {\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <b>Bind Services</b>\n <FieldArray\n name={fieldName}\n render={(arrayHelpers) => {\n const serverGroupCommand: ICloudFoundryCreateServerGroupCommand = arrayHelpers.form.values;\n const services: string[] = getIn(serverGroupCommand, fieldName) || [];\n\n return (\n <table className=\"table table-condensed packed metadata\">\n <tbody>\n {services.map((_, index: number) => (\n <tr key={index}>\n <td>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={`${fieldName}[${index}]`}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </div>\n </td>\n <td>\n <a className=\"btn btn-link sm-label\" onClick={() => arrayHelpers.remove(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n </a>\n </td>\n </tr>\n ))}\n </tbody>\n <tfoot>\n <tr>\n <td colSpan={2}>\n <button type=\"button\" className=\"add-new col-md-12\" onClick={() => arrayHelpers.push('')}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add New Service\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n );\n }}\n />\n </div>\n </div>\n </div>\n );\n};\n","import { first, isNil, uniq } from 'lodash';\nimport React from 'react';\nimport type { Option } from 'react-select';\nimport Select, { Creatable } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IMoniker, IServerGroup, IServerGroupFilter } from '@spinnaker/core';\nimport { AppListExtractor, StageConfigField } from '@spinnaker/core';\n\nexport interface IAccountRegionClusterSelectorProps {\n accounts: IAccount[];\n application: Application;\n cloudProvider: string;\n clusterField?: string;\n component: any;\n componentName?: string;\n isSingleRegion?: boolean;\n onComponentUpdate?: (component: any) => void;\n}\n\nexport interface IAccountRegionClusterSelectorState {\n [k: string]: any;\n\n availableRegions: string[];\n clusterField: string;\n clusters: string[];\n componentName: string;\n}\n\nexport class AccountRegionClusterSelector extends React.Component<\n IAccountRegionClusterSelectorProps,\n IAccountRegionClusterSelectorState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IAccountRegionClusterSelectorProps) {\n super(props);\n const clusterField = props.clusterField || 'cluster';\n this.state = {\n availableRegions: [],\n cloudProvider: props.cloudProvider,\n clusterField: clusterField,\n clusters: [],\n componentName: props.componentName || '',\n [clusterField]: props.component[clusterField],\n };\n }\n\n public componentDidMount(): void {\n this.setRegionList(this.props.component.credentials);\n this.setClusterList(\n this.props.component.credentials,\n this.props.isSingleRegion ? [this.props.component.region] : this.props.component.regions,\n );\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private setRegionList = (credentials: string): void => {\n const { application } = this.props;\n const accountFilter: IServerGroupFilter = (serverGroup: IServerGroup) =>\n serverGroup ? serverGroup.account === credentials : true;\n observableFrom(application.ready())\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const availableRegions = AppListExtractor.getRegions([application], accountFilter);\n availableRegions.sort();\n this.setState({ availableRegions });\n });\n };\n\n private setClusterList = (credentials: string, regions: string[]): void => {\n const { application } = this.props;\n observableFrom(application.ready())\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const clusterFilter = AppListExtractor.clusterFilterForCredentialsAndRegion(credentials, regions);\n const clusters = AppListExtractor.getClusters([application], clusterFilter);\n\n const clusterField = this.props.component[this.state.clusterField];\n if (clusterField && !clusters.includes(clusterField)) {\n clusters.push(clusterField);\n }\n this.setState({ clusters });\n });\n };\n\n public onAccountUpdate = (option: Option<string>): void => {\n const credentials = option.value;\n this.setRegionList(credentials);\n this.setClusterList(credentials, []);\n this.props.onComponentUpdate &&\n this.props.onComponentUpdate({\n ...this.props.component,\n credentials,\n region: '',\n regions: [],\n [this.state.clusterField]: undefined,\n });\n };\n\n public onRegionsUpdate = (option: Option<string>): void => {\n const regions = option.map((o: Option) => o.value);\n this.setClusterList(this.props.component.credentials, regions);\n this.props.onComponentUpdate &&\n this.props.onComponentUpdate({\n ...this.props.component,\n regions,\n [this.state.clusterField]: undefined,\n });\n };\n\n public onRegionUpdate = (option: Option<string>): void => {\n const region = option.value;\n this.setClusterList(this.props.component.credentials, [region]);\n this.props.onComponentUpdate &&\n this.props.onComponentUpdate({\n ...this.props.component,\n region,\n [this.state.clusterField]: undefined,\n });\n };\n\n public onClusterUpdate = (option: Option<string>): void => {\n const clusterName = option.value;\n const filterByCluster = AppListExtractor.monikerClusterNameFilter(clusterName);\n const clusterMoniker = first(uniq(AppListExtractor.getMonikers([this.props.application], filterByCluster)));\n let moniker: IMoniker;\n\n if (isNil(clusterMoniker)) {\n // remove the moniker from the stage if one doesn't exist.\n moniker = undefined;\n } else {\n // clusters don't contain sequences, so null it out.\n clusterMoniker.sequence = null;\n moniker = clusterMoniker;\n }\n\n if (option.className) {\n const clusters = this.state.clusters;\n clusters.push(clusterName);\n this.setState(clusters);\n }\n\n this.props.onComponentUpdate &&\n this.props.onComponentUpdate({\n ...this.props.component,\n [this.state.clusterField]: clusterName,\n moniker,\n });\n };\n\n public render() {\n const { accounts, isSingleRegion, component } = this.props;\n const { availableRegions, clusters, clusterField, componentName } = this.state;\n return (\n <>\n <StageConfigField label=\"Account\">\n <Select\n name={componentName ? `${componentName}.credentials` : 'credentials'}\n options={\n accounts &&\n accounts.map((acc: IAccount) => ({\n label: acc.name,\n value: acc.name,\n }))\n }\n clearable={false}\n value={component.credentials}\n onChange={this.onAccountUpdate}\n />\n </StageConfigField>\n\n {!isSingleRegion && (\n <StageConfigField label=\"Region\">\n <Select\n name={componentName ? `${componentName}.regions` : 'regions'}\n options={\n availableRegions &&\n availableRegions.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n multi={true}\n clearable={false}\n value={component.regions}\n onChange={this.onRegionsUpdate}\n />\n </StageConfigField>\n )}\n {isSingleRegion && (\n <StageConfigField label=\"Region\">\n <Select\n name={componentName ? `${componentName}.region` : 'region'}\n options={\n availableRegions &&\n availableRegions.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n multi={false}\n clearable={false}\n value={component.region}\n onChange={this.onRegionUpdate}\n />\n </StageConfigField>\n )}\n <StageConfigField label=\"Cluster\" helpKey={'pipeline.config.findAmi.cluster'}>\n <Creatable\n name={componentName ? `${componentName}.${clusterField}` : `${clusterField}`}\n options={\n clusters &&\n clusters.map((c: string) => ({\n label: c,\n value: c,\n }))\n }\n clearable={false}\n value={component[clusterField]}\n onChange={this.onClusterUpdate}\n />\n </StageConfigField>\n </>\n );\n }\n}\n","import type { FormikProps } from 'formik';\nimport { get } from 'lodash';\nimport React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IServerGroup, IServerGroupFilter } from '@spinnaker/core';\nimport { AppListExtractor, FormikFormField, ReactSelectInput } from '@spinnaker/core';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup';\n\nexport interface IFormikAccountRegionClusterSelectorProps {\n accounts: IAccount[];\n application: Application;\n cloudProvider: string;\n clusterField?: string;\n componentName?: string;\n credentialsField?: string;\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n}\n\nexport interface IFormikAccountRegionClusterSelectorState {\n availableRegions: string[];\n cloudProvider: string;\n clusterField: string;\n clusters: string[];\n componentName: string;\n credentialsField: string;\n}\n\nexport class FormikAccountRegionClusterSelector extends React.Component<\n IFormikAccountRegionClusterSelectorProps,\n IFormikAccountRegionClusterSelectorState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IFormikAccountRegionClusterSelectorProps) {\n super(props);\n const credentialsField = props.credentialsField || 'credentials';\n const clusterField = props.clusterField || 'cluster';\n this.state = {\n availableRegions: [],\n cloudProvider: props.cloudProvider,\n clusterField,\n clusters: [],\n componentName: props.componentName || '',\n credentialsField,\n };\n }\n\n public componentDidMount(): void {\n const { componentName, formik } = this.props;\n const { credentialsField } = this.state;\n const credentials = get(\n formik.values,\n componentName ? `${componentName}.${credentialsField}` : `${credentialsField}`,\n undefined,\n );\n const region = get(formik.values, componentName ? `${componentName}.region` : 'region', undefined);\n this.setRegionList(credentials);\n this.setClusterList(credentials, [region]);\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private setRegionList = (credentials: string): void => {\n const { application } = this.props;\n const accountFilter: IServerGroupFilter = (serverGroup: IServerGroup) =>\n serverGroup ? serverGroup.account === credentials : true;\n observableFrom(application.ready())\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const availableRegions = AppListExtractor.getRegions([application], accountFilter);\n availableRegions.sort();\n this.setState({ availableRegions });\n });\n };\n\n private setClusterList = (credentials: string, regions: string[]): void => {\n const { application } = this.props;\n observableFrom(application.ready())\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const clusterFilter = AppListExtractor.clusterFilterForCredentialsAndRegion(credentials, regions);\n const clusters = AppListExtractor.getClusters([application], clusterFilter);\n this.setState({ clusters });\n });\n };\n\n public accountChanged = (credentials: string): void => {\n this.setRegionList(credentials);\n this.setClusterList(credentials, []);\n };\n\n public regionChanged = (region: string): void => {\n const { componentName, formik } = this.props;\n const { credentialsField } = this.state;\n const credentials = get(\n formik.values,\n componentName ? `${componentName}.${credentialsField}` : `${credentialsField}`,\n undefined,\n );\n this.setClusterList(credentials, [region]);\n };\n\n public render() {\n const { accounts } = this.props;\n const { credentialsField, availableRegions, clusters, clusterField, componentName } = this.state;\n return (\n <div className=\"col-md-9\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={componentName ? `${componentName}.${credentialsField}` : `${credentialsField}`}\n label=\"Account\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={accounts && accounts.map((acc: IAccount) => acc.name)}\n clearable={false}\n />\n )}\n onChange={this.accountChanged}\n required={true}\n />\n </div>\n\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={componentName ? `${componentName}.region` : 'region'}\n label=\"Region\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={availableRegions}\n clearable={false}\n />\n )}\n onChange={this.regionChanged}\n required={true}\n />\n </div>\n\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={componentName ? `${componentName}.${clusterField}` : `${clusterField}`}\n label=\"Cluster\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={clusters}\n clearable={false}\n />\n )}\n required={true}\n />\n </div>\n </div>\n );\n }\n}\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, NgReact, StageConfigField, StageConstants } from '@spinnaker/core';\n\nimport { AccountRegionClusterSelector } from '../../widgets/accountRegionClusterSelector';\n\nexport interface ICloudFoundryAsgStageConfigState {\n accounts: IAccount[];\n}\n\nexport class CloudFoundryAsgStageConfig extends React.Component<IStageConfigProps, ICloudFoundryAsgStageConfigState> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n this.props.updateStageField({ cloudProvider: 'cloudfoundry' });\n this.state = { accounts: [] };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private targetUpdated = (target: string) => {\n this.props.updateStageField({ target });\n };\n\n private componentUpdated = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n regions: stage.regions,\n cluster: stage.cluster,\n });\n };\n\n public render() {\n const { application, pipeline, stage } = this.props;\n const { target } = stage;\n const { accounts } = this.state;\n const { TargetSelect } = NgReact;\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n onComponentUpdate={this.componentUpdated}\n component={stage}\n />\n )}\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n </div>\n );\n }\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryLoadBalancersExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'credentials', undefined);\n const region = get(context, 'region', undefined);\n const loadBalancerNames = get(context, 'loadBalancerNames', undefined);\n const serverGroupName = get(context, 'serverGroupName', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Region</dt>\n <dd>\n {region}\n <br />\n </dd>\n <dt>Server Group Name</dt>\n <dd>\n {serverGroupName}\n <br />\n </dd>\n <dt>Load Balancers</dt>\n <dd>\n {loadBalancerNames.join(', ')}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={props.stage} message={props.stage.failureMessage} />\n <StageExecutionLogs stage={props.stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// TODO: refactor this to not use namespace\n// eslint-disable-next-line\nexport namespace CloudFoundryLoadBalancersExecutionDetails {\n export const title = 'cloudfoundryLoadBalancersConfig';\n}\n","import type { Formik } from 'formik';\nimport React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IPipeline, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, NgReact, SpinFormik, StageConfigField, StageConstants } from '@spinnaker/core';\n\nimport { Routes } from '../../forms/serverGroup';\nimport { AccountRegionClusterSelector } from '../../widgets/accountRegionClusterSelector';\n\ninterface ICloudFoundryLoadBalancerStageConfigProps extends IStageConfigProps {\n pipeline: IPipeline;\n}\n\ninterface ICloudFoundryLoadBalancersValues {\n routes: string[];\n}\n\ninterface ICloudFoundryLoadBalancersStageConfigState {\n accounts: IAccount[];\n application: Application;\n initialValues: ICloudFoundryLoadBalancersValues;\n pipeline: IPipeline;\n}\n\nexport class CloudFoundryLoadBalancersStageConfig extends React.Component<\n ICloudFoundryLoadBalancerStageConfigProps,\n ICloudFoundryLoadBalancersStageConfigState\n> {\n private destroy$ = new Subject();\n private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancersValues>>();\n\n constructor(props: ICloudFoundryLoadBalancerStageConfigProps) {\n super(props);\n const { loadBalancerNames } = props.stage;\n const routes = loadBalancerNames && loadBalancerNames.length ? loadBalancerNames : [''];\n this.props.updateStageField({\n cloudProvider: 'cloudfoundry',\n loadBalancerNames: routes,\n });\n this.state = {\n accounts: [],\n application: props.application,\n initialValues: {\n routes,\n },\n pipeline: props.pipeline,\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private targetUpdated = (target: string) => {\n this.props.updateStageField({ target });\n };\n\n private componentUpdated = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n region: stage.region,\n cluster: stage.cluster,\n loadBalancerNames: stage.loadBalancerNames,\n });\n };\n\n public render() {\n const { stage } = this.props;\n const { accounts, application, initialValues, pipeline } = this.state;\n const { target } = stage;\n const { TargetSelect } = NgReact;\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n isSingleRegion={true}\n onComponentUpdate={this.componentUpdated}\n component={stage}\n />\n )}\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n <SpinFormik<ICloudFoundryLoadBalancersValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={null}\n render={() => {\n return (\n <Routes\n fieldName={'routes'}\n isRequired={true}\n singleRouteOnly={true}\n onChange={(routes: string[]) => {\n stage.loadBalancerNames = routes;\n this.componentUpdated(stage);\n }}\n />\n );\n }}\n />\n </div>\n );\n }\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryServiceExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'service.account', undefined);\n const region = get(context, 'service.region', undefined);\n const serviceInstanceName = get(context, 'service.instance.name', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Region</dt>\n <dd>\n {region}\n <br />\n </dd>\n <dt>Service Instance Name</dt>\n <dd>\n {serviceInstanceName}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={stage} message={stage.failureMessage} />\n <StageExecutionLogs stage={stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// eslint-disable-next-line\nexport namespace CloudFoundryServiceExecutionDetails {\n export const title = 'cloudfoundryServiceConfig';\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryServiceKeyExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'service.account', undefined);\n const region = get(context, 'service.region', undefined);\n const serviceInstanceName = get(context, 'serviceInstanceName', undefined);\n const serviceKeyName = get(context, 'serviceKeyName', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Region</dt>\n <dd>\n {region}\n <br />\n </dd>\n <dt>Service Instance Name</dt>\n <dd>\n {serviceInstanceName}\n <br />\n </dd>\n <dt>Service Key Name</dt>\n <dd>\n {serviceKeyName}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={props.stage} message={props.stage.failureMessage} />\n <StageExecutionLogs stage={props.stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// eslint-disable-next-line\nexport namespace CloudFoundryServiceKeyExecutionDetails {\n export const title = 'cloudfoundryServiceKeyConfig';\n}\n","import type { IDeferred } from 'angular';\nimport type { IModalServiceInstance } from 'angular-ui-bootstrap';\nimport type { Formik } from 'formik';\nimport { Form } from 'formik';\nimport { $q } from 'ngimport';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type {\n Application,\n IAccount,\n ILoadBalancerModalProps,\n IModalComponentProps,\n IServerGroup,\n} from '@spinnaker/core';\nimport {\n AccountService,\n ModalClose,\n noop,\n ReactInjector,\n ReactModal,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../domain';\nimport { AccountRegionClusterSelector, Routes } from '../../presentation';\n\nexport interface ICreateCloudFoundryMapLoadBalancerState {\n accounts: IAccount[];\n regions: string[];\n application: Application;\n selectedValues: ICloudFoundryLoadBalancerModalValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryLoadBalancerModalProps extends IModalComponentProps {\n application: Application;\n}\n\nexport interface ICloudFoundryLoadBalancerModalValues {\n credentials: string;\n region: string;\n cluster: string;\n routes: string[];\n}\n\nexport class CloudFoundryMapLoadBalancerModal extends React.Component<\n ICloudFoundryLoadBalancerModalProps,\n ICreateCloudFoundryMapLoadBalancerState\n> {\n public static defaultProps: Partial<ICloudFoundryLoadBalancerModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private destroy$ = new Subject();\n private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancerModalValues>>();\n private $uibModalInstanceEmulation: IModalServiceInstance & { deferred?: IDeferred<any> };\n\n constructor(props: ICloudFoundryLoadBalancerModalProps) {\n super(props);\n\n const deferred = $q.defer();\n const promise = deferred.promise;\n this.$uibModalInstanceEmulation = {\n result: promise,\n close: () => this.props.dismissModal(),\n dismiss: () => this.props.dismissModal(),\n } as IModalServiceInstance;\n Object.assign(this.$uibModalInstanceEmulation, { deferred });\n this.state = {\n accounts: [],\n regions: [],\n application: props.application,\n selectedValues: {\n credentials: '',\n region: '',\n cluster: '',\n routes: [''],\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Mapping a route to your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts }));\n }\n\n public static show(props: ILoadBalancerModalProps): Promise<void> {\n const modalProps = { dialogClassName: 'wizard-modal modal-lg' };\n return ReactModal.show(\n CloudFoundryMapLoadBalancerModal,\n {\n application: props.app,\n // className: 'create-pipeline-modal-overflow-visible',\n },\n modalProps,\n );\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private submit = (values: ICloudFoundryLoadBalancerModalValues): void => {\n const { routes } = values;\n const serverGroup: ICloudFoundryServerGroup = this.props.application.serverGroups?.data?.find(\n (sg: ICloudFoundryServerGroup) =>\n sg.cluster === this.state.selectedValues.cluster &&\n sg.account === this.state.selectedValues.credentials &&\n sg.region === this.state.selectedValues.region,\n );\n\n const coreServerGroup: IServerGroup = {\n account: serverGroup.account,\n cloudProvider: serverGroup.cloudProvider,\n cluster: serverGroup.cluster,\n instanceCounts: serverGroup.instanceCounts,\n instances: serverGroup.instances,\n loadBalancers: routes,\n name: serverGroup.name,\n region: serverGroup.region,\n type: serverGroup.type,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.mapLoadBalancers(coreServerGroup, this.props.application, {\n serverGroupName: serverGroup.name,\n });\n });\n };\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private accountRegionClusterUpdated = (values: any) => {\n this.setState({\n selectedValues: {\n cluster: values.cluster,\n credentials: values.credentials,\n region: values.region,\n routes: [''],\n },\n });\n };\n\n public render() {\n const { accounts, application, selectedValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryLoadBalancerModalValues>\n ref={this.formikRef}\n initialValues={selectedValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Map route</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n isSingleRegion={true}\n onComponentUpdate={this.accountRegionClusterUpdated}\n component={selectedValues}\n />\n <Routes fieldName=\"routes\" isRequired={true} singleRouteOnly={true} />\n </Form>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button\n type=\"submit\"\n className=\"btn btn-primary\"\n onClick={() => this.submit(formik.values)}\n disabled={!formik.isValid}\n >\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","export default \"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20standalone%3D%22no%22%3F%3E%3Csvg%20width%3D%22300px%22%20height%3D%22300px%22%20viewBox%3D%220%200%20300%20300%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%20%20%20%20%20%20%20%20%3Ctitle%3Ecf_logo%3C%2Ftitle%3E%20%20%20%20%3Cdesc%3ECreated%20with%20Sketch.%3C%2Fdesc%3E%20%20%20%20%3Cdefs%3E%3C%2Fdefs%3E%20%20%20%20%3Cg%20id%3D%22cf_logo%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M178.263372%2C122.718681%20C186.913513%2C115.731062%20192.264847%2C105.825834%20192.16919%2C94.8631089%20C191.983342%2C73.9653286%20172.094852%2C57.1484045%20147.743272%2C57.1484045%20C123.391692%2C57.1484045%20103.497736%2C73.9653286%20103.317354%2C94.8631089%20C103.218964%2C105.825834%20108.570299%2C115.728351%20117.220439%2C122.71597%20C127.925842%2C131.365758%20136.693504%2C148.855142%20137.210052%2C167.952465%20C137.781262%2C189.145802%20136.321807%2C213.674325%20135.425363%2C226.155508%20C123.984767%2C227.766159%20115.944099%2C231.559592%20115.944099%2C235.982102%20C115.944099%2C241.866127%20130.180618%2C248.650381%20147.743272%2C248.650381%20C165.303194%2C248.650381%20179.539712%2C241.866127%20179.539712%2C235.982102%20C179.539712%2C231.559592%20171.501778%2C227.766159%20160.058448%2C226.155508%20C159.162004%2C213.674325%20157.702549%2C189.145802%20158.273759%2C167.952465%20C158.790308%2C148.855142%20167.557969%2C131.365758%20178.263372%2C122.718681%22%20id%3D%22Fill-1%22%20fill%3D%22%231B1A19%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M234.330842%2C245.57087%20C235.853157%2C244.936371%20237.629647%2C244.423892%20239.594718%2C244.046988%20C241.423137%2C243.645682%20243.462001%2C243.390798%20245.68398%2C243.317586%20C245.68398%2C243.317586%20245.58559%2C242.63428%20245.448937%2C241.62559%20C245.386076%2C240.625035%20244.910523%2C239.299095%20244.454102%2C237.984002%20C244.224525%2C237.335946%20243.989482%2C236.693313%20243.779036%2C236.094064%20C243.511196%2C235.500238%20243.16683%2C234.952509%20242.920854%2C234.477991%20C242.404306%2C233.550647%20242.05994%2C232.929706%20242.05994%2C232.929706%20C239.865291%2C232.577206%20237.790898%2C232.089131%20235.779364%2C231.516997%20C233.729568%2C230.944864%20231.802759%2C230.288673%20230.108261%2C229.580963%20C226.894181%2C228.179101%20223.874147%2C226.609124%20222.278039%2C224.857474%20C220.351231%2C223.189881%20219.995933%2C221.519577%20220.058793%2C220.011965%20C220.168116%2C219.269005%20220.512482%2C218.550449%20221.102823%2C217.880701%20C221.641236%2C217.221798%20222.354565%2C216.627973%20223.382196%2C216.115493%20C223.382196%2C216.115493%20222.60874%2C215.689783%20221.479985%2C215.057995%20C220.903309%2C214.751592%20220.280171%2C214.388247%20219.542245%2C214.008632%20C218.768788%2C213.642576%20217.957069%2C213.254826%20217.148083%2C212.875212%20C215.551975%2C212.121406%20213.955866%2C211.364888%20212.619399%2C210.868678%20C211.343059%2C210.356198%20210.498543%2C210.014545%20210.498543%2C210.014545%20C208.948897%2C210.220622%20207.270798%2C210.331794%20205.562634%2C210.356198%20C203.794343%2C210.391448%20201.990522%2C210.342641%20200.23863%2C210.212487%20C196.789506%2C209.91693%20193.280255%2C209.442412%20190.246556%2C208.553029%20C188.675046%2C208.151722%20187.338578%2C207.677204%20186.171561%2C207.153878%20C185.004544%2C206.641399%20183.96598%2C206.131631%20183.129663%2C205.559497%20C181.533555%2C204.401673%20180.443064%2C203.233003%20180.451263%2C202.053486%20C180.451263%2C202.053486%20179.483759%2C201.893506%20178.037969%2C201.649468%20C176.540252%2C201.418987%20173.348036%2C200.993277%20171.322837%2C200.724835%20C171.287307%2C201.063777%20171.065929%2C201.383738%20170.992136%2C201.942313%20L170.475588%2C204.401673%20C169.420626%2C209.320393%20172.293074%2C214.312324%20177.16339%2C215.714186%20C189.095937%2C219.157832%20198.112308%2C224.83307%20200.716916%2C231.796285%20C205.980792%2C245.885407%20183.86759%2C259.657281%20150.239999%2C259.657281%20C116.598742%2C259.657281%2094.4828068%2C245.885407%2099.7357514%2C231.796285%20C102.277499%2C225.003896%20110.941304%2C219.439832%20122.442028%2C215.96907%20C127.533722%2C214.434343%20130.553755%2C209.236335%20129.460531%2C204.073578%20L128.749935%2C200.724835%20C127.410734%2C200.882104%20125.852889%2C201.077334%20124.256781%2C201.272565%20C122.258913%2C201.492199%20120.353969%2C201.84741%20118.894514%2C202.07789%20C117.435059%2C202.305659%20116.45389%2C202.479197%20116.45389%2C202.479197%20C116.55228%2C203.623463%20115.729629%2C204.911441%20114.158118%2C206.023169%20C113.335467%2C206.581745%20112.42809%2C207.164725%20111.310268%2C207.690762%20C110.192446%2C208.224934%20108.817715%2C208.675048%20107.382858%2C209.149566%20C105.896073%2C209.613238%20104.24257%2C209.954891%20102.583602%2C210.245025%20C100.951964%2C210.562275%2099.2082705%2C210.792755%2097.4181151%2C210.939178%20C93.8460034%2C211.221177%2090.2629595%2C211.294388%2087.0106161%2C210.893082%20C87.0106161%2C210.893082%2086.7892381%2C210.977139%2086.4202748%2C211.123562%20C86.0649768%2C211.280831%2085.4855677%2C211.486907%2084.9116247%2C211.768907%20C83.7200098%2C212.330194%2082.1129695%2C213.094846%2080.4922639%2C213.86221%20C78.8961559%2C214.653977%2077.4749638%2C215.50811%2076.3216118%2C216.139897%20C75.7422027%2C216.454435%2075.2639169%2C216.725588%2074.9332164%2C216.907261%20C74.6271135%2C217.113337%2074.4549306%2C217.221798%2074.4549306%2C217.221798%20C76.7015073%2C218.257604%2077.9532496%2C219.659466%2078.1964921%2C221.145386%20C78.7622359%2C222.715363%2077.9887794%2C224.344994%2076.5293244%2C226.123759%20C75.6848084%2C227.0267%2074.5423886%2C227.878121%2073.3753712%2C228.705138%20C72.1372943%2C229.543002%2070.5876483%2C230.334769%2068.8576202%2C231.091287%20C65.6189421%2C232.612456%2061.4209593%2C233.951953%2056.9168736%2C234.757278%20C56.9168736%2C234.757278%2056.5260458%2C235.391777%2056.228142%2C236.338102%20C55.8865093%2C237.303407%2055.4328211%2C238.604943%2054.9654675%2C239.933594%20C54.7686871%2C241.245976%2054.585572%2C242.59903%2054.4379866%2C243.634836%20C54.2439392%2C244.678776%2054.3395964%2C245.35937%2054.3395964%2C245.35937%20C58.9912674%2C245.410889%2063.1291229%2C246.189099%2066.2202157%2C247.420135%20C69.8169249%2C248.602363%2071.9897089%2C250.364859%2073.6705419%2C252.520527%20C74.9960768%2C254.847022%2075.5235577%2C257.281978%2074.3428751%2C260.093837%20C73.5202235%2C262.835197%2071.2627145%2C265.891094%2067.5840135%2C268.664991%20C67.5840135%2C268.664991%2067.7917261%2C268.849375%2068.1470242%2C269.153067%20C68.5515173%2C269.445913%2069.1418586%2C269.860777%2069.8524547%2C270.359699%20C71.3146427%2C271.357543%2073.1539932%2C272.770251%2075.315845%2C274.047383%20C77.5979516%2C275.291976%2079.9155879%2C276.544704%2081.6729466%2C277.507298%20C82.5420602%2C277.995374%2083.4275722%2C278.299066%2083.9796507%2C278.55395%20C84.5563267%2C278.808834%2084.8870272%2C278.941699%2084.8870272%2C278.941699%20C90.0771113%2C276.739935%2095.6498242%2C275.606514%20101.222537%2C275.023535%20C104.007527%2C274.727978%20106.743322%2C274.657478%20109.358862%2C274.828304%20C112.020864%2C274.96117%20114.734794%2C275.169958%20117.273808%2C275.763783%20C119.790958%2C276.422686%20122.245248%2C277.043626%20124.393434%2C277.995374%20C126.57715%2C278.930853%20128.517624%2C280.159177%20130.354242%2C281.341405%20C134.024744%2C283.825169%20136.847996%2C287.333892%20138.064209%2C291.021576%20C138.064209%2C291.021576%20139.952755%2C291.094787%20142.78694%2C291.20596%20C145.63479%2C291.27646%20149.428279%2C291.534056%20153.208104%2C291.338825%20C156.990661%2C291.216806%20160.778685%2C291.154441%20163.591005%2C290.972768%20C166.365063%2C290.704327%20168.218079%2C290.536212%20168.218079%2C290.536212%20C168.608907%2C288.611024%20169.469821%2C286.797009%20170.647771%2C285.151108%20C171.22718%2C284.348495%20171.888581%2C283.581131%20172.623774%2C282.865287%20C173.33437%2C282.122327%20174.083229%2C281.365809%20174.919546%2C280.698772%20C176.564849%2C279.359275%20178.43973%2C278.201451%20180.563318%2C277.274107%20C182.624047%2C276.314224%20184.835094%2C275.411284%20187.387774%2C274.841862%20C189.989648%2C274.329382%20192.430272%2C273.819614%20195.081342%2C273.63523%20C197.696882%2C273.426442%20200.544733%2C273.548461%20203.182137%2C273.659634%20C208.571735%2C273.949768%20214.546208%2C275.180804%20219.739025%2C277.127684%20C219.739025%2C277.127684%20220.889644%2C276.495897%20222.60874%2C275.544149%20C224.254043%2C274.57342%20226.623608%2C273.415596%20228.43836%2C271.978484%20C230.294109%2C270.614583%20232.245515%2C269.323894%20233.420732%2C268.252838%20C234.574084%2C267.181783%20235.325676%2C266.476785%20235.325676%2C266.476785%20C231.461127%2C263.833041%20229.236414%2C260.996778%20227.815222%2C258.195765%20C227.151088%2C256.845421%20226.967973%2C255.576424%20226.92971%2C254.323696%20C226.83132%2C253.057411%20227.101893%2C251.877894%20227.815222%2C250.779723%20C228.820989%2C248.539998%20231.398266%2C246.883251%20234.330842%2C245.57087%22%20id%3D%22Fill-2%22%20fill%3D%22%23000000%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M118.447097%2C177.453406%20C118.447097%2C177.453406%20123.443134%2C158.68689%20101.750823%2C134.472906%20L101.026562%2C133.724523%20C91.8872032%2C122.97872%2086.8529035%2C109.342424%2086.8529035%2C95.3265125%20C86.8529035%2C62.4247782%20113.863752%2C35.6538187%20147.067719%2C35.6538187%20L148.464314%2C35.6538187%20C181.671013%2C35.6538187%20208.684595%2C62.4247782%20208.684595%2C95.3265125%20C208.684595%2C109.342424%20203.650296%2C122.97872%20194.519137%2C133.716388%20C194.412547%2C133.835696%20194.166572%2C134.087868%20193.794875%2C134.456637%20C174.534989%2C153.591921%20177.084936%2C177.453406%20177.084936%2C177.453406%20C212.256707%2C165.425049%20236.017946%2C132.612795%20236.220192%2C95.8091653%20C236.471634%2C49.7944603%20199.034155%2C10.5748554%20152.774352%2C8.37309111%20C152.194943%2C8.34597578%20151.623733%2C8.33241812%20151.052523%2C8.33241812%20C150.352859%2C8.33241812%20147.750985%2C8.38393723%20147.761917%2C8.38393723%20C147.688124%2C8.38393723%20145.181907%2C8.33241812%20144.484976%2C8.33241812%20C143.913766%2C8.33241812%20143.339823%2C8.34597578%20142.771346%2C8.37309111%20C96.5006113%2C10.5748554%2059.063132%2C49.7944603%2059.3173068%2C95.8091653%20C59.5140872%2C132.612795%2083.2780588%2C165.425049%20118.447097%2C177.453406%22%20id%3D%22Fill-3%22%20fill%3D%22%23000000%22%3E%3C%2Fpath%3E%20%20%20%20%3C%2Fg%3E%3C%2Fsvg%3E\"","import type {\n IPipeline,\n IStage,\n IStageOrTriggerTypeConfig,\n IStageOrTriggerValidator,\n IValidatorConfig,\n} from '@spinnaker/core';\nimport { NameUtils, PipelineConfigService, PipelineConfigValidator } from '@spinnaker/core';\n\nexport interface ITargetImpedanceValidationConfig extends IValidatorConfig {\n stageTypes?: string[];\n stageType?: string;\n message: string;\n}\n\nexport class CfTargetImpedanceValidator implements IStageOrTriggerValidator {\n public validate(\n pipeline: IPipeline,\n stage: IStage,\n validator: ITargetImpedanceValidationConfig,\n _config: IStageOrTriggerTypeConfig,\n ): string {\n const stagesToTest: IStage[] = PipelineConfigService.getAllUpstreamDependencies(pipeline, stage);\n const regions: string[] = stage.regions || [];\n let allRegionsFound = true;\n\n regions.forEach((region) => {\n let regionFound = false;\n stagesToTest.forEach((toTest) => {\n if (toTest.type === 'deploy' && toTest.clusters && toTest.clusters.length) {\n toTest.clusters.forEach((cluster: any) => {\n const clusterName: string = NameUtils.getClusterName(\n cluster.application,\n cluster.stack,\n cluster.freeFormDetails,\n );\n if (clusterName === stage.cluster && cluster.account === stage.credentials && cluster.region === region) {\n regionFound = true;\n }\n });\n } else if (\n toTest.type === 'cloneServerGroup' &&\n NameUtils.getClusterName(toTest.application, toTest.stack, toTest.freeFormDetails) === stage.cluster &&\n toTest.region === region\n ) {\n regionFound = true;\n }\n });\n if (!regionFound) {\n allRegionsFound = false;\n }\n });\n if (!allRegionsFound) {\n return validator.message;\n }\n return null;\n }\n}\n\nPipelineConfigValidator.registerValidator('cfTargetImpedance', new CfTargetImpedanceValidator());\n","import { get, has, upperFirst } from 'lodash';\n\nimport type { IPipeline, IStage, IStageOrTriggerValidator, ITrigger, IValidatorConfig } from '@spinnaker/core';\nimport { PipelineConfigValidator } from '@spinnaker/core';\n\nexport interface IInstanceFieldSizeValidationConfig extends IValidatorConfig {\n fieldName: string;\n fieldLabel?: string;\n min?: number;\n max?: number;\n message?: string;\n}\n\nexport class CfInstanceSizeFieldValidator implements IStageOrTriggerValidator {\n public validate(\n pipeline: IPipeline,\n stage: IStage | ITrigger,\n validationConfig: IInstanceFieldSizeValidationConfig,\n ): string {\n if (!this.passesValidation(stage, validationConfig)) {\n return this.validationMessage(validationConfig, pipeline);\n }\n return null;\n }\n\n protected passesValidation(stage: IStage | ITrigger, validationConfig: IInstanceFieldSizeValidationConfig): boolean {\n return this.fieldIsValid(stage, validationConfig);\n }\n\n protected validationMessage(validationConfig: IInstanceFieldSizeValidationConfig, pipeline: IPipeline): string {\n const fieldLabel: string = this.printableFieldLabel(validationConfig);\n const hasMin = has(validationConfig, 'min');\n const min: any = hasMin ? get(validationConfig, 'min') : 'NA';\n const hasMax = has(validationConfig, 'max');\n const max: any = hasMax ? get(validationConfig, 'max') : 'NA';\n let message = ``;\n if (hasMin) {\n if (hasMax) {\n message = `<strong>${fieldLabel}</strong> should be from ${min} to ${max} in ${pipeline.name}.`;\n } else {\n message = `<strong>${fieldLabel}</strong> should be at least ${min} in ${pipeline.name}.`;\n }\n } else if (hasMax) {\n message = `<strong>${fieldLabel}</strong> should be no more than ${max} in ${pipeline.name}.`;\n }\n return validationConfig.message || message;\n }\n\n protected printableFieldLabel(config: IInstanceFieldSizeValidationConfig): string {\n const fieldLabel: string = config.fieldLabel || config.fieldName;\n return upperFirst(fieldLabel);\n }\n\n protected fieldIsValid(stage: IStage | ITrigger, config: IInstanceFieldSizeValidationConfig): boolean {\n const fieldExists = has(stage, config.fieldName);\n const field: any = get(stage, config.fieldName);\n const hasMax: boolean = has(config, 'max');\n const hasMin: boolean = has(config, 'min');\n const max: number = get(config, 'max');\n const min: number = get(config, 'min');\n\n return fieldExists && (!hasMax || (hasMax && field <= max)) && (!hasMin || (hasMin && field >= min));\n }\n}\n\nPipelineConfigValidator.registerValidator('cfInstanceSizeField', new CfInstanceSizeFieldValidator());\n","import { get } from 'lodash';\n\nimport type { IPipeline, IStage, IStageOrTriggerValidator, ITrigger } from '@spinnaker/core';\nimport { PipelineConfigValidator } from '@spinnaker/core';\n\nexport class CfRequiredRoutesFieldValidator implements IStageOrTriggerValidator {\n public validate(_pipeline: IPipeline, stage: IStage | ITrigger, validationConfig: any): string {\n const routes: string[] = get(stage, validationConfig.fieldName);\n const routeErrors = routes\n .map((route: string) => {\n const regex = /^([-\\w]+)\\.([-.\\w]+)(:\\d+)?([-/\\w]+)?$/gm;\n route = route || '';\n if (regex.exec(route) === null) {\n const spelRegex = /^\\${.*}$/g;\n if (spelRegex.exec(route) === null) {\n return `\"${route}\" did not match the expected format \"host.some.domain[:9999][/some/path]\"`;\n }\n }\n return null;\n })\n .filter((err) => err != null);\n return (routeErrors && routeErrors.length && routeErrors[0]) || null;\n }\n}\n\nPipelineConfigValidator.registerValidator('cfRequiredRoutesField', new CfRequiredRoutesFieldValidator());\n","import React from 'react';\n\nimport type { IArtifact, IExpectedArtifact, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport {\n ArtifactTypePatterns,\n excludeAllTypesExcept,\n StageArtifactSelectorDelegate,\n StageConfigField,\n TextInput,\n} from '@spinnaker/core';\n\nexport class BakeCloudFoundryManifestConfigForm extends React.Component<IFormikStageConfigInjectedProps> {\n private static readonly excludedArtifactTypes = excludeAllTypesExcept(\n ArtifactTypePatterns.BITBUCKET_FILE,\n ArtifactTypePatterns.CUSTOM_OBJECT,\n ArtifactTypePatterns.EMBEDDED_BASE64,\n ArtifactTypePatterns.GCS_OBJECT,\n ArtifactTypePatterns.GITHUB_FILE,\n ArtifactTypePatterns.GITLAB_FILE,\n ArtifactTypePatterns.S3_OBJECT,\n ArtifactTypePatterns.HTTP_FILE,\n ArtifactTypePatterns.ORACLE_OBJECT,\n );\n\n public componentDidMount() {\n const stage = this.props.formik.values;\n if (stage.inputArtifacts && stage.inputArtifacts.length === 0) {\n this.props.formik.setFieldValue('inputArtifacts', [\n {\n account: '',\n id: '',\n },\n ]);\n }\n }\n\n private onTemplateArtifactEdited = (artifact: IArtifact, index: number) => {\n this.props.formik.setFieldValue(`inputArtifacts[${index}].id`, null);\n this.props.formik.setFieldValue(`inputArtifacts[${index}].artifact`, artifact);\n this.props.formik.setFieldValue(`inputArtifacts[${index}].account`, artifact.artifactAccount);\n };\n\n private onTemplateArtifactSelected = (id: string, index: number) => {\n this.props.formik.setFieldValue(`inputArtifacts[${index}].id`, id);\n this.props.formik.setFieldValue(`inputArtifacts[${index}].artifact`, null);\n };\n\n private addInputArtifact = () => {\n const stage = this.props.formik.values;\n const newInputArtifacts = [\n ...stage.inputArtifacts,\n {\n account: '',\n id: '',\n },\n ];\n\n this.props.formik.setFieldValue('inputArtifacts', newInputArtifacts);\n };\n\n private removeInputArtifact = (index: number) => {\n const stage = this.props.formik.values;\n const newInputArtifacts = [...stage.inputArtifacts];\n newInputArtifacts.splice(index, 1);\n this.props.formik.setFieldValue('inputArtifacts', newInputArtifacts);\n };\n\n private getInputArtifact = (stage: any, index: number) => {\n if (!stage.inputArtifacts || stage.inputArtifacts.length === 0) {\n return {\n account: '',\n id: '',\n };\n } else {\n return stage.inputArtifacts[index];\n }\n };\n\n private outputNameChange = (outputName: string) => {\n const stage = this.props.formik.values;\n const expectedArtifacts = stage.expectedArtifacts;\n if (\n expectedArtifacts &&\n expectedArtifacts.length === 1 &&\n expectedArtifacts[0].matchArtifact &&\n expectedArtifacts[0].matchArtifact.type === 'embedded/base64'\n ) {\n this.props.formik.setFieldValue('expectedArtifacts', [\n {\n ...expectedArtifacts[0],\n matchArtifact: {\n ...expectedArtifacts[0].matchArtifact,\n name: outputName,\n },\n },\n ]);\n }\n };\n\n public render() {\n const stage = this.props.formik.values;\n\n return (\n <>\n <h4>Manifest Options</h4>\n <StageConfigField fieldColumns={3} label={'Name'} helpKey={'pipeline.config.bake.cf.manifest.name'}>\n <TextInput\n onChange={(e: React.ChangeEvent<any>) => {\n this.props.formik.setFieldValue('outputName', e.target.value);\n this.outputNameChange(e.target.value);\n }}\n value={stage.outputName}\n />\n </StageConfigField>\n <h4>Manifest Template</h4>\n <StageArtifactSelectorDelegate\n artifact={this.getInputArtifact(stage, 0).artifact}\n excludedArtifactTypePatterns={BakeCloudFoundryManifestConfigForm.excludedArtifactTypes}\n expectedArtifactId={this.getInputArtifact(stage, 0).id}\n label=\"Template Artifact\"\n onArtifactEdited={(artifact) => {\n this.onTemplateArtifactEdited(artifact, 0);\n }}\n helpKey={'pipeline.config.bake.cf.manifest.templateArtifact'}\n onExpectedArtifactSelected={(artifact: IExpectedArtifact) => this.onTemplateArtifactSelected(artifact.id, 0)}\n pipeline={this.props.pipeline}\n stage={stage}\n />\n <h4>Manifest Variables</h4>\n {stage.inputArtifacts && stage.inputArtifacts.length > 1 && (\n <div className=\"row form-group\">\n {stage.inputArtifacts.slice(1).map((a: any, index: number) => {\n return (\n <div key={index}>\n <div className=\"col-md-offset-1 col-md-9\">\n <StageArtifactSelectorDelegate\n artifact={a.artifact}\n excludedArtifactTypePatterns={[]}\n expectedArtifactId={a.id}\n label=\"Variables Artifact\"\n onArtifactEdited={(artifact) => {\n this.onTemplateArtifactEdited(artifact, index + 1);\n }}\n onExpectedArtifactSelected={(artifact: IExpectedArtifact) =>\n this.onTemplateArtifactSelected(artifact.id, index + 1)\n }\n helpKey={'pipeline.config.bake.cf.manifest.varsArtifact'}\n pipeline={this.props.pipeline}\n stage={stage}\n />\n </div>\n <div className=\"col-md-1\">\n <div className=\"form-control-static\">\n <button onClick={() => this.removeInputArtifact(index + 1)}>\n <span className=\"glyphicon glyphicon-trash\" />\n <span className=\"sr-only\">Remove field</span>\n </button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n <StageConfigField fieldColumns={8} label={''}>\n <button className=\"btn btn-block btn-sm add-new\" onClick={() => this.addInputArtifact()}>\n <span className=\"glyphicon glyphicon-plus-sign\" />\n Add variables artifact\n </button>\n </StageConfigField>\n </>\n );\n }\n}\n","import type { FormikErrors } from 'formik';\nimport { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IArtifact, IExpectedArtifact, IStage, IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig, FormValidator } from '@spinnaker/core';\n\nimport { BakeCloudFoundryManifestConfigForm } from './BakeCloudFoundryManifestConfigForm';\n\nexport function BakeCloudFoundryManifestConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n inputArtifacts: [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n validate={validateBakeCloudFoundryManifestStage}\n render={(props) => <BakeCloudFoundryManifestConfigForm {...props} />}\n />\n );\n}\n\nexport function validateBakeCloudFoundryManifestStage(stage: IStage): FormikErrors<IStage> {\n const formValidator = new FormValidator(stage);\n\n formValidator\n .field('expectedArtifacts', 'Produced artifacts')\n .required()\n .withValidators((artifacts: IExpectedArtifact[]) => {\n if (validateProducedArtifacts(artifacts)) {\n return undefined;\n }\n return 'Exactly one expected artifact of type embedded/base64 must be configured in the Produces Artifacts section';\n });\n formValidator.field('outputName', 'Name').required();\n formValidator\n .field('inputArtifacts', 'Template and Variables Artifacts')\n .required()\n .withValidators((artifacts: IArtifact[]) => {\n if (validateInputArtifacts(artifacts)) {\n return undefined;\n }\n return 'There should be one manifest template and at least one variables artifact';\n });\n\n return formValidator.validateForm();\n}\n\nexport function validateProducedArtifacts(artifacts: IExpectedArtifact[]): boolean {\n return artifacts?.length === 1 && artifacts[0]?.matchArtifact?.type === 'embedded/base64';\n}\n\nexport function validateInputArtifacts(artifacts: IArtifact[]): boolean {\n return artifacts?.length >= 2;\n}\n","import React from 'react';\n\nimport type { IArtifact, IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport {\n decodeUnicodeBase64,\n ExecutionDetailsSection,\n ManifestYaml,\n Overridable,\n StageFailureMessage,\n} from '@spinnaker/core';\n\n@Overridable('bakeManifest.bakeManifestDetailsTab')\nexport class BakeCloudFoundryManifestDetailsTab extends React.Component<IExecutionDetailsSectionProps> {\n public static title = 'bakedManifest';\n\n public render() {\n const { current, name, stage } = this.props;\n const bakedArtifacts: IArtifact[] = (stage.context.artifacts || []).filter(\n (a: IArtifact) => a.type === 'embedded/base64',\n );\n return (\n <ExecutionDetailsSection name={name} current={current}>\n <StageFailureMessage stage={stage} message={stage.failureMessage} />\n {bakedArtifacts.map((artifact, i) => (\n <ManifestYaml\n key={i}\n linkName={bakedArtifacts.length > 1 ? `Baked Manifest ${i} YAML` : 'Baked Manifest YAML'}\n manifestText={decodeUnicodeBase64(artifact.reference)}\n modalTitle=\"Baked Manifest\"\n />\n ))}\n </ExecutionDetailsSection>\n );\n }\n}\n","import type { IArtifact, IStage } from '@spinnaker/core';\nimport {\n ArtifactReferenceService,\n ExecutionArtifactTab,\n ExecutionDetailsTasks,\n ExpectedArtifactService,\n Registry,\n} from '@spinnaker/core';\n\nimport {\n BakeCloudFoundryManifestConfig,\n validateBakeCloudFoundryManifestStage,\n} from './BakeCloudFoundryManifestConfig';\nimport { BakeCloudFoundryManifestDetailsTab } from './BakeCloudFoundryManifestDetailsTab';\n\nexport const BAKE_CF_MANIFEST_STAGE_KEY = 'bakeCloudFoundryManifest';\n\nRegistry.pipeline.registerStage({\n label: 'Bake CloudFoundry Manifest',\n description: 'Bake a CF manifest using external variables files.',\n key: BAKE_CF_MANIFEST_STAGE_KEY,\n component: BakeCloudFoundryManifestConfig,\n producesArtifacts: true,\n cloudProvider: 'cloudfoundry',\n executionDetailsSections: [BakeCloudFoundryManifestDetailsTab, ExecutionDetailsTasks, ExecutionArtifactTab],\n artifactExtractor: (fields: string[]) =>\n ExpectedArtifactService.accumulateArtifacts<IArtifact>(['inputArtifacts'])(fields).map((a: IArtifact) => a.id),\n artifactRemover: (stage: IStage, artifactId: string) => {\n ArtifactReferenceService.removeArtifactFromFields(['expectedArtifactId'])(stage, artifactId);\n const artifactDoesNotMatch = (artifact: IArtifact) => artifact.id !== artifactId;\n stage.expectedArtifacts = (stage.expectedArtifacts ?? []).filter(artifactDoesNotMatch);\n stage.inputArtifacts = (stage.inputArtifacts ?? []).filter(artifactDoesNotMatch);\n },\n validateFn: validateBakeCloudFoundryManifestStage,\n});\n","import type { Application, IPipeline, IStage } from '@spinnaker/core';\nimport type { ICloudFoundryApplication, ICloudFoundryEnvVar, ICloudFoundryServerGroup } from '../../domain';\n\nimport type {\n ICloudFoundryCreateServerGroupCommand,\n ICloudFoundryDeployConfiguration,\n} from './serverGroupConfigurationModel.cf';\n\nexport class CloudFoundryServerGroupCommandBuilder {\n private static envVarsFromObject(someObject: any): ICloudFoundryEnvVar[] {\n const envVars = [];\n for (const property in someObject) {\n if (someObject.hasOwnProperty(property)) {\n const envVar = { key: property, value: someObject[property] };\n envVars.push(envVar);\n }\n }\n return envVars;\n }\n\n private static getSubmitButtonLabel(mode: string) {\n switch (mode) {\n case 'createPipeline':\n return 'Add';\n case 'editPipeline':\n case 'editClonePipeline':\n return 'Done';\n case 'clone':\n return 'Clone';\n default:\n return 'Create';\n }\n }\n\n public static buildNewServerGroupCommand(app: Application, defaults: any): ICloudFoundryCreateServerGroupCommand {\n defaults = defaults || {};\n return {\n application: app.name,\n stack: '',\n freeFormDetails: '',\n region: '',\n strategy: '',\n credentials: '',\n viewState: {\n mode: defaults.mode || 'create',\n submitButtonLabel: CloudFoundryServerGroupCommandBuilder.getSubmitButtonLabel(defaults.mode || 'create'),\n },\n selectedProvider: 'cloudfoundry',\n startApplication: true,\n } as ICloudFoundryCreateServerGroupCommand;\n }\n\n public static buildServerGroupCommandFromExisting(\n app: Application,\n serverGroup: ICloudFoundryServerGroup,\n mode = 'clone',\n ): ICloudFoundryCreateServerGroupCommand {\n const command: ICloudFoundryCreateServerGroupCommand = this.buildNewServerGroupCommand(app, { mode });\n command.credentials = '';\n command.manifest = {\n direct: {\n memory: serverGroup.memory ? serverGroup.memory + 'M' : '1024M',\n diskQuota: serverGroup.diskQuota ? serverGroup.diskQuota + 'M' : '1024M',\n buildpacks:\n serverGroup.droplet && serverGroup.droplet.buildpacks\n ? serverGroup.droplet.buildpacks.map((item) => item.name)\n : [],\n instances: serverGroup.instances ? serverGroup.instances.length : 1,\n routes: serverGroup.loadBalancers || [],\n environment: CloudFoundryServerGroupCommandBuilder.envVarsFromObject(serverGroup.env),\n services: (serverGroup.serviceInstances || []).map((serviceInstance) => serviceInstance.name),\n healthCheckType: 'port',\n },\n };\n command.region = '';\n command.stack = serverGroup.stack;\n command.freeFormDetails = serverGroup.detail;\n command.source = {\n asgName: serverGroup.name,\n region: serverGroup.region,\n account: serverGroup.account,\n };\n return command;\n }\n\n public static buildNewServerGroupCommandForPipeline(\n stage: IStage,\n pipeline: IPipeline,\n ): ICloudFoundryCreateServerGroupCommand {\n const command: ICloudFoundryCreateServerGroupCommand = this.buildNewServerGroupCommand(\n { name: pipeline.application } as Application,\n { mode: 'editPipeline' },\n );\n command.viewState = {\n ...command.viewState,\n pipeline,\n requiresTemplateSelection: true,\n stage,\n };\n return command;\n }\n\n public static buildServerGroupCommandFromPipeline(\n application: ICloudFoundryApplication,\n originalCluster: ICloudFoundryDeployConfiguration,\n stage: IStage,\n pipeline: IPipeline,\n ): ICloudFoundryCreateServerGroupCommand {\n const command = this.buildNewServerGroupCommand(application, { mode: 'editPipeline' });\n command.credentials = originalCluster.account;\n command.applicationArtifact = originalCluster.applicationArtifact;\n command.delayBeforeDisableSec = originalCluster.delayBeforeDisableSec;\n command.manifest = originalCluster.manifest;\n command.maxRemainingAsgs = originalCluster.maxRemainingAsgs;\n command.region = originalCluster.region;\n command.rollback = originalCluster.rollback;\n command.strategy = originalCluster.strategy;\n command.startApplication = originalCluster.startApplication;\n command.targetPercentages = originalCluster.targetPercentages;\n command.delayBeforeScaleDownSec = originalCluster.delayBeforeScaleDownSec;\n if (originalCluster.stack) {\n command.stack = originalCluster.stack;\n }\n\n if (originalCluster.freeFormDetails) {\n command.freeFormDetails = originalCluster.freeFormDetails;\n }\n\n command.viewState = {\n ...command.viewState,\n pipeline,\n stage,\n };\n\n return command;\n }\n\n public static buildCloneServerGroupCommandFromPipeline(\n stage: IStage,\n pipeline: IPipeline,\n ): ICloudFoundryCreateServerGroupCommand {\n const command = this.buildNewServerGroupCommand({ name: pipeline.application } as Application, {\n mode: 'editClonePipeline',\n });\n command.credentials = stage.credentials;\n command.capacity = stage.capacity;\n command.account = stage.account;\n command.delayBeforeDisableSec = stage.delayBeforeDisableSec;\n command.freeFormDetails = stage.freeFormDetails || command.freeFormDetails;\n command.maxRemainingAsgs = stage.maxRemainingAsgs;\n command.region = stage.region;\n command.startApplication = stage.startApplication === undefined || stage.startApplication;\n command.stack = stage.stack || command.stack;\n command.strategy = stage.strategy;\n command.target = stage.target;\n command.targetCluster = stage.targetCluster;\n command.manifest = stage.manifest || command.manifest;\n command.source = stage.source;\n\n command.viewState = {\n ...command.viewState,\n pipeline,\n stage,\n };\n\n return command;\n }\n}\n","import type { IQService } from 'angular';\n\nimport type { Application, IPipeline, IStage } from '@spinnaker/core';\nimport type { ICloudFoundryApplication, ICloudFoundryServerGroup } from '../../domain';\n\nimport { CloudFoundryServerGroupCommandBuilder } from './serverGroupCommandBuilder.service.cf';\nimport type {\n ICloudFoundryCreateServerGroupCommand,\n ICloudFoundryDeployConfiguration,\n} from './serverGroupConfigurationModel.cf';\n\nexport class CloudFoundryServerGroupCommandBuilderShim {\n public static $inject = ['$q'];\n constructor(private $q: IQService) {}\n\n public buildNewServerGroupCommand(\n app: Application,\n defaults: any,\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(CloudFoundryServerGroupCommandBuilder.buildNewServerGroupCommand(app, defaults));\n }\n\n public buildServerGroupCommandFromExisting(\n app: Application,\n serverGroup: ICloudFoundryServerGroup,\n mode = 'clone',\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(\n CloudFoundryServerGroupCommandBuilder.buildServerGroupCommandFromExisting(app, serverGroup, mode),\n );\n }\n\n public buildNewServerGroupCommandForPipeline(\n stage: IStage,\n pipeline: IPipeline,\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(CloudFoundryServerGroupCommandBuilder.buildNewServerGroupCommandForPipeline(stage, pipeline));\n }\n\n public buildServerGroupCommandFromPipeline(\n application: ICloudFoundryApplication,\n originalCluster: ICloudFoundryDeployConfiguration,\n stage: IStage,\n pipeline: IPipeline,\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(\n CloudFoundryServerGroupCommandBuilder.buildServerGroupCommandFromPipeline(\n application,\n originalCluster,\n stage,\n pipeline,\n ),\n );\n }\n\n public buildCloneServerGroupCommandFromPipeline(\n stage: IStage,\n pipeline: IPipeline,\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(\n CloudFoundryServerGroupCommandBuilder.buildCloneServerGroupCommandFromPipeline(stage, pipeline),\n );\n }\n}\n","import React from 'react';\n\nimport type { Application, ITemplateSelectionText } from '@spinnaker/core';\nimport { DeployInitializer } from '@spinnaker/core';\n\nimport type { ICloudFoundryCreateServerGroupCommand } from '../serverGroupConfigurationModel.cf';\n\nexport interface IServerGroupTemplateSelectionProps {\n app: Application;\n command: ICloudFoundryCreateServerGroupCommand;\n onDismiss: () => void;\n onTemplateSelected: () => void;\n}\n\nexport interface IServerGroupTemplateSelectionState {\n templateSelectionText: ITemplateSelectionText;\n}\n\nexport class ServerGroupTemplateSelection extends React.Component<\n IServerGroupTemplateSelectionProps,\n IServerGroupTemplateSelectionState\n> {\n constructor(props: IServerGroupTemplateSelectionProps) {\n super(props);\n this.state = {\n templateSelectionText: {\n copied: [\n 'account, region, cluster name (stack, details)',\n 'routes',\n 'service instances',\n 'instance settings',\n 'environment variables',\n ],\n notCopied: ['artifacts'],\n additionalCopyText: '',\n },\n };\n }\n\n public render() {\n const { app, command, onDismiss, onTemplateSelected } = this.props;\n const { templateSelectionText } = this.state;\n\n return (\n <DeployInitializer\n cloudProvider=\"cloudfoundry\"\n application={app}\n command={command}\n onDismiss={onDismiss}\n onTemplateSelected={onTemplateSelected}\n templateSelectionText={templateSelectionText}\n />\n );\n }\n}\n","import type { FormikProps } from 'formik';\nimport React from 'react';\n\nimport type { IArtifact, IExpectedArtifact, IPipeline, IStage, IWizardPageComponent } from '@spinnaker/core';\nimport { ArtifactTypePatterns, StageArtifactSelector } from '@spinnaker/core';\nimport { FormikConfigField } from '../../../../../presentation';\n\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroupConfigurationModel.cf';\n\nexport interface ICloudFoundryCreateServerGroupArtifactSettingsProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n stage: IStage;\n pipeline: IPipeline;\n}\n\nexport class CloudFoundryServerGroupArtifactSettings\n extends React.Component<ICloudFoundryCreateServerGroupArtifactSettingsProps>\n implements IWizardPageComponent<ICloudFoundryCreateServerGroupCommand> {\n public static get LABEL() {\n return 'Artifact';\n }\n\n private excludedArtifactTypePatterns = [\n ArtifactTypePatterns.KUBERNETES,\n ArtifactTypePatterns.FRONT50_PIPELINE_TEMPLATE,\n ];\n\n private onExpectedArtifactSelected = (expectedArtifact: IExpectedArtifact): void => {\n this.props.formik.setFieldValue('applicationArtifact', { artifactId: expectedArtifact.id });\n };\n\n private onArtifactChanged = (artifact: IArtifact): void => {\n this.props.formik.setFieldValue('applicationArtifact', { artifact: artifact });\n };\n\n public validate(_values: ICloudFoundryCreateServerGroupCommand) {\n const { applicationArtifact } = this.props.formik.values;\n const errors = {} as any;\n if (\n !applicationArtifact ||\n !(\n (applicationArtifact.artifact && applicationArtifact.artifact.type && applicationArtifact.artifact.reference) ||\n applicationArtifact.artifactId\n )\n ) {\n errors.applicationArtifact = 'Application artifact information is required';\n }\n\n return errors;\n }\n\n public render() {\n const { formik, stage, pipeline } = this.props;\n const applicationArtifact = formik.values.applicationArtifact;\n return (\n <div className=\"form-group\">\n <div className=\"col-md-11\">\n <div className=\"StandardFieldLayout flex-container-h margin-between-lg\">\n <div className=\"flex-grow\">\n <StageArtifactSelector\n pipeline={pipeline}\n stage={stage}\n expectedArtifactId={applicationArtifact && applicationArtifact.artifactId}\n artifact={applicationArtifact && applicationArtifact.artifact}\n onExpectedArtifactSelected={this.onExpectedArtifactSelected}\n onArtifactEdited={this.onArtifactChanged}\n excludedArtifactTypePatterns={this.excludedArtifactTypePatterns}\n renderLabel={(field: React.ReactNode) => {\n return <FormikConfigField label={'Artifact'}>{field}</FormikConfigField>;\n }}\n />\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n","import type { FormikProps } from 'formik';\nimport React from 'react';\n\nimport type {\n ICloudFoundryCreateServerGroupCommand,\n ICloudFoundrySource,\n} from '../../../serverGroupConfigurationModel.cf';\n\nexport interface ICloudFoundryCloneServerGroupProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n source: ICloudFoundrySource;\n}\n\nexport class CloudFoundryServerGroupConstantArtifactSettings extends React.Component<\n ICloudFoundryCloneServerGroupProps\n> {\n constructor(props: ICloudFoundryCloneServerGroupProps) {\n super(props);\n const { source } = props;\n this.props.formik.setFieldValue('source', source);\n }\n\n public render(): JSX.Element {\n const { source } = this.props;\n\n return (\n <div>\n <div className=\"form-group row\">\n <label className=\"col-md-3 col-form-label sm-label-right\">Account</label>\n <div className=\"col-md-7\">\n <input className=\"form-control\" type=\"text\" id=\"cluster\" value={source.account} readOnly={true} />\n </div>\n </div>\n <div className=\"form-group row\">\n <label className=\"col-md-3 col-form-label sm-label-right\">Region</label>\n <div className=\"col-md-7\">\n <input className=\"form-control\" type=\"text\" id=\"cluster\" value={source.region} readOnly={true} />\n </div>\n </div>\n <div className=\"form-group row\">\n <label className=\"col-md-3 col-form-label sm-label-right\">Server Group</label>\n <div className=\"col-md-7\">\n <input className=\"form-control\" type=\"text\" id=\"cluster\" value={source.asgName} readOnly={true} />\n </div>\n </div>\n </div>\n );\n }\n}\n","import { set } from 'lodash';\nimport React from 'react';\n\nimport type { IDeploymentStrategyAdditionalFieldsProps, IServerGroupCommand } from '@spinnaker/core';\nimport { HelpField } from '@spinnaker/core';\n\nexport interface IRollingRedBlackCommand extends IServerGroupCommand {\n targetPercentages: number[];\n delayBeforeDisableSec: number;\n delayBeforeScaleDownSec: number;\n maxRemainingAsgs: number;\n rollback: {\n onFailure: boolean;\n };\n scaleDown: boolean;\n}\n\nexport interface IRollingRedBlackStrategyAdditionalFieldsProps extends IDeploymentStrategyAdditionalFieldsProps {\n command: IRollingRedBlackCommand;\n}\n\nexport class AdditionalFields extends React.Component<IRollingRedBlackStrategyAdditionalFieldsProps> {\n private handlePercentChange = (key: string, value: any, index: number) => {\n const percentages = this.props.command.targetPercentages;\n percentages[index] = value;\n set(this.props.command, key, percentages);\n this.forceUpdate();\n };\n\n private onDelete = (index: number) => {\n const percentages = this.props.command.targetPercentages;\n percentages.splice(index, 1);\n set(this.props.command, 'targetPercentages', percentages);\n this.forceUpdate();\n };\n\n private addPercent = () => {\n const percentages = this.props.command.targetPercentages;\n percentages.push(100);\n set(this.props.command, 'targetPercentages', percentages);\n this.forceUpdate();\n };\n\n private handleChange = (key: string, value: any) => {\n set(this.props.command, key, value);\n this.forceUpdate();\n };\n\n public render() {\n const { command } = this.props;\n return (\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <div className=\"col-md-12 checkbox\">\n <label>\n <input\n type=\"checkbox\"\n checked={command.rollback.onFailure}\n onChange={(e) => this.handleChange('rollback.onFailure', e.target.checked)}\n />\n Rollback to previous server group if deployment fails <HelpField id=\"strategy.rollingRedBlack.rollback\" />\n </label>\n </div>\n <div className=\"col-md-12 form-inline sp-margin-m-bottom sp-margin-m-top\">\n <label>\n Wait Before Scale Down \n <HelpField content=\"Time to wait before scaling down source server group\" />\n </label>\n <div>\n <input\n className=\"form-control input-sm\"\n style={{ width: '60px' }}\n min=\"0\"\n type=\"number\"\n value={command.delayBeforeDisableSec}\n onChange={(e) => this.handleChange('delayBeforeDisableSec', e.target.value)}\n placeholder=\"0\"\n />\n seconds\n </div>\n </div>\n <div className=\"col-md-12 form-inline sp-margin-m-bottom\">\n <label>\n Maximum number of server groups to leave \n <HelpField id=\"strategy.redblack.maxRemainingAsgs\" />\n </label>\n <div>\n <input\n className=\"form-control input-sm\"\n style={{ width: '60px' }}\n min=\"2\"\n type=\"number\"\n value={command.maxRemainingAsgs}\n onChange={(e) => this.handleChange('maxRemainingAsgs', e.target.value)}\n />\n server groups\n </div>\n </div>\n <div className=\"col-md-12 form-inline sp-margin-m-bottom\">\n <label>\n Wait Before Cluster Scale Down \n <HelpField content=\"Time to wait before scaling down the cluster after deployment\" />\n </label>\n <div>\n <input\n className=\"form-control input-sm\"\n style={{ width: '60px' }}\n min=\"0\"\n type=\"number\"\n value={command.delayBeforeScaleDownSec}\n onChange={(e) => this.handleChange('delayBeforeScaleDownSec', e.target.value)}\n placeholder=\"0\"\n />\n seconds\n </div>\n </div>\n <label>\n Scale by percentages \n <HelpField content=\"Steps to get to full capacity in percent\" />\n </label>\n <table className=\"table table-condensed packed metadata\">\n <tbody>\n {command.targetPercentages.map((percentage: number, index: number) => {\n return (\n <tr key={index}>\n <td>\n <div className=\"sp-margin-m-bottom\">\n <input\n className=\"form-control\"\n min=\"0\"\n type=\"number\"\n value={percentage}\n onChange={(e) => this.handlePercentChange('targetPercentages', e.target.value, index)}\n placeholder=\"100\"\n />\n </div>\n </td>\n <td>\n <a className=\"btn btn-link sm-label\" onClick={() => this.onDelete(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n </a>\n </td>\n </tr>\n );\n })}\n </tbody>\n <tfoot>\n <tr>\n <td colSpan={2}>\n <button type=\"button\" className=\"add-new col-md-12\" onClick={() => this.addPercent()}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add percentage\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n </div>\n </div>\n );\n }\n}\n","import { defaultsDeep, unset } from 'lodash';\nimport React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\n\nimport type {\n IDeploymentStrategy,\n IDeploymentStrategyAdditionalFieldsProps,\n IServerGroupCommand,\n} from '@spinnaker/core';\nimport { CoreRedBlackAdditionalFields, HelpField, Markdown } from '@spinnaker/core';\n\nimport type { IRedBlackCommand } from './strategies/redblack/redblack.strategy';\nimport type { IRollingRedBlackCommand } from './strategies/rollingredblack/AdditionalFields';\nimport { AdditionalFields as AdditionalRollingRedBlackFields } from './strategies/rollingredblack/AdditionalFields';\n\nexport interface ICloudFoundryDeploymentStrategySelectorProps {\n command: IServerGroupCommand;\n onFieldChange: (key: string, value: any) => void;\n onStrategyChange: (command: IServerGroupCommand, strategy: IDeploymentStrategy) => void;\n}\n\nexport interface ICloudFoundryDeploymentStrategySelectorState {\n strategies: IDeploymentStrategy[];\n currentStrategy: string;\n AdditionalFieldsComponent: React.ComponentType<IDeploymentStrategyAdditionalFieldsProps>;\n}\n\nexport class CloudFoundryDeploymentStrategySelector extends React.Component<\n ICloudFoundryDeploymentStrategySelectorProps,\n ICloudFoundryDeploymentStrategySelectorState\n> {\n public state: ICloudFoundryDeploymentStrategySelectorState = {\n strategies: [\n {\n label: 'None',\n description: 'Creates the next server group with no impact on existing server groups',\n key: '',\n },\n {\n label: 'Highlander',\n description:\n 'Destroys <i>all</i> previous server groups in the cluster as soon as new server group passes health checks',\n key: 'highlander',\n },\n {\n label: 'Red/Black',\n description:\n 'Disables <i>all</i> previous server groups in the cluster as soon as new server group passes health checks',\n key: 'redblack',\n additionalFields: ['maxRemainingAsgs'],\n AdditionalFieldsComponent: CoreRedBlackAdditionalFields,\n initializationMethod: (command: IRedBlackCommand) => {\n defaultsDeep(command, {\n rollback: {\n onFailure: false,\n },\n maxRemainingAsgs: 2,\n delayBeforeDisableSec: 0,\n delayBeforeScaleDownSec: 0,\n scaleDown: false,\n });\n },\n },\n {\n label: 'Rolling Red/Black',\n description:\n 'Gradually replaces <i>all</i> previous server group instances in the cluster as soon as new server group instances pass health checks',\n key: 'cfrollingredblack',\n additionalFields: ['targetPercentages'],\n AdditionalFieldsComponent: AdditionalRollingRedBlackFields,\n initializationMethod: (command: IRollingRedBlackCommand) => {\n defaultsDeep(command, {\n rollback: {\n onFailure: false,\n },\n targetPercentages: command.targetPercentages ? command.targetPercentages : [50, 100], // defaultsDeep does not work with arrays\n delayBeforeDisableSec: 0,\n delayBeforeScaleDownSec: 0,\n maxRemainingAsgs: 2,\n scaleDown: false,\n });\n },\n },\n ],\n currentStrategy: null,\n AdditionalFieldsComponent: undefined,\n };\n\n public selectStrategy(strategy: string): void {\n const { command, onStrategyChange } = this.props;\n const oldStrategy = this.state.strategies.find((s) => s.key === this.state.currentStrategy);\n const newStrategy = this.state.strategies.find((s) => s.key === strategy);\n\n if (oldStrategy && oldStrategy.additionalFields) {\n oldStrategy.additionalFields.forEach((field) => {\n if (!newStrategy || !newStrategy.additionalFields || !newStrategy.additionalFields.includes(field)) {\n unset(command, field);\n }\n });\n }\n\n let AdditionalFieldsComponent;\n if (newStrategy) {\n AdditionalFieldsComponent = newStrategy.AdditionalFieldsComponent;\n if (newStrategy.initializationMethod) {\n newStrategy.initializationMethod(command);\n }\n }\n command.strategy = strategy;\n if (onStrategyChange && newStrategy) {\n onStrategyChange(command, newStrategy);\n }\n this.setState({ currentStrategy: strategy, AdditionalFieldsComponent });\n }\n\n public strategyChanged = (option: Option<IDeploymentStrategy>) => {\n this.selectStrategy(option.key);\n };\n\n public componentDidMount() {\n this.selectStrategy(this.props.command.strategy);\n }\n\n public render() {\n const { command, onFieldChange } = this.props;\n const { AdditionalFieldsComponent, currentStrategy, strategies } = this.state;\n const hasAdditionalFields = Boolean(AdditionalFieldsComponent);\n if (strategies && strategies.length) {\n return (\n <div>\n <div className=\"StandardFieldLayout flex-container-h baseline margin-between-lg\">\n <div className={`sm-label-right`} style={{ paddingLeft: '13px' }}>\n Strategy \n <HelpField id=\"core.serverGroup.strategy\" />\n </div>\n <div className=\"flex-grow\">\n <Select\n clearable={false}\n required={true}\n options={strategies}\n placeholder=\"None\"\n valueKey=\"key\"\n value={currentStrategy}\n optionRenderer={this.strategyOptionRenderer}\n valueRenderer={(o) => <>{o.label}</>}\n onChange={this.strategyChanged}\n />\n </div>\n </div>\n {hasAdditionalFields && (\n <div className=\"form-group col-md-9 col-md-offset-3\" style={{ marginTop: '5px', float: 'right' }}>\n <AdditionalFieldsComponent command={command} onChange={onFieldChange} />\n </div>\n )}\n </div>\n );\n }\n\n return null;\n }\n\n private strategyOptionRenderer = (option: IDeploymentStrategy) => {\n return (\n <div className=\"body-regular\">\n <strong>\n <Markdown tag=\"span\" message={option.label} />\n </strong>\n <div>\n <Markdown tag=\"span\" message={option.description} />\n </div>\n </div>\n );\n };\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import type { FormikErrors, FormikProps } from 'formik';\nimport { get } from 'lodash';\nimport React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IWizardPageComponent } from '@spinnaker/core';\nimport {\n AccountService,\n CheckboxInput,\n FormikFormField,\n HelpField,\n ReactSelectInput,\n TextInput,\n} from '@spinnaker/core';\nimport { CloudFoundryDeploymentStrategySelector } from '../../../../../deploymentStrategy/CloudFoundryDeploymentStrategySelector';\n\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroupConfigurationModel.cf';\n\nimport '../../../../../common/cloudFoundry.less';\n\nexport interface ICloudFoundryServerGroupBasicSettingsProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n}\n\nexport interface ICloudFoundryServerGroupLocationSettingsState {\n accounts: IAccount[];\n regions: IRegion[];\n}\n\nexport class CloudFoundryServerGroupBasicSettings\n extends React.Component<ICloudFoundryServerGroupBasicSettingsProps, ICloudFoundryServerGroupLocationSettingsState>\n implements IWizardPageComponent<ICloudFoundryCreateServerGroupCommand> {\n private destroy$ = new Subject();\n public state: ICloudFoundryServerGroupLocationSettingsState = {\n accounts: [],\n regions: [],\n };\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => {\n this.setState({ accounts });\n this.updateRegionList();\n });\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private accountChanged = (): void => {\n this.updateRegionList();\n this.props.formik.setFieldValue('region', '');\n };\n\n private updateRegionList = (): void => {\n const credentials = get(this.props.formik.values, 'credentials', undefined);\n if (credentials) {\n observableFrom(AccountService.getRegionsForAccount(credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regions) => this.setState({ regions }));\n }\n };\n\n private strategyChanged = (_values: ICloudFoundryCreateServerGroupCommand, strategy: any) => {\n this.props.formik.setFieldValue('strategy', strategy.key);\n };\n\n private onStrategyFieldChange = (key: string, value: any) => {\n this.props.formik.setFieldValue(key, value);\n };\n\n public render(): JSX.Element {\n const { formik } = this.props;\n const { accounts, regions } = this.state;\n const { values } = formik;\n return (\n <div className=\"form-group\">\n <div className=\"col-md-11\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name=\"credentials\"\n label=\"Account\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={accounts && accounts.map((acc: IAccount) => acc.name)}\n clearable={false}\n />\n )}\n onChange={this.accountChanged}\n required={true}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name=\"region\"\n label=\"Region\"\n input={(props) => (\n <ReactSelectInput\n {...props}\n stringOptions={regions && regions.map((region: IRegion) => region.name)}\n inputClassName={'cloudfoundry-react-select'}\n clearable={false}\n />\n )}\n required={true}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name=\"stack\"\n label=\"Stack\"\n input={(props) => <TextInput {...props} />}\n help={<HelpField id=\"cf.serverGroup.stack\" />}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name=\"freeFormDetails\"\n label=\"Detail\"\n input={(props) => <TextInput {...props} />}\n help={<HelpField id=\"cf.serverGroup.detail\" />}\n />\n </div>\n <div className=\"sp-margin-m-bottom cloud-foundry-checkbox\">\n <FormikFormField\n name=\"startApplication\"\n label=\"Start on creation\"\n input={(props) => <CheckboxInput {...props} />}\n help={<HelpField id=\"cf.serverGroup.startApplication\" />}\n />\n </div>\n {(values.viewState.mode === 'editPipeline' ||\n values.viewState.mode === 'createPipeline' ||\n values.viewState.mode === 'editClonePipeline') && (\n <CloudFoundryDeploymentStrategySelector\n onFieldChange={this.onStrategyFieldChange}\n onStrategyChange={this.strategyChanged}\n command={values}\n />\n )}\n </div>\n </div>\n );\n }\n\n public validate(values: ICloudFoundryCreateServerGroupCommand) {\n const errors = {} as FormikErrors<ICloudFoundryCreateServerGroupCommand>;\n\n if (values.stack && !values.stack.match(/^[a-zA-Z0-9]*$/)) {\n errors.stack = 'Stack can only contain letters and numbers.';\n }\n if (values.freeFormDetails && !values.freeFormDetails.match(/^[a-zA-Z0-9-]*$/)) {\n errors.freeFormDetails = 'Detail can only contain letters, numbers, and dashes.';\n }\n\n return errors;\n }\n}\n","import type { FormikErrors, FormikProps } from 'formik';\nimport React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IDeploymentStrategy, IWizardPageComponent } from '@spinnaker/core';\nimport { AccountService, FormikFormField, Markdown, ReactSelectInput, StageConstants } from '@spinnaker/core';\nimport { FormikAccountRegionClusterSelector } from '../../../../../presentation';\n\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroupConfigurationModel.cf';\n\nimport '../../../../../common/cloudFoundry.less';\n\nexport interface ICloudFoundryCloneSettingsProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n application: Application;\n}\n\nexport interface ICloudFoundryCloneSettingsState {\n accounts: IAccount[];\n}\n\nexport class CloudFoundryServerGroupCloneSettings\n extends React.Component<ICloudFoundryCloneSettingsProps, ICloudFoundryCloneSettingsState>\n implements IWizardPageComponent<ICloudFoundryCreateServerGroupCommand> {\n private destroy$ = new Subject();\n public state: ICloudFoundryCloneSettingsState = {\n accounts: [],\n };\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private strategyOptionRenderer = (option: IDeploymentStrategy) => {\n return (\n <div className=\"body-regular\">\n <strong>\n <Markdown tag=\"span\" message={option.label} />\n </strong>\n <div>\n <Markdown tag=\"span\" message={option.description} />\n </div>\n </div>\n );\n };\n\n public render(): JSX.Element {\n const { application, formik } = this.props;\n const { accounts } = this.state;\n return (\n <div className=\"form-group\">\n <FormikAccountRegionClusterSelector\n componentName={'source'}\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n clusterField={'clusterName'}\n credentialsField={'account'}\n formik={formik}\n />\n <div className=\"col-md-9\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={'target'}\n label=\"Target\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n options={StageConstants.TARGET_LIST.map((t) => {\n return {\n label: t.label,\n value: t.val,\n description: t.description,\n };\n })}\n optionRenderer={this.strategyOptionRenderer}\n clearable={false}\n />\n )}\n required={true}\n />\n </div>\n </div>\n </div>\n );\n }\n\n public validate(_values: ICloudFoundryCreateServerGroupCommand) {\n const errors = {} as FormikErrors<ICloudFoundryCreateServerGroupCommand>;\n\n return errors;\n }\n}\n","import type { FormikProps } from 'formik';\nimport React from 'react';\n\nimport type { IArtifact, IExpectedArtifact, IPipeline, IStage, IWizardPageComponent } from '@spinnaker/core';\nimport { ArtifactTypePatterns, RadioButtonInput, StageArtifactSelector } from '@spinnaker/core';\nimport type { ICloudFoundryEnvVar } from '../../../../../domain';\nimport {\n Buildpacks,\n EnvironmentVariables,\n FormikConfigField,\n HealthCheck,\n InstanceParameters,\n Routes,\n Services,\n} from '../../../../../presentation';\n\nimport type {\n ICloudFoundryCreateServerGroupCommand,\n ICloudFoundryManifest,\n} from '../../../serverGroupConfigurationModel.cf';\n\nexport interface ICloudFoundryServerGroupConfigurationSettingsProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n stage: IStage;\n pipeline: IPipeline;\n}\n\nexport class CloudFoundryServerGroupConfigurationSettings\n extends React.Component<ICloudFoundryServerGroupConfigurationSettingsProps>\n implements IWizardPageComponent<ICloudFoundryServerGroupConfigurationSettingsProps> {\n public static LABEL = 'Configuration';\n\n private defaultDirectManifest: ICloudFoundryManifest = {\n direct: {\n memory: '1024M',\n diskQuota: '1024M',\n instances: 1,\n buildpacks: [],\n healthCheckType: 'port',\n routes: [],\n environment: [],\n services: [],\n },\n };\n\n private excludedArtifactTypePatterns = [\n ArtifactTypePatterns.KUBERNETES,\n ArtifactTypePatterns.DOCKER_IMAGE,\n ArtifactTypePatterns.FRONT50_PIPELINE_TEMPLATE,\n ];\n\n private manifestSourceUpdated = (source: string): void => {\n switch (source) {\n case 'artifact':\n this.props.formik.setFieldValue('manifest', {});\n this.capacityUpdated('1');\n break;\n case 'direct':\n this.props.formik.setFieldValue('manifest', this.defaultDirectManifest);\n break;\n }\n };\n\n private capacityUpdated = (capacity: string): void => {\n this.props.formik.setFieldValue('capacity.min', capacity);\n this.props.formik.setFieldValue('capacity.max', capacity);\n this.props.formik.setFieldValue('capacity.desired', capacity);\n };\n\n private getArtifactInput = (): JSX.Element => {\n const { formik, stage, pipeline } = this.props;\n const manifest = formik.values.manifest;\n return (\n <div className=\"form-group\">\n <div className=\"col-md-11\">\n <div className=\"StandardFieldLayout flex-container-h margin-between-lg\">\n <div className=\"flex-grow\">\n <StageArtifactSelector\n pipeline={pipeline}\n stage={stage}\n expectedArtifactId={manifest && manifest.artifactId}\n artifact={manifest && manifest.artifact}\n onExpectedArtifactSelected={this.onExpectedArtifactSelected}\n onArtifactEdited={this.onArtifactChanged}\n excludedArtifactTypePatterns={this.excludedArtifactTypePatterns}\n renderLabel={(field: React.ReactNode) => {\n return <FormikConfigField label={'Artifact'}>{field}</FormikConfigField>;\n }}\n />\n </div>\n </div>\n </div>\n </div>\n );\n };\n\n private onExpectedArtifactSelected = (expectedArtifact: IExpectedArtifact): void => {\n this.props.formik.setFieldValue('manifest', { artifactId: expectedArtifact.id });\n };\n\n private onArtifactChanged = (artifact: IArtifact): void => {\n this.props.formik.setFieldValue('manifest', { artifact: artifact });\n };\n\n private getDirectInput = (): JSX.Element => {\n const m = this.props.formik.values.manifest.direct;\n return (\n <div>\n {\n <InstanceParameters\n diskQuotaFieldName={'manifest.direct.diskQuota'}\n instancesFieldName={'manifest.direct.instances'}\n memoryFieldName={'manifest.direct.memory'}\n />\n }\n {<Buildpacks fieldName=\"manifest.direct.buildpacks\" />}\n {\n <HealthCheck\n healthCheckHttpEndpointFieldName={'manifest.direct.healthCheckHttpEndpoint'}\n healthCheckType={m.healthCheckType}\n healthCheckTypeFieldName={'manifest.direct.healthCheckType'}\n />\n }\n {<Routes fieldName=\"manifest.direct.routes\" />}\n {<EnvironmentVariables fieldName=\"manifest.direct.environment\" />}\n {<Services fieldName=\"manifest.direct.services\" />}\n </div>\n );\n };\n\n public render(): JSX.Element {\n const manifest = this.props.formik.values.manifest;\n const direct = manifest && !!manifest.direct;\n return (\n <>\n <div className=\"form-group\">\n <div className=\"col-md-11\">\n <div className=\"StandardFieldLayout flex-container-h baseline margin-between-lg\">\n <div className=\"sm-label-right\">Source Type</div>\n <div className=\"flex-grow\">\n <RadioButtonInput\n inline={true}\n value={direct ? 'direct' : 'artifact'}\n options={[\n { label: 'Artifact', value: 'artifact' },\n { label: 'Form', value: 'direct' },\n ]}\n onChange={(e: any) => this.manifestSourceUpdated(e.target.value)}\n />\n </div>\n </div>\n </div>\n </div>\n {direct ? this.getDirectInput() : this.getArtifactInput()}\n </>\n );\n }\n\n public validate(_props: ICloudFoundryServerGroupConfigurationSettingsProps) {\n const errors = {} as any;\n const isStorageSize = (value: string) => /\\d+[MG]/.test(value);\n\n if (!this.props.formik.values.manifest) {\n errors.manifest = 'No manifest information provided';\n return errors;\n }\n\n const direct = this.props.formik.values.manifest.direct;\n if (direct) {\n if (!isStorageSize(direct.memory)) {\n errors.manifest = errors.manifest || {};\n errors.manifest.memory = `Provide a size (e.g.: 256M, 1G)`;\n }\n if (!isStorageSize(direct.diskQuota)) {\n errors.manifest = errors.manifest || {};\n errors.manifest.diskQuota = `Provide a size (e.g.: 256M, 1G)`;\n }\n if (direct.routes) {\n const routeErrors = direct.routes.map((route: string) => {\n const regex = /^([-\\w]+)\\.([-.\\w]+)(:\\d+)?([-/\\w]+)?$/gm;\n if (route && regex.exec(route) === null) {\n return `A route did not match the expected format \"host.some.domain[:9999][/some/path]\"`;\n }\n return null;\n });\n if (routeErrors.some((val: string) => !!val)) {\n errors.manifest = errors.manifest || {};\n errors.manifest.routes = routeErrors;\n }\n }\n if (direct.environment) {\n const existingKeys: string[] = [];\n const envErrors = direct.environment.map((e: ICloudFoundryEnvVar) => {\n let myErrors: any;\n if (e.key) {\n const validKeyRegex = /^\\w+$/g;\n if (!validKeyRegex.exec(e.key)) {\n myErrors = {\n key: `This field must be alphanumeric`,\n };\n } else {\n if (existingKeys.filter((key) => key === e.key).length > 0) {\n myErrors = {\n key: `Duplicate variable name`,\n };\n } else {\n existingKeys.push(e.key);\n }\n }\n }\n return myErrors;\n });\n if (envErrors.some((val: string) => !!val)) {\n errors.manifest = errors.manifest || {};\n errors.manifest.environment = envErrors;\n }\n }\n } else {\n const { manifest } = this.props.formik.values;\n if (\n !manifest ||\n !((manifest.artifact && manifest.artifact.type && manifest.artifact.reference) || manifest.artifactId)\n ) {\n errors.manifest = 'Manifest artifact information is required';\n }\n }\n\n return errors;\n }\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { Application, IModalComponentProps, IPipeline, IStage } from '@spinnaker/core';\nimport { noop, ReactInjector, ReactModal, TaskMonitor, WizardModal, WizardPage } from '@spinnaker/core';\n\nimport { ServerGroupTemplateSelection } from './ServerGroupTemplateSelection';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\nimport { CloudFoundryServerGroupArtifactSettings } from './sections/artifactSettings/ArtifactSettings.cf';\nimport { CloudFoundryServerGroupConstantArtifactSettings } from './sections/artifactSettings/ConstantArtifactSettings.cf';\nimport { CloudFoundryServerGroupBasicSettings } from './sections/basicSettings/BasicSettings.cf';\nimport { CloudFoundryServerGroupCloneSettings } from './sections/cloneSettings/CloneSettings.cf';\nimport { CloudFoundryServerGroupConfigurationSettings } from './sections/configurationSettings/ConfigurationSettings.cf';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../serverGroupConfigurationModel.cf';\n\nimport './serverGroup.less';\n\nexport interface ICloudFoundryCreateServerGroupProps extends IModalComponentProps {\n application: Application;\n command: ICloudFoundryCreateServerGroupCommand;\n isSourceConstant?: boolean;\n serverGroup?: ICloudFoundryServerGroup;\n title: string;\n}\n\nexport interface ICloudFoundryCreateServerGroupState {\n pipeline: IPipeline;\n isClone: boolean;\n loading: boolean;\n requiresTemplateSelection: boolean;\n stage?: IStage;\n taskMonitor: TaskMonitor;\n}\n\nexport class CloudFoundryCreateServerGroupModal extends React.Component<\n ICloudFoundryCreateServerGroupProps,\n ICloudFoundryCreateServerGroupState\n> {\n public static defaultProps: Partial<ICloudFoundryCreateServerGroupProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n public static show(props: ICloudFoundryCreateServerGroupProps): Promise<ICloudFoundryCreateServerGroupCommand> {\n const modalProps = { dialogClassName: 'wizard-modal modal-lg' };\n return ReactModal.show(CloudFoundryCreateServerGroupModal, props, modalProps);\n }\n\n constructor(props: ICloudFoundryCreateServerGroupProps) {\n super(props);\n const pipeline = get(props, 'command.viewState.pipeline', undefined);\n const stage = get(props, 'command.viewState.stage', undefined);\n const mode = get(props, 'command.viewState.mode', undefined);\n this.state = {\n pipeline: pipeline,\n isClone: !!props.isSourceConstant || mode === 'editClonePipeline',\n loading: false,\n requiresTemplateSelection: get(props, 'command.viewState.requiresTemplateSelection', false),\n stage,\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Creating your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: this.onTaskComplete,\n }),\n };\n }\n\n private templateSelected = () => {\n this.setState({ requiresTemplateSelection: false });\n this.initialize();\n };\n\n private initialize = () => {\n this.setState({ loading: false });\n };\n\n private onTaskComplete = () => {\n this.props.application.serverGroups.refresh();\n };\n\n private submit = (command: ICloudFoundryCreateServerGroupCommand): void => {\n command.selectedProvider = 'cloudfoundry';\n if (\n command.viewState.mode === 'createPipeline' ||\n command.viewState.mode === 'editPipeline' ||\n command.viewState.mode === 'editClonePipeline'\n ) {\n this.props.closeModal && this.props.closeModal(command);\n } else if (command.viewState.mode === 'clone') {\n this.state.taskMonitor.submit(() =>\n ReactInjector.serverGroupWriter.cloneServerGroup(command, this.props.application),\n );\n } else {\n this.state.taskMonitor.submit(() =>\n ReactInjector.serverGroupWriter.cloneServerGroup(command, this.props.application),\n );\n }\n };\n\n public render(): React.ReactElement<CloudFoundryCreateServerGroupModal> {\n const { loading, pipeline, isClone, requiresTemplateSelection, stage, taskMonitor } = this.state;\n const { application, command, dismissModal, title, isSourceConstant } = this.props;\n\n if (requiresTemplateSelection) {\n return (\n <ServerGroupTemplateSelection\n app={application}\n command={command}\n onDismiss={dismissModal}\n onTemplateSelected={this.templateSelected}\n />\n );\n }\n\n return (\n <WizardModal<ICloudFoundryCreateServerGroupCommand>\n heading={title}\n initialValues={command}\n loading={loading}\n taskMonitor={taskMonitor}\n dismissModal={dismissModal}\n closeModal={this.submit}\n submitButtonLabel={command.viewState.submitButtonLabel}\n render={({ formik, nextIdx, wizard }) => (\n <>\n <WizardPage\n label=\"Basic Settings\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => <CloudFoundryServerGroupBasicSettings ref={innerRef} formik={formik} />}\n />\n\n {isClone && isSourceConstant && (\n <WizardPage\n label=\"Application\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => (\n <CloudFoundryServerGroupConstantArtifactSettings\n ref={innerRef}\n formik={formik}\n source={command.source}\n />\n )}\n />\n )}\n\n {isClone && !isSourceConstant && (\n <WizardPage\n label=\"Source\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => (\n <CloudFoundryServerGroupCloneSettings application={application} ref={innerRef} formik={formik} />\n )}\n />\n )}\n\n {!isClone && (\n <WizardPage\n label=\"Application\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => (\n <CloudFoundryServerGroupArtifactSettings\n ref={innerRef}\n formik={formik}\n pipeline={pipeline}\n stage={stage}\n />\n )}\n />\n )}\n\n <WizardPage\n label=\"Manifest\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => (\n <CloudFoundryServerGroupConfigurationSettings\n ref={innerRef}\n formik={formik}\n pipeline={pipeline}\n stage={stage}\n />\n )}\n />\n </>\n )}\n />\n );\n }\n}\n","import React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { StageConstants } from '@spinnaker/core';\nimport { CloudFoundryServerGroupCommandBuilder } from '../../../serverGroup/configure';\nimport { CloudFoundryCreateServerGroupModal } from '../../../serverGroup/configure/wizard/CreateServerGroupModal';\n\nexport interface ICloudFoundryCloneServerGroupStageConfigState {\n buttonText: string;\n}\n\nexport class CloudFoundryCloneServerGroupStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryCloneServerGroupStageConfigState\n> {\n constructor(props: IStageConfigProps) {\n super(props);\n this.props.updateStageField({\n cloudProvider: 'cloudfoundry',\n application: props.application.name,\n });\n this.state = {\n buttonText: props.stage.destination ? 'Edit clone configuration' : 'Add clone configuration',\n };\n }\n\n private handleResult = (command: any) => {\n this.props.updateStageField({\n credentials: command.credentials,\n capacity: command.capacity,\n account: command.account,\n delayBeforeDisableSec: command.delayBeforeDisableSec,\n freeFormDetails: command.freeFormDetails,\n maxRemainingAsgs: command.maxRemainingAsgs,\n region: command.region,\n startApplication: command.startApplication,\n stack: command.stack,\n strategy: command.strategy,\n target: command.target,\n targetCluster: command.targetCluster,\n manifest: command.manifest,\n source: command.source,\n });\n this.setState({ buttonText: 'Edit clone configuration' });\n };\n\n private addCluster = () => {\n const { application, stage, pipeline } = this.props;\n const title = 'Clone Cluster';\n const command = CloudFoundryServerGroupCommandBuilder.buildCloneServerGroupCommandFromPipeline(stage, pipeline);\n CloudFoundryCreateServerGroupModal.show({\n application,\n command,\n isSourceConstant: false,\n title,\n })\n .then(this.handleResult)\n .catch(() => {});\n };\n\n public render() {\n const { stage } = this.props;\n const { buttonText } = this.state;\n const cloneTargets = StageConstants.TARGET_LIST;\n return (\n <div className=\"form-horizontal\">\n <div>\n <h4>Clone Source</h4>\n <table className=\"table table-condensed table-deployStage\">\n <thead>\n <tr>\n <th>Account</th>\n <th>Region</th>\n <th>Cluster</th>\n <th>Target</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>{stage.source ? stage.source.account : ''}</td>\n <td>{stage.source ? stage.source.region : ''}</td>\n <td>{stage.source ? stage.source.clusterName : ''}</td>\n <td>\n {stage.source ? cloneTargets.filter((t) => t.val === stage.source.target).map((t) => t.label) : ''}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div>\n <h4>Clone Destination</h4>\n <table className=\"table table-condensed table-deployStage\">\n <thead>\n <tr>\n <th>Account</th>\n <th>Region</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>{stage.credentials}</td>\n <td>{stage.region}</td>\n </tr>\n </tbody>\n </table>\n </div>\n <button className=\"btn btn-block btn-sm add-new\" onClick={() => this.addCluster()}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> {buttonText}\n </button>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\n\nimport { CloudFoundryCloneServerGroupStageConfig } from './CloudFoundryCloneServerGroupStageConfig';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryCloneServerGroupStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'cloneServerGroup',\n provides: 'cloneServerGroup',\n validators: [],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IArtifact, IFormikStageConfigInjectedProps, IRegion } from '@spinnaker/core';\nimport {\n AccountService,\n ArtifactTypePatterns,\n excludeAllTypesExcept,\n NgReact,\n StageArtifactSelectorDelegate,\n StageConfigField,\n StageConstants,\n TextInput,\n} from '@spinnaker/core';\n\nimport { AccountRegionClusterSelector } from '../../../presentation/widgets/accountRegionClusterSelector';\n\ninterface ICloudFoundryCreateServiceBindingsStageConfigState {\n accounts: IAccount[];\n regions: string[];\n application: Application;\n}\n\nexport class CloudFoundryCreateServiceBindingsStageConfigForm extends React.Component<\n IFormikStageConfigInjectedProps,\n ICloudFoundryCreateServiceBindingsStageConfigState\n> {\n private static readonly excludedArtifactTypes = excludeAllTypesExcept(\n ArtifactTypePatterns.BITBUCKET_FILE,\n ArtifactTypePatterns.CUSTOM_OBJECT,\n ArtifactTypePatterns.EMBEDDED_BASE64,\n ArtifactTypePatterns.GCS_OBJECT,\n ArtifactTypePatterns.GITHUB_FILE,\n ArtifactTypePatterns.GITLAB_FILE,\n ArtifactTypePatterns.S3_OBJECT,\n ArtifactTypePatterns.HTTP_FILE,\n ArtifactTypePatterns.ORACLE_OBJECT,\n );\n\n private destroy$ = new Subject();\n\n constructor(props: IFormikStageConfigInjectedProps, context: any) {\n super(props, context);\n this.state = {\n accounts: [],\n regions: [],\n application: props.application,\n };\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts }));\n }\n\n public componentDidMount() {\n const stage = this.props.formik.values;\n this.props.formik.setFieldValue('cloudProvider', 'cloudfoundry');\n if (stage.serviceBindingRequests && stage.serviceBindingRequests.length === 0) {\n this.props.formik.setFieldValue('serviceBindingRequests', [\n {\n serviceInstanceName: '',\n updatable: false,\n },\n ]);\n }\n if (stage.credentials) {\n this.loadRegions(stage.credentials);\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private loadRegions = (creds: string) => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(creds))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions: regions });\n });\n };\n\n private onTemplateArtifactEdited = (artifact: IArtifact, index: number) => {\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].id`, null);\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].artifact`, artifact);\n };\n\n private onTemplateArtifactSelected = (id: string, index: number) => {\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].id`, id);\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].artifact`, null);\n };\n\n private addInputArtifact = () => {\n const stage = this.props.formik.values;\n const newServiceBindingRequests = [\n ...stage.serviceBindingRequests,\n {\n serviceInstanceName: '',\n updatable: false,\n },\n ];\n\n this.props.formik.setFieldValue('serviceBindingRequests', newServiceBindingRequests);\n };\n\n private removeInputArtifact = (index: number) => {\n const stage = this.props.formik.values;\n const newServiceBindingRequests = [...stage.serviceBindingRequests];\n newServiceBindingRequests.splice(index, 1);\n this.props.formik.setFieldValue('serviceBindingRequests', newServiceBindingRequests);\n };\n\n private targetUpdated = (target: string) => {\n this.props.formik.setFieldValue('target', target);\n };\n\n private restageRequiredUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.formik.setFieldValue('restageRequired', event.target.checked);\n this.props.formik.setFieldValue('restartRequired', !event.target.checked);\n };\n\n private restartRequiredUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.formik.setFieldValue('restartRequired', event.target.checked);\n this.props.formik.setFieldValue('restageRequired', !event.target.checked);\n };\n\n private updatableBindingUpdated = (event: React.ChangeEvent<HTMLInputElement>, index: number) => {\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].updatable`, event.target.checked);\n };\n\n private accountRegionClusterUpdated = (stage: any): void => {\n this.props.formik.setFieldValue(`cluster`, stage.cluster);\n this.props.formik.setFieldValue(`credentials`, stage.credentials);\n this.props.formik.setFieldValue(`region`, stage.region);\n };\n\n public render() {\n const stage = this.props.formik.values;\n const { accounts, application } = this.state;\n const { target } = stage;\n const { TargetSelect } = NgReact;\n\n return (\n <>\n <h4>Basic Settings</h4>\n <div className=\"form-horizontal\">\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n isSingleRegion={true}\n onComponentUpdate={this.accountRegionClusterUpdated}\n component={stage}\n />\n </div>\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Restage Required\">\n <input type=\"checkbox\" checked={stage.restageRequired} onChange={this.restageRequiredUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Restart Required\">\n <input type=\"checkbox\" checked={stage.restartRequired} onChange={this.restartRequiredUpdated} />\n </StageConfigField>\n <h4>Service Bindings</h4>\n {stage.serviceBindingRequests && stage.serviceBindingRequests.length > 0 && (\n <div className=\"row form-group\">\n {stage.serviceBindingRequests.map((a: any, index: number) => {\n return (\n <div key={index}>\n <div className=\"col-md-offset-1 col-md-8\">\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n onChange={(e: React.ChangeEvent<any>) => {\n this.props.formik.setFieldValue(\n `serviceBindingRequests[${index}].serviceInstanceName`,\n e.target.value,\n );\n }}\n value={a.serviceInstanceName}\n />\n </StageConfigField>\n <StageArtifactSelectorDelegate\n artifact={a.artifact}\n excludedArtifactTypePatterns={\n CloudFoundryCreateServiceBindingsStageConfigForm.excludedArtifactTypes\n }\n expectedArtifactId={a.id}\n label=\"Service Binding Parameters\"\n onArtifactEdited={(artifact) => {\n this.onTemplateArtifactEdited(artifact, index);\n }}\n onExpectedArtifactSelected={(artifact) => this.onTemplateArtifactSelected(artifact.id, index)}\n pipeline={this.props.pipeline}\n stage={stage}\n />\n <StageConfigField label=\"Updatable Binding\">\n <input\n type=\"checkbox\"\n checked={a.updatable}\n onChange={(event) => this.updatableBindingUpdated(event, index)}\n />\n </StageConfigField>\n </div>\n <div className=\"col-md-1\">\n <div className=\"form-control-static\">\n <button onClick={() => this.removeInputArtifact(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n <span className=\"sr-only\">Remove field</span>\n </button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n <StageConfigField fieldColumns={8} label={''}>\n <button className=\"btn btn-block btn-sm add-new\" onClick={() => this.addInputArtifact()}>\n <span className=\"glyphicon glyphicon-plus-sign\" />\n Add Service Binding\n </button>\n </StageConfigField>\n </>\n );\n }\n}\n","import type { FormikErrors } from 'formik';\nimport { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStage, IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig, FormValidator } from '@spinnaker/core';\n\nimport { CloudFoundryCreateServiceBindingsStageConfigForm } from './CloudFoundryCreateServiceBindingsStageConfigForm';\n\nexport interface ServiceBindingRequests {\n serviceInstanceName: String;\n}\n\nexport function CloudFoundryCreateServiceBindingsConfig({\n application,\n pipeline,\n stage,\n updateStage,\n}: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n serviceBindingRequests: [],\n restageRequired: true,\n restartRequired: false,\n credentials: '',\n region: '',\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n validate={validateCloudFoundryCreateServiceBindingsStage}\n render={(props) => <CloudFoundryCreateServiceBindingsStageConfigForm {...props} />}\n />\n );\n}\n\nexport function validateCloudFoundryCreateServiceBindingsStage(stage: IStage): FormikErrors<IStage> {\n const formValidator = new FormValidator(stage);\n\n formValidator.field('credentials', 'Account').required();\n formValidator.field('region', 'Region').required();\n formValidator.field('cluster', 'Cluster').required();\n formValidator.field('target', 'Target').required();\n\n formValidator\n .field('serviceBindingRequests', 'Service Binding Requests')\n .required()\n .withValidators((serviceBindingRequests: ServiceBindingRequests[]) => {\n if (validateServiceBindingRequests(serviceBindingRequests)) {\n return undefined;\n }\n return 'There should be at least one service binding request. At a minimum, each request must have a service instance name.';\n });\n\n return formValidator.validateForm();\n}\n\nexport function validateServiceBindingRequests(serviceBindingRequests: ServiceBindingRequests[]): boolean {\n if (serviceBindingRequests?.length < 1) {\n return false;\n }\n return serviceBindingRequests.every((req) => req?.serviceInstanceName);\n}\n","import { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport {\n CloudFoundryCreateServiceBindingsConfig,\n validateCloudFoundryCreateServiceBindingsStage,\n} from './CloudFoundryCreateServiceBindingsConfig';\n\nexport const CF_CREATE_SERVICE_BINDINGS_STAGE_KEY = 'cloudFoundryCreateServiceBindings';\n\nRegistry.pipeline.registerStage({\n label: 'Create Service Bindings',\n description: 'Create CF service bindings with optional parameters.',\n key: CF_CREATE_SERVICE_BINDINGS_STAGE_KEY,\n component: CloudFoundryCreateServiceBindingsConfig,\n producesArtifacts: false,\n cloudProvider: 'cloudfoundry',\n executionDetailsSections: [ExecutionDetailsTasks],\n validateFn: validateCloudFoundryCreateServiceBindingsStage,\n});\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';\n\ninterface ICloudFoundryCreateServiceKeyStageConfigState {\n accounts: string[];\n regions: string[];\n}\n\nexport class CloudFoundryCreateServiceKeyStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryCreateServiceKeyStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n regions: [],\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts.map((it) => it.name) }));\n if (this.props.stage.credentials) {\n this.clearAndReloadRegions();\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private clearAndReloadRegions = () => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(this.props.stage.credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions });\n });\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceInstanceName: event.target.value });\n };\n\n private serviceKeyNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceKeyName: event.target.value });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const credentials = option.target.value;\n this.setState({\n regions: [],\n });\n this.props.updateStageField({\n credentials,\n region: '',\n });\n this.clearAndReloadRegions();\n };\n\n private regionUpdated = (option: Option<string>) => {\n const region = option.target.value;\n this.props.updateStageField({\n region,\n });\n };\n\n public render() {\n const { credentials, region, serviceInstanceName, serviceKeyName } = this.props.stage;\n const { accounts, regions } = this.state;\n\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <ReactSelectInput clearable={false} onChange={this.regionUpdated} value={region} stringOptions={regions} />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Key Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceKeyNameUpdated}\n value={serviceKeyName}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryCreateServiceKeyStageConfig } from './CloudFoundryCreateServiceKeyStageConfig';\nimport { CloudFoundryServiceKeyExecutionDetails } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryCreateServiceKeyStageConfig,\n description: 'Create a service key',\n executionDetailsSections: [CloudFoundryServiceKeyExecutionDetails, ExecutionDetailsTasks],\n key: 'createServiceKey',\n label: 'Create Service Key',\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'region', preventSave: true },\n { type: 'requiredField', fieldName: 'serviceInstanceName', preventSave: true },\n { type: 'requiredField', fieldName: 'serviceKeyName', preventSave: true },\n ],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IFormikStageConfigInjectedProps, IRegion } from '@spinnaker/core';\nimport { AccountService, NgReact, StageConfigField, StageConstants, TextInput } from '@spinnaker/core';\n\nimport { AccountRegionClusterSelector } from '../../../presentation/widgets/accountRegionClusterSelector';\n\ninterface ICloudFoundryDeleteServiceBindingsStageConfigState {\n accounts: IAccount[];\n regions: string[];\n application: Application;\n}\n\nexport class CloudFoundryDeleteServiceBindingsStageConfigForm extends React.Component<\n IFormikStageConfigInjectedProps,\n ICloudFoundryDeleteServiceBindingsStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IFormikStageConfigInjectedProps, context: any) {\n super(props, context);\n this.state = {\n accounts: [],\n regions: [],\n application: props.application,\n };\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts }));\n }\n\n public componentDidMount() {\n const stage = this.props.formik.values;\n this.props.formik.setFieldValue('cloudProvider', 'cloudfoundry');\n if (stage.serviceUnbindingRequests && stage.serviceUnbindingRequests.length === 0) {\n this.props.formik.setFieldValue('serviceUnbindingRequests', [\n {\n serviceInstanceName: '',\n updatable: false,\n },\n ]);\n }\n if (stage.credentials) {\n this.loadRegions(stage.credentials);\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private loadRegions = (creds: string) => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(creds))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions: regions });\n });\n };\n\n private addInputArtifact = () => {\n const stage = this.props.formik.values;\n const newServiceUnbindingRequests = [\n ...stage.serviceUnbindingRequests,\n {\n serviceInstanceName: '',\n updatable: false,\n },\n ];\n\n this.props.formik.setFieldValue('serviceUnbindingRequests', newServiceUnbindingRequests);\n };\n\n private removeInputArtifact = (index: number) => {\n const stage = this.props.formik.values;\n const newServiceUnbindingRequests = [...stage.serviceUnbindingRequests];\n newServiceUnbindingRequests.splice(index, 1);\n this.props.formik.setFieldValue('serviceUnbindingRequests', newServiceUnbindingRequests);\n };\n\n private targetUpdated = (target: string) => {\n this.props.formik.setFieldValue('target', target);\n };\n\n private accountRegionClusterUpdated = (stage: any): void => {\n this.props.formik.setFieldValue(`cluster`, stage.cluster);\n this.props.formik.setFieldValue(`credentials`, stage.credentials);\n this.props.formik.setFieldValue(`region`, stage.region);\n };\n\n public render() {\n const stage = this.props.formik.values;\n const { accounts, application } = this.state;\n const { target } = stage;\n const { TargetSelect } = NgReact;\n\n return (\n <>\n <h4>Basic Settings</h4>\n <div className=\"form-horizontal\">\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n isSingleRegion={true}\n onComponentUpdate={this.accountRegionClusterUpdated}\n component={stage}\n />\n </div>\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n <h4>Service Unbindings</h4>\n {stage.serviceUnbindingRequests && stage.serviceUnbindingRequests.length > 0 && (\n <div className=\"row form-group\">\n {stage.serviceUnbindingRequests.map((a: any, index: number) => {\n return (\n <div key={index}>\n <div className=\"col-md-offset-1 col-md-8\">\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n onChange={(e: React.ChangeEvent<any>) => {\n this.props.formik.setFieldValue(\n `serviceUnbindingRequests[${index}].serviceInstanceName`,\n e.target.value,\n );\n }}\n value={a.serviceInstanceName}\n />\n </StageConfigField>\n </div>\n <div className=\"col-md-1\">\n <div className=\"form-control-static\">\n <button onClick={() => this.removeInputArtifact(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n <span className=\"sr-only\">Remove field</span>\n </button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n <StageConfigField fieldColumns={8} label={''}>\n <button className=\"btn btn-block btn-sm add-new\" onClick={() => this.addInputArtifact()}>\n <span className=\"glyphicon glyphicon-plus-sign\" />\n Add Service Unbinding\n </button>\n </StageConfigField>\n </>\n );\n }\n}\n","import type { FormikErrors } from 'formik';\nimport { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStage, IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig, FormValidator } from '@spinnaker/core';\n\nimport { CloudFoundryDeleteServiceBindingsStageConfigForm } from './CloudFoundryDeleteServiceBindingsStageConfigForm';\n\ninterface ServiceUnbindingRequests {\n serviceInstanceName: String;\n}\n\nexport function CloudFoundryDeleteServiceBindingsConfig({\n application,\n pipeline,\n stage,\n updateStage,\n}: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n serviceUnbindingRequests: [],\n restageRequired: true,\n restartRequired: false,\n credentials: '',\n region: '',\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n validate={validateCloudFoundryDeleteServiceBindingsStage}\n render={(props) => <CloudFoundryDeleteServiceBindingsStageConfigForm {...props} />}\n />\n );\n}\n\nexport function validateCloudFoundryDeleteServiceBindingsStage(stage: IStage): FormikErrors<IStage> {\n const formValidator = new FormValidator(stage);\n\n formValidator.field('credentials', 'Account').required();\n formValidator.field('region', 'Region').required();\n formValidator.field('cluster', 'Cluster').required();\n formValidator.field('target', 'Target').required();\n\n formValidator\n .field('serviceUnbindingRequests', 'Service Binding Requests')\n .required()\n .withValidators((serviceUnbindingRequests: ServiceUnbindingRequests[]) => {\n if (validateServiceUnbindingRequests(serviceUnbindingRequests)) {\n return undefined;\n }\n return 'There should be at least one service binding request. At a minimum, each request must have a service instance name.';\n });\n\n return formValidator.validateForm();\n}\n\nexport function validateServiceUnbindingRequests(serviceUnbindingRequests: ServiceUnbindingRequests[]): boolean {\n if (serviceUnbindingRequests?.length < 1) {\n return false;\n }\n return serviceUnbindingRequests.every((req) => req.serviceInstanceName);\n}\n","import { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport {\n CloudFoundryDeleteServiceBindingsConfig,\n validateCloudFoundryDeleteServiceBindingsStage,\n} from './CloudFoundryDeleteServiceBindingsConfig';\n\nexport const CF_DELETE_SERVICE_BINDINGS_STAGE_KEY = 'cloudFoundryDeleteServiceBindings';\n\nRegistry.pipeline.registerStage({\n label: 'Delete Service Bindings',\n description: 'Delete CF service bindings with optional parameters.',\n key: CF_DELETE_SERVICE_BINDINGS_STAGE_KEY,\n component: CloudFoundryDeleteServiceBindingsConfig,\n producesArtifacts: false,\n cloudProvider: 'cloudfoundry',\n executionDetailsSections: [ExecutionDetailsTasks],\n validateFn: validateCloudFoundryDeleteServiceBindingsStage,\n});\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';\n\ninterface ICloudFoundryDeleteServiceKeyStageConfigState {\n accounts: string[];\n regions: string[];\n}\n\nexport class CloudFoundryDeleteServiceKeyStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryDeleteServiceKeyStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n regions: [],\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts.map((it) => it.name) }));\n if (this.props.stage.credentials) {\n this.clearAndReloadRegions();\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private clearAndReloadRegions = () => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(this.props.stage.credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions });\n });\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceInstanceName: event.target.value });\n };\n\n private serviceKeyNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceKeyName: event.target.value });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const credentials = option.target.value;\n this.setState({\n regions: [],\n });\n this.props.updateStageField({\n credentials,\n region: '',\n });\n this.clearAndReloadRegions();\n };\n\n private regionUpdated = (option: Option<string>) => {\n const region = option.target.value;\n this.props.updateStageField({\n region,\n });\n };\n\n public render() {\n const { credentials, region, serviceInstanceName, serviceKeyName } = this.props.stage;\n const { accounts, regions } = this.state;\n\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <ReactSelectInput clearable={false} onChange={this.regionUpdated} value={region} stringOptions={regions} />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Key Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceKeyNameUpdated}\n value={serviceKeyName}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryDeleteServiceKeyStageConfig } from './CloudFoundryDeleteServiceKeyStageConfig';\nimport { CloudFoundryServiceKeyExecutionDetails } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryDeleteServiceKeyStageConfig,\n description: 'Delete a service key',\n executionDetailsSections: [CloudFoundryServiceKeyExecutionDetails, ExecutionDetailsTasks],\n key: 'deleteServiceKey',\n label: 'Delete Service Key',\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'region', preventSave: true },\n { type: 'requiredField', fieldName: 'serviceInstanceName', preventSave: true },\n { type: 'requiredField', fieldName: 'serviceKeyName', preventSave: true },\n ],\n});\n","import { includes } from 'lodash';\nimport React from 'react';\n\ninterface IServiceTagsInputProps {\n tags: string[];\n onChange: (e: string[]) => void;\n}\n\ninterface IServiceTagsInputState {\n newTag: string;\n tags: string[];\n}\n\nexport class ServiceTagsInput extends React.Component<IServiceTagsInputProps, IServiceTagsInputState> {\n constructor(props: IServiceTagsInputProps) {\n super(props);\n this.state = {\n newTag: '',\n tags: this.props.tags || [],\n };\n }\n\n private newTagUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.setState({ newTag: event.target.value });\n };\n\n private addTag = (): void => {\n const { onChange, tags } = this.props;\n const { newTag } = this.state;\n const currentTags = tags || [];\n\n if (!includes(currentTags, newTag.trim())) {\n const newTags = [...currentTags, newTag.trim()].sort((a, b) => a.localeCompare(b));\n this.setState({\n tags: newTags,\n newTag: '',\n });\n onChange(newTags);\n }\n };\n\n private deleteTag = (index: number): void => {\n const { onChange, tags } = this.props;\n const newTags = tags.slice();\n newTags.splice(index, 1);\n this.setState({ tags: newTags });\n onChange(newTags);\n };\n\n public render() {\n const { tags, newTag } = this.state;\n return (\n <>\n <div className=\"row\">\n <div className=\"col-md-4\">\n <input type=\"text\" className=\"form-control\" name=\"newTag\" onChange={this.newTagUpdated} value={newTag} />\n </div>\n <div className=\"col-md-2\">\n <button disabled={!newTag.trim()} className=\"btn btn-default btn-sm btn-add-tag\" onClick={this.addTag}>\n Add Tag\n </button>\n </div>\n </div>\n <div>\n <div>\n {tags &&\n tags.map((tag: any, index: number) => {\n return (\n <span className=\"badge badge-pill\" key={index}>\n \n {tag}\n \n <button\n type=\"button\"\n className=\"close small\"\n aria-label=\"Close\"\n onClick={() => this.deleteTag(index)}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n </span>\n );\n })}\n </div>\n </div>\n </>\n );\n }\n}\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IService, IServicePlan } from '@spinnaker/core';\nimport { ReactSelectInput, ServicesReader, StageConfigField, TextAreaInput, TextInput } from '@spinnaker/core';\n\nimport type { ICloudFoundryServiceManifestDirectSource } from './ICloudFoundryServiceManifestSource';\nimport { ServiceTagsInput } from './ServiceTagsInput';\n\ninterface ICreateServiceInstanceDirectInputProps {\n credentials: string;\n region: string;\n service: ICloudFoundryServiceManifestDirectSource;\n onServiceChanged: (_: ICloudFoundryServiceManifestDirectSource) => void;\n}\n\ninterface ICreateServiceInstanceDirectInputState {\n serviceNamesAndPlans: IService[];\n}\n\nexport class CreateServiceInstanceDirectInput extends React.Component<\n ICreateServiceInstanceDirectInputProps,\n ICreateServiceInstanceDirectInputState\n> {\n private destroy$ = new Subject();\n constructor(props: ICreateServiceInstanceDirectInputProps) {\n super(props);\n this.state = { serviceNamesAndPlans: [] };\n }\n\n public componentDidUpdate(prevProps: Readonly<ICreateServiceInstanceDirectInputProps>) {\n const { credentials, region } = this.props;\n if ((credentials && credentials !== prevProps.credentials) || region !== prevProps.region) {\n this.loadServices(credentials, region);\n }\n }\n\n public componentDidMount(): void {\n this.loadServices(this.props.credentials, this.props.region);\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private loadServices(credentials: string, region: string) {\n if (credentials && region) {\n observableFrom(ServicesReader.getServices(credentials, region))\n .pipe(takeUntil(this.destroy$))\n .subscribe((serviceNamesAndPlans) => this.setState({ serviceNamesAndPlans }));\n }\n }\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n serviceInstanceName: event.target.value,\n });\n };\n\n private serviceUpdated = (option: Option<string>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n service: option.target.value,\n servicePlan: '',\n });\n };\n\n private servicePlanUpdated = (option: Option<string>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n servicePlan: option.target.value,\n });\n };\n\n private parametersUpdated = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n parameters: event.target.value,\n });\n };\n\n private tagsUpdated = (tags: string[]) => {\n this.props.onServiceChanged({\n ...this.props.service,\n tags: tags,\n });\n };\n\n private updatableUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n updatable: event.target.checked,\n versioned: false,\n });\n };\n\n private versionedUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n versioned: event.target.checked,\n updatable: false,\n });\n };\n\n public render() {\n const { service } = this.props;\n const services = this.state.serviceNamesAndPlans.map((item) => item.name);\n const serviceWithPlans = this.state.serviceNamesAndPlans.find((it) => it.name === service.service);\n const servicePlans = serviceWithPlans ? serviceWithPlans.servicePlans.map((it: IServicePlan) => it.name) : [];\n return (\n <div>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={service.serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Service\">\n <ReactSelectInput\n clearable={false}\n onChange={this.serviceUpdated}\n value={service.service}\n stringOptions={services}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Plan\">\n <ReactSelectInput\n clearable={false}\n onChange={this.servicePlanUpdated}\n value={service.servicePlan}\n stringOptions={servicePlans}\n />\n </StageConfigField>\n <StageConfigField label=\"Tags\">\n <ServiceTagsInput tags={service.tags || []} onChange={this.tagsUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Parameters\">\n <TextAreaInput className=\"form-control\" onChange={this.parametersUpdated} value={service.parameters || ''} />\n </StageConfigField>\n <StageConfigField label=\"Updatable\" helpKey={'pipeline.config.cf.createservice.updatable'}>\n <input\n type=\"checkbox\"\n disabled={!!service.versioned}\n checked={!!service.updatable}\n onChange={this.updatableUpdated}\n />\n </StageConfigField>\n <StageConfigField label=\"Versioned\" helpKey={'pipeline.config.cf.createservice.versioned'}>\n <input\n type=\"checkbox\"\n disabled={!!service.updatable}\n checked={!!service.versioned}\n onChange={this.versionedUpdated}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { StageConfigField, TextAreaInput, TextInput } from '@spinnaker/core';\n\nimport type {\n ICloudFoundryServiceManifestSource,\n ICloudFoundryServiceUserProvidedSource,\n} from './ICloudFoundryServiceManifestSource';\nimport { ServiceTagsInput } from './ServiceTagsInput';\n\ninterface ICreateServiceInstanceUserProvidedInputProps {\n onChange: (serviceInput: ICloudFoundryServiceManifestSource) => void;\n service: ICloudFoundryServiceUserProvidedSource;\n onServiceChanged: (_: ICloudFoundryServiceUserProvidedSource) => void;\n}\n\nexport class CreateUserProvidedInput extends React.Component<ICreateServiceInstanceUserProvidedInputProps> {\n constructor(props: ICreateServiceInstanceUserProvidedInputProps) {\n super(props);\n }\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n serviceInstanceName: event.target.value,\n });\n };\n\n private syslogDrainUrlUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.onServiceChanged({\n ...this.props.service,\n syslogDrainUrl: event.target.value,\n });\n };\n\n private routeServiceUrlUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.onServiceChanged({\n ...this.props.service,\n routeServiceUrl: event.target.value,\n });\n };\n\n private credentialsUpdated = (event: React.ChangeEvent<HTMLTextAreaElement>): void => {\n this.props.onServiceChanged({\n ...this.props.service,\n credentials: event.target.value,\n });\n };\n\n private tagsUpdated = (tags: string[]) => {\n this.props.onServiceChanged({\n ...this.props.service,\n tags: tags,\n });\n };\n\n private updatableUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n updatable: event.target.checked,\n versioned: false,\n });\n };\n\n private versionedUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n versioned: event.target.checked,\n updatable: false,\n });\n };\n\n public render() {\n const { service } = this.props;\n return (\n <>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={service.serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Syslog Drain URL\">\n <TextInput onChange={this.syslogDrainUrlUpdated} value={service.syslogDrainUrl} />\n </StageConfigField>\n <StageConfigField label=\"Route Service URL\">\n <TextInput onChange={this.routeServiceUrlUpdated} value={service.routeServiceUrl} />\n </StageConfigField>\n <StageConfigField label=\"Credentials\">\n <TextAreaInput onChange={this.credentialsUpdated} value={service.credentials} />\n </StageConfigField>\n <StageConfigField label=\"Tags\">\n <ServiceTagsInput tags={service.tags || []} onChange={this.tagsUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Updatable\" helpKey={'pipeline.config.cf.createservice.updatable'}>\n <input\n type=\"checkbox\"\n disabled={!!service.versioned}\n checked={!!service.updatable}\n onChange={this.updatableUpdated}\n />\n </StageConfigField>\n <StageConfigField label=\"Versioned\" helpKey={'pipeline.config.cf.createservice.versioned'}>\n <input\n type=\"checkbox\"\n disabled={!!service.updatable}\n checked={!!service.versioned}\n onChange={this.versionedUpdated}\n />\n </StageConfigField>\n </>\n );\n }\n}\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IArtifact, IExpectedArtifact, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport {\n AccountService,\n ArtifactTypePatterns,\n ReactSelectInput,\n StageArtifactSelector,\n StageConfigField,\n} from '@spinnaker/core';\n\nimport { CreateServiceInstanceDirectInput } from './CreateServiceInstanceDirectInput';\nimport { CreateUserProvidedInput } from './CreateUserProvidedInput';\nimport type { ICloudFoundryServiceManifestSource } from './ICloudFoundryServiceManifestSource';\n\nimport './cloudfoundryDeployServiceStage.less';\n\ninterface ICloudFoundryDeployServiceStageConfigState {\n regions: IRegion[];\n accounts: IAccount[];\n}\n\nexport class CloudFoundryDeployServiceStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryDeployServiceStageConfigState\n> {\n private defaultDirectManifest = {\n direct: {\n parameters: '',\n service: '',\n serviceInstanceName: '',\n servicePlan: '',\n updatable: false,\n versioned: false,\n },\n };\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n this.props.updateStageField({ cloudProvider: 'cloudfoundry' });\n this.state = {\n accounts: [],\n regions: [],\n };\n }\n\n private accountUpdated = (option: Option<string>): void => {\n const credentials = option.target.value;\n const updates: any = { credentials: credentials, region: '' };\n if (!this.props.stage.manifest || this.props.stage.manifest.direct) {\n updates.manifest = this.defaultDirectManifest;\n }\n this.props.updateStageField(updates);\n this.reloadRegions();\n };\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n this.reloadRegions();\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private reloadRegions = () => {\n const { credentials } = this.props.stage;\n if (credentials) {\n observableFrom(AccountService.getRegionsForAccount(credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regions) => this.setState({ regions }));\n }\n };\n\n private manifestSourceUpdated = (source: string): void => {\n switch (source) {\n case 'direct':\n this.props.updateStageField({ manifest: this.defaultDirectManifest });\n break;\n case 'artifact':\n this.props.updateStageField({ manifest: {} });\n break;\n }\n };\n\n private onExpectedArtifactSelected = (expectedArtifact: IExpectedArtifact): void => {\n this.props.updateStageField({ manifest: { artifactId: expectedArtifact.id } });\n };\n\n private onArtifactChanged = (artifact: IArtifact): void => {\n this.props.updateStageField({ manifest: { artifact } });\n };\n\n private regionUpdated = (option: Option<string>): void => {\n const updates: any = { region: option.target.value };\n const direct = this.props.stage.manifest.direct;\n if (direct) {\n updates.manifest = this.defaultDirectManifest;\n }\n this.props.updateStageField(updates);\n };\n\n private serviceManifestSourceUpdated = (manifest: ICloudFoundryServiceManifestSource) => {\n this.props.updateStageField({ manifest });\n };\n\n private userProvidedUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.updateStageField({ userProvided: event.target.checked });\n };\n\n public render() {\n const { pipeline, stage } = this.props;\n const { credentials, region, userProvided, manifest } = this.props.stage;\n const { accounts, regions } = this.state;\n const directInput = !manifest || !!manifest.direct;\n let manifestInput;\n\n if (directInput) {\n const directManifest = (manifest && manifest.direct) || this.defaultDirectManifest;\n manifestInput = userProvided ? (\n <CreateUserProvidedInput\n onChange={this.serviceManifestSourceUpdated}\n service={directManifest}\n onServiceChanged={(direct) => this.serviceManifestSourceUpdated({ direct })}\n />\n ) : (\n <CreateServiceInstanceDirectInput\n credentials={credentials}\n region={region}\n service={directManifest}\n onServiceChanged={(direct) => this.serviceManifestSourceUpdated({ direct })}\n />\n );\n } else {\n manifestInput = (\n <StageConfigField label=\"Artifact\">\n <StageArtifactSelector\n pipeline={pipeline}\n stage={stage}\n expectedArtifactId={manifest.artifactId}\n excludedArtifactTypePatterns={[\n ArtifactTypePatterns.KUBERNETES,\n ArtifactTypePatterns.FRONT50_PIPELINE_TEMPLATE,\n ArtifactTypePatterns.DOCKER_IMAGE,\n ]}\n artifact={manifest.artifact}\n onExpectedArtifactSelected={this.onExpectedArtifactSelected}\n onArtifactEdited={this.onArtifactChanged}\n />\n </StageConfigField>\n );\n }\n\n return (\n <div className=\"form-horizontal cloudfoundry-deploy-service-stage\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts.map((it) => it.name)}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <ReactSelectInput\n clearable={false}\n onChange={this.regionUpdated}\n value={region}\n stringOptions={regions.map((it) => it.name)}\n />\n </StageConfigField>\n <StageConfigField label=\"User-provided\">\n <input type=\"checkbox\" checked={!!userProvided} onChange={this.userProvidedUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Configuration Source\">\n <div className=\"radio radio-inline\">\n <label>\n <input type=\"radio\" checked={!directInput} onChange={() => this.manifestSourceUpdated('artifact')} />{' '}\n Manifest\n </label>\n </div>\n <div className=\"radio radio-inline\">\n <label>\n <input type=\"radio\" checked={directInput} onChange={() => this.manifestSourceUpdated('direct')} /> Form\n </label>\n </div>\n </StageConfigField>\n {manifestInput}\n </div>\n );\n }\n}\n","import { safeLoad } from 'js-yaml';\nimport { get, upperFirst } from 'lodash';\n\nimport type { IPipeline, IStage, IStageOrTriggerValidator, ITrigger, IValidatorConfig } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, PipelineConfigValidator, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryDeployServiceStageConfig } from './CloudFoundryDeployServiceStageConfig';\nimport type { ICloudFoundryServiceManifestSource } from './ICloudFoundryServiceManifestSource';\nimport { CloudFoundryServiceExecutionDetails } from '../../../presentation';\n\ninterface IServiceFieldValidatorConfig extends IValidatorConfig {\n manifestSource: string;\n}\n\nconst sourceType = (manifest: ICloudFoundryServiceManifestSource, userProvided: boolean) => {\n if (manifest && manifest.direct) {\n return userProvided ? 'userProvided' : 'direct';\n } else {\n return 'artifact';\n }\n};\n\nconst sourceStruct = (manifest: ICloudFoundryServiceManifestSource) => {\n return manifest && manifest.direct ? 'direct' : 'artifact';\n};\n\nPipelineConfigValidator.registerValidator(\n 'requiredDeployServiceField',\n new (class implements IStageOrTriggerValidator {\n public validate(\n _pipeline: IPipeline,\n stage: IStage | ITrigger,\n validationConfig: IServiceFieldValidatorConfig,\n ): string {\n const serviceInput: ICloudFoundryServiceManifestSource = get(stage, 'manifest');\n if (sourceType(serviceInput, get(stage, 'userProvided')) !== validationConfig.manifestSource) {\n return null;\n }\n const manifestSource: any = get(serviceInput, sourceStruct(serviceInput));\n const content: any = get(manifestSource, validationConfig.fieldName);\n const fieldLabel = validationConfig.fieldLabel || upperFirst(validationConfig.fieldName);\n return content ? null : `<strong>${fieldLabel}</strong> is a required field for the Deploy Service stage.`;\n }\n })(),\n);\n\nPipelineConfigValidator.registerValidator(\n 'validDeployServiceParameterJsonOrYaml',\n new (class implements IStageOrTriggerValidator {\n private isJson(value: string): boolean {\n try {\n JSON.parse(value);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n private isYaml(value: string): boolean {\n try {\n safeLoad(value);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n public validate(\n _pipeline: IPipeline,\n stage: IStage | ITrigger,\n validationConfig: IServiceFieldValidatorConfig,\n ): string {\n const manifest: any = get(stage, 'manifest');\n if (sourceType(manifest, get(stage, 'userProvided')) !== validationConfig.manifestSource) {\n return null;\n }\n const manifestSource: any = get(manifest, sourceStruct(manifest));\n const fieldContent: any = get(manifestSource, validationConfig.fieldName);\n\n if (fieldContent) {\n if (!this.isJson(fieldContent) && !this.isYaml(fieldContent)) {\n const fieldLabel = upperFirst(validationConfig.fieldLabel || validationConfig.fieldName);\n return validationConfig.message || `<strong>${fieldLabel}</strong> should be a valid JSON or YAML string.`;\n }\n }\n return null;\n }\n })(),\n);\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryDeployServiceStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n supportsCustomTimeout: true,\n description: 'Deploys services using Open Service Broker and deploys user-provided services',\n executionDetailsSections: [CloudFoundryServiceExecutionDetails, ExecutionDetailsTasks],\n key: 'deployService',\n label: 'Deploy Service',\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'region' },\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'direct',\n fieldName: 'serviceInstanceName',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'direct',\n fieldName: 'service',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'direct',\n fieldName: 'servicePlan',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'artifact',\n fieldName: 'artifactAccount',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'artifact',\n fieldName: 'reference',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'userProvided',\n fieldName: 'serviceInstanceName',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'validDeployServiceParameterJsonOrYaml',\n manifestSource: 'direct',\n fieldName: 'parameters',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'validDeployServiceParameterJsonOrYaml',\n manifestSource: 'userProvided',\n fieldName: 'credentials',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n ],\n});\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\nimport { CloudFoundryAsgStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryAsgStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'destroyServerGroup',\n provides: 'destroyServerGroup',\n validators: [\n {\n type: 'cfTargetImpedance',\n message:\n 'This pipeline will attempt to destroy a server group without deploying a new version into the same cluster.',\n },\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n});\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IFormikStageConfigInjectedProps, IRegion } from '@spinnaker/core';\nimport { AccountService, StageConfigField } from '@spinnaker/core';\n\nexport interface ICloudFoundryDestroyServiceStageConfigState {\n accounts: IAccount[];\n regions: string[];\n application: Application;\n}\n\nexport class CloudFoundryDestroyServiceStageConfigForm extends React.Component<\n IFormikStageConfigInjectedProps,\n ICloudFoundryDestroyServiceStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IFormikStageConfigInjectedProps, context: any) {\n super(props, context);\n this.props.formik.setFieldValue('cloudProvider', 'cloudfoundry');\n this.state = {\n accounts: [],\n regions: [],\n application: props.application,\n };\n }\n\n public componentDidMount() {\n const stage = this.props.formik.values;\n this.props.formik.setFieldValue('application', this.state.application.name);\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts }));\n if (stage.credentials) {\n this.loadRegions(stage.credentials);\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private loadRegions = (creds: string) => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(creds))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions: regions });\n });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const creds = option.value;\n this.props.formik.setFieldValue('credentials', creds);\n this.props.formik.setFieldValue('region', '');\n if (creds) {\n this.loadRegions(creds);\n }\n };\n\n private regionUpdated = (option: Option<string>) => {\n this.props.formik.setFieldValue('region', option.value);\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.formik.setFieldValue('serviceInstanceName', event.target.value);\n };\n\n private removeBindingsUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.formik.setFieldValue('removeBindings', event.target.checked);\n };\n\n public render() {\n const stage = this.props.formik.values;\n const { accounts, regions } = this.state;\n const { credentials, region, serviceInstanceName } = stage;\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <Select\n options={\n accounts &&\n accounts.map((acc: IAccount) => ({\n label: acc.name,\n value: acc.name,\n }))\n }\n clearable={false}\n value={credentials}\n onChange={this.accountUpdated}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <Select\n options={\n regions &&\n regions.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n clearable={false}\n value={region}\n onChange={this.regionUpdated}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <input\n type=\"text\"\n className=\"form-control\"\n required={true}\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Remove Bindings\">\n <input type=\"checkbox\" checked={stage.removeBindings} onChange={this.removeBindingsUpdated} />\n {stage.removeBindings && (\n <div>\n Warning: Prior to destroying, this will attempt to unbind any server groups that are bound to this\n service. This stage will fail if any server groups don't belong to the spinnaker application.\n </div>\n )}\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { FormikErrors } from 'formik';\nimport { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStage, IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig, FormValidator } from '@spinnaker/core';\n\nimport { CloudFoundryDestroyServiceStageConfigForm } from './CloudFoundryDestroyServiceStageConfigForm';\n\nexport function CloudFoundryDestroyServiceStageConfig({\n application,\n pipeline,\n stage,\n updateStage,\n}: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n credentials: '',\n serviceInstanceName: '',\n removeBindings: false,\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n validate={validateCloudFoundryDestroyServiceStage}\n render={(props) => <CloudFoundryDestroyServiceStageConfigForm {...props} />}\n />\n );\n}\n\nexport function validateCloudFoundryDestroyServiceStage(stage: IStage): FormikErrors<IStage> {\n const formValidator = new FormValidator(stage);\n\n formValidator.field('credentials', 'Account').required();\n formValidator.field('region', 'Region').required();\n formValidator.field('serviceInstanceName', 'Service Instance Name').required();\n formValidator.field('application', 'Application').required();\n\n return formValidator.validateForm();\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport {\n CloudFoundryDestroyServiceStageConfig,\n validateCloudFoundryDestroyServiceStage,\n} from './CloudFoundryDestroyServiceStageConfig';\nimport { CloudFoundryServiceExecutionDetails } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryDestroyServiceStageConfig,\n supportsCustomTimeout: true,\n executionDetailsSections: [CloudFoundryServiceExecutionDetails, ExecutionDetailsTasks],\n key: 'destroyService',\n provides: 'destroyService',\n validateFn: validateCloudFoundryDestroyServiceStage,\n});\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\nimport { CloudFoundryAsgStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryAsgStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'disableServerGroup',\n provides: 'disableServerGroup',\n validators: [\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n});\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\nimport { CloudFoundryAsgStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryAsgStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'enableServerGroup',\n provides: 'enableServerGroup',\n validators: [\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n});\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\nimport { CloudFoundryLoadBalancersExecutionDetails, CloudFoundryLoadBalancersStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryLoadBalancersStageConfig,\n description: 'Map a load balancer',\n executionDetailsSections: [CloudFoundryLoadBalancersExecutionDetails, ExecutionDetailsTasks],\n key: 'mapLoadBalancers',\n label: 'Map Load Balancer',\n validators: [\n { type: 'requiredField', preventSave: true, fieldName: 'cluster' },\n { type: 'requiredField', preventSave: true, fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', preventSave: true, fieldName: 'region' },\n { type: 'requiredField', preventSave: true, fieldName: 'target' },\n { type: 'cfRequiredRoutesField', preventSave: true, fieldName: 'loadBalancerNames' },\n ],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, NgReact, StageConfigField, StageConstants } from '@spinnaker/core';\nimport { AccountRegionClusterSelector } from '../../../presentation';\n\nexport interface ICloudFoundryResizeAsgStageConfigState {\n accounts: IAccount[];\n}\n\nexport class CloudFoundryResizeAsgStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryResizeAsgStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n const { stage } = props;\n let interestingHealthProviderNames;\n if (\n stage.isNew &&\n props.application.attributes.platformHealthOnlyShowOverride &&\n props.application.attributes.platformHealthOnly\n ) {\n interestingHealthProviderNames = ['Cloud Foundry'];\n }\n const { capacity } = stage;\n this.props.updateStageField({\n action: 'scale_exact',\n capacity: capacity && capacity.desired ? capacity : { desired: 1, min: 1, max: 1 },\n cloudProvider: 'cloudfoundry',\n diskQuota: stage.diskQuota || 1024,\n interestingHealthProviderNames: interestingHealthProviderNames,\n memory: stage.memory || 1024,\n });\n\n this.state = { accounts: [] };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n this.props.stageFieldUpdated();\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private instanceCountUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n const instanceCount = parseInt(event.target.value, 10);\n this.props.updateStageField({\n capacity: {\n desired: instanceCount,\n min: instanceCount,\n max: instanceCount,\n },\n });\n };\n\n private memoryUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.updateStageField({ memory: parseInt(event.target.value, 10) });\n };\n\n private diskQuotaUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.updateStageField({ diskQuota: parseInt(event.target.value, 10) });\n };\n\n private targetUpdated = (target: string) => {\n this.props.updateStageField({ target });\n };\n\n private componentUpdated = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n regions: stage.regions,\n cluster: stage.cluster,\n });\n };\n\n public render() {\n const { accounts } = this.state;\n const { application, pipeline, stage } = this.props;\n const { capacity, diskQuota, memory, target } = stage;\n const instanceCount = capacity.desired;\n const { TargetSelect } = NgReact;\n return (\n <div className=\"cloudfoundry-resize-asg-stage form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n onComponentUpdate={this.componentUpdated}\n component={stage}\n />\n )}\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n <div className=\"form-group\">\n <span className=\"col-md-3 sm-label-right\" />\n <div className=\"col-md-9\">\n <div className=\"col-md-3 sm-label-left\">Instances</div>\n <div className=\"col-md-3 sm-label-left\">Mem (MB)</div>\n <div className=\"col-md-3 sm-label-left\">Disk (MB)</div>\n </div>\n <StageConfigField label=\"Match capacity\">\n <div className=\"col-md-3\">\n <input\n type=\"number\"\n key=\"instanceCount\"\n onChange={this.instanceCountUpdated}\n value={instanceCount}\n className=\"form-control input-sm\"\n />\n </div>\n <div className=\"col-md-3\">\n <input\n type=\"number\"\n key=\"memory\"\n onChange={this.memoryUpdated}\n value={memory}\n className=\"form-control input-sm\"\n />\n </div>\n <div className=\"col-md-3\">\n <input\n type=\"number\"\n key=\"diskQuota\"\n onChange={this.diskQuotaUpdated}\n value={diskQuota}\n className=\"form-control input-sm\"\n />\n </div>\n <div className=\"col-md-9 col-md-offset-3\">\n <em className=\"subinput-note\">Scaled capacity will match the numbers entered</em>\n </div>\n </StageConfigField>\n </div>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\n\nimport { CloudFoundryResizeAsgStageConfig } from './CloudFoundryResizeAsgStageConfig';\nimport type { IInstanceFieldSizeValidationConfig } from '../../config/validation/instanceSize.validator';\n\nconst diskValidator: IInstanceFieldSizeValidationConfig = {\n type: 'cfInstanceSizeField',\n fieldName: 'diskQuota',\n fieldLabel: 'Disk Mb',\n min: 256,\n preventSave: true,\n};\n\nconst instanceCountValidator: IInstanceFieldSizeValidationConfig = {\n type: 'cfInstanceSizeField',\n fieldName: 'capacity.desired',\n fieldLabel: 'Instances',\n min: 0,\n preventSave: true,\n};\n\nconst memoryValidator: IInstanceFieldSizeValidationConfig = {\n type: 'cfInstanceSizeField',\n fieldName: 'memory',\n fieldLabel: 'Mem Mb',\n min: 256,\n preventSave: true,\n};\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryResizeAsgStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'resizeServerGroup',\n provides: 'resizeServerGroup',\n validators: [\n {\n type: 'cfTargetImpedance',\n message:\n 'This pipeline will attempt to resize a server group without deploying a new version into the same cluster.',\n },\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n instanceCountValidator,\n memoryValidator,\n diskValidator,\n ],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IPipeline, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, StageConfigField } from '@spinnaker/core';\nimport { AccountRegionClusterSelector } from '../../../presentation';\n\nexport interface ICloudFoundryRollbackClusterStageProps extends IStageConfigProps {\n pipeline: IPipeline;\n}\n\nexport interface ICloudFoundryRollbackClusterStageConfigState {\n accounts: IAccount[];\n}\n\nexport class CloudFoundryRollbackClusterStageConfig extends React.Component<\n ICloudFoundryRollbackClusterStageProps,\n ICloudFoundryRollbackClusterStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: ICloudFoundryRollbackClusterStageProps) {\n super(props);\n\n this.props.updateStageField({\n cloudProvider: 'cloudfoundry',\n regions: this.props.stage.regions || [],\n targetHealthyRollbackPercentage: 100,\n });\n\n this.state = { accounts: [] };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private waitTimeBetweenRegionsUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n const time = parseInt(event.target.value || '0', 10);\n this.props.updateStageField({ waitTimeBetweenRegions: time });\n };\n\n private componentUpdate = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n regions: stage.regions,\n cluster: stage.cluster,\n moniker: stage.moniker,\n });\n };\n\n public render() {\n const { application, pipeline, stage } = this.props;\n const { waitTimeBetweenRegions } = stage;\n const { accounts } = this.state;\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n onComponentUpdate={this.componentUpdate}\n component={stage}\n />\n )}\n\n {stage.regions.length > 1 && (\n <StageConfigField label=\"Wait\">\n <input\n type=\"number\"\n min=\"0\"\n value={waitTimeBetweenRegions}\n onChange={this.waitTimeBetweenRegionsUpdated}\n className=\"form-control input-sm inline-number\"\n />\n seconds between regional rollbacks.\n </StageConfigField>\n )}\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\n\nimport { CloudFoundryRollbackClusterStageConfig } from './CloudFoundryRollbackClusterStageConfig';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n provides: 'rollbackCluster',\n key: 'rollbackCluster',\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryRollbackClusterStageConfig,\n controller: 'cfRollbackClusterStageCtrl',\n validators: [\n { type: 'requiredField', preventSave: true, fieldName: 'cluster' },\n { type: 'requiredField', preventSave: true, fieldName: 'regions' },\n { type: 'requiredField', preventSave: true, fieldName: 'credentials', fieldLabel: 'account' },\n ],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, NgReact, SpelText, StageConfigField, StageConstants, TextInput } from '@spinnaker/core';\nimport { AccountRegionClusterSelector } from '../../../presentation';\n\nexport interface ICloudFoundryRunTaskStageConfigState {\n accounts: IAccount[];\n region: string;\n}\n\nexport class CloudFoundryRunJobStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryRunTaskStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n region: '',\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n this.props.stageFieldUpdated();\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private componentUpdated = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n region: stage.region,\n cluster: stage.cluster,\n });\n };\n\n public render() {\n const { application, stage } = this.props;\n const { target, jobName, command, logsUrl } = stage;\n const { accounts } = this.state;\n const { TargetSelect } = NgReact;\n\n return (\n <div className=\"cloudfoundry-resize-asg-stage form-horizontal\">\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n onComponentUpdate={this.componentUpdated}\n component={stage}\n isSingleRegion={true}\n />\n <StageConfigField label=\"Target\">\n <TargetSelect\n model={{ target }}\n options={StageConstants.TARGET_LIST}\n onChange={(t) => this.props.updateStageField({ target: t })}\n />\n </StageConfigField>\n <StageConfigField label=\"Job Name\" helpKey={'cf.runJob.jobName'}>\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={(e) => this.props.updateStageField({ jobName: e.target.value })}\n value={jobName}\n maxLength={238}\n />\n </StageConfigField>\n <StageConfigField label=\"Command\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={(e) => this.props.updateStageField({ command: e.target.value })}\n value={command}\n />\n </StageConfigField>\n <StageConfigField label=\"Logs URL\" helpKey={'cf.runJob.logsUrl'}>\n <SpelText\n placeholder=\"\"\n onChange={(value) => this.props.updateStageField({ logsUrl: value })}\n value={logsUrl}\n pipeline={this.props.pipeline}\n docLink={false}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import { bindAll } from 'lodash';\nimport React from 'react';\nimport { Button, Modal } from 'react-bootstrap';\n\nimport type { IInstanceConsoleOutput } from '@spinnaker/core';\nimport { InstanceReader } from '@spinnaker/core';\n\nexport enum CloudFoundryRecentLogsType {\n APP = 'app',\n TASK = 'task',\n}\n\nexport interface ICloudFoundryRecentLogsProps {\n account: string;\n region: string;\n resourceDisplayName: string;\n resourceGuid: string;\n logsType: CloudFoundryRecentLogsType;\n resourceInstanceIndex?: number;\n}\n\nexport interface ICloudFoundryRecentLogsState {\n logs: string;\n showModal: boolean;\n errorMessage: string;\n}\n\nexport class CloudFoundryRecentLogs extends React.Component<\n ICloudFoundryRecentLogsProps,\n ICloudFoundryRecentLogsState\n> {\n constructor(props: ICloudFoundryRecentLogsProps) {\n super(props);\n this.state = {\n logs: '',\n showModal: false,\n errorMessage: null,\n };\n bindAll(this, ['open', 'close', 'onClick']);\n }\n\n private canShow(): boolean {\n const { resourceGuid } = this.props;\n return resourceGuid !== ''; // or null?\n }\n\n private generateResourceId(): string {\n const { resourceGuid, logsType, resourceInstanceIndex } = this.props;\n const optionalInstanceIndex = logsType === CloudFoundryRecentLogsType.APP ? `:${resourceInstanceIndex}` : '';\n return `${logsType}:${resourceGuid}${optionalInstanceIndex}`;\n }\n\n public close() {\n this.setState({ showModal: false });\n }\n\n public open() {\n this.setState({ showModal: true });\n }\n\n public onClick() {\n const { account, region } = this.props;\n InstanceReader.getConsoleOutput(account, region, this.generateResourceId(), 'cloudfoundry')\n .then((response: IInstanceConsoleOutput) => {\n this.setState({\n logs: response.output as string,\n });\n this.open();\n })\n .catch((exception: any) => {\n this.setState({ errorMessage: exception.data.message });\n this.open();\n });\n }\n\n public render() {\n const { showModal, logs, errorMessage } = this.state;\n if (this.canShow()) {\n return (\n <div>\n <a onClick={this.onClick} className=\"clickable\">\n Recent\n </a>\n <Modal show={showModal} onHide={this.close} dialogClassName=\"modal-lg modal-fullscreen\">\n <Modal.Header closeButton={true}>\n <Modal.Title>Recent logs</Modal.Title>\n <h5>\n CloudFoundry {this.props.logsType.valueOf()} name: {this.props.resourceDisplayName}\n </h5>\n </Modal.Header>\n <Modal.Body>\n {logs.length > 0 && (\n <>\n <pre className=\"body-small\">{logs}</pre>\n </>\n )}\n\n {logs.length === 0 && <>No logs returned.</>}\n\n {errorMessage && <pre className=\"body-small\">{errorMessage}</pre>}\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={this.close}>Close</Button>\n </Modal.Footer>\n </Modal>\n </div>\n );\n } else {\n return null;\n }\n }\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection } from '@spinnaker/core';\nimport {\n CloudFoundryRecentLogs,\n CloudFoundryRecentLogsType,\n} from '../../../presentation/widgets/recentLogs/CloudFoundryRecentLogs';\n\nexport class RunJobExecutionDetails extends React.Component<IExecutionDetailsSectionProps> {\n public static title = 'runJobDetails';\n\n public render() {\n const { stage, name, current } = this.props;\n const { context } = stage;\n const account = context['deploy.account.name'];\n const region = get(stage, ['context', 'jobStatus', 'location'], '');\n const taskId = get(stage, ['context', 'jobStatus', 'id'], '');\n const taskName = get(stage, ['context', 'jobStatus', 'name'], '');\n const logsUrl: string = get(stage, ['context', 'logsUrl']);\n\n return (\n <ExecutionDetailsSection name={name} current={current}>\n <div className=\"row\">\n <div className=\"col-md-9\">\n <dl className=\"dl-narrow dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n {region && (\n <>\n <dt>Region</dt>\n <dd>{region}</dd>\n <dt>Logs</dt>\n <dd>\n <CloudFoundryRecentLogs\n account={account}\n region={region}\n resourceDisplayName={taskName}\n resourceGuid={taskId}\n logsType={CloudFoundryRecentLogsType.TASK}\n />\n </dd>\n {logsUrl && (\n <dd>\n <a target=\"_blank\" href={logsUrl}>\n External\n </a>\n </dd>\n )}\n </>\n )}\n {!region && <div className=\"well\">Collecting additional details...</div>}\n </dl>\n </div>\n </div>\n </ExecutionDetailsSection>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryRunJobStageConfig } from './CloudFoundryRunJobStageConfig';\nimport { RunJobExecutionDetails } from './RunJobExecutionDetails';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n component: CloudFoundryRunJobStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n key: 'runJob',\n provides: 'runJob',\n restartable: true,\n executionDetailsSections: [ExecutionDetailsTasks, RunJobExecutionDetails],\n supportsCustomTimeout: true,\n validators: [\n { type: 'requiredField', fieldName: 'credentials' },\n { type: 'requiredField', fieldName: 'region' },\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'command' },\n ],\n});\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryShareServiceExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'service.account', undefined);\n const region = get(context, 'service.region', undefined);\n const serviceInstanceName = get(context, 'serviceInstanceName', undefined);\n const shareToRegions = get(context, 'shareToRegions', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Region</dt>\n <dd>\n {region}\n <br />\n </dd>\n <dt>Service Instance Name</dt>\n <dd>\n {serviceInstanceName}\n <br />\n </dd>\n <dt>Sharing Regions</dt>\n <dd>\n {shareToRegions.join(', ')}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={stage} message={stage.failureMessage} />\n <StageExecutionLogs stage={stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// eslint-disable-next-line\nexport namespace CloudFoundryShareServiceExecutionDetails {\n export const title = 'cloudfoundryShareServiceConfig';\n}\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';\n\ninterface ICloudFoundryShareServiceStageConfigState {\n accounts: IAccount[];\n regions: string[];\n shareToRegionsList: string[];\n}\n\nexport class CloudFoundryShareServiceStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryShareServiceStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n regions: [],\n shareToRegionsList: [],\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n if (this.props.stage.credentials) {\n this.clearAndReloadRegions();\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private clearAndReloadRegions = () => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(this.props.stage.credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const { region } = this.props.stage;\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions });\n if (region) {\n this.clearAndResetShareToRegionList(region, regions);\n }\n });\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceInstanceName: event.target.value });\n };\n\n private clearAndResetShareToRegionList = (region: string, regions: string[]) => {\n this.setState({ shareToRegionsList: regions.filter((r) => r !== region) });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const credentials = option.target.value;\n this.setState({\n regions: [],\n shareToRegionsList: [],\n });\n this.props.updateStageField({\n credentials,\n region: '',\n shareToRegions: [],\n });\n if (credentials) {\n this.clearAndReloadRegions();\n }\n };\n\n private regionUpdated = (option: Option<string>) => {\n const region = option.target.value;\n this.setState({ shareToRegionsList: [] });\n this.props.updateStageField({\n region,\n shareToRegions: [],\n });\n this.clearAndResetShareToRegionList(region, this.state.regions);\n };\n\n private shareToRegionsUpdated = (option: Option<string>) => {\n this.props.updateStageField({ shareToRegions: option.map((o: Option) => o.value) });\n };\n\n public render() {\n const { credentials, region, serviceInstanceName, shareToRegions } = this.props.stage;\n const { accounts, regions, shareToRegionsList } = this.state;\n\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts.map((it) => it.name)}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <ReactSelectInput clearable={false} onChange={this.regionUpdated} value={region} stringOptions={regions} />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Share To Regions\">\n <Select\n options={\n shareToRegionsList &&\n shareToRegionsList.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n multi={true}\n clearable={false}\n value={shareToRegions}\n onChange={this.shareToRegionsUpdated}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryShareServiceExecutionDetails } from './CloudFoundryShareServiceExecutionDetails';\nimport { CloudFoundryShareServiceStageConfig } from './CloudFoundryShareServiceStageConfig';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n provides: 'shareService',\n key: 'shareService',\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryShareServiceStageConfig,\n executionDetailsSections: [CloudFoundryShareServiceExecutionDetails, ExecutionDetailsTasks],\n supportsCustomTimeout: true,\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'region' },\n { type: 'requiredField', fieldName: 'serviceInstanceName', preventSave: true },\n ],\n});\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\nimport { CloudFoundryLoadBalancersExecutionDetails, CloudFoundryLoadBalancersStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryLoadBalancersStageConfig,\n description: 'Unmap a load balancer',\n executionDetailsSections: [CloudFoundryLoadBalancersExecutionDetails, ExecutionDetailsTasks],\n key: 'unmapLoadBalancers',\n label: 'Unmap Load Balancer',\n validators: [\n { type: 'requiredField', preventSave: true, fieldName: 'cluster' },\n { type: 'requiredField', preventSave: true, fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', preventSave: true, fieldName: 'region' },\n { type: 'requiredField', preventSave: true, fieldName: 'target' },\n { type: 'cfRequiredRoutesField', preventSave: true, fieldName: 'loadBalancerNames' },\n ],\n});\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryUnshareServiceExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'service.account', undefined);\n const serviceInstanceName = get(context, 'serviceInstanceName', undefined);\n const unshareFromRegions = get(context, 'unshareFromRegions', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Service Instance Name</dt>\n <dd>\n {serviceInstanceName}\n <br />\n </dd>\n <dt>Unsharing Regions</dt>\n <dd>\n {unshareFromRegions.join(', ')}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={stage} message={stage.failureMessage} />\n <StageExecutionLogs stage={stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// eslint-disable-next-line\nexport namespace CloudFoundryUnshareServiceExecutionDetails {\n export const title = 'cloudfoundryUnshareServiceConfig';\n}\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';\n\ninterface ICloudFoundryShareServiceStageConfigState {\n accounts: IAccount[];\n regions: string[];\n}\n\nexport class CloudFoundryUnshareServiceStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryShareServiceStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n regions: [],\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n if (this.props.stage.credentials) {\n this.clearAndReloadRegions();\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private clearAndReloadRegions = () => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(this.props.stage.credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions });\n });\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceInstanceName: event.target.value });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const credentials = option.target.value;\n this.setState({ regions: [] });\n this.props.updateStageField({\n credentials,\n unshareFromRegions: [],\n });\n if (credentials) {\n this.clearAndReloadRegions();\n }\n };\n\n private unshareFromRegionsUpdated = (option: Option<string>) => {\n this.props.updateStageField({ unshareFromRegions: option.map((o: Option) => o.value) });\n };\n\n public render() {\n const { credentials, serviceInstanceName, unshareFromRegions } = this.props.stage;\n const { accounts, regions } = this.state;\n\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts.map((it) => it.name)}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Unshare From Regions\">\n <Select\n options={\n regions &&\n regions.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n multi={true}\n clearable={false}\n value={unshareFromRegions}\n onChange={this.unshareFromRegionsUpdated}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryUnshareServiceExecutionDetails } from './CloudFoundryUnshareServiceExecutionDetails';\nimport { CloudFoundryUnshareServiceStageConfig } from './CloudFoundryUnshareServiceStageConfig';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n provides: 'unshareService',\n key: 'unshareService',\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryUnshareServiceStageConfig,\n controller: 'cfUnshareServiceStageCtrl',\n executionDetailsSections: [CloudFoundryUnshareServiceExecutionDetails, ExecutionDetailsTasks],\n supportsCustomTimeout: true,\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'serviceInstanceName', preventSave: true },\n ],\n});\n","import React from 'react';\n\nimport { AccountTag, CollapsibleSection, timestamp } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\nimport type { ICloudFoundryBuildpack } from '../../../domain';\n\nexport class ServerGroupInformationSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <CollapsibleSection heading=\"Server Group Information\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Created</dt>\n {serverGroup.pipelineId ? (\n <dd>\n <a target=\"_blank\" href={'/#/applications/' + serverGroup.app + '/executions/' + serverGroup.pipelineId}>\n {timestamp(serverGroup.createdTime)}\n </a>\n </dd>\n ) : (\n <dd>{timestamp(serverGroup.createdTime)}</dd>\n )}\n <dt>Account</dt>\n <dd>\n <AccountTag account={serverGroup.account} />\n </dd>\n <dt>Organization</dt>\n <dd>{serverGroup.space.organization.name}</dd>\n <dt>Space</dt>\n <dd>{serverGroup.space.name}</dd>\n {serverGroup.droplet && (\n <div>\n <dt>Rootfs</dt>\n <dd>{serverGroup.droplet.stack}</dd>\n <dt>Buildpack</dt>\n {serverGroup.droplet.buildpacks ? (\n serverGroup.droplet.buildpacks.map(function (buildpack: ICloudFoundryBuildpack, index: number) {\n return (\n <dd key={index}>\n {buildpack.name} {buildpack.version}\n </dd>\n );\n })\n ) : (\n <dd>n/a</dd>\n )}\n </div>\n )}\n </dl>\n </CollapsibleSection>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class ApplicationManagerSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n const { appsManagerUri } = serverGroup;\n return (\n <>\n {appsManagerUri && (\n <CollapsibleSection heading=\"Apps Manager\" defaultExpanded={true}>\n <div>\n <a href={appsManagerUri} target=\"_blank\">\n Apps Manager\n </a>\n </div>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class MetricsSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n const { metricsUri } = serverGroup;\n return (\n <>\n {metricsUri && (\n <CollapsibleSection heading=\"Metrics\" defaultExpanded={true}>\n <div>\n <a href={metricsUri} target=\"_blank\">\n Metrics\n </a>\n </div>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class ServerGroupSizingSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <CollapsibleSection heading=\"Server Group Sizing\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Instances</dt>\n <dd>{serverGroup.instances.length}</dd>\n <dt>Disk (MB)</dt>\n <dd>{serverGroup.diskQuota}</dd>\n <dt>Memory (MB)</dt>\n <dd>{serverGroup.memory}</dd>\n </dl>\n </CollapsibleSection>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class HealthCheckSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <CollapsibleSection heading=\"Health Check\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Type</dt>\n <dd>{serverGroup.healthCheckType === undefined ? 'port' : serverGroup.healthCheckType}</dd>\n {serverGroup.healthCheckType === 'http' && (\n <div>\n <dt>Endpoint</dt>\n <dd>{serverGroup.healthCheckHttpEndpoint}</dd>\n </div>\n )}\n </dl>\n </CollapsibleSection>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class PackageSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <>\n {serverGroup.droplet && serverGroup.droplet.sourcePackage && (\n <CollapsibleSection heading=\"Package\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Checksum</dt>\n <dd>{serverGroup.droplet.sourcePackage.checksum}</dd>\n </dl>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class BuildSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <CollapsibleSection heading=\"Build\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n {serverGroup.ciBuild && serverGroup.ciBuild.jobName && (\n <div>\n <dt>Job Name</dt>\n <dd>{serverGroup.ciBuild.jobName}</dd>\n </div>\n )}\n {serverGroup.ciBuild && serverGroup.ciBuild.jobNumber && (\n <div>\n <dt>Job Number</dt>\n {serverGroup.ciBuild.jobUrl ? (\n <dd>\n <a target=\"_blank\" href={serverGroup.ciBuild.jobUrl}>\n {serverGroup.ciBuild.jobNumber}\n </a>\n </dd>\n ) : (\n <dd>{serverGroup.ciBuild.jobNumber}</dd>\n )}\n </div>\n )}\n {serverGroup.appArtifact && serverGroup.appArtifact.name && (\n <div>\n <dt>Artifact Name</dt>\n <dd>{serverGroup.appArtifact.name}</dd>\n </div>\n )}\n {serverGroup.appArtifact && serverGroup.appArtifact.version && (\n <div>\n <dt>Version</dt>\n {serverGroup.appArtifact.url ? (\n <dd>\n <a target=\"_blank\" href={serverGroup.appArtifact.url}>\n {serverGroup.appArtifact.version}\n </a>\n </dd>\n ) : (\n <dd>{serverGroup.appArtifact.version}</dd>\n )}\n </div>\n )}\n </dl>\n </CollapsibleSection>\n );\n }\n}\n","import { isEmpty } from 'lodash';\nimport React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\nimport type { ICloudFoundryServiceInstance } from '../../../domain';\n\nexport class BoundServicesSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <>\n {!isEmpty(serverGroup.serviceInstances) && (\n <CollapsibleSection heading=\"Bound Services\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n {serverGroup.serviceInstances.map(function (service: ICloudFoundryServiceInstance, index: number) {\n return (\n <div key={index}>\n <dt>Name</dt>\n <dd>{service.name}</dd>\n <dt>Plan</dt>\n <dd>{service.plan}</dd>\n <dt>Tags</dt>\n {service.tags && <dd>{service.tags.join(', ')}</dd>}\n </div>\n );\n })}\n </dl>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import { isEmpty } from 'lodash';\nimport React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class EnvironmentVariablesSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <>\n {!isEmpty(serverGroup.env) && (\n <CollapsibleSection heading=\"Environment Variables\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n {Object.entries(serverGroup.env).map(([k, v], index) => {\n return (\n <div key={index}>\n <dt>{k}</dt>\n <dd>{v}</dd>\n </div>\n );\n })}\n </dl>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import { defaults } from 'lodash';\n\nimport type { ICloudFoundryEnvVar, ICloudFoundryServerGroup } from '../domain';\n\nexport class CloudFoundryServerGroupTransformer {\n public static $inject = ['$q'];\n public constructor(private $q: ng.IQService) {}\n\n public normalizeServerGroupDetails(serverGroup: ICloudFoundryServerGroup): ICloudFoundryServerGroup {\n return serverGroup;\n }\n\n public normalizeServerGroup(serverGroup: ICloudFoundryServerGroup): PromiseLike<ICloudFoundryServerGroup> {\n return this.$q.resolve(serverGroup);\n }\n\n public convertServerGroupCommandToDeployConfiguration(base: any): any {\n const command = defaults({ viewState: [] }, base);\n command.cloudProvider = 'cloudfoundry';\n command.provider = 'cloudfoundry';\n command.account = command.credentials;\n\n delete command.viewState;\n delete command.selectedProvider;\n\n if (command.manifest.type === 'direct') {\n command.manifest.env = this.convertManifestEnv(command.manifest.environment);\n } else {\n command.manifest.env = command.manifest.environment;\n }\n\n return command;\n }\n\n private convertManifestEnv(envVars: ICloudFoundryEnvVar[]): {} {\n const newEnv = Object.create(null);\n for (const envVar of envVars) {\n newEnv[envVar.key] = envVar.value;\n }\n return newEnv;\n }\n}\n","import type { Formik } from 'formik';\nimport { Form } from 'formik';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\n\nimport type { Application, IModalComponentProps, IServerGroup, IServerGroupJob } from '@spinnaker/core';\nimport {\n ModalClose,\n noop,\n ReactInjector,\n ReactModal,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\nimport { Routes } from '../../../presentation/forms/serverGroup';\n\nexport interface ICloudFoundryLoadBalancerLinksModalProps extends IModalComponentProps {\n application: Application;\n serverGroup: ICloudFoundryServerGroup;\n}\n\nexport interface ICloudFoundryLoadBalancerLinksModalState {\n initialValues: ICloudFoundryLoadBalancerLinksModalValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryLoadBalancerLinksModalValues {\n routes: string[];\n}\n\nexport interface ICloudFoundryLoadBalancerLinkJob extends IServerGroupJob {\n routes: string[];\n serverGroupName: string;\n}\n\nexport class CloudFoundryMapLoadBalancersModal extends React.Component<\n ICloudFoundryLoadBalancerLinksModalProps,\n ICloudFoundryLoadBalancerLinksModalState\n> {\n public static defaultProps: Partial<ICloudFoundryLoadBalancerLinksModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancerLinksModalValues>>();\n\n public static show(props: ICloudFoundryLoadBalancerLinksModalProps): Promise<ICloudFoundryLoadBalancerLinkJob> {\n return ReactModal.show(CloudFoundryMapLoadBalancersModal, props, {});\n }\n\n constructor(props: ICloudFoundryLoadBalancerLinksModalProps) {\n super(props);\n\n this.state = {\n initialValues: {\n routes: [''],\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Mapping a route to your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n }\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private submit = (values: ICloudFoundryLoadBalancerLinksModalValues): void => {\n const { routes } = values;\n const { serverGroup } = this.props;\n const coreServerGroup: IServerGroup = {\n account: serverGroup.account,\n cloudProvider: serverGroup.cloudProvider,\n cluster: serverGroup.cluster,\n instanceCounts: serverGroup.instanceCounts,\n instances: serverGroup.instances,\n loadBalancers: routes,\n name: serverGroup.name,\n region: serverGroup.region,\n type: serverGroup.type,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.mapLoadBalancers(coreServerGroup, this.props.application, {\n serverGroupName: serverGroup.name,\n });\n });\n };\n\n public render() {\n const { serverGroup } = this.props;\n const { initialValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryLoadBalancerLinksModalValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Map route to {serverGroup.name}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n <Routes fieldName=\"routes\" isRequired={true} singleRouteOnly={true} />\n </Form>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button\n type=\"submit\"\n className=\"btn btn-primary\"\n onClick={() => this.submit(formik.values)}\n disabled={!formik.isValid}\n >\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","import type { Formik } from 'formik';\nimport { Form } from 'formik';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\n\nimport type { Application, IModalComponentProps, IServerGroup, IServerGroupJob } from '@spinnaker/core';\nimport {\n ModalClose,\n noop,\n ReactInjector,\n ReactModal,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\nimport { Routes } from '../../../presentation/forms/serverGroup';\n\nexport interface ICloudFoundryLoadBalancerLinksModalProps extends IModalComponentProps {\n application: Application;\n serverGroup: ICloudFoundryServerGroup;\n}\n\nexport interface ICloudFoundryLoadBalancerLinksModalState {\n initialValues: ICloudFoundryLoadBalancerLinksModalValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryLoadBalancerLinksModalValues {\n routes: string[];\n}\n\nexport interface ICloudFoundryLoadBalancerLinkJob extends IServerGroupJob {\n routes: string[];\n serverGroupName: string;\n}\n\nexport class CloudFoundryUnmapLoadBalancersModal extends React.Component<\n ICloudFoundryLoadBalancerLinksModalProps,\n ICloudFoundryLoadBalancerLinksModalState\n> {\n public static defaultProps: Partial<ICloudFoundryLoadBalancerLinksModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancerLinksModalValues>>();\n\n public static show(props: ICloudFoundryLoadBalancerLinksModalProps): Promise<ICloudFoundryLoadBalancerLinkJob> {\n return ReactModal.show(CloudFoundryUnmapLoadBalancersModal, props, {});\n }\n\n constructor(props: ICloudFoundryLoadBalancerLinksModalProps) {\n super(props);\n\n this.state = {\n initialValues: {\n routes: [''],\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Unmapping a route from your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n }\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private submit = (values: ICloudFoundryLoadBalancerLinksModalValues): void => {\n const { routes } = values;\n const { serverGroup } = this.props;\n const coreServerGroup: IServerGroup = {\n account: serverGroup.account,\n cloudProvider: serverGroup.cloudProvider,\n cluster: serverGroup.cluster,\n instanceCounts: serverGroup.instanceCounts,\n instances: serverGroup.instances,\n loadBalancers: routes,\n name: serverGroup.name,\n region: serverGroup.region,\n type: serverGroup.type,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.unmapLoadBalancers(coreServerGroup, this.props.application, {\n serverGroupName: serverGroup.name,\n });\n });\n };\n\n public render() {\n const { serverGroup } = this.props;\n const { initialValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryLoadBalancerLinksModalValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Unmap route from {serverGroup.name}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n <Routes fieldName=\"routes\" isRequired={true} singleRouteOnly={true} />\n </Form>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button\n type=\"submit\"\n className=\"btn btn-primary\"\n onClick={() => this.submit(formik.values)}\n disabled={!formik.isValid}\n >\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","import type { Formik, FormikProps } from 'formik';\nimport { Form } from 'formik';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\n\nimport type { Application, ICapacity, IModalComponentProps, IServerGroupJob } from '@spinnaker/core';\nimport {\n FormikFormField,\n ModalClose,\n noop,\n NumberInput,\n ReactInjector,\n ReactModal,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n TaskReason,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\n\nexport interface ICloudFoundryResizeServerGroupModalProps extends IModalComponentProps {\n application: Application;\n serverGroup: ICloudFoundryServerGroup;\n}\n\nexport interface ICloudFoundryResizeServerGroupModalState {\n initialValues: ICloudFoundryResizeServerGroupValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryResizeServerGroupValues {\n desired: number | string;\n diskQuota?: number;\n memory?: number;\n reason?: string;\n}\n\nexport interface ICloudFoundryResizeJob extends IServerGroupJob {\n capacity?: Partial<ICapacity>;\n diskQuota?: number;\n instanceCount?: number;\n memory?: number;\n serverGroupName: string;\n reason?: string;\n}\n\nexport class CloudFoundryResizeServerGroupModal extends React.Component<\n ICloudFoundryResizeServerGroupModalProps,\n ICloudFoundryResizeServerGroupModalState\n> {\n public static defaultProps: Partial<ICloudFoundryResizeServerGroupModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private formikRef = React.createRef<Formik<ICloudFoundryResizeServerGroupValues>>();\n\n public static show(props: ICloudFoundryResizeServerGroupModalProps): Promise<ICloudFoundryResizeJob> {\n const modalProps = {};\n return ReactModal.show(CloudFoundryResizeServerGroupModal, props, modalProps);\n }\n\n constructor(props: ICloudFoundryResizeServerGroupModalProps) {\n super(props);\n\n const { capacity, diskQuota, memory } = props.serverGroup;\n const { desired } = capacity;\n this.state = {\n initialValues: {\n desired,\n diskQuota: diskQuota,\n memory: memory,\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Resizing your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n }\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private submit = (values: ICloudFoundryResizeServerGroupValues): void => {\n const { desired, diskQuota, memory, reason } = values;\n const { serverGroup, application } = this.props;\n const capacity = {\n min: desired,\n max: desired,\n desired,\n };\n\n const command: ICloudFoundryResizeJob = {\n capacity,\n diskQuota,\n memory,\n reason,\n serverGroupName: serverGroup.name,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.resizeServerGroup(serverGroup, application, command);\n });\n };\n\n private renderDesired(formik: FormikProps<ICloudFoundryResizeServerGroupValues>): JSX.Element {\n const { serverGroup } = this.props;\n const { capacity } = serverGroup;\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Current size</div>\n <div className=\"col-md-4\">\n <div className=\"horizontal middle\">\n <input type=\"number\" className=\"NumberInput form-control\" value={capacity.desired} disabled={true} />\n <div className=\"sp-padding-xs-xaxis\">instances</div>\n </div>\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Resize to</div>\n <div className=\"col-md-4\">\n <div className=\"horizontal middle\">\n <FormikFormField\n name=\"desired\"\n input={(props) => <NumberInput {...props} min={0} />}\n touched={true}\n required={true}\n onChange={(value) => {\n formik.setFieldValue('min', value);\n formik.setFieldValue('max', value);\n }}\n />\n <div className=\"sp-padding-xs-xaxis\">instances</div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n private renderQuota(\n formik: FormikProps<ICloudFoundryResizeServerGroupValues>,\n field: string,\n fieldLabel: string,\n initialValue: number,\n ): JSX.Element {\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Current size</div>\n <div className=\"col-md-5\">\n <div className=\"horizontal middle\">\n <div className=\"StandardFieldLayout flex-container-h baseline margin-between-lg\">\n <input type=\"number\" className=\"NumberInput form-control\" value={initialValue} disabled={true} />\n </div>\n <div className=\"sp-padding-xs-xaxis\">{fieldLabel}</div>\n </div>\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Resize to</div>\n <div className=\"col-md-5\">\n <div className=\"horizontal middle\">\n <FormikFormField\n name={field}\n input={(props) => <NumberInput {...props} min={64} />}\n touched={true}\n required={true}\n onChange={(value) => {\n formik.setFieldValue('min', value);\n formik.setFieldValue('max', value);\n }}\n />\n <div className=\"sp-padding-xs-xaxis\">{fieldLabel}</div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n public render() {\n const { serverGroup } = this.props;\n const { diskQuota, memory } = serverGroup;\n const { initialValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryResizeServerGroupValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Resize {serverGroup.name}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n {this.renderDesired(formik)}\n {this.renderQuota(formik, 'diskQuota', 'Disk (MB)', diskQuota)}\n {this.renderQuota(formik, 'memory', 'Mem (MB)', memory)}\n <TaskReason reason={formik.values.reason} onChange={(val) => formik.setFieldValue('reason', val)} />\n </Form>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button\n type=\"submit\"\n className=\"btn btn-primary\"\n onClick={() => this.submit(formik.values)}\n disabled={!formik.isValid}\n >\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","import type { Formik } from 'formik';\nimport { Form } from 'formik';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\n\nimport type { Application, IModalComponentProps, IServerGroupJob } from '@spinnaker/core';\nimport {\n FormikFormField,\n ModalClose,\n noop,\n ReactInjector,\n ReactModal,\n ReactSelectInput,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n TaskReason,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\n\nexport interface ICloudFoundryRollbackServerGroupModalProps extends IModalComponentProps {\n application: Application;\n serverGroup: ICloudFoundryServerGroup;\n previousServerGroup: ICloudFoundryServerGroup;\n allServerGroups: ICloudFoundryServerGroup[];\n disabledServerGroups: ICloudFoundryServerGroup[];\n}\n\nexport interface ICloudFoundryRollbackServerGroupModalState {\n initialValues: ICloudFoundryRollbackServerGroupValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryRollbackServerGroupValues {\n restoreServerGroupName: string;\n reason?: string;\n}\n\nexport interface ICloudFoundryRollbackJob extends IServerGroupJob {\n rollbackType: string;\n rollbackContext: {\n rollbackServerGroupName: string;\n restoreServerGroupName: string;\n targetHealthyRollbackPercentage: number;\n };\n}\n\nexport class CloudFoundryRollbackServerGroupModal extends React.Component<\n ICloudFoundryRollbackServerGroupModalProps,\n ICloudFoundryRollbackServerGroupModalState\n> {\n public static defaultProps: Partial<ICloudFoundryRollbackServerGroupModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private formikRef = React.createRef<Formik<ICloudFoundryRollbackServerGroupValues>>();\n\n public static show(props: ICloudFoundryRollbackServerGroupModalProps): Promise<ICloudFoundryRollbackJob> {\n const modalProps = {};\n return ReactModal.show(CloudFoundryRollbackServerGroupModal, props, modalProps);\n }\n\n constructor(props: ICloudFoundryRollbackServerGroupModalProps) {\n super(props);\n\n const { previousServerGroup, serverGroup } = props;\n const { name } = serverGroup;\n this.state = {\n initialValues: {\n restoreServerGroupName: previousServerGroup ? previousServerGroup.name : undefined,\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Rollback ' + name,\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n }\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private submit = (values: ICloudFoundryRollbackServerGroupValues): void => {\n const { reason, restoreServerGroupName } = values;\n const { serverGroup, application } = this.props;\n\n const command: ICloudFoundryRollbackJob = {\n rollbackType: 'EXPLICIT',\n rollbackContext: {\n rollbackServerGroupName: serverGroup.name,\n restoreServerGroupName,\n targetHealthyRollbackPercentage: 100,\n },\n reason,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.rollbackServerGroup(serverGroup, application, command);\n });\n };\n\n public render() {\n const { allServerGroups, serverGroup } = this.props;\n const { initialValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryRollbackServerGroupValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Rollback {serverGroup.name}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n <div className=\"row\" style={{ marginTop: '10px', marginBottom: '10px' }}>\n <div className=\"col-md-3 sm-label-right\">Restore to</div>\n <div className=\"col-md-7\">\n <FormikFormField\n name=\"restoreServerGroupName\"\n fastField={true}\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={\n allServerGroups && allServerGroups.map((sg: ICloudFoundryServerGroup) => sg.name)\n }\n clearable={false}\n />\n )}\n required={true}\n />\n </div>\n </div>\n <TaskReason reason={formik.values.reason} onChange={(val) => formik.setFieldValue('reason', val)} />\n </Form>\n <div className=\"row\">\n <div className=\"col-sm-4 sm-label-right\">Rollback Operations</div>\n </div>\n <div className=\"row\">\n <div className=\"col-sm-11 col-sm-offset-1\">\n <ol>\n <li>\n Enable <em>{formik.values.restoreServerGroupName || 'previous server group'}</em>\n </li>\n <li>Disable {serverGroup.name}</li>\n </ol>\n <p>\n This rollback will affect server groups in {serverGroup.account} ({serverGroup.region}\n ).\n </p>\n </div>\n </div>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button type=\"submit\" className=\"btn btn-primary\" onClick={() => this.submit(formik.values)}>\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","import { filter, find, get, orderBy } from 'lodash';\nimport React from 'react';\nimport { Dropdown, Tooltip } from 'react-bootstrap';\n\nimport type { IOwnerOption, IServerGroupActionsProps, IServerGroupJob } from '@spinnaker/core';\nimport {\n AddEntityTagLinks,\n ClusterTargetBuilder,\n ConfirmationModalService,\n ReactInjector,\n ServerGroupWarningMessageService,\n SETTINGS,\n} from '@spinnaker/core';\n\nimport { CloudFoundryServerGroupCommandBuilder } from '../configure';\nimport { CloudFoundryCreateServerGroupModal } from '../configure/wizard/CreateServerGroupModal';\nimport type { ICloudFoundryServerGroup } from '../../domain';\nimport { CloudFoundryMapLoadBalancersModal } from './mapLoadBalancers/CloudFoundryMapLoadBalancersModal';\nimport { CloudFoundryUnmapLoadBalancersModal } from './mapLoadBalancers/CloudFoundryUnmapLoadBalancersModal';\nimport { CloudFoundryResizeServerGroupModal } from './resize/CloudFoundryResizeServerGroupModal';\nimport { CloudFoundryRollbackServerGroupModal } from './rollback/CloudFoundryRollbackServerGroupModal';\n\nexport interface ICloudFoundryServerGroupActionsProps extends IServerGroupActionsProps {\n serverGroup: ICloudFoundryServerGroup;\n}\n\nexport interface ICloudFoundryServerGroupJob extends IServerGroupJob {\n serverGroupId: string;\n}\n\nexport class CloudFoundryServerGroupActions extends React.Component<ICloudFoundryServerGroupActionsProps> {\n private isEnableLocked(): boolean {\n if (this.props.serverGroup.isDisabled) {\n const resizeTasks = (this.props.serverGroup.runningTasks || []).filter((task) =>\n get(task, 'execution.stages', []).some((stage) => stage.type === 'resizeServerGroup'),\n );\n if (resizeTasks.length) {\n return true;\n }\n }\n return false;\n }\n\n private isRollbackEnabled(): boolean {\n const { app, serverGroup } = this.props;\n\n if (!serverGroup.isDisabled) {\n // enabled server groups are always a candidate for rollback\n return true;\n }\n\n // if the server group selected for rollback is disabled, ensure that at least one enabled server group exists\n return app\n .getDataSource('serverGroups')\n .data.some(\n (g: ICloudFoundryServerGroup) =>\n g.cluster === serverGroup.cluster &&\n g.region === serverGroup.region &&\n g.account === serverGroup.account &&\n !g.isDisabled,\n );\n }\n\n private hasDisabledInstances(): boolean {\n // server group may have disabled instances (out of service) but NOT itself be disabled\n return this.props.serverGroup.isDisabled || get(this.props.serverGroup, 'instanceCounts.outOfService', 0) > 0;\n }\n\n private destroyServerGroup = (): void => {\n const { app, serverGroup } = this.props;\n\n const stateParams = {\n name: serverGroup.name,\n accountId: serverGroup.account,\n region: serverGroup.region,\n };\n\n const taskMonitor = {\n application: app,\n title: 'Destroying ' + serverGroup.name,\n onTaskComplete: () => {\n if (ReactInjector.$state.includes('**.serverGroup', stateParams)) {\n ReactInjector.$state.go('^');\n }\n },\n };\n\n const submitMethod = (params: ICloudFoundryServerGroupJob) => {\n params.serverGroupName = serverGroup.name;\n return ReactInjector.serverGroupWriter.destroyServerGroup(serverGroup, app, params);\n };\n\n const confirmationModalParams = {\n header: 'Really destroy ' + serverGroup.name + '?',\n buttonText: 'Destroy ' + serverGroup.name,\n account: serverGroup.account,\n taskMonitorConfig: taskMonitor,\n interestingHealthProviderNames: undefined as string[],\n submitMethod,\n askForReason: true,\n platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,\n platformHealthType: 'Cloud Foundry',\n };\n\n ServerGroupWarningMessageService.addDestroyWarningMessage(app, serverGroup, confirmationModalParams);\n\n if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {\n confirmationModalParams.interestingHealthProviderNames = ['Cloud Foundry'];\n }\n\n ConfirmationModalService.confirm(confirmationModalParams);\n };\n\n private disableServerGroup = (): void => {\n const { app, serverGroup } = this.props;\n const taskMonitor = {\n application: app,\n title: 'Disabling ' + serverGroup.name,\n };\n\n const submitMethod = (params: ICloudFoundryServerGroupJob) => {\n params.serverGroupName = serverGroup.name;\n return ReactInjector.serverGroupWriter.disableServerGroup(serverGroup, app.name, params);\n };\n\n const confirmationModalParams = {\n header: 'Really disable ' + serverGroup.name + '?',\n buttonText: 'Disable ' + serverGroup.name,\n account: serverGroup.account,\n interestingHealthProviderNames: undefined as string[],\n taskMonitorConfig: taskMonitor,\n platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,\n platformHealthType: 'Cloud Foundry',\n submitMethod,\n askForReason: true,\n };\n\n ServerGroupWarningMessageService.addDisableWarningMessage(app, serverGroup, confirmationModalParams);\n\n if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {\n confirmationModalParams.interestingHealthProviderNames = ['Cloud Foundry'];\n }\n\n ConfirmationModalService.confirm(confirmationModalParams);\n };\n\n private enableServerGroup = (): void => {\n if (!this.isRollbackEnabled()) {\n this.showEnableServerGroupModal();\n return;\n }\n\n const confirmationModalParams = {\n header: 'Rolling back?',\n body: `Spinnaker provides an orchestrated rollback feature to carefully restore a different version of this\n server group. Do you want to use the orchestrated rollback?`,\n buttonText: `Yes, let's start the orchestrated rollback`,\n cancelButtonText: 'No, I just want to enable the server group',\n };\n\n ConfirmationModalService.confirm(confirmationModalParams)\n .then(() => this.rollbackServerGroup())\n .catch(({ source }) => {\n // don't show the enable modal if the user cancels with the header button\n if (source === 'footer') {\n this.showEnableServerGroupModal();\n }\n });\n };\n\n private showEnableServerGroupModal(): void {\n const { app, serverGroup } = this.props;\n\n const taskMonitor = {\n application: app,\n title: 'Enabling ' + serverGroup.name,\n };\n\n const submitMethod = (params: ICloudFoundryServerGroupJob) => {\n params.serverGroupName = serverGroup.name;\n return ReactInjector.serverGroupWriter.enableServerGroup(serverGroup, app, params);\n };\n\n const confirmationModalParams = {\n header: 'Really enable ' + serverGroup.name + '?',\n buttonText: 'Enable ' + serverGroup.name,\n account: serverGroup.account,\n interestingHealthProviderNames: undefined as string[],\n taskMonitorConfig: taskMonitor,\n platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,\n platformHealthType: 'Cloud Foundry',\n submitMethod,\n askForReason: true,\n };\n\n if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {\n confirmationModalParams.interestingHealthProviderNames = ['Cloud Foundry'];\n }\n\n ConfirmationModalService.confirm(confirmationModalParams);\n }\n\n private rollbackServerGroup = (): void => {\n const { app } = this.props;\n\n let serverGroup: ICloudFoundryServerGroup = this.props.serverGroup;\n let previousServerGroup: ICloudFoundryServerGroup;\n let allServerGroups = (app.serverGroups.data as ICloudFoundryServerGroup[]).filter(\n (g) => g.cluster === serverGroup.cluster && g.region === serverGroup.region && g.account === serverGroup.account,\n );\n\n if (serverGroup.isDisabled) {\n // if the selected server group is disabled, it represents the server group that should be _rolled back to_\n previousServerGroup = serverGroup;\n\n /*\n * Find an existing server group to rollback, prefer the largest enabled server group.\n *\n * isRollbackEnabled() ensures that at least one enabled server group exists.\n */\n serverGroup = orderBy(\n allServerGroups.filter((g: ICloudFoundryServerGroup) => g.name !== previousServerGroup.name && !g.isDisabled),\n ['instanceCounts.total', 'createdTime'],\n ['desc', 'desc'],\n )[0] as ICloudFoundryServerGroup;\n }\n\n // the set of all server groups should not include the server group selected for rollback\n allServerGroups = allServerGroups.filter((g) => g.name !== serverGroup.name);\n\n if (allServerGroups.length === 1 && !previousServerGroup) {\n // if there is only one other server group, default to it being the rollback target\n previousServerGroup = allServerGroups[0];\n }\n const cluster = find(app.clusters, {\n name: serverGroup.cluster,\n account: serverGroup.account,\n serverGroups: [],\n });\n const disabledServerGroups: ICloudFoundryServerGroup[] = filter(cluster.serverGroups, {\n isDisabled: true,\n region: serverGroup.region,\n }) as ICloudFoundryServerGroup[];\n\n CloudFoundryRollbackServerGroupModal.show({\n serverGroup,\n previousServerGroup,\n disabledServerGroups: disabledServerGroups.sort((a, b) => b.name.localeCompare(a.name)),\n allServerGroups: allServerGroups.sort((a, b) => b.name.localeCompare(a.name)),\n application: app,\n });\n };\n\n private resizeServerGroup = (): void => {\n const { app, serverGroup } = this.props;\n CloudFoundryResizeServerGroupModal.show({ application: app, serverGroup });\n };\n\n private mapServerGroupToLoadBalancers = (): void => {\n const { app, serverGroup } = this.props;\n CloudFoundryMapLoadBalancersModal.show({ application: app, serverGroup });\n };\n\n private unmapServerGroupFromLoadBalancers = (): void => {\n const { app, serverGroup } = this.props;\n CloudFoundryUnmapLoadBalancersModal.show({ application: app, serverGroup });\n };\n\n private cloneServerGroup = (): void => {\n const { app, serverGroup } = this.props;\n const command = CloudFoundryServerGroupCommandBuilder.buildServerGroupCommandFromExisting(app, serverGroup);\n const title = `Clone ${serverGroup.name}`;\n CloudFoundryCreateServerGroupModal.show({\n application: app,\n command,\n isSourceConstant: true,\n serverGroup,\n title,\n });\n };\n\n public render(): JSX.Element {\n const { app, serverGroup } = this.props;\n const { loadBalancers } = serverGroup;\n const showEntityTags = SETTINGS.feature && SETTINGS.feature.entityTags;\n const entityTagTargets: IOwnerOption[] = ClusterTargetBuilder.buildClusterTargets(serverGroup);\n\n return (\n <Dropdown className=\"dropdown\" id=\"server-group-actions-dropdown\">\n <Dropdown.Toggle className=\"btn btn-sm btn-primary dropdown-toggle\">Server Group Actions</Dropdown.Toggle>\n <Dropdown.Menu className=\"dropdown-menu\">\n {this.isRollbackEnabled() && (\n <li>\n <a className=\"clickable\" onClick={this.rollbackServerGroup}>\n Rollback\n </a>\n </li>\n )}\n {this.isRollbackEnabled() && <li role=\"presentation\" className=\"divider\" />}\n <li>\n <a className=\"clickable\" onClick={this.resizeServerGroup}>\n Resize\n </a>\n </li>\n {!serverGroup.isDisabled && (\n <li>\n <a className=\"clickable\" onClick={this.disableServerGroup}>\n Disable\n </a>\n </li>\n )}\n {this.hasDisabledInstances() && !this.isEnableLocked() && (\n <li>\n <a className=\"clickable\" onClick={this.enableServerGroup}>\n Enable\n </a>\n </li>\n )}\n {this.isEnableLocked() && (\n <li className=\"disabled\">\n <Tooltip value=\"Cannot enable this server group until resize operation completes\" placement=\"left\">\n <a>\n <span className=\"small glyphicon glyphicon-lock\" /> Enable\n </a>\n </Tooltip>\n </li>\n )}\n <li>\n <a className=\"clickable\" onClick={this.destroyServerGroup}>\n Destroy\n </a>\n </li>\n <li>\n <a className=\"clickable\" onClick={this.cloneServerGroup}>\n Clone\n </a>\n </li>\n {!serverGroup.isDisabled && (\n <li>\n <a className=\"clickable\" onClick={this.mapServerGroupToLoadBalancers}>\n Map Load Balancer\n </a>\n </li>\n )}\n {!serverGroup.isDisabled && loadBalancers && !!loadBalancers.length && (\n <li>\n <a className=\"clickable\" onClick={this.unmapServerGroupFromLoadBalancers}>\n Unmap Load Balancer\n </a>\n </li>\n )}\n {showEntityTags && (\n <AddEntityTagLinks\n component={serverGroup}\n application={app}\n entityType=\"serverGroup\"\n ownerOptions={entityTagTargets}\n onUpdate={() => app.serverGroups.refresh()}\n />\n )}\n </Dropdown.Menu>\n </Dropdown>\n );\n }\n}\n","import { isEmpty } from 'lodash';\nimport { Observable } from 'rxjs';\n\nimport type { IServerGroupDetailsProps } from '@spinnaker/core';\nimport { ServerGroupReader } from '@spinnaker/core';\nimport type { ICloudFoundryLoadBalancer, ICloudFoundryServerGroup } from '../../domain';\n\nfunction extractServerGroupSummary(props: IServerGroupDetailsProps): PromiseLike<ICloudFoundryServerGroup> {\n const { app, serverGroup } = props;\n return app.ready().then(() => {\n let summary: ICloudFoundryServerGroup = app.serverGroups.data.find((toCheck: ICloudFoundryServerGroup) => {\n return (\n toCheck.name === serverGroup.name &&\n toCheck.account === serverGroup.accountId &&\n toCheck.region === serverGroup.region\n );\n });\n if (!summary) {\n app.loadBalancers.data.some((loadBalancer: ICloudFoundryLoadBalancer) => {\n if (loadBalancer.account === serverGroup.accountId && loadBalancer.region === serverGroup.region) {\n return loadBalancer.serverGroups.some((possibleServerGroup) => {\n if (possibleServerGroup.name === serverGroup.name) {\n summary = possibleServerGroup;\n return true;\n }\n return false;\n });\n }\n return false;\n });\n }\n return summary;\n });\n}\n\nexport function cfServerGroupDetailsGetter(\n props: IServerGroupDetailsProps,\n autoClose: () => void,\n): Observable<ICloudFoundryServerGroup> {\n const { app, serverGroup: serverGroupInfo } = props;\n return new Observable<ICloudFoundryServerGroup>((observer) => {\n extractServerGroupSummary(props).then((summary) => {\n ServerGroupReader.getServerGroup(\n app.name,\n serverGroupInfo.accountId,\n serverGroupInfo.region,\n serverGroupInfo.name,\n ).then((serverGroup: ICloudFoundryServerGroup) => {\n // it's possible the summary was not found because the clusters are still loading\n Object.assign(serverGroup, summary, { account: serverGroupInfo.accountId });\n\n if (!isEmpty(serverGroup)) {\n observer.next(serverGroup);\n } else {\n autoClose();\n }\n }, autoClose);\n }, autoClose);\n });\n}\n","import { CloudProviderRegistry } from '@spinnaker/core';\n\nimport './common/applicationName.validator';\nimport './help/cloudfoundry.help';\nimport { CloudFoundryInstanceDetails } from './instance/details';\nimport {\n CloudFoundryLoadBalancerDetails,\n CloudFoundryLoadBalancerTransformer,\n CloudFoundryMapLoadBalancerModal,\n} from './loadBalancer';\nimport cloudFoundryLogo from './logo/cf.logo.svg';\nimport './pipeline/config/validation/cfTargetImpedance.validator';\nimport './pipeline/config/validation/instanceSize.validator';\nimport './pipeline/config/validation/requiredRoutes.validator';\nimport './pipeline/stages/bakeCloudFoundryManifest/bakeCloudFoundryManifestStage';\nimport './pipeline/stages/cloneServerGroup/cloudFoundryCloneServerGroupStage.module';\nimport './pipeline/stages/createServiceBindings/cloudFoundryCreateServiceBindingsStage';\nimport './pipeline/stages/createServiceKey/cloudFoundryCreateServiceKeyStage.module';\nimport './pipeline/stages/deleteServiceBindings/cloudFoundryDeleteServiceBindingsStage';\nimport './pipeline/stages/deleteServiceKey/cloudFoundryDeleteServiceKeyStage.module';\nimport './pipeline/stages/deployService/cloudFoundryDeployServiceStage.module';\nimport './pipeline/stages/destroyAsg/cloudFoundryDestroyAsgStage.module';\nimport './pipeline/stages/destroyService/cloudFoundryDestroyServiceStage.module';\nimport './pipeline/stages/disableAsg/cloudFoundryDisableAsgStage.module';\nimport './pipeline/stages/enableAsg/cloudFoundryEnableAsgStage.module';\nimport './pipeline/stages/mapLoadBalancers/cloudFoundryMapLoadBalancersStage.module';\nimport './pipeline/stages/resizeAsg/cloudFoundryResizeAsgStage.module';\nimport './pipeline/stages/rollbackCluster/cloudFoundryRollbackClusterStage.module';\nimport './pipeline/stages/runJob/cloudFoundryRunJob.module';\nimport './pipeline/stages/shareService/cloudFoundryShareServiceStage.module';\nimport './pipeline/stages/unmapLoadBalancers/cloudFoundryUnmapLoadBalancersStage.module';\nimport './pipeline/stages/unshareService/cloudFoundryUnshareServiceStage.module';\nimport {\n ApplicationManagerSection,\n BoundServicesSection,\n BuildSection,\n cfServerGroupDetailsGetter,\n CloudFoundryCreateServerGroupModal,\n CloudFoundryServerGroupActions,\n CloudFoundryServerGroupCommandBuilderShim,\n CloudFoundryServerGroupTransformer,\n EnvironmentVariablesSection,\n HealthCheckSection,\n MetricsSection,\n PackageSection,\n ServerGroupInformationSection,\n ServerGroupSizingSection,\n} from './serverGroup';\n\nimport './logo/cf.logo.less';\n\nCloudProviderRegistry.registerProvider('cloudfoundry', {\n name: 'Cloud Foundry',\n logo: {\n path: cloudFoundryLogo,\n },\n loadBalancer: {\n transformer: CloudFoundryLoadBalancerTransformer,\n details: CloudFoundryLoadBalancerDetails,\n CreateLoadBalancerModal: CloudFoundryMapLoadBalancerModal,\n },\n serverGroup: {\n skipUpstreamStageCheck: true,\n transformer: CloudFoundryServerGroupTransformer,\n detailsActions: CloudFoundryServerGroupActions,\n detailsGetter: cfServerGroupDetailsGetter,\n detailsSections: [\n ServerGroupInformationSection,\n ApplicationManagerSection,\n MetricsSection,\n ServerGroupSizingSection,\n HealthCheckSection,\n BuildSection,\n PackageSection,\n BoundServicesSection,\n EnvironmentVariablesSection,\n ],\n CloneServerGroupModal: CloudFoundryCreateServerGroupModal,\n commandBuilder: CloudFoundryServerGroupCommandBuilderShim,\n scalingActivitiesEnabled: false, // FIXME enable?\n },\n instance: {\n details: CloudFoundryInstanceDetails,\n },\n});\n","import type { IProviderSettings } from '@spinnaker/core';\nimport { SETTINGS } from '@spinnaker/core';\n\nexport interface ICloudFoundryProviderSettings extends IProviderSettings {\n defaults: {\n account?: string;\n };\n}\n\nexport const CloudFoundryProviderSettings: ICloudFoundryProviderSettings = (SETTINGS.providers\n .cloudfoundry as ICloudFoundryProviderSettings) || { defaults: {} };\nif (CloudFoundryProviderSettings) {\n CloudFoundryProviderSettings.resetToOriginal = SETTINGS.resetProvider('cloudfoundry');\n}\n"],"names":["__defProp","__getOwnPropDesc","__decorateClass","observableFrom","AdditionalRollingRedBlackFields"],"mappings":"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"}
|