@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,61 @@
1
+ import React from 'react';
2
+
3
+ import { Dropdown } from 'react-bootstrap';
4
+
5
+ import type { Application, ILoadBalancer, ILoadBalancerDeleteCommand } from '@spinnaker/core';
6
+ import { ConfirmationModalService, LoadBalancerWriter, ReactInjector } from '@spinnaker/core';
7
+
8
+ export interface ICloudFoundryLoadBalancerActionsProps {
9
+ application: Application;
10
+ loadBalancer: ILoadBalancer;
11
+ }
12
+
13
+ export class CloudFoundryLoadBalancerActions extends React.Component<ICloudFoundryLoadBalancerActionsProps> {
14
+ private deleteLoadBalancer = () => {
15
+ const { application, loadBalancer } = this.props;
16
+ const taskMonitor = {
17
+ application: application,
18
+ title: 'Deleting ' + loadBalancer.name,
19
+ onTaskComplete() {
20
+ if (ReactInjector.$state.includes('**.serverGroup', { instanceId: loadBalancer.name })) {
21
+ ReactInjector.$state.go('^');
22
+ }
23
+ },
24
+ };
25
+
26
+ const submitMethod = () => {
27
+ const loadBalancerDeleteCommand: ILoadBalancerDeleteCommand = {
28
+ cloudProvider: loadBalancer.cloudProvider,
29
+ credentials: loadBalancer.account,
30
+ regions: [loadBalancer.region],
31
+ loadBalancerName: loadBalancer.name,
32
+ };
33
+ return LoadBalancerWriter.deleteLoadBalancer(loadBalancerDeleteCommand, application);
34
+ };
35
+
36
+ ConfirmationModalService.confirm({
37
+ header: 'Really delete ' + loadBalancer.name + '?',
38
+ buttonText: 'Delete ' + loadBalancer.name,
39
+ account: loadBalancer.account,
40
+ taskMonitorConfig: taskMonitor,
41
+ submitMethod,
42
+ });
43
+ };
44
+
45
+ public render(): JSX.Element {
46
+ return (
47
+ <div className="actions">
48
+ <Dropdown className="dropdown" id="instance-actions-dropdown">
49
+ <Dropdown.Toggle className="btn btn-sm btn-primary dropdown-toggle">Load Balancer Actions</Dropdown.Toggle>
50
+ <Dropdown.Menu className="dropdown-menu">
51
+ <li>
52
+ <a className="clickable" onClick={this.deleteLoadBalancer}>
53
+ Delete Load Balancer
54
+ </a>
55
+ </li>
56
+ </Dropdown.Menu>
57
+ </Dropdown>
58
+ </div>
59
+ );
60
+ }
61
+ }
@@ -0,0 +1,148 @@
1
+ import { UISref } from '@uirouter/react';
2
+ import { UIRouterContext } from '@uirouter/react-hybrid';
3
+ import React from 'react';
4
+
5
+ import type { Application, LoadBalancerWriter } from '@spinnaker/core';
6
+ import { Spinner } from '@spinnaker/core';
7
+
8
+ import { CloudFoundryLoadBalancerActions } from './CloudFoundryLoadBalancerActions';
9
+ import type { ICloudFoundryLoadBalancer } from '../../domain';
10
+ import { CloudFoundryLoadBalancerDetailsSection } from './sections';
11
+ import { CloudFoundryLoadBalancerLinksSection } from './sections/CloudFoundryLoadBalancerLinksSection';
12
+ import { CloudFoundryLoadBalancerStatusSection } from './sections/CloudFoundryLoadBalancerStatusSection';
13
+
14
+ interface ILoadBalancer {
15
+ name: string;
16
+ accountId: string;
17
+ region: string;
18
+ }
19
+
20
+ interface ICloudFoundryLoadBalancerDetailsState {
21
+ loadBalancer: ICloudFoundryLoadBalancer;
22
+ loadBalancerNotFound?: string;
23
+ loading: boolean;
24
+ refreshListenerUnsubscribe: () => void;
25
+ }
26
+
27
+ export interface ICloudFoundryLoadBalancerDetailsProps {
28
+ app: Application;
29
+ loadBalancer: ILoadBalancer;
30
+ loadBalancerWriter: LoadBalancerWriter;
31
+ }
32
+
33
+ @UIRouterContext
34
+ export class CloudFoundryLoadBalancerDetails extends React.Component<
35
+ ICloudFoundryLoadBalancerDetailsProps,
36
+ ICloudFoundryLoadBalancerDetailsState
37
+ > {
38
+ constructor(props: ICloudFoundryLoadBalancerDetailsProps) {
39
+ super(props);
40
+ this.state = {
41
+ loading: true,
42
+ loadBalancer: undefined,
43
+ refreshListenerUnsubscribe: () => {},
44
+ };
45
+
46
+ props.app
47
+ .getDataSource('loadBalancers')
48
+ .ready()
49
+ .then(() => this.extractLoadBalancer());
50
+ }
51
+
52
+ public componentWillUnmount(): void {
53
+ this.state.refreshListenerUnsubscribe();
54
+ }
55
+
56
+ private extractLoadBalancer(): void {
57
+ const { name } = this.props.loadBalancer;
58
+ const loadBalancer: ICloudFoundryLoadBalancer = this.props.app
59
+ .getDataSource('loadBalancers')
60
+ .data.find((test: ICloudFoundryLoadBalancer) => {
61
+ return test.name === name && test.account === this.props.loadBalancer.accountId;
62
+ });
63
+
64
+ this.setState({
65
+ loading: false,
66
+ loadBalancer,
67
+ });
68
+
69
+ this.state.refreshListenerUnsubscribe();
70
+
71
+ if (loadBalancer) {
72
+ this.setState({
73
+ refreshListenerUnsubscribe: this.props.app
74
+ .getDataSource('loadBalancers')
75
+ .onRefresh(null, () => this.extractLoadBalancer()),
76
+ });
77
+ } else {
78
+ this.setState({
79
+ refreshListenerUnsubscribe: () => {},
80
+ });
81
+ // this.autoClose();
82
+ }
83
+ }
84
+
85
+ public render(): JSX.Element {
86
+ const { app } = this.props;
87
+ const { loadBalancer, loadBalancerNotFound, loading } = this.state;
88
+
89
+ const CloseButton = (
90
+ <div className="close-button">
91
+ <UISref to="^">
92
+ <span className="glyphicon glyphicon-remove" />
93
+ </UISref>
94
+ </div>
95
+ );
96
+ const loadingHeader = () => (
97
+ <div className="header">
98
+ {CloseButton}
99
+ <div className="horizontal center middle">
100
+ <Spinner size="small" />
101
+ </div>
102
+ </div>
103
+ );
104
+ const notFoundHeader = () => (
105
+ <div className="header">
106
+ {CloseButton}
107
+ <div className="header-text horizontal middle">
108
+ <h3 className="horizontal middle space-between flex-1">{loadBalancerNotFound}</h3>
109
+ </div>
110
+ </div>
111
+ );
112
+ const loadBalancerHeader = () => (
113
+ <div className="header">
114
+ {CloseButton}
115
+ <div className="header-text horizontal middle">
116
+ <i className="fa icon-sitemap" />
117
+ <h3 className="horizontal middle space-between flex-1">{loadBalancer.name}</h3>
118
+ </div>
119
+ <CloudFoundryLoadBalancerActions application={app} loadBalancer={loadBalancer} />
120
+ </div>
121
+ );
122
+ const notFoundContent = () => (
123
+ <div className="content">
124
+ <div className="content-section">
125
+ <div className="content-body text-center">
126
+ <h3>Instance not found.</h3>
127
+ </div>
128
+ </div>
129
+ </div>
130
+ );
131
+ const loadBalancerContent = () => (
132
+ <div className="content">
133
+ <CloudFoundryLoadBalancerDetailsSection loadBalancer={loadBalancer} />
134
+ <CloudFoundryLoadBalancerStatusSection loadBalancer={loadBalancer} />
135
+ <CloudFoundryLoadBalancerLinksSection loadBalancer={loadBalancer} />
136
+ </div>
137
+ );
138
+ return (
139
+ <div className="details-panel">
140
+ {loading && loadingHeader()}
141
+ {!loading && !!loadBalancer && loadBalancerHeader()}
142
+ {!loading && !!loadBalancer && loadBalancerContent()}
143
+ {!loading && !loadBalancer && notFoundHeader()}
144
+ {!loading && !loadBalancer && notFoundContent()}
145
+ </div>
146
+ );
147
+ }
148
+ }
@@ -0,0 +1 @@
1
+ export * from './CloudFoundryLoadBalancerDetails';
@@ -0,0 +1,63 @@
1
+ import { UISref } from '@uirouter/react';
2
+ import React from 'react';
3
+
4
+ import { AccountTag, CollapsibleSection } from '@spinnaker/core';
5
+ import type { ICloudFoundryLoadBalancer } from '../../../domain';
6
+
7
+ export interface ICloudFoundryLoadBalancerDetailsSectionProps {
8
+ loadBalancer: ICloudFoundryLoadBalancer;
9
+ }
10
+
11
+ export class CloudFoundryLoadBalancerDetailsSection extends React.Component<
12
+ ICloudFoundryLoadBalancerDetailsSectionProps
13
+ > {
14
+ constructor(props: ICloudFoundryLoadBalancerDetailsSectionProps) {
15
+ super(props);
16
+ }
17
+
18
+ public render(): JSX.Element {
19
+ const { loadBalancer } = this.props;
20
+ return (
21
+ <>
22
+ <CollapsibleSection heading="Load Balancer Details" defaultExpanded={true}>
23
+ <dl className="dl-horizontal dl-narrow">
24
+ <dt>In</dt>
25
+ <dd>
26
+ <AccountTag account={loadBalancer.account} />
27
+ </dd>
28
+ <dt>Organization</dt>
29
+ <dd>{loadBalancer.space.organization.name}</dd>
30
+ <dt>Space</dt>
31
+ <dd>{loadBalancer.space.name}</dd>
32
+ {loadBalancer.serverGroups && (
33
+ <>
34
+ <dt>Server Groups</dt>
35
+ <dd>
36
+ <ul>
37
+ {loadBalancer.serverGroups.map((serverGroup, index) => {
38
+ return (
39
+ <li key={index}>
40
+ <UISref
41
+ to="^.serverGroup"
42
+ params={{
43
+ region: serverGroup.region,
44
+ accountId: serverGroup.account,
45
+ serverGroup: serverGroup.name,
46
+ provider: 'cloudfoundry',
47
+ }}
48
+ >
49
+ <a>{serverGroup.name}</a>
50
+ </UISref>
51
+ </li>
52
+ );
53
+ })}
54
+ </ul>
55
+ </dd>
56
+ </>
57
+ )}
58
+ </dl>
59
+ </CollapsibleSection>
60
+ </>
61
+ );
62
+ }
63
+ }
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+
3
+ import { CollapsibleSection } from '@spinnaker/core';
4
+ import type { ICloudFoundryLoadBalancer } from '../../../domain';
5
+
6
+ export interface ICloudFoundryLoadBalancerLinksSectionProps {
7
+ loadBalancer: ICloudFoundryLoadBalancer;
8
+ }
9
+
10
+ export class CloudFoundryLoadBalancerLinksSection extends React.Component<ICloudFoundryLoadBalancerLinksSectionProps> {
11
+ constructor(props: ICloudFoundryLoadBalancerLinksSectionProps) {
12
+ super(props);
13
+ }
14
+
15
+ public render(): JSX.Element {
16
+ const { loadBalancer } = this.props;
17
+ return (
18
+ <>
19
+ <CollapsibleSection heading="Application links" defaultExpanded={true}>
20
+ <dl className="dl-horizontal dl-narrow">
21
+ <dt>HTTP</dt>
22
+ <dd>
23
+ <a href={'http://' + loadBalancer.name}>{'http://' + loadBalancer.name}</a>
24
+ </dd>
25
+ <dt>HTTPS</dt>
26
+ <dd>
27
+ <a href={'https://' + loadBalancer.name}>{'https://' + loadBalancer.name}</a>
28
+ </dd>
29
+ </dl>
30
+ </CollapsibleSection>
31
+ </>
32
+ );
33
+ }
34
+ }
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+
3
+ import { CollapsibleSection, HealthCounts } from '@spinnaker/core';
4
+ import type { ICloudFoundryLoadBalancer } from '../../../domain';
5
+
6
+ export interface ICloudFoundryLoadBalancerStatusSectionProps {
7
+ loadBalancer: ICloudFoundryLoadBalancer;
8
+ }
9
+
10
+ export class CloudFoundryLoadBalancerStatusSection extends React.Component<
11
+ ICloudFoundryLoadBalancerStatusSectionProps
12
+ > {
13
+ constructor(props: ICloudFoundryLoadBalancerStatusSectionProps) {
14
+ super(props);
15
+ }
16
+
17
+ public render(): JSX.Element {
18
+ const { loadBalancer } = this.props;
19
+ return (
20
+ <>
21
+ <CollapsibleSection heading="Status" defaultExpanded={true}>
22
+ <HealthCounts className="pull-left" container={loadBalancer.instanceCounts} />
23
+ </CollapsibleSection>
24
+ </>
25
+ );
26
+ }
27
+ }
@@ -0,0 +1,3 @@
1
+ export * from './CloudFoundryLoadBalancerDetailsSection';
2
+ export * from './CloudFoundryLoadBalancerStatusSection';
3
+ export * from './CloudFoundryLoadBalancerLinksSection';
@@ -0,0 +1,3 @@
1
+ export * from './loadBalancer.transformer';
2
+ export * from './details';
3
+ export * from './configure/CloudFoundryMapLoadBalancerModal';
@@ -0,0 +1,144 @@
1
+ import { camelCase, chain, cloneDeep, has } from 'lodash';
2
+
3
+ import type {
4
+ Application,
5
+ IInstance,
6
+ IInstanceCounts,
7
+ ILoadBalancer,
8
+ ILoadBalancerUpsertCommand,
9
+ IServerGroup,
10
+ } from '@spinnaker/core';
11
+ import type {
12
+ ICloudFoundryLoadBalancer,
13
+ ICloudFoundryLoadBalancerUpsertCommand,
14
+ ICloudFoundryServerGroup,
15
+ ICloudFoundrySpace,
16
+ } from '../domain';
17
+
18
+ export class CloudFoundryLoadBalancerUpsertDescription
19
+ implements ILoadBalancerUpsertCommand, ICloudFoundryLoadBalancer {
20
+ public id: string;
21
+ public credentials: string;
22
+ public account: string;
23
+ public loadBalancerName: string;
24
+ public name: string;
25
+ public region: string;
26
+ public cloudProvider: string;
27
+ public serverGroups: ICloudFoundryServerGroup[];
28
+ public space: ICloudFoundrySpace;
29
+
30
+ constructor(loadBalancer: ICloudFoundryLoadBalancer) {
31
+ this.id = loadBalancer.id;
32
+ this.credentials = loadBalancer.account;
33
+ this.account = this.credentials;
34
+ this.cloudProvider = loadBalancer.cloudProvider;
35
+ this.loadBalancerName = loadBalancer.name;
36
+ this.name = loadBalancer.name;
37
+ this.region = loadBalancer.region;
38
+ this.serverGroups = loadBalancer.serverGroups;
39
+ this.space = loadBalancer.space;
40
+ }
41
+ }
42
+
43
+ export class CloudFoundryLoadBalancerTransformer {
44
+ public static $inject = ['$q'];
45
+ constructor(private $q: ng.IQService) {}
46
+
47
+ public normalizeLoadBalancer(loadBalancer: ILoadBalancer): PromiseLike<ILoadBalancer> {
48
+ loadBalancer.provider = loadBalancer.type;
49
+ loadBalancer.instanceCounts = this.buildInstanceCounts(loadBalancer.serverGroups);
50
+ loadBalancer.instances = [];
51
+ loadBalancer.serverGroups.forEach((serverGroup) => {
52
+ serverGroup.account = loadBalancer.account;
53
+ serverGroup.region = loadBalancer.region;
54
+ serverGroup.cloudProvider = loadBalancer.provider;
55
+
56
+ if (serverGroup.detachedInstances) {
57
+ serverGroup.detachedInstances = (serverGroup.detachedInstances as any).map((id: string) => ({ id }));
58
+ }
59
+ serverGroup.instances = serverGroup.instances
60
+ .concat(serverGroup.detachedInstances || [])
61
+ .map((instance: any) => this.transformInstance(instance, loadBalancer));
62
+ });
63
+
64
+ const activeServerGroups = loadBalancer.serverGroups.filter((sg) => !sg.isDisabled);
65
+ loadBalancer.instances = chain(activeServerGroups).map('instances').flatten().value() as IInstance[];
66
+ return this.$q.resolve(loadBalancer);
67
+ }
68
+
69
+ public constructNewCloudFoundryLoadBalancerTemplate(
70
+ application: Application,
71
+ ): ICloudFoundryLoadBalancerUpsertCommand {
72
+ return {
73
+ cloudProvider: 'cloudfoundry',
74
+ credentials: undefined,
75
+ name: application.name,
76
+ id: undefined,
77
+ host: '',
78
+ path: '',
79
+ port: '',
80
+ region: '',
81
+ domain: '',
82
+ serverGroups: [],
83
+ routes: [],
84
+ };
85
+ }
86
+
87
+ public convertLoadBalancerForEditing(
88
+ loadBalancer: ICloudFoundryLoadBalancer,
89
+ application: Application,
90
+ ): PromiseLike<ICloudFoundryLoadBalancer> {
91
+ return application
92
+ .getDataSource('loadBalancers')
93
+ .ready()
94
+ .then(() => {
95
+ const upToDateLoadBalancer = application
96
+ .getDataSource('loadBalancers')
97
+ .data.find((candidate: ILoadBalancer) => {
98
+ return candidate.name === loadBalancer.name && candidate.account === loadBalancer.account;
99
+ });
100
+
101
+ if (upToDateLoadBalancer) {
102
+ loadBalancer.serverGroups = cloneDeep(upToDateLoadBalancer.serverGroups);
103
+ }
104
+ return loadBalancer;
105
+ });
106
+ }
107
+
108
+ public convertLoadBalancerToUpsertDescription(
109
+ loadBalancer: ICloudFoundryLoadBalancer,
110
+ ): CloudFoundryLoadBalancerUpsertDescription {
111
+ return new CloudFoundryLoadBalancerUpsertDescription(loadBalancer);
112
+ }
113
+
114
+ private buildInstanceCounts(serverGroups: IServerGroup[]): IInstanceCounts {
115
+ const instanceCounts: IInstanceCounts = chain(serverGroups)
116
+ .map('instances')
117
+ .flatten()
118
+ .reduce(
119
+ (acc: IInstanceCounts, instance: any) => {
120
+ if (has(instance, 'health.state')) {
121
+ acc[camelCase(instance.health.state)]++;
122
+ }
123
+ return acc;
124
+ },
125
+ { up: 0, down: 0, outOfService: 0, succeeded: 0, failed: 0, starting: 0, unknown: 0 },
126
+ )
127
+ .value();
128
+
129
+ instanceCounts.outOfService += chain(serverGroups).map('detachedInstances').flatten().value().length;
130
+ return instanceCounts;
131
+ }
132
+
133
+ private transformInstance(instance: any, loadBalancer: ILoadBalancer) {
134
+ instance.provider = loadBalancer.type;
135
+ instance.account = loadBalancer.account;
136
+ instance.region = loadBalancer.region;
137
+ instance.loadBalancers = [loadBalancer.name];
138
+ const health = instance.health || {};
139
+ instance.healthState = health.state ?? 'OutOfService';
140
+ instance.health = [health];
141
+
142
+ return instance as IInstance;
143
+ }
144
+ }
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="300px" height="300px" viewBox="0 0 300 300" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
4
+ <title>cf_logo</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <defs></defs>
7
+ <g id="cf_logo" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
8
+ <path d="M178.263372,122.718681 C186.913513,115.731062 192.264847,105.825834 192.16919,94.8631089 C191.983342,73.9653286 172.094852,57.1484045 147.743272,57.1484045 C123.391692,57.1484045 103.497736,73.9653286 103.317354,94.8631089 C103.218964,105.825834 108.570299,115.728351 117.220439,122.71597 C127.925842,131.365758 136.693504,148.855142 137.210052,167.952465 C137.781262,189.145802 136.321807,213.674325 135.425363,226.155508 C123.984767,227.766159 115.944099,231.559592 115.944099,235.982102 C115.944099,241.866127 130.180618,248.650381 147.743272,248.650381 C165.303194,248.650381 179.539712,241.866127 179.539712,235.982102 C179.539712,231.559592 171.501778,227.766159 160.058448,226.155508 C159.162004,213.674325 157.702549,189.145802 158.273759,167.952465 C158.790308,148.855142 167.557969,131.365758 178.263372,122.718681" id="Fill-1" fill="#1B1A19"></path>
9
+ <path d="M234.330842,245.57087 C235.853157,244.936371 237.629647,244.423892 239.594718,244.046988 C241.423137,243.645682 243.462001,243.390798 245.68398,243.317586 C245.68398,243.317586 245.58559,242.63428 245.448937,241.62559 C245.386076,240.625035 244.910523,239.299095 244.454102,237.984002 C244.224525,237.335946 243.989482,236.693313 243.779036,236.094064 C243.511196,235.500238 243.16683,234.952509 242.920854,234.477991 C242.404306,233.550647 242.05994,232.929706 242.05994,232.929706 C239.865291,232.577206 237.790898,232.089131 235.779364,231.516997 C233.729568,230.944864 231.802759,230.288673 230.108261,229.580963 C226.894181,228.179101 223.874147,226.609124 222.278039,224.857474 C220.351231,223.189881 219.995933,221.519577 220.058793,220.011965 C220.168116,219.269005 220.512482,218.550449 221.102823,217.880701 C221.641236,217.221798 222.354565,216.627973 223.382196,216.115493 C223.382196,216.115493 222.60874,215.689783 221.479985,215.057995 C220.903309,214.751592 220.280171,214.388247 219.542245,214.008632 C218.768788,213.642576 217.957069,213.254826 217.148083,212.875212 C215.551975,212.121406 213.955866,211.364888 212.619399,210.868678 C211.343059,210.356198 210.498543,210.014545 210.498543,210.014545 C208.948897,210.220622 207.270798,210.331794 205.562634,210.356198 C203.794343,210.391448 201.990522,210.342641 200.23863,210.212487 C196.789506,209.91693 193.280255,209.442412 190.246556,208.553029 C188.675046,208.151722 187.338578,207.677204 186.171561,207.153878 C185.004544,206.641399 183.96598,206.131631 183.129663,205.559497 C181.533555,204.401673 180.443064,203.233003 180.451263,202.053486 C180.451263,202.053486 179.483759,201.893506 178.037969,201.649468 C176.540252,201.418987 173.348036,200.993277 171.322837,200.724835 C171.287307,201.063777 171.065929,201.383738 170.992136,201.942313 L170.475588,204.401673 C169.420626,209.320393 172.293074,214.312324 177.16339,215.714186 C189.095937,219.157832 198.112308,224.83307 200.716916,231.796285 C205.980792,245.885407 183.86759,259.657281 150.239999,259.657281 C116.598742,259.657281 94.4828068,245.885407 99.7357514,231.796285 C102.277499,225.003896 110.941304,219.439832 122.442028,215.96907 C127.533722,214.434343 130.553755,209.236335 129.460531,204.073578 L128.749935,200.724835 C127.410734,200.882104 125.852889,201.077334 124.256781,201.272565 C122.258913,201.492199 120.353969,201.84741 118.894514,202.07789 C117.435059,202.305659 116.45389,202.479197 116.45389,202.479197 C116.55228,203.623463 115.729629,204.911441 114.158118,206.023169 C113.335467,206.581745 112.42809,207.164725 111.310268,207.690762 C110.192446,208.224934 108.817715,208.675048 107.382858,209.149566 C105.896073,209.613238 104.24257,209.954891 102.583602,210.245025 C100.951964,210.562275 99.2082705,210.792755 97.4181151,210.939178 C93.8460034,211.221177 90.2629595,211.294388 87.0106161,210.893082 C87.0106161,210.893082 86.7892381,210.977139 86.4202748,211.123562 C86.0649768,211.280831 85.4855677,211.486907 84.9116247,211.768907 C83.7200098,212.330194 82.1129695,213.094846 80.4922639,213.86221 C78.8961559,214.653977 77.4749638,215.50811 76.3216118,216.139897 C75.7422027,216.454435 75.2639169,216.725588 74.9332164,216.907261 C74.6271135,217.113337 74.4549306,217.221798 74.4549306,217.221798 C76.7015073,218.257604 77.9532496,219.659466 78.1964921,221.145386 C78.7622359,222.715363 77.9887794,224.344994 76.5293244,226.123759 C75.6848084,227.0267 74.5423886,227.878121 73.3753712,228.705138 C72.1372943,229.543002 70.5876483,230.334769 68.8576202,231.091287 C65.6189421,232.612456 61.4209593,233.951953 56.9168736,234.757278 C56.9168736,234.757278 56.5260458,235.391777 56.228142,236.338102 C55.8865093,237.303407 55.4328211,238.604943 54.9654675,239.933594 C54.7686871,241.245976 54.585572,242.59903 54.4379866,243.634836 C54.2439392,244.678776 54.3395964,245.35937 54.3395964,245.35937 C58.9912674,245.410889 63.1291229,246.189099 66.2202157,247.420135 C69.8169249,248.602363 71.9897089,250.364859 73.6705419,252.520527 C74.9960768,254.847022 75.5235577,257.281978 74.3428751,260.093837 C73.5202235,262.835197 71.2627145,265.891094 67.5840135,268.664991 C67.5840135,268.664991 67.7917261,268.849375 68.1470242,269.153067 C68.5515173,269.445913 69.1418586,269.860777 69.8524547,270.359699 C71.3146427,271.357543 73.1539932,272.770251 75.315845,274.047383 C77.5979516,275.291976 79.9155879,276.544704 81.6729466,277.507298 C82.5420602,277.995374 83.4275722,278.299066 83.9796507,278.55395 C84.5563267,278.808834 84.8870272,278.941699 84.8870272,278.941699 C90.0771113,276.739935 95.6498242,275.606514 101.222537,275.023535 C104.007527,274.727978 106.743322,274.657478 109.358862,274.828304 C112.020864,274.96117 114.734794,275.169958 117.273808,275.763783 C119.790958,276.422686 122.245248,277.043626 124.393434,277.995374 C126.57715,278.930853 128.517624,280.159177 130.354242,281.341405 C134.024744,283.825169 136.847996,287.333892 138.064209,291.021576 C138.064209,291.021576 139.952755,291.094787 142.78694,291.20596 C145.63479,291.27646 149.428279,291.534056 153.208104,291.338825 C156.990661,291.216806 160.778685,291.154441 163.591005,290.972768 C166.365063,290.704327 168.218079,290.536212 168.218079,290.536212 C168.608907,288.611024 169.469821,286.797009 170.647771,285.151108 C171.22718,284.348495 171.888581,283.581131 172.623774,282.865287 C173.33437,282.122327 174.083229,281.365809 174.919546,280.698772 C176.564849,279.359275 178.43973,278.201451 180.563318,277.274107 C182.624047,276.314224 184.835094,275.411284 187.387774,274.841862 C189.989648,274.329382 192.430272,273.819614 195.081342,273.63523 C197.696882,273.426442 200.544733,273.548461 203.182137,273.659634 C208.571735,273.949768 214.546208,275.180804 219.739025,277.127684 C219.739025,277.127684 220.889644,276.495897 222.60874,275.544149 C224.254043,274.57342 226.623608,273.415596 228.43836,271.978484 C230.294109,270.614583 232.245515,269.323894 233.420732,268.252838 C234.574084,267.181783 235.325676,266.476785 235.325676,266.476785 C231.461127,263.833041 229.236414,260.996778 227.815222,258.195765 C227.151088,256.845421 226.967973,255.576424 226.92971,254.323696 C226.83132,253.057411 227.101893,251.877894 227.815222,250.779723 C228.820989,248.539998 231.398266,246.883251 234.330842,245.57087" id="Fill-2" fill="#000000"></path>
10
+ <path d="M118.447097,177.453406 C118.447097,177.453406 123.443134,158.68689 101.750823,134.472906 L101.026562,133.724523 C91.8872032,122.97872 86.8529035,109.342424 86.8529035,95.3265125 C86.8529035,62.4247782 113.863752,35.6538187 147.067719,35.6538187 L148.464314,35.6538187 C181.671013,35.6538187 208.684595,62.4247782 208.684595,95.3265125 C208.684595,109.342424 203.650296,122.97872 194.519137,133.716388 C194.412547,133.835696 194.166572,134.087868 193.794875,134.456637 C174.534989,153.591921 177.084936,177.453406 177.084936,177.453406 C212.256707,165.425049 236.017946,132.612795 236.220192,95.8091653 C236.471634,49.7944603 199.034155,10.5748554 152.774352,8.37309111 C152.194943,8.34597578 151.623733,8.33241812 151.052523,8.33241812 C150.352859,8.33241812 147.750985,8.38393723 147.761917,8.38393723 C147.688124,8.38393723 145.181907,8.33241812 144.484976,8.33241812 C143.913766,8.33241812 143.339823,8.34597578 142.771346,8.37309111 C96.5006113,10.5748554 59.063132,49.7944603 59.3173068,95.8091653 C59.5140872,132.612795 83.2780588,165.425049 118.447097,177.453406" id="Fill-3" fill="#000000"></path>
11
+ </g>
12
+ </svg>
@@ -0,0 +1,5 @@
1
+ .cloud-provider-logo {
2
+ .icon-cloudfoundry {
3
+ mask-image: url('cf.logo.svg');
4
+ }
5
+ }
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="300px" height="300px" viewBox="0 0 300 300" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
4
+ <title>cf_logo</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <defs></defs>
7
+ <g id="cf_logo" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
8
+ <path d="M178.263372,122.718681 C186.913513,115.731062 192.264847,105.825834 192.16919,94.8631089 C191.983342,73.9653286 172.094852,57.1484045 147.743272,57.1484045 C123.391692,57.1484045 103.497736,73.9653286 103.317354,94.8631089 C103.218964,105.825834 108.570299,115.728351 117.220439,122.71597 C127.925842,131.365758 136.693504,148.855142 137.210052,167.952465 C137.781262,189.145802 136.321807,213.674325 135.425363,226.155508 C123.984767,227.766159 115.944099,231.559592 115.944099,235.982102 C115.944099,241.866127 130.180618,248.650381 147.743272,248.650381 C165.303194,248.650381 179.539712,241.866127 179.539712,235.982102 C179.539712,231.559592 171.501778,227.766159 160.058448,226.155508 C159.162004,213.674325 157.702549,189.145802 158.273759,167.952465 C158.790308,148.855142 167.557969,131.365758 178.263372,122.718681" id="Fill-1" fill="#1B1A19"></path>
9
+ <path d="M234.330842,245.57087 C235.853157,244.936371 237.629647,244.423892 239.594718,244.046988 C241.423137,243.645682 243.462001,243.390798 245.68398,243.317586 C245.68398,243.317586 245.58559,242.63428 245.448937,241.62559 C245.386076,240.625035 244.910523,239.299095 244.454102,237.984002 C244.224525,237.335946 243.989482,236.693313 243.779036,236.094064 C243.511196,235.500238 243.16683,234.952509 242.920854,234.477991 C242.404306,233.550647 242.05994,232.929706 242.05994,232.929706 C239.865291,232.577206 237.790898,232.089131 235.779364,231.516997 C233.729568,230.944864 231.802759,230.288673 230.108261,229.580963 C226.894181,228.179101 223.874147,226.609124 222.278039,224.857474 C220.351231,223.189881 219.995933,221.519577 220.058793,220.011965 C220.168116,219.269005 220.512482,218.550449 221.102823,217.880701 C221.641236,217.221798 222.354565,216.627973 223.382196,216.115493 C223.382196,216.115493 222.60874,215.689783 221.479985,215.057995 C220.903309,214.751592 220.280171,214.388247 219.542245,214.008632 C218.768788,213.642576 217.957069,213.254826 217.148083,212.875212 C215.551975,212.121406 213.955866,211.364888 212.619399,210.868678 C211.343059,210.356198 210.498543,210.014545 210.498543,210.014545 C208.948897,210.220622 207.270798,210.331794 205.562634,210.356198 C203.794343,210.391448 201.990522,210.342641 200.23863,210.212487 C196.789506,209.91693 193.280255,209.442412 190.246556,208.553029 C188.675046,208.151722 187.338578,207.677204 186.171561,207.153878 C185.004544,206.641399 183.96598,206.131631 183.129663,205.559497 C181.533555,204.401673 180.443064,203.233003 180.451263,202.053486 C180.451263,202.053486 179.483759,201.893506 178.037969,201.649468 C176.540252,201.418987 173.348036,200.993277 171.322837,200.724835 C171.287307,201.063777 171.065929,201.383738 170.992136,201.942313 L170.475588,204.401673 C169.420626,209.320393 172.293074,214.312324 177.16339,215.714186 C189.095937,219.157832 198.112308,224.83307 200.716916,231.796285 C205.980792,245.885407 183.86759,259.657281 150.239999,259.657281 C116.598742,259.657281 94.4828068,245.885407 99.7357514,231.796285 C102.277499,225.003896 110.941304,219.439832 122.442028,215.96907 C127.533722,214.434343 130.553755,209.236335 129.460531,204.073578 L128.749935,200.724835 C127.410734,200.882104 125.852889,201.077334 124.256781,201.272565 C122.258913,201.492199 120.353969,201.84741 118.894514,202.07789 C117.435059,202.305659 116.45389,202.479197 116.45389,202.479197 C116.55228,203.623463 115.729629,204.911441 114.158118,206.023169 C113.335467,206.581745 112.42809,207.164725 111.310268,207.690762 C110.192446,208.224934 108.817715,208.675048 107.382858,209.149566 C105.896073,209.613238 104.24257,209.954891 102.583602,210.245025 C100.951964,210.562275 99.2082705,210.792755 97.4181151,210.939178 C93.8460034,211.221177 90.2629595,211.294388 87.0106161,210.893082 C87.0106161,210.893082 86.7892381,210.977139 86.4202748,211.123562 C86.0649768,211.280831 85.4855677,211.486907 84.9116247,211.768907 C83.7200098,212.330194 82.1129695,213.094846 80.4922639,213.86221 C78.8961559,214.653977 77.4749638,215.50811 76.3216118,216.139897 C75.7422027,216.454435 75.2639169,216.725588 74.9332164,216.907261 C74.6271135,217.113337 74.4549306,217.221798 74.4549306,217.221798 C76.7015073,218.257604 77.9532496,219.659466 78.1964921,221.145386 C78.7622359,222.715363 77.9887794,224.344994 76.5293244,226.123759 C75.6848084,227.0267 74.5423886,227.878121 73.3753712,228.705138 C72.1372943,229.543002 70.5876483,230.334769 68.8576202,231.091287 C65.6189421,232.612456 61.4209593,233.951953 56.9168736,234.757278 C56.9168736,234.757278 56.5260458,235.391777 56.228142,236.338102 C55.8865093,237.303407 55.4328211,238.604943 54.9654675,239.933594 C54.7686871,241.245976 54.585572,242.59903 54.4379866,243.634836 C54.2439392,244.678776 54.3395964,245.35937 54.3395964,245.35937 C58.9912674,245.410889 63.1291229,246.189099 66.2202157,247.420135 C69.8169249,248.602363 71.9897089,250.364859 73.6705419,252.520527 C74.9960768,254.847022 75.5235577,257.281978 74.3428751,260.093837 C73.5202235,262.835197 71.2627145,265.891094 67.5840135,268.664991 C67.5840135,268.664991 67.7917261,268.849375 68.1470242,269.153067 C68.5515173,269.445913 69.1418586,269.860777 69.8524547,270.359699 C71.3146427,271.357543 73.1539932,272.770251 75.315845,274.047383 C77.5979516,275.291976 79.9155879,276.544704 81.6729466,277.507298 C82.5420602,277.995374 83.4275722,278.299066 83.9796507,278.55395 C84.5563267,278.808834 84.8870272,278.941699 84.8870272,278.941699 C90.0771113,276.739935 95.6498242,275.606514 101.222537,275.023535 C104.007527,274.727978 106.743322,274.657478 109.358862,274.828304 C112.020864,274.96117 114.734794,275.169958 117.273808,275.763783 C119.790958,276.422686 122.245248,277.043626 124.393434,277.995374 C126.57715,278.930853 128.517624,280.159177 130.354242,281.341405 C134.024744,283.825169 136.847996,287.333892 138.064209,291.021576 C138.064209,291.021576 139.952755,291.094787 142.78694,291.20596 C145.63479,291.27646 149.428279,291.534056 153.208104,291.338825 C156.990661,291.216806 160.778685,291.154441 163.591005,290.972768 C166.365063,290.704327 168.218079,290.536212 168.218079,290.536212 C168.608907,288.611024 169.469821,286.797009 170.647771,285.151108 C171.22718,284.348495 171.888581,283.581131 172.623774,282.865287 C173.33437,282.122327 174.083229,281.365809 174.919546,280.698772 C176.564849,279.359275 178.43973,278.201451 180.563318,277.274107 C182.624047,276.314224 184.835094,275.411284 187.387774,274.841862 C189.989648,274.329382 192.430272,273.819614 195.081342,273.63523 C197.696882,273.426442 200.544733,273.548461 203.182137,273.659634 C208.571735,273.949768 214.546208,275.180804 219.739025,277.127684 C219.739025,277.127684 220.889644,276.495897 222.60874,275.544149 C224.254043,274.57342 226.623608,273.415596 228.43836,271.978484 C230.294109,270.614583 232.245515,269.323894 233.420732,268.252838 C234.574084,267.181783 235.325676,266.476785 235.325676,266.476785 C231.461127,263.833041 229.236414,260.996778 227.815222,258.195765 C227.151088,256.845421 226.967973,255.576424 226.92971,254.323696 C226.83132,253.057411 227.101893,251.877894 227.815222,250.779723 C228.820989,248.539998 231.398266,246.883251 234.330842,245.57087" id="Fill-2" fill="#000000"></path>
10
+ <path d="M118.447097,177.453406 C118.447097,177.453406 123.443134,158.68689 101.750823,134.472906 L101.026562,133.724523 C91.8872032,122.97872 86.8529035,109.342424 86.8529035,95.3265125 C86.8529035,62.4247782 113.863752,35.6538187 147.067719,35.6538187 L148.464314,35.6538187 C181.671013,35.6538187 208.684595,62.4247782 208.684595,95.3265125 C208.684595,109.342424 203.650296,122.97872 194.519137,133.716388 C194.412547,133.835696 194.166572,134.087868 193.794875,134.456637 C174.534989,153.591921 177.084936,177.453406 177.084936,177.453406 C212.256707,165.425049 236.017946,132.612795 236.220192,95.8091653 C236.471634,49.7944603 199.034155,10.5748554 152.774352,8.37309111 C152.194943,8.34597578 151.623733,8.33241812 151.052523,8.33241812 C150.352859,8.33241812 147.750985,8.38393723 147.761917,8.38393723 C147.688124,8.38393723 145.181907,8.33241812 144.484976,8.33241812 C143.913766,8.33241812 143.339823,8.34597578 142.771346,8.37309111 C96.5006113,10.5748554 59.063132,49.7944603 59.3173068,95.8091653 C59.5140872,132.612795 83.2780588,165.425049 118.447097,177.453406" id="Fill-3" fill="#000000"></path>
11
+ </g>
12
+ </svg>
@@ -0,0 +1,60 @@
1
+ import type {
2
+ IPipeline,
3
+ IStage,
4
+ IStageOrTriggerTypeConfig,
5
+ IStageOrTriggerValidator,
6
+ IValidatorConfig,
7
+ } from '@spinnaker/core';
8
+ import { NameUtils, PipelineConfigService, PipelineConfigValidator } from '@spinnaker/core';
9
+
10
+ export interface ITargetImpedanceValidationConfig extends IValidatorConfig {
11
+ stageTypes?: string[];
12
+ stageType?: string;
13
+ message: string;
14
+ }
15
+
16
+ export class CfTargetImpedanceValidator implements IStageOrTriggerValidator {
17
+ public validate(
18
+ pipeline: IPipeline,
19
+ stage: IStage,
20
+ validator: ITargetImpedanceValidationConfig,
21
+ _config: IStageOrTriggerTypeConfig,
22
+ ): string {
23
+ const stagesToTest: IStage[] = PipelineConfigService.getAllUpstreamDependencies(pipeline, stage);
24
+ const regions: string[] = stage.regions || [];
25
+ let allRegionsFound = true;
26
+
27
+ regions.forEach((region) => {
28
+ let regionFound = false;
29
+ stagesToTest.forEach((toTest) => {
30
+ if (toTest.type === 'deploy' && toTest.clusters && toTest.clusters.length) {
31
+ toTest.clusters.forEach((cluster: any) => {
32
+ const clusterName: string = NameUtils.getClusterName(
33
+ cluster.application,
34
+ cluster.stack,
35
+ cluster.freeFormDetails,
36
+ );
37
+ if (clusterName === stage.cluster && cluster.account === stage.credentials && cluster.region === region) {
38
+ regionFound = true;
39
+ }
40
+ });
41
+ } else if (
42
+ toTest.type === 'cloneServerGroup' &&
43
+ NameUtils.getClusterName(toTest.application, toTest.stack, toTest.freeFormDetails) === stage.cluster &&
44
+ toTest.region === region
45
+ ) {
46
+ regionFound = true;
47
+ }
48
+ });
49
+ if (!regionFound) {
50
+ allRegionsFound = false;
51
+ }
52
+ });
53
+ if (!allRegionsFound) {
54
+ return validator.message;
55
+ }
56
+ return null;
57
+ }
58
+ }
59
+
60
+ PipelineConfigValidator.registerValidator('cfTargetImpedance', new CfTargetImpedanceValidator());