@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.
Files changed (286) hide show
  1. package/CHANGELOG.md +1085 -0
  2. package/LICENSE.txt +203 -0
  3. package/dist/cf.module.d.ts +24 -0
  4. package/dist/cf.settings.d.ts +7 -0
  5. package/dist/common/applicationName.validator.d.ts +1 -0
  6. package/dist/deploymentStrategy/CloudFoundryDeploymentStrategySelector.d.ts +21 -0
  7. package/dist/deploymentStrategy/strategies/redblack/redblack.strategy.d.ts +10 -0
  8. package/dist/deploymentStrategy/strategies/rollingredblack/AdditionalFields.d.ts +22 -0
  9. package/dist/domain/ICloudFoundryAccount.d.ts +7 -0
  10. package/dist/domain/ICloudFoundryApplication.d.ts +4 -0
  11. package/dist/domain/ICloudFoundryCluster.d.ts +5 -0
  12. package/dist/domain/ICloudFoundryDroplet.d.ts +19 -0
  13. package/dist/domain/ICloudFoundryInstance.d.ts +4 -0
  14. package/dist/domain/ICloudFoundryLoadBalancer.d.ts +25 -0
  15. package/dist/domain/ICloudFoundryServerGroup.d.ts +41 -0
  16. package/dist/domain/ICloudFoundrySpace.d.ts +9 -0
  17. package/dist/domain/index.d.ts +8 -0
  18. package/dist/help/cloudfoundry.help.d.ts +1 -0
  19. package/dist/image/image.reader.cf.d.ts +4 -0
  20. package/dist/index.d.ts +6 -0
  21. package/dist/index.js +5929 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/instance/details/CloudFoundryInstanceActions.d.ts +11 -0
  24. package/dist/instance/details/CloudFoundryInstanceDetails.d.ts +23 -0
  25. package/dist/instance/details/index.d.ts +1 -0
  26. package/dist/instance/details/sections/CloudFoundryInstanceDetailsSection.d.ts +9 -0
  27. package/dist/instance/details/sections/index.d.ts +1 -0
  28. package/dist/loadBalancer/configure/CloudFoundryMapLoadBalancerModal.d.ts +33 -0
  29. package/dist/loadBalancer/configure/loadBalancerDetails.d.ts +32 -0
  30. package/dist/loadBalancer/details/CloudFoundryLoadBalancerActions.d.ts +10 -0
  31. package/dist/loadBalancer/details/CloudFoundryLoadBalancerDetails.d.ts +26 -0
  32. package/dist/loadBalancer/details/index.d.ts +1 -0
  33. package/dist/loadBalancer/details/sections/CloudFoundryLoadBalancerDetailsSection.d.ts +9 -0
  34. package/dist/loadBalancer/details/sections/CloudFoundryLoadBalancerLinksSection.d.ts +9 -0
  35. package/dist/loadBalancer/details/sections/CloudFoundryLoadBalancerStatusSection.d.ts +9 -0
  36. package/dist/loadBalancer/details/sections/index.d.ts +3 -0
  37. package/dist/loadBalancer/index.d.ts +3 -0
  38. package/dist/loadBalancer/loadBalancer.transformer.d.ts +25 -0
  39. package/dist/pipeline/config/validation/cfTargetImpedance.validator.d.ts +9 -0
  40. package/dist/pipeline/config/validation/instanceSize.validator.d.ts +15 -0
  41. package/dist/pipeline/config/validation/requiredRoutes.validator.d.ts +4 -0
  42. package/dist/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfig.d.ts +7 -0
  43. package/dist/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfigForm.d.ts +13 -0
  44. package/dist/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestDetailsTab.d.ts +6 -0
  45. package/dist/pipeline/stages/bakeCloudFoundryManifest/bakeCloudFoundryManifestStage.d.ts +1 -0
  46. package/dist/pipeline/stages/cloneServerGroup/CloudFoundryCloneServerGroupStageConfig.d.ts +11 -0
  47. package/dist/pipeline/stages/cloneServerGroup/cloudFoundryCloneServerGroupStage.module.d.ts +1 -0
  48. package/dist/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsConfig.d.ts +9 -0
  49. package/dist/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsStageConfigForm.d.ts +26 -0
  50. package/dist/pipeline/stages/createServiceBindings/cloudFoundryCreateServiceBindingsStage.d.ts +1 -0
  51. package/dist/pipeline/stages/createServiceKey/CloudFoundryCreateServiceKeyStageConfig.d.ts +19 -0
  52. package/dist/pipeline/stages/createServiceKey/cloudFoundryCreateServiceKeyStage.module.d.ts +1 -0
  53. package/dist/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsConfig.d.ts +10 -0
  54. package/dist/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsStageConfigForm.d.ts +20 -0
  55. package/dist/pipeline/stages/deleteServiceBindings/cloudFoundryDeleteServiceBindingsStage.d.ts +1 -0
  56. package/dist/pipeline/stages/deleteServiceKey/CloudFoundryDeleteServiceKeyStageConfig.d.ts +19 -0
  57. package/dist/pipeline/stages/deleteServiceKey/cloudFoundryDeleteServiceKeyStage.module.d.ts +1 -0
  58. package/dist/pipeline/stages/deployService/CloudFoundryDeployServiceStageConfig.d.ts +24 -0
  59. package/dist/pipeline/stages/deployService/CreateServiceInstanceDirectInput.d.ts +29 -0
  60. package/dist/pipeline/stages/deployService/CreateUserProvidedInput.d.ts +19 -0
  61. package/dist/pipeline/stages/deployService/ICloudFoundryServiceManifestSource.d.ts +24 -0
  62. package/dist/pipeline/stages/deployService/ServiceTagsInput.d.ts +17 -0
  63. package/dist/pipeline/stages/deployService/cloudFoundryDeployServiceStage.module.d.ts +1 -0
  64. package/dist/pipeline/stages/destroyAsg/cloudFoundryDestroyAsgStage.module.d.ts +1 -0
  65. package/dist/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfig.d.ts +5 -0
  66. package/dist/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfigForm.d.ts +19 -0
  67. package/dist/pipeline/stages/destroyService/cloudFoundryDestroyServiceStage.module.d.ts +1 -0
  68. package/dist/pipeline/stages/disableAsg/cloudFoundryDisableAsgStage.module.d.ts +1 -0
  69. package/dist/pipeline/stages/enableAsg/cloudFoundryEnableAsgStage.module.d.ts +1 -0
  70. package/dist/pipeline/stages/mapLoadBalancers/cloudFoundryMapLoadBalancersStage.module.d.ts +1 -0
  71. package/dist/pipeline/stages/resizeAsg/CloudFoundryResizeAsgStageConfig.d.ts +17 -0
  72. package/dist/pipeline/stages/resizeAsg/cloudFoundryResizeAsgStage.module.d.ts +1 -0
  73. package/dist/pipeline/stages/rollbackCluster/CloudFoundryRollbackClusterStageConfig.d.ts +17 -0
  74. package/dist/pipeline/stages/rollbackCluster/cloudFoundryRollbackClusterStage.module.d.ts +1 -0
  75. package/dist/pipeline/stages/runJob/CloudFoundryRunJobStageConfig.d.ts +14 -0
  76. package/dist/pipeline/stages/runJob/RunJobExecutionDetails.d.ts +6 -0
  77. package/dist/pipeline/stages/runJob/cloudFoundryRunJob.module.d.ts +1 -0
  78. package/dist/pipeline/stages/shareService/CloudFoundryShareServiceExecutionDetails.d.ts +6 -0
  79. package/dist/pipeline/stages/shareService/CloudFoundryShareServiceStageConfig.d.ts +21 -0
  80. package/dist/pipeline/stages/shareService/cloudFoundryShareServiceStage.module.d.ts +1 -0
  81. package/dist/pipeline/stages/unmapLoadBalancers/cloudFoundryUnmapLoadBalancersStage.module.d.ts +1 -0
  82. package/dist/pipeline/stages/unshareService/CloudFoundryUnshareServiceExecutionDetails.d.ts +6 -0
  83. package/dist/pipeline/stages/unshareService/CloudFoundryUnshareServiceStageConfig.d.ts +18 -0
  84. package/dist/pipeline/stages/unshareService/cloudFoundryUnshareServiceStage.module.d.ts +1 -0
  85. package/dist/presentation/forms/index.d.ts +2 -0
  86. package/dist/presentation/forms/inputs/FormikConfigField.d.ts +10 -0
  87. package/dist/presentation/forms/inputs/index.d.ts +1 -0
  88. package/dist/presentation/forms/serverGroup/Buildpacks.d.ts +8 -0
  89. package/dist/presentation/forms/serverGroup/EnvironmentVariables.d.ts +8 -0
  90. package/dist/presentation/forms/serverGroup/HealthCheck.d.ts +12 -0
  91. package/dist/presentation/forms/serverGroup/InstanceParameters.d.ts +12 -0
  92. package/dist/presentation/forms/serverGroup/Routes.d.ts +10 -0
  93. package/dist/presentation/forms/serverGroup/Services.d.ts +5 -0
  94. package/dist/presentation/forms/serverGroup/index.d.ts +6 -0
  95. package/dist/presentation/index.d.ts +3 -0
  96. package/dist/presentation/pipeline/index.d.ts +1 -0
  97. package/dist/presentation/pipeline/stages/CloudFoundryAsgStageConfig.d.ts +14 -0
  98. package/dist/presentation/pipeline/stages/CloudFoundryLoadBalancersExecutionDetails.d.ts +6 -0
  99. package/dist/presentation/pipeline/stages/CloudFoundryLoadBalancersStageConfig.d.ts +25 -0
  100. package/dist/presentation/pipeline/stages/CloudFoundryServiceExecutionDetails.d.ts +6 -0
  101. package/dist/presentation/pipeline/stages/CloudFoundryServiceKeyExecutionDetails.d.ts +6 -0
  102. package/dist/presentation/pipeline/stages/index.d.ts +5 -0
  103. package/dist/presentation/widgets/accountRegionClusterSelector/AccountRegionClusterSelector.d.ts +33 -0
  104. package/dist/presentation/widgets/accountRegionClusterSelector/FormikAccountRegionClusterSelector.d.ts +32 -0
  105. package/dist/presentation/widgets/accountRegionClusterSelector/index.d.ts +2 -0
  106. package/dist/presentation/widgets/index.d.ts +1 -0
  107. package/dist/presentation/widgets/recentLogs/CloudFoundryRecentLogs.d.ts +27 -0
  108. package/dist/routeDomains/index.d.ts +1 -0
  109. package/dist/routeDomains/routeDomainSelectField.d.ts +15 -0
  110. package/dist/serverGroup/configure/index.d.ts +4 -0
  111. package/dist/serverGroup/configure/serverGroupCommandBuilder.service.cf.d.ts +12 -0
  112. package/dist/serverGroup/configure/serverGroupCommandBuilderShim.service.cf.d.ts +14 -0
  113. package/dist/serverGroup/configure/serverGroupConfigurationModel.cf.d.ts +65 -0
  114. package/dist/serverGroup/configure/wizard/CreateServerGroupModal.d.ts +31 -0
  115. package/dist/serverGroup/configure/wizard/ServerGroupTemplateSelection.d.ts +16 -0
  116. package/dist/serverGroup/configure/wizard/sections/artifactSettings/ArtifactSettings.cf.d.ts +17 -0
  117. package/dist/serverGroup/configure/wizard/sections/artifactSettings/ConstantArtifactSettings.cf.d.ts +11 -0
  118. package/dist/serverGroup/configure/wizard/sections/basicSettings/BasicSettings.cf.d.ts +24 -0
  119. package/dist/serverGroup/configure/wizard/sections/cloneSettings/CloneSettings.cf.d.ts +21 -0
  120. package/dist/serverGroup/configure/wizard/sections/configurationSettings/ConfigurationSettings.cf.d.ts +22 -0
  121. package/dist/serverGroup/details/cfServerGroupDetailsGetter.d.ts +4 -0
  122. package/dist/serverGroup/details/cloudFoundryServerGroupActions.d.ts +24 -0
  123. package/dist/serverGroup/details/mapLoadBalancers/CloudFoundryMapLoadBalancersModal.d.ts +28 -0
  124. package/dist/serverGroup/details/mapLoadBalancers/CloudFoundryUnmapLoadBalancersModal.d.ts +28 -0
  125. package/dist/serverGroup/details/resize/CloudFoundryResizeServerGroupModal.d.ts +37 -0
  126. package/dist/serverGroup/details/rollback/CloudFoundryRollbackServerGroupModal.d.ts +36 -0
  127. package/dist/serverGroup/details/sections/ApplicationManagerSection.d.ts +6 -0
  128. package/dist/serverGroup/details/sections/BoundServicesSection.d.ts +6 -0
  129. package/dist/serverGroup/details/sections/BuildSection.d.ts +6 -0
  130. package/dist/serverGroup/details/sections/EnvironmentVariablesSection.d.ts +6 -0
  131. package/dist/serverGroup/details/sections/HealthCheckSection.d.ts +6 -0
  132. package/dist/serverGroup/details/sections/ICloudFoundryServerGroupDetailsSectionProps.d.ts +5 -0
  133. package/dist/serverGroup/details/sections/MetricsSection.d.ts +6 -0
  134. package/dist/serverGroup/details/sections/PackageSection.d.ts +6 -0
  135. package/dist/serverGroup/details/sections/ServerGroupInformationSection.d.ts +6 -0
  136. package/dist/serverGroup/details/sections/ServerGroupSizingSection.d.ts +6 -0
  137. package/dist/serverGroup/details/sections/index.d.ts +9 -0
  138. package/dist/serverGroup/index.d.ts +5 -0
  139. package/dist/serverGroup/serverGroup.transformer.d.ts +10 -0
  140. package/package.json +52 -0
  141. package/src/cf.module.ts +85 -0
  142. package/src/cf.settings.ts +14 -0
  143. package/src/common/applicationName.validator.ts +43 -0
  144. package/src/common/cloudFoundry.less +16 -0
  145. package/src/deploymentStrategy/CloudFoundryDeploymentStrategySelector.tsx +175 -0
  146. package/src/deploymentStrategy/strategies/redblack/redblack.strategy.ts +11 -0
  147. package/src/deploymentStrategy/strategies/rollingredblack/AdditionalFields.tsx +161 -0
  148. package/src/domain/ICloudFoundryAccount.ts +9 -0
  149. package/src/domain/ICloudFoundryApplication.ts +5 -0
  150. package/src/domain/ICloudFoundryCluster.ts +6 -0
  151. package/src/domain/ICloudFoundryDroplet.ts +22 -0
  152. package/src/domain/ICloudFoundryInstance.ts +5 -0
  153. package/src/domain/ICloudFoundryLoadBalancer.ts +29 -0
  154. package/src/domain/ICloudFoundryServerGroup.ts +47 -0
  155. package/src/domain/ICloudFoundrySpace.ts +10 -0
  156. package/src/domain/index.ts +8 -0
  157. package/src/help/cloudfoundry.help.ts +31 -0
  158. package/src/image/image.reader.cf.ts +17 -0
  159. package/src/index.ts +7 -0
  160. package/src/instance/details/CloudFoundryInstanceActions.tsx +59 -0
  161. package/src/instance/details/CloudFoundryInstanceDetails.tsx +154 -0
  162. package/src/instance/details/index.ts +1 -0
  163. package/src/instance/details/sections/CloudFoundryInstanceDetailsSection.tsx +49 -0
  164. package/src/instance/details/sections/index.ts +1 -0
  165. package/src/loadBalancer/configure/CloudFoundryMapLoadBalancerModal.tsx +210 -0
  166. package/src/loadBalancer/configure/loadBalancerDetails.tsx +228 -0
  167. package/src/loadBalancer/details/CloudFoundryLoadBalancerActions.tsx +61 -0
  168. package/src/loadBalancer/details/CloudFoundryLoadBalancerDetails.tsx +148 -0
  169. package/src/loadBalancer/details/index.ts +1 -0
  170. package/src/loadBalancer/details/sections/CloudFoundryLoadBalancerDetailsSection.tsx +63 -0
  171. package/src/loadBalancer/details/sections/CloudFoundryLoadBalancerLinksSection.tsx +34 -0
  172. package/src/loadBalancer/details/sections/CloudFoundryLoadBalancerStatusSection.tsx +27 -0
  173. package/src/loadBalancer/details/sections/index.ts +3 -0
  174. package/src/loadBalancer/index.ts +3 -0
  175. package/src/loadBalancer/loadBalancer.transformer.ts +144 -0
  176. package/src/logo/cf.icon.svg +12 -0
  177. package/src/logo/cf.logo.less +5 -0
  178. package/src/logo/cf.logo.svg +12 -0
  179. package/src/pipeline/config/validation/cfTargetImpedance.validator.ts +60 -0
  180. package/src/pipeline/config/validation/instanceSize.validator.ts +66 -0
  181. package/src/pipeline/config/validation/requiredRoutes.validator.ts +26 -0
  182. package/src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfig.tsx +62 -0
  183. package/src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfigForm.tsx +174 -0
  184. package/src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestDetailsTab.tsx +35 -0
  185. package/src/pipeline/stages/bakeCloudFoundryManifest/bakeCloudFoundryManifestConfig.spec.tsx +80 -0
  186. package/src/pipeline/stages/bakeCloudFoundryManifest/bakeCloudFoundryManifestStage.ts +35 -0
  187. package/src/pipeline/stages/cloneServerGroup/CloudFoundryCloneServerGroupStageConfig.tsx +113 -0
  188. package/src/pipeline/stages/cloneServerGroup/cloudFoundryCloneServerGroupStage.module.ts +14 -0
  189. package/src/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsConfig.spec.tsx +35 -0
  190. package/src/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsConfig.tsx +69 -0
  191. package/src/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsStageConfigForm.tsx +230 -0
  192. package/src/pipeline/stages/createServiceBindings/cloudFoundryCreateServiceBindingsStage.ts +19 -0
  193. package/src/pipeline/stages/createServiceBindings/cloudFoundryCreateServiceBindingsStageForm.spec.tsx +50 -0
  194. package/src/pipeline/stages/createServiceKey/CloudFoundryCreateServiceKeyStageConfig.tsx +116 -0
  195. package/src/pipeline/stages/createServiceKey/cloudFoundryCreateServiceKeyStage.module.ts +21 -0
  196. package/src/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsConfig.tsx +69 -0
  197. package/src/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsStageConfigForm.tsx +158 -0
  198. package/src/pipeline/stages/deleteServiceBindings/cloudFoundryDeleteServiceBindingsStage.ts +19 -0
  199. package/src/pipeline/stages/deleteServiceBindings/cloudFoundryDeleteServiceBindingsStageForm.spec.tsx +49 -0
  200. package/src/pipeline/stages/deleteServiceKey/CloudFoundryDeleteServiceKeyStageConfig.tsx +116 -0
  201. package/src/pipeline/stages/deleteServiceKey/cloudFoundryDeleteServiceKeyStage.module.ts +22 -0
  202. package/src/pipeline/stages/deployService/CloudFoundryDeployServiceStageConfig.tsx +198 -0
  203. package/src/pipeline/stages/deployService/CreateServiceInstanceDirectInput.tsx +164 -0
  204. package/src/pipeline/stages/deployService/CreateUserProvidedInput.tsx +116 -0
  205. package/src/pipeline/stages/deployService/ICloudFoundryServiceManifestSource.ts +27 -0
  206. package/src/pipeline/stages/deployService/ServiceTagsInput.tsx +89 -0
  207. package/src/pipeline/stages/deployService/cloudFoundryDeployServiceStage.module.ts +153 -0
  208. package/src/pipeline/stages/deployService/cloudfoundryDeployServiceStage.less +12 -0
  209. package/src/pipeline/stages/destroyAsg/cloudFoundryDestroyAsgStage.module.ts +23 -0
  210. package/src/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfig.tsx +46 -0
  211. package/src/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfigForm.tsx +134 -0
  212. package/src/pipeline/stages/destroyService/cloudFoundryDestroyServiceStage.module.ts +20 -0
  213. package/src/pipeline/stages/disableAsg/cloudFoundryDisableAsgStage.module.ts +18 -0
  214. package/src/pipeline/stages/enableAsg/cloudFoundryEnableAsgStage.module.ts +18 -0
  215. package/src/pipeline/stages/mapLoadBalancers/cloudFoundryMapLoadBalancersStage.module.ts +21 -0
  216. package/src/pipeline/stages/resizeAsg/CloudFoundryResizeAsgStageConfig.tsx +148 -0
  217. package/src/pipeline/stages/resizeAsg/cloudFoundryResizeAsgStage.module.ts +52 -0
  218. package/src/pipeline/stages/rollbackCluster/CloudFoundryRollbackClusterStageConfig.tsx +90 -0
  219. package/src/pipeline/stages/rollbackCluster/cloudFoundryRollbackClusterStage.module.ts +19 -0
  220. package/src/pipeline/stages/runJob/CloudFoundryRunJobStageConfig.tsx +100 -0
  221. package/src/pipeline/stages/runJob/RunJobExecutionDetails.tsx +62 -0
  222. package/src/pipeline/stages/runJob/cloudFoundryRunJob.module.ts +24 -0
  223. package/src/pipeline/stages/shareService/CloudFoundryShareServiceExecutionDetails.tsx +52 -0
  224. package/src/pipeline/stages/shareService/CloudFoundryShareServiceStageConfig.tsx +141 -0
  225. package/src/pipeline/stages/shareService/cloudFoundryShareServiceStage.module.ts +21 -0
  226. package/src/pipeline/stages/unmapLoadBalancers/cloudFoundryUnmapLoadBalancersStage.module.ts +21 -0
  227. package/src/pipeline/stages/unshareService/CloudFoundryUnshareServiceExecutionDetails.tsx +46 -0
  228. package/src/pipeline/stages/unshareService/CloudFoundryUnshareServiceStageConfig.tsx +114 -0
  229. package/src/pipeline/stages/unshareService/cloudFoundryUnshareServiceStage.module.ts +21 -0
  230. package/src/presentation/forms/index.ts +2 -0
  231. package/src/presentation/forms/inputs/FormikConfigField.tsx +28 -0
  232. package/src/presentation/forms/inputs/index.ts +1 -0
  233. package/src/presentation/forms/serverGroup/Buildpacks.tsx +69 -0
  234. package/src/presentation/forms/serverGroup/EnvironmentVariables.tsx +94 -0
  235. package/src/presentation/forms/serverGroup/HealthCheck.tsx +57 -0
  236. package/src/presentation/forms/serverGroup/InstanceParameters.tsx +63 -0
  237. package/src/presentation/forms/serverGroup/Routes.tsx +74 -0
  238. package/src/presentation/forms/serverGroup/Services.tsx +62 -0
  239. package/src/presentation/forms/serverGroup/index.ts +6 -0
  240. package/src/presentation/index.ts +3 -0
  241. package/src/presentation/pipeline/index.ts +1 -0
  242. package/src/presentation/pipeline/stages/CloudFoundryAsgStageConfig.tsx +67 -0
  243. package/src/presentation/pipeline/stages/CloudFoundryLoadBalancersExecutionDetails.tsx +53 -0
  244. package/src/presentation/pipeline/stages/CloudFoundryLoadBalancersStageConfig.tsx +116 -0
  245. package/src/presentation/pipeline/stages/CloudFoundryServiceExecutionDetails.tsx +46 -0
  246. package/src/presentation/pipeline/stages/CloudFoundryServiceKeyExecutionDetails.tsx +52 -0
  247. package/src/presentation/pipeline/stages/index.ts +5 -0
  248. package/src/presentation/widgets/accountRegionClusterSelector/AccountRegionClusterSelector.spec.tsx +385 -0
  249. package/src/presentation/widgets/accountRegionClusterSelector/AccountRegionClusterSelector.tsx +231 -0
  250. package/src/presentation/widgets/accountRegionClusterSelector/FormikAccountRegionClusterSelector.tsx +164 -0
  251. package/src/presentation/widgets/accountRegionClusterSelector/index.ts +2 -0
  252. package/src/presentation/widgets/index.ts +1 -0
  253. package/src/presentation/widgets/recentLogs/CloudFoundryRecentLogs.tsx +112 -0
  254. package/src/routeDomains/index.ts +1 -0
  255. package/src/routeDomains/routeDomainSelectField.tsx +48 -0
  256. package/src/serverGroup/configure/index.ts +4 -0
  257. package/src/serverGroup/configure/serverGroupCommandBuilder.service.cf.ts +168 -0
  258. package/src/serverGroup/configure/serverGroupCommandBuilderShim.service.cf.ts +64 -0
  259. package/src/serverGroup/configure/serverGroupConfigurationModel.cf.ts +77 -0
  260. package/src/serverGroup/configure/wizard/CreateServerGroupModal.tsx +194 -0
  261. package/src/serverGroup/configure/wizard/ServerGroupTemplateSelection.tsx +55 -0
  262. package/src/serverGroup/configure/wizard/sections/artifactSettings/ArtifactSettings.cf.tsx +78 -0
  263. package/src/serverGroup/configure/wizard/sections/artifactSettings/ConstantArtifactSettings.cf.tsx +49 -0
  264. package/src/serverGroup/configure/wizard/sections/basicSettings/BasicSettings.cf.tsx +163 -0
  265. package/src/serverGroup/configure/wizard/sections/cloneSettings/CloneSettings.cf.tsx +101 -0
  266. package/src/serverGroup/configure/wizard/sections/configurationSettings/ConfigurationSettings.cf.tsx +230 -0
  267. package/src/serverGroup/configure/wizard/serverGroup.less +3 -0
  268. package/src/serverGroup/details/cfServerGroupDetailsGetter.ts +60 -0
  269. package/src/serverGroup/details/cloudFoundryServerGroupActions.tsx +365 -0
  270. package/src/serverGroup/details/mapLoadBalancers/CloudFoundryMapLoadBalancersModal.tsx +137 -0
  271. package/src/serverGroup/details/mapLoadBalancers/CloudFoundryUnmapLoadBalancersModal.tsx +137 -0
  272. package/src/serverGroup/details/resize/CloudFoundryResizeServerGroupModal.tsx +232 -0
  273. package/src/serverGroup/details/rollback/CloudFoundryRollbackServerGroupModal.tsx +179 -0
  274. package/src/serverGroup/details/sections/ApplicationManagerSection.tsx +28 -0
  275. package/src/serverGroup/details/sections/BoundServicesSection.tsx +39 -0
  276. package/src/serverGroup/details/sections/BuildSection.tsx +61 -0
  277. package/src/serverGroup/details/sections/EnvironmentVariablesSection.tsx +34 -0
  278. package/src/serverGroup/details/sections/HealthCheckSection.tsx +28 -0
  279. package/src/serverGroup/details/sections/ICloudFoundryServerGroupDetailsSectionProps.ts +6 -0
  280. package/src/serverGroup/details/sections/MetricsSection.tsx +28 -0
  281. package/src/serverGroup/details/sections/PackageSection.tsx +27 -0
  282. package/src/serverGroup/details/sections/ServerGroupInformationSection.tsx +58 -0
  283. package/src/serverGroup/details/sections/ServerGroupSizingSection.tsx +27 -0
  284. package/src/serverGroup/details/sections/index.ts +9 -0
  285. package/src/serverGroup/index.ts +5 -0
  286. package/src/serverGroup/serverGroup.transformer.ts +42 -0
@@ -0,0 +1,158 @@
1
+ import React from 'react';
2
+ import { from as observableFrom, Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+
5
+ import type { Application, IAccount, IFormikStageConfigInjectedProps, IRegion } from '@spinnaker/core';
6
+ import { AccountService, NgReact, StageConfigField, StageConstants, TextInput } from '@spinnaker/core';
7
+
8
+ import { AccountRegionClusterSelector } from '../../../presentation/widgets/accountRegionClusterSelector';
9
+
10
+ interface ICloudFoundryDeleteServiceBindingsStageConfigState {
11
+ accounts: IAccount[];
12
+ regions: string[];
13
+ application: Application;
14
+ }
15
+
16
+ export class CloudFoundryDeleteServiceBindingsStageConfigForm extends React.Component<
17
+ IFormikStageConfigInjectedProps,
18
+ ICloudFoundryDeleteServiceBindingsStageConfigState
19
+ > {
20
+ private destroy$ = new Subject();
21
+
22
+ constructor(props: IFormikStageConfigInjectedProps, context: any) {
23
+ super(props, context);
24
+ this.state = {
25
+ accounts: [],
26
+ regions: [],
27
+ application: props.application,
28
+ };
29
+ observableFrom(AccountService.listAccounts('cloudfoundry'))
30
+ .pipe(takeUntil(this.destroy$))
31
+ .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts }));
32
+ }
33
+
34
+ public componentDidMount() {
35
+ const stage = this.props.formik.values;
36
+ this.props.formik.setFieldValue('cloudProvider', 'cloudfoundry');
37
+ if (stage.serviceUnbindingRequests && stage.serviceUnbindingRequests.length === 0) {
38
+ this.props.formik.setFieldValue('serviceUnbindingRequests', [
39
+ {
40
+ serviceInstanceName: '',
41
+ updatable: false,
42
+ },
43
+ ]);
44
+ }
45
+ if (stage.credentials) {
46
+ this.loadRegions(stage.credentials);
47
+ }
48
+ }
49
+
50
+ public componentWillUnmount(): void {
51
+ this.destroy$.next();
52
+ }
53
+
54
+ private loadRegions = (creds: string) => {
55
+ this.setState({ regions: [] });
56
+ observableFrom(AccountService.getRegionsForAccount(creds))
57
+ .pipe(takeUntil(this.destroy$))
58
+ .subscribe((regionList: IRegion[]) => {
59
+ const regions = regionList.map((r) => r.name);
60
+ regions.sort((a, b) => a.localeCompare(b));
61
+ this.setState({ regions: regions });
62
+ });
63
+ };
64
+
65
+ private addInputArtifact = () => {
66
+ const stage = this.props.formik.values;
67
+ const newServiceUnbindingRequests = [
68
+ ...stage.serviceUnbindingRequests,
69
+ {
70
+ serviceInstanceName: '',
71
+ updatable: false,
72
+ },
73
+ ];
74
+
75
+ this.props.formik.setFieldValue('serviceUnbindingRequests', newServiceUnbindingRequests);
76
+ };
77
+
78
+ private removeInputArtifact = (index: number) => {
79
+ const stage = this.props.formik.values;
80
+ const newServiceUnbindingRequests = [...stage.serviceUnbindingRequests];
81
+ newServiceUnbindingRequests.splice(index, 1);
82
+ this.props.formik.setFieldValue('serviceUnbindingRequests', newServiceUnbindingRequests);
83
+ };
84
+
85
+ private targetUpdated = (target: string) => {
86
+ this.props.formik.setFieldValue('target', target);
87
+ };
88
+
89
+ private accountRegionClusterUpdated = (stage: any): void => {
90
+ this.props.formik.setFieldValue(`cluster`, stage.cluster);
91
+ this.props.formik.setFieldValue(`credentials`, stage.credentials);
92
+ this.props.formik.setFieldValue(`region`, stage.region);
93
+ };
94
+
95
+ public render() {
96
+ const stage = this.props.formik.values;
97
+ const { accounts, application } = this.state;
98
+ const { target } = stage;
99
+ const { TargetSelect } = NgReact;
100
+
101
+ return (
102
+ <>
103
+ <h4>Basic Settings</h4>
104
+ <div className="form-horizontal">
105
+ <AccountRegionClusterSelector
106
+ accounts={accounts}
107
+ application={application}
108
+ cloudProvider={'cloudfoundry'}
109
+ isSingleRegion={true}
110
+ onComponentUpdate={this.accountRegionClusterUpdated}
111
+ component={stage}
112
+ />
113
+ </div>
114
+ <StageConfigField label="Target">
115
+ <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />
116
+ </StageConfigField>
117
+ <h4>Service Unbindings</h4>
118
+ {stage.serviceUnbindingRequests && stage.serviceUnbindingRequests.length > 0 && (
119
+ <div className="row form-group">
120
+ {stage.serviceUnbindingRequests.map((a: any, index: number) => {
121
+ return (
122
+ <div key={index}>
123
+ <div className="col-md-offset-1 col-md-8">
124
+ <StageConfigField label="Service Instance Name">
125
+ <TextInput
126
+ onChange={(e: React.ChangeEvent<any>) => {
127
+ this.props.formik.setFieldValue(
128
+ `serviceUnbindingRequests[${index}].serviceInstanceName`,
129
+ e.target.value,
130
+ );
131
+ }}
132
+ value={a.serviceInstanceName}
133
+ />
134
+ </StageConfigField>
135
+ </div>
136
+ <div className="col-md-1">
137
+ <div className="form-control-static">
138
+ <button onClick={() => this.removeInputArtifact(index)}>
139
+ <span className="glyphicon glyphicon-trash" />
140
+ <span className="sr-only">Remove field</span>
141
+ </button>
142
+ </div>
143
+ </div>
144
+ </div>
145
+ );
146
+ })}
147
+ </div>
148
+ )}
149
+ <StageConfigField fieldColumns={8} label={''}>
150
+ <button className="btn btn-block btn-sm add-new" onClick={() => this.addInputArtifact()}>
151
+ <span className="glyphicon glyphicon-plus-sign" />
152
+ Add Service Unbinding
153
+ </button>
154
+ </StageConfigField>
155
+ </>
156
+ );
157
+ }
158
+ }
@@ -0,0 +1,19 @@
1
+ import { ExecutionDetailsTasks, Registry } from '@spinnaker/core';
2
+
3
+ import {
4
+ CloudFoundryDeleteServiceBindingsConfig,
5
+ validateCloudFoundryDeleteServiceBindingsStage,
6
+ } from './CloudFoundryDeleteServiceBindingsConfig';
7
+
8
+ export const CF_DELETE_SERVICE_BINDINGS_STAGE_KEY = 'cloudFoundryDeleteServiceBindings';
9
+
10
+ Registry.pipeline.registerStage({
11
+ label: 'Delete Service Bindings',
12
+ description: 'Delete CF service bindings with optional parameters.',
13
+ key: CF_DELETE_SERVICE_BINDINGS_STAGE_KEY,
14
+ component: CloudFoundryDeleteServiceBindingsConfig,
15
+ producesArtifacts: false,
16
+ cloudProvider: 'cloudfoundry',
17
+ executionDetailsSections: [ExecutionDetailsTasks],
18
+ validateFn: validateCloudFoundryDeleteServiceBindingsStage,
19
+ });
@@ -0,0 +1,49 @@
1
+ import { mock } from 'angular';
2
+ import { mount } from 'enzyme';
3
+ import React from 'react';
4
+
5
+ import type { IStage } from '@spinnaker/core';
6
+ import { ApplicationModelBuilder, REACT_MODULE, SpinFormik, StageConfigField } from '@spinnaker/core';
7
+ import { mockServerGroupDataSourceConfig } from '@spinnaker/mocks';
8
+
9
+ import { CloudFoundryDeleteServiceBindingsStageConfigForm } from './CloudFoundryDeleteServiceBindingsStageConfigForm';
10
+
11
+ describe('<CloudFoundryDeleteServiceBindingsStageConfigForm/>', function () {
12
+ beforeEach(mock.module(REACT_MODULE));
13
+ beforeEach(mock.inject());
14
+
15
+ const getProps = () => {
16
+ return {
17
+ application: ApplicationModelBuilder.createApplicationForTests('my-application', mockServerGroupDataSourceConfig),
18
+ pipeline: {
19
+ application: 'my-application',
20
+ id: 'pipeline-id',
21
+ limitConcurrent: true,
22
+ keepWaitingPipelines: true,
23
+ name: 'My Pipeline',
24
+ parameterConfig: [],
25
+ stages: [],
26
+ triggers: [],
27
+ },
28
+ } as any;
29
+ };
30
+
31
+ it('loads component correctly with 2 serviceUnbindingRequests', function () {
32
+ const stage = ({
33
+ serviceUnbindingRequests: [{ serviceInstanceName: 'service1' }, { serviceInstanceName: 'service2' }],
34
+ } as unknown) as IStage;
35
+
36
+ const props = getProps();
37
+
38
+ const component = mount(
39
+ <SpinFormik
40
+ initialValues={stage}
41
+ onSubmit={() => null}
42
+ validate={() => null}
43
+ render={(formik) => <CloudFoundryDeleteServiceBindingsStageConfigForm {...props} formik={formik} />}
44
+ />,
45
+ );
46
+ expect(component.find(StageConfigField).findWhere((x) => x.text() === 'Target').length).toBe(1);
47
+ expect(component.find(StageConfigField).findWhere((x) => x.text() === 'Service Instance Name').length).toBe(2);
48
+ });
49
+ });
@@ -0,0 +1,116 @@
1
+ import React from 'react';
2
+ import type { Option } from 'react-select';
3
+ import { from as observableFrom, Subject } from 'rxjs';
4
+ import { takeUntil } from 'rxjs/operators';
5
+
6
+ import type { IAccount, IRegion, IStageConfigProps } from '@spinnaker/core';
7
+ import { AccountService, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';
8
+
9
+ interface ICloudFoundryDeleteServiceKeyStageConfigState {
10
+ accounts: string[];
11
+ regions: string[];
12
+ }
13
+
14
+ export class CloudFoundryDeleteServiceKeyStageConfig extends React.Component<
15
+ IStageConfigProps,
16
+ ICloudFoundryDeleteServiceKeyStageConfigState
17
+ > {
18
+ private destroy$ = new Subject();
19
+
20
+ constructor(props: IStageConfigProps) {
21
+ super(props);
22
+ props.stage.cloudProvider = 'cloudfoundry';
23
+ this.state = {
24
+ accounts: [],
25
+ regions: [],
26
+ };
27
+ }
28
+
29
+ public componentDidMount(): void {
30
+ observableFrom(AccountService.listAccounts('cloudfoundry'))
31
+ .pipe(takeUntil(this.destroy$))
32
+ .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts.map((it) => it.name) }));
33
+ if (this.props.stage.credentials) {
34
+ this.clearAndReloadRegions();
35
+ }
36
+ }
37
+
38
+ public componentWillUnmount(): void {
39
+ this.destroy$.next();
40
+ }
41
+
42
+ private clearAndReloadRegions = () => {
43
+ this.setState({ regions: [] });
44
+ observableFrom(AccountService.getRegionsForAccount(this.props.stage.credentials))
45
+ .pipe(takeUntil(this.destroy$))
46
+ .subscribe((regionList: IRegion[]) => {
47
+ const regions = regionList.map((r) => r.name);
48
+ regions.sort((a, b) => a.localeCompare(b));
49
+ this.setState({ regions });
50
+ });
51
+ };
52
+
53
+ private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {
54
+ this.props.updateStageField({ serviceInstanceName: event.target.value });
55
+ };
56
+
57
+ private serviceKeyNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {
58
+ this.props.updateStageField({ serviceKeyName: event.target.value });
59
+ };
60
+
61
+ private accountUpdated = (option: Option<string>) => {
62
+ const credentials = option.target.value;
63
+ this.setState({
64
+ regions: [],
65
+ });
66
+ this.props.updateStageField({
67
+ credentials,
68
+ region: '',
69
+ });
70
+ this.clearAndReloadRegions();
71
+ };
72
+
73
+ private regionUpdated = (option: Option<string>) => {
74
+ const region = option.target.value;
75
+ this.props.updateStageField({
76
+ region,
77
+ });
78
+ };
79
+
80
+ public render() {
81
+ const { credentials, region, serviceInstanceName, serviceKeyName } = this.props.stage;
82
+ const { accounts, regions } = this.state;
83
+
84
+ return (
85
+ <div className="form-horizontal">
86
+ <StageConfigField label="Account">
87
+ <ReactSelectInput
88
+ clearable={false}
89
+ onChange={this.accountUpdated}
90
+ value={credentials}
91
+ stringOptions={accounts}
92
+ />
93
+ </StageConfigField>
94
+ <StageConfigField label="Region">
95
+ <ReactSelectInput clearable={false} onChange={this.regionUpdated} value={region} stringOptions={regions} />
96
+ </StageConfigField>
97
+ <StageConfigField label="Service Instance Name">
98
+ <TextInput
99
+ type="text"
100
+ className="form-control"
101
+ onChange={this.serviceInstanceNameUpdated}
102
+ value={serviceInstanceName}
103
+ />
104
+ </StageConfigField>
105
+ <StageConfigField label="Service Key Name">
106
+ <TextInput
107
+ type="text"
108
+ className="form-control"
109
+ onChange={this.serviceKeyNameUpdated}
110
+ value={serviceKeyName}
111
+ />
112
+ </StageConfigField>
113
+ </div>
114
+ );
115
+ }
116
+ }
@@ -0,0 +1,22 @@
1
+ import type { IStage } from '@spinnaker/core';
2
+ import { ExecutionDetailsTasks, Registry } from '@spinnaker/core';
3
+
4
+ import { CloudFoundryDeleteServiceKeyStageConfig } from './CloudFoundryDeleteServiceKeyStageConfig';
5
+ import { CloudFoundryServiceKeyExecutionDetails } from '../../../presentation';
6
+
7
+ Registry.pipeline.registerStage({
8
+ accountExtractor: (stage: IStage) => [stage.context.credentials],
9
+ configAccountExtractor: (stage: IStage) => [stage.credentials],
10
+ cloudProvider: 'cloudfoundry',
11
+ component: CloudFoundryDeleteServiceKeyStageConfig,
12
+ description: 'Delete a service key',
13
+ executionDetailsSections: [CloudFoundryServiceKeyExecutionDetails, ExecutionDetailsTasks],
14
+ key: 'deleteServiceKey',
15
+ label: 'Delete Service Key',
16
+ validators: [
17
+ { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },
18
+ { type: 'requiredField', fieldName: 'region', preventSave: true },
19
+ { type: 'requiredField', fieldName: 'serviceInstanceName', preventSave: true },
20
+ { type: 'requiredField', fieldName: 'serviceKeyName', preventSave: true },
21
+ ],
22
+ });
@@ -0,0 +1,198 @@
1
+ import React from 'react';
2
+ import type { Option } from 'react-select';
3
+ import { from as observableFrom, Subject } from 'rxjs';
4
+ import { takeUntil } from 'rxjs/operators';
5
+
6
+ import type { IAccount, IArtifact, IExpectedArtifact, IRegion, IStageConfigProps } from '@spinnaker/core';
7
+ import {
8
+ AccountService,
9
+ ArtifactTypePatterns,
10
+ ReactSelectInput,
11
+ StageArtifactSelector,
12
+ StageConfigField,
13
+ } from '@spinnaker/core';
14
+
15
+ import { CreateServiceInstanceDirectInput } from './CreateServiceInstanceDirectInput';
16
+ import { CreateUserProvidedInput } from './CreateUserProvidedInput';
17
+ import type { ICloudFoundryServiceManifestSource } from './ICloudFoundryServiceManifestSource';
18
+
19
+ import './cloudfoundryDeployServiceStage.less';
20
+
21
+ interface ICloudFoundryDeployServiceStageConfigState {
22
+ regions: IRegion[];
23
+ accounts: IAccount[];
24
+ }
25
+
26
+ export class CloudFoundryDeployServiceStageConfig extends React.Component<
27
+ IStageConfigProps,
28
+ ICloudFoundryDeployServiceStageConfigState
29
+ > {
30
+ private defaultDirectManifest = {
31
+ direct: {
32
+ parameters: '',
33
+ service: '',
34
+ serviceInstanceName: '',
35
+ servicePlan: '',
36
+ updatable: false,
37
+ versioned: false,
38
+ },
39
+ };
40
+ private destroy$ = new Subject();
41
+
42
+ constructor(props: IStageConfigProps) {
43
+ super(props);
44
+ this.props.updateStageField({ cloudProvider: 'cloudfoundry' });
45
+ this.state = {
46
+ accounts: [],
47
+ regions: [],
48
+ };
49
+ }
50
+
51
+ private accountUpdated = (option: Option<string>): void => {
52
+ const credentials = option.target.value;
53
+ const updates: any = { credentials: credentials, region: '' };
54
+ if (!this.props.stage.manifest || this.props.stage.manifest.direct) {
55
+ updates.manifest = this.defaultDirectManifest;
56
+ }
57
+ this.props.updateStageField(updates);
58
+ this.reloadRegions();
59
+ };
60
+
61
+ public componentDidMount(): void {
62
+ observableFrom(AccountService.listAccounts('cloudfoundry'))
63
+ .pipe(takeUntil(this.destroy$))
64
+ .subscribe((accounts) => this.setState({ accounts }));
65
+ this.reloadRegions();
66
+ }
67
+
68
+ public componentWillUnmount(): void {
69
+ this.destroy$.next();
70
+ }
71
+
72
+ private reloadRegions = () => {
73
+ const { credentials } = this.props.stage;
74
+ if (credentials) {
75
+ observableFrom(AccountService.getRegionsForAccount(credentials))
76
+ .pipe(takeUntil(this.destroy$))
77
+ .subscribe((regions) => this.setState({ regions }));
78
+ }
79
+ };
80
+
81
+ private manifestSourceUpdated = (source: string): void => {
82
+ switch (source) {
83
+ case 'direct':
84
+ this.props.updateStageField({ manifest: this.defaultDirectManifest });
85
+ break;
86
+ case 'artifact':
87
+ this.props.updateStageField({ manifest: {} });
88
+ break;
89
+ }
90
+ };
91
+
92
+ private onExpectedArtifactSelected = (expectedArtifact: IExpectedArtifact): void => {
93
+ this.props.updateStageField({ manifest: { artifactId: expectedArtifact.id } });
94
+ };
95
+
96
+ private onArtifactChanged = (artifact: IArtifact): void => {
97
+ this.props.updateStageField({ manifest: { artifact } });
98
+ };
99
+
100
+ private regionUpdated = (option: Option<string>): void => {
101
+ const updates: any = { region: option.target.value };
102
+ const direct = this.props.stage.manifest.direct;
103
+ if (direct) {
104
+ updates.manifest = this.defaultDirectManifest;
105
+ }
106
+ this.props.updateStageField(updates);
107
+ };
108
+
109
+ private serviceManifestSourceUpdated = (manifest: ICloudFoundryServiceManifestSource) => {
110
+ this.props.updateStageField({ manifest });
111
+ };
112
+
113
+ private userProvidedUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {
114
+ this.props.updateStageField({ userProvided: event.target.checked });
115
+ };
116
+
117
+ public render() {
118
+ const { pipeline, stage } = this.props;
119
+ const { credentials, region, userProvided, manifest } = this.props.stage;
120
+ const { accounts, regions } = this.state;
121
+ const directInput = !manifest || !!manifest.direct;
122
+ let manifestInput;
123
+
124
+ if (directInput) {
125
+ const directManifest = (manifest && manifest.direct) || this.defaultDirectManifest;
126
+ manifestInput = userProvided ? (
127
+ <CreateUserProvidedInput
128
+ onChange={this.serviceManifestSourceUpdated}
129
+ service={directManifest}
130
+ onServiceChanged={(direct) => this.serviceManifestSourceUpdated({ direct })}
131
+ />
132
+ ) : (
133
+ <CreateServiceInstanceDirectInput
134
+ credentials={credentials}
135
+ region={region}
136
+ service={directManifest}
137
+ onServiceChanged={(direct) => this.serviceManifestSourceUpdated({ direct })}
138
+ />
139
+ );
140
+ } else {
141
+ manifestInput = (
142
+ <StageConfigField label="Artifact">
143
+ <StageArtifactSelector
144
+ pipeline={pipeline}
145
+ stage={stage}
146
+ expectedArtifactId={manifest.artifactId}
147
+ excludedArtifactTypePatterns={[
148
+ ArtifactTypePatterns.KUBERNETES,
149
+ ArtifactTypePatterns.FRONT50_PIPELINE_TEMPLATE,
150
+ ArtifactTypePatterns.DOCKER_IMAGE,
151
+ ]}
152
+ artifact={manifest.artifact}
153
+ onExpectedArtifactSelected={this.onExpectedArtifactSelected}
154
+ onArtifactEdited={this.onArtifactChanged}
155
+ />
156
+ </StageConfigField>
157
+ );
158
+ }
159
+
160
+ return (
161
+ <div className="form-horizontal cloudfoundry-deploy-service-stage">
162
+ <StageConfigField label="Account">
163
+ <ReactSelectInput
164
+ clearable={false}
165
+ onChange={this.accountUpdated}
166
+ value={credentials}
167
+ stringOptions={accounts.map((it) => it.name)}
168
+ />
169
+ </StageConfigField>
170
+ <StageConfigField label="Region">
171
+ <ReactSelectInput
172
+ clearable={false}
173
+ onChange={this.regionUpdated}
174
+ value={region}
175
+ stringOptions={regions.map((it) => it.name)}
176
+ />
177
+ </StageConfigField>
178
+ <StageConfigField label="User-provided">
179
+ <input type="checkbox" checked={!!userProvided} onChange={this.userProvidedUpdated} />
180
+ </StageConfigField>
181
+ <StageConfigField label="Configuration Source">
182
+ <div className="radio radio-inline">
183
+ <label>
184
+ <input type="radio" checked={!directInput} onChange={() => this.manifestSourceUpdated('artifact')} />{' '}
185
+ Manifest
186
+ </label>
187
+ </div>
188
+ <div className="radio radio-inline">
189
+ <label>
190
+ <input type="radio" checked={directInput} onChange={() => this.manifestSourceUpdated('direct')} /> Form
191
+ </label>
192
+ </div>
193
+ </StageConfigField>
194
+ {manifestInput}
195
+ </div>
196
+ );
197
+ }
198
+ }