@spinnaker/amazon 2026.2.2 → 2026.3.0

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 (404) hide show
  1. package/dist/aws.module.d.ts +2 -1
  2. package/dist/aws.services.d.ts +8 -0
  3. package/dist/certificates/AmazonCertificateReader.d.ts +1 -1
  4. package/dist/domain/IAmazonServerGroup.d.ts +10 -0
  5. package/dist/function/CreateLambdaFunction.d.ts +10 -5
  6. package/dist/function/configure/Network.d.ts +3 -0
  7. package/dist/function/details/FunctionActions.d.ts +3 -0
  8. package/dist/function/function.transformer.d.ts +1 -0
  9. package/dist/image/image.reader.d.ts +2 -2
  10. package/dist/index.d.ts +2 -2
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/instance/amazon.instance.write.service.d.ts +5 -5
  14. package/dist/instance/awsInstanceType.service.d.ts +13 -2
  15. package/dist/instance/details/AmazonInstanceDetails.d.ts +67 -0
  16. package/dist/instance/index.d.ts +1 -0
  17. package/dist/keyPairs/KeyPairsReader.d.ts +1 -1
  18. package/dist/loadBalancer/AmazonLoadBalancersTag.d.ts +7 -4
  19. package/dist/loadBalancer/OidcConfigReader.d.ts +1 -1
  20. package/dist/loadBalancer/TargetGroupDetails.d.ts +37 -3
  21. package/dist/loadBalancer/amazonLoadBalancerDataUtils.d.ts +1 -1
  22. package/dist/loadBalancer/configure/AmazonLoadBalancerChoiceModal.d.ts +6 -2
  23. package/dist/loadBalancer/configure/LoadBalancerTypes.d.ts +4 -4
  24. package/dist/loadBalancer/configure/application/CreateApplicationLoadBalancer.d.ts +10 -5
  25. package/dist/loadBalancer/configure/classic/CreateClassicLoadBalancer.d.ts +12 -7
  26. package/dist/loadBalancer/configure/common/SecurityGroups.d.ts +4 -0
  27. package/dist/loadBalancer/configure/network/CreateNetworkLoadBalancer.d.ts +10 -5
  28. package/dist/loadBalancer/details/LoadBalancerActions.d.ts +9 -2
  29. package/dist/loadBalancer/details/amazonLoadBalancerDetails.d.ts +22 -0
  30. package/dist/loadBalancer/index.d.ts +1 -0
  31. package/dist/loadBalancer/loadBalancer.transformer.d.ts +1 -1
  32. package/dist/pipeline/stages/AmazonStageConfig.d.ts +11 -0
  33. package/dist/pipeline/stages/bake/AwsBakeStageConfig.d.ts +66 -0
  34. package/dist/pipeline/stages/cloneServerGroup/AwsCloneServerGroupStageConfig.d.ts +20 -0
  35. package/dist/pipeline/stages/deleteLambda/index.d.ts +1 -1
  36. package/dist/pipeline/stages/deployCloudFormation/CloudFormationChangeSetInfo.d.ts +5 -4
  37. package/dist/pipeline/stages/deployCloudFormation/DeployCloudFormationStackStageConfig.d.ts +3 -0
  38. package/dist/pipeline/stages/deployCloudFormation/deployCloudFormationStackStage.d.ts +1 -1
  39. package/dist/pipeline/stages/deployCloudFormation/evaluateCloudFormationChangeSetExecution.service.d.ts +1 -3
  40. package/dist/pipeline/stages/deployLambda/index.d.ts +1 -1
  41. package/dist/pipeline/stages/destroyAsg/awsDestroyAsgStage.d.ts +26 -2
  42. package/dist/pipeline/stages/disableAsg/AwsDisableAsgStageConfig.d.ts +27 -0
  43. package/dist/pipeline/stages/disableCluster/AwsDisableClusterStageConfig.d.ts +19 -0
  44. package/dist/pipeline/stages/enableAsg/AwsEnableAsgStageConfig.d.ts +20 -0
  45. package/dist/pipeline/stages/findAmi/awsFindAmiStage.d.ts +17 -2
  46. package/dist/pipeline/stages/findImageFromTags/AwsFindImageFromTagsStageConfig.d.ts +3 -0
  47. package/dist/pipeline/stages/findImageFromTags/awsFindImageFromTagsStage.d.ts +12 -2
  48. package/dist/pipeline/stages/invokeLambda/index.d.ts +1 -1
  49. package/dist/pipeline/stages/modifyScalingProcess/ModifyScalingProcessStageConfig.d.ts +3 -0
  50. package/dist/pipeline/stages/modifyScalingProcess/modifyScalingProcessStage.d.ts +20 -2
  51. package/dist/pipeline/stages/modifyWarmPool/ModifyWarmPoolStageConfig.d.ts +3 -0
  52. package/dist/pipeline/stages/modifyWarmPool/modifyWarmPoolStage.d.ts +20 -0
  53. package/dist/pipeline/stages/resizeAsg/AwsResizeAsgStageConfig.d.ts +17 -0
  54. package/dist/pipeline/stages/resizeAsg/awsResizeAsgStage.d.ts +40 -2
  55. package/dist/pipeline/stages/rollbackCluster/AwsRollbackClusterStageConfig.d.ts +19 -0
  56. package/dist/pipeline/stages/routeLambda/index.d.ts +1 -1
  57. package/dist/pipeline/stages/scaleDownCluster/AwsScaleDownClusterStageConfig.d.ts +22 -0
  58. package/dist/pipeline/stages/shrinkCluster/AwsShrinkClusterStageConfig.d.ts +21 -0
  59. package/dist/pipeline/stages/tagImage/awsTagImageStage.d.ts +5 -2
  60. package/dist/pipeline/stages/updateCodeLambda/index.d.ts +1 -1
  61. package/dist/search/searchResultFormatter.d.ts +4 -2
  62. package/dist/securityGroup/configure/AmazonSecurityGroupModal.d.ts +43 -0
  63. package/dist/securityGroup/details/AmazonSecurityGroupDetails.d.ts +62 -0
  64. package/dist/securityGroup/details/index.d.ts +1 -0
  65. package/dist/securityGroup/index.d.ts +1 -0
  66. package/dist/securityGroup/securityGroup.reader.d.ts +0 -1
  67. package/dist/securityGroup/securityGroup.transformer.d.ts +11 -2
  68. package/dist/serverGroup/configure/serverGroupCommandBuilder.service.d.ts +23 -7
  69. package/dist/serverGroup/configure/serverGroupConfiguration.service.d.ts +17 -13
  70. package/dist/serverGroup/configure/wizard/AmazonCloneServerGroupModal.d.ts +16 -6
  71. package/dist/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.d.ts +6 -3
  72. package/dist/serverGroup/configure/wizard/pages/ServerGroupLoadBalancers.d.ts +3 -0
  73. package/dist/serverGroup/configure/wizard/securityGroups/SecurityGroupSelector.d.ts +4 -0
  74. package/dist/serverGroup/details/AmazonServerGroupActions.d.ts +10 -2
  75. package/dist/serverGroup/details/advancedSettings/EditAsgAdvancedSettingsModal.d.ts +17 -0
  76. package/dist/serverGroup/details/advancedSettings/index.d.ts +1 -0
  77. package/dist/serverGroup/details/resize/AmazonResizeServerGroupModal.d.ts +5 -3
  78. package/dist/serverGroup/details/rollback/AmazonRollbackServerGroupModal.d.ts +67 -0
  79. package/dist/serverGroup/details/rollback/index.d.ts +2 -0
  80. package/dist/serverGroup/details/rollback/rollbackServerGroupSelection.d.ts +9 -0
  81. package/dist/serverGroup/details/scalingPolicy/ScalingPolicyWriter.d.ts +2 -2
  82. package/dist/serverGroup/details/scalingPolicy/upsert/alarm/DimensionsEditor.d.ts +0 -1
  83. package/dist/serverGroup/details/scalingProcesses/ModifyScalingProcessesModal.d.ts +24 -0
  84. package/dist/serverGroup/details/scalingProcesses/index.d.ts +2 -0
  85. package/dist/serverGroup/details/scheduledActions/EditScheduledActionsModal.d.ts +31 -0
  86. package/dist/serverGroup/details/scheduledActions/index.d.ts +1 -0
  87. package/dist/serverGroup/details/sections/AdvancedSettingsDetailsSection.d.ts +3 -0
  88. package/dist/serverGroup/details/sections/AmazonCapacityDetailsSection.d.ts +3 -0
  89. package/dist/serverGroup/details/sections/ScalingProcessesDetailsSection.d.ts +1 -1
  90. package/dist/serverGroup/details/sections/ScheduledActionsDetailsSection.d.ts +1 -1
  91. package/dist/serverGroup/details/sections/SecurityGroupsDetailsSection.d.ts +4 -1
  92. package/dist/serverGroup/details/sections/WarmPoolDetailsSection.d.ts +6 -0
  93. package/dist/serverGroup/details/sections/index.d.ts +1 -0
  94. package/dist/serverGroup/details/securityGroups/EditSecurityGroupsModal.d.ts +32 -0
  95. package/dist/serverGroup/details/securityGroups/index.d.ts +1 -0
  96. package/dist/serverGroup/details/warmPool/ModifyWarmPoolModal.d.ts +26 -0
  97. package/dist/serverGroup/details/warmPool/WarmPoolService.d.ts +6 -0
  98. package/dist/serverGroup/details/warmPool/index.d.ts +2 -0
  99. package/dist/serverGroup/serverGroup.transformer.d.ts +1 -2
  100. package/dist/vpc/VpcReader.d.ts +2 -2
  101. package/dist/vpc/index.d.ts +1 -0
  102. package/package.json +3 -12
  103. package/src/aws.module.spec.ts +296 -0
  104. package/src/aws.module.ts +107 -112
  105. package/src/aws.services.ts +21 -0
  106. package/src/certificates/AmazonCertificateReader.ts +1 -1
  107. package/src/domain/IAmazonServerGroup.ts +9 -0
  108. package/src/function/CreateLambdaFunction.tsx +29 -16
  109. package/src/function/configure/Network.tsx +8 -4
  110. package/src/function/details/AmazonFunctionDetails.tsx +4 -5
  111. package/src/function/details/FunctionActions.tsx +5 -1
  112. package/src/function/function.transformer.ts +4 -0
  113. package/src/image/image.reader.ts +3 -5
  114. package/src/index.ts +2 -2
  115. package/src/instance/amazon.instance.write.service.ts +15 -4
  116. package/src/instance/awsInstanceType.service.spec.js +172 -136
  117. package/src/instance/awsInstanceType.service.ts +142 -154
  118. package/src/instance/details/AmazonInstanceDetails.spec.tsx +79 -0
  119. package/src/instance/details/AmazonInstanceDetails.tsx +644 -0
  120. package/src/instance/details/InstanceInformation.tsx +11 -14
  121. package/src/instance/details/InstanceSecurityGroups.tsx +20 -23
  122. package/src/instance/details/InstanceTags.tsx +5 -3
  123. package/src/instance/index.ts +1 -0
  124. package/src/keyPairs/KeyPairsReader.ts +1 -1
  125. package/src/loadBalancer/AmazonLoadBalancersTag.spec.tsx +39 -0
  126. package/src/loadBalancer/AmazonLoadBalancersTag.tsx +21 -14
  127. package/src/loadBalancer/OidcConfigReader.ts +1 -1
  128. package/src/loadBalancer/TargetGroupDetails.spec.tsx +113 -0
  129. package/src/loadBalancer/TargetGroupDetails.tsx +287 -7
  130. package/src/loadBalancer/amazonLoadBalancerDataUtils.ts +21 -21
  131. package/src/loadBalancer/configure/AmazonLoadBalancerChoiceModal.tsx +17 -4
  132. package/src/loadBalancer/configure/LoadBalancerTypes.ts +7 -4
  133. package/src/loadBalancer/configure/application/ALBListeners.tsx +1 -2
  134. package/src/loadBalancer/configure/application/CreateApplicationLoadBalancer.tsx +28 -18
  135. package/src/loadBalancer/configure/classic/CreateClassicLoadBalancer.tsx +29 -19
  136. package/src/loadBalancer/configure/common/LoadBalancerLocation.tsx +1 -1
  137. package/src/loadBalancer/configure/common/SecurityGroups.spec.tsx +27 -0
  138. package/src/loadBalancer/configure/common/SecurityGroups.tsx +11 -5
  139. package/src/loadBalancer/configure/network/CreateNetworkLoadBalancer.tsx +28 -18
  140. package/src/loadBalancer/details/LoadBalancerActions.tsx +19 -5
  141. package/src/loadBalancer/details/amazonLoadBalancerDetails.spec.tsx +141 -0
  142. package/src/loadBalancer/details/amazonLoadBalancerDetails.tsx +599 -0
  143. package/src/loadBalancer/index.ts +1 -0
  144. package/src/loadBalancer/loadBalancer.transformer.ts +3 -4
  145. package/src/pipeline/stages/AmazonStageConfig.spec.tsx +103 -0
  146. package/src/pipeline/stages/AmazonStageConfig.tsx +259 -0
  147. package/src/pipeline/stages/bake/AwsBakeStageConfig.tsx +708 -0
  148. package/src/pipeline/stages/cloneServerGroup/AwsCloneServerGroupStageConfig.tsx +275 -0
  149. package/src/pipeline/stages/deleteLambda/index.ts +2 -6
  150. package/src/pipeline/stages/deployCloudFormation/CloudFormationChangeSetInfo.tsx +14 -33
  151. package/src/pipeline/stages/deployCloudFormation/DeployCloudFormationStackStageConfig.tsx +264 -0
  152. package/src/pipeline/stages/deployCloudFormation/deployCloudFormationStackStage.spec.tsx +403 -0
  153. package/src/pipeline/stages/deployCloudFormation/deployCloudFormationStackStage.ts +21 -29
  154. package/src/pipeline/stages/deployCloudFormation/evaluateCloudFormationChangeSetExecution.service.ts +1 -11
  155. package/src/pipeline/stages/deployCloudFormation/evaluateCloudFormationChangeSetExecutionApproval.tsx +4 -3
  156. package/src/pipeline/stages/deployLambda/components/NetworkForm.tsx +3 -6
  157. package/src/pipeline/stages/deployLambda/index.ts +2 -6
  158. package/src/pipeline/stages/destroyAsg/awsDestroyAsgStage.js +28 -65
  159. package/src/pipeline/stages/disableAsg/AwsDisableAsgStageConfig.tsx +103 -0
  160. package/src/pipeline/stages/disableCluster/AwsDisableClusterStageConfig.tsx +119 -0
  161. package/src/pipeline/stages/enableAsg/AwsEnableAsgStageConfig.tsx +98 -0
  162. package/src/pipeline/stages/findAmi/awsFindAmiStage.js +22 -79
  163. package/src/pipeline/stages/findImageFromTags/AwsFindImageFromTagsStageConfig.spec.tsx +122 -0
  164. package/src/pipeline/stages/findImageFromTags/AwsFindImageFromTagsStageConfig.tsx +71 -0
  165. package/src/pipeline/stages/findImageFromTags/awsFindImageFromTagsStage.js +17 -32
  166. package/src/pipeline/stages/invokeLambda/index.ts +2 -6
  167. package/src/pipeline/stages/modifyScalingProcess/ModifyScalingProcessStageConfig.tsx +146 -0
  168. package/src/pipeline/stages/modifyScalingProcess/modifyScalingProcessStage.js +27 -98
  169. package/src/pipeline/stages/modifyScalingProcess/modifyScalingProcessStage.spec.tsx +167 -0
  170. package/src/pipeline/stages/modifyWarmPool/ModifyWarmPoolStageConfig.tsx +157 -0
  171. package/src/pipeline/stages/modifyWarmPool/modifyWarmPoolStage.js +26 -0
  172. package/src/pipeline/stages/modifyWarmPool/modifyWarmPoolStage.spec.tsx +89 -0
  173. package/src/pipeline/stages/resizeAsg/AwsResizeAsgStageConfig.spec.tsx +617 -0
  174. package/src/pipeline/stages/resizeAsg/AwsResizeAsgStageConfig.tsx +340 -0
  175. package/src/pipeline/stages/resizeAsg/awsResizeAsgStage.js +34 -125
  176. package/src/pipeline/stages/rollbackCluster/AwsRollbackClusterStageConfig.tsx +129 -0
  177. package/src/pipeline/stages/routeLambda/index.ts +2 -6
  178. package/src/pipeline/stages/scaleDownCluster/AwsScaleDownClusterStageConfig.tsx +121 -0
  179. package/src/pipeline/stages/shrinkCluster/AwsShrinkClusterStageConfig.tsx +136 -0
  180. package/src/pipeline/stages/tagImage/awsTagImageStage.spec.tsx +167 -0
  181. package/src/pipeline/stages/tagImage/awsTagImageStage.tsx +94 -0
  182. package/src/pipeline/stages/updateCodeLambda/index.ts +2 -6
  183. package/src/routerConsumers.spec.tsx +207 -0
  184. package/src/search/searchResultFormatter.ts +9 -16
  185. package/src/securityGroup/configure/AmazonSecurityGroupModal.spec.tsx +170 -0
  186. package/src/securityGroup/configure/AmazonSecurityGroupModal.tsx +440 -0
  187. package/src/securityGroup/details/AmazonSecurityGroupDetails.spec.tsx +62 -0
  188. package/src/securityGroup/details/AmazonSecurityGroupDetails.tsx +444 -0
  189. package/src/securityGroup/details/IPRangeRules.tsx +1 -1
  190. package/src/securityGroup/details/index.ts +1 -0
  191. package/src/securityGroup/index.ts +1 -0
  192. package/src/securityGroup/securityGroup.reader.ts +0 -5
  193. package/src/securityGroup/securityGroup.transformer.ts +35 -0
  194. package/src/serverGroup/configure/AmazonImageSelectInput.spec.tsx +104 -80
  195. package/src/serverGroup/configure/AmazonImageSelectInput.tsx +37 -18
  196. package/src/serverGroup/configure/serverGroupCommandBuilder.aws.service.spec.js +28 -66
  197. package/src/serverGroup/configure/serverGroupCommandBuilder.service.ts +476 -465
  198. package/src/serverGroup/configure/serverGroupCommandBuilder.spec.js +76 -124
  199. package/src/serverGroup/configure/serverGroupConfiguration.service.ts +106 -103
  200. package/src/serverGroup/configure/wizard/AmazonCloneServerGroupModal.tsx +65 -25
  201. package/src/serverGroup/configure/wizard/instanceType/CpuCreditsToggle.tsx +3 -3
  202. package/src/serverGroup/configure/wizard/instanceType/advancedMode/AdvancedModeSelector.tsx +2 -2
  203. package/src/serverGroup/configure/wizard/instanceType/simpleMode/SimpleModeSelector.spec.tsx +105 -0
  204. package/src/serverGroup/configure/wizard/instanceType/simpleMode/SimpleModeSelector.tsx +20 -6
  205. package/src/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.spec.tsx +39 -0
  206. package/src/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.tsx +10 -9
  207. package/src/serverGroup/configure/wizard/pages/ServerGroupInstanceType.tsx +2 -2
  208. package/src/serverGroup/configure/wizard/pages/ServerGroupLoadBalancers.tsx +5 -2
  209. package/src/serverGroup/configure/wizard/pages/advancedSettings/ServerGroupAdvancedSettingsCommon.spec.tsx +53 -0
  210. package/src/serverGroup/configure/wizard/pages/advancedSettings/ServerGroupAdvancedSettingsCommon.tsx +35 -33
  211. package/src/serverGroup/configure/wizard/securityGroups/SecurityGroupSelector.spec.tsx +20 -0
  212. package/src/serverGroup/configure/wizard/securityGroups/SecurityGroupSelector.tsx +9 -4
  213. package/src/serverGroup/details/AmazonServerGroupActions.spec.tsx +186 -0
  214. package/src/serverGroup/details/AmazonServerGroupActions.tsx +37 -87
  215. package/src/serverGroup/details/advancedSettings/EditAsgAdvancedSettingsModal.spec.tsx +110 -0
  216. package/src/serverGroup/details/advancedSettings/EditAsgAdvancedSettingsModal.tsx +117 -0
  217. package/src/serverGroup/details/advancedSettings/index.ts +1 -0
  218. package/src/serverGroup/details/amazonServerGroupDetailsGetter.ts +4 -4
  219. package/src/serverGroup/details/resize/AmazonResizeServerGroupModal.tsx +16 -6
  220. package/src/serverGroup/details/rollback/AmazonRollbackServerGroupModal.spec.tsx +285 -0
  221. package/src/serverGroup/details/rollback/AmazonRollbackServerGroupModal.tsx +449 -0
  222. package/src/serverGroup/details/rollback/index.ts +2 -0
  223. package/src/serverGroup/details/rollback/rollbackServerGroupSelection.spec.ts +101 -0
  224. package/src/serverGroup/details/rollback/rollbackServerGroupSelection.ts +81 -0
  225. package/src/serverGroup/details/scalingPolicy/CreateScalingPolicyButton.tsx +4 -4
  226. package/src/serverGroup/details/scalingPolicy/ScalingPolicyWriter.ts +2 -5
  227. package/src/serverGroup/details/scalingPolicy/upsert/alarm/DimensionsEditor.tsx +0 -2
  228. package/src/serverGroup/details/scalingProcesses/ModifyScalingProcessesModal.spec.tsx +74 -0
  229. package/src/serverGroup/details/scalingProcesses/ModifyScalingProcessesModal.tsx +140 -0
  230. package/src/serverGroup/details/scalingProcesses/index.ts +2 -0
  231. package/src/serverGroup/details/scheduledActions/EditScheduledActionsModal.spec.tsx +115 -0
  232. package/src/serverGroup/details/scheduledActions/EditScheduledActionsModal.tsx +205 -0
  233. package/src/serverGroup/details/scheduledActions/index.ts +1 -0
  234. package/src/serverGroup/details/sections/AdvancedSettingsDetailsSection.tsx +7 -14
  235. package/src/serverGroup/details/sections/AmazonCapacityDetailsSection.tsx +14 -2
  236. package/src/serverGroup/details/sections/AmazonServerGroupMaintenanceActions.spec.tsx +148 -0
  237. package/src/serverGroup/details/sections/InstancesDistributionDetailsSection.spec.tsx +1 -5
  238. package/src/serverGroup/details/sections/LaunchTemplateDetailsSection.spec.tsx +1 -5
  239. package/src/serverGroup/details/sections/ScalingProcessesDetailsSection.tsx +8 -20
  240. package/src/serverGroup/details/sections/ScheduledActionsDetailsSection.tsx +7 -12
  241. package/src/serverGroup/details/sections/SecurityGroupsDetailsSection.tsx +14 -19
  242. package/src/serverGroup/details/sections/WarmPoolDetailsSection.tsx +44 -0
  243. package/src/serverGroup/details/sections/index.ts +1 -0
  244. package/src/serverGroup/details/securityGroups/EditSecurityGroupsModal.spec.tsx +161 -0
  245. package/src/serverGroup/details/securityGroups/EditSecurityGroupsModal.tsx +177 -0
  246. package/src/serverGroup/details/securityGroups/index.ts +1 -0
  247. package/src/serverGroup/details/warmPool/ModifyWarmPoolModal.spec.tsx +69 -0
  248. package/src/serverGroup/details/warmPool/ModifyWarmPoolModal.tsx +191 -0
  249. package/src/serverGroup/details/warmPool/WarmPoolService.spec.ts +30 -0
  250. package/src/serverGroup/details/warmPool/WarmPoolService.ts +15 -0
  251. package/src/serverGroup/details/warmPool/index.ts +2 -0
  252. package/src/serverGroup/serverGroup.transformer.ts +1 -6
  253. package/src/vpc/VpcReader.ts +2 -2
  254. package/src/vpc/index.ts +1 -0
  255. package/dist/common/common.module.d.ts +0 -1
  256. package/dist/common/footer.component.d.ts +0 -1
  257. package/dist/function/function.module.d.ts +0 -1
  258. package/dist/instance/details/amazonInstanceInformation.component.d.ts +0 -1
  259. package/dist/instance/details/instance.details.controller.d.ts +0 -2
  260. package/dist/instance/details/instanceDns.component.d.ts +0 -1
  261. package/dist/instance/details/instanceSecurityGroups.component.d.ts +0 -1
  262. package/dist/instance/details/instanceStatus.component.d.ts +0 -1
  263. package/dist/instance/details/instanceTags.component.d.ts +0 -1
  264. package/dist/loadBalancer/details/loadBalancerActions.component.d.ts +0 -1
  265. package/dist/loadBalancer/details/loadBalancerDetails.controller.d.ts +0 -41
  266. package/dist/loadBalancer/details/targetGroupDetails.controller.d.ts +0 -30
  267. package/dist/loadBalancer/loadBalancer.module.d.ts +0 -1
  268. package/dist/loadBalancer/targetGroup.states.d.ts +0 -1
  269. package/dist/pipeline/stages/bake/awsBakeStage.d.ts +0 -2
  270. package/dist/pipeline/stages/bake/bakeExecutionDetails.controller.d.ts +0 -2
  271. package/dist/pipeline/stages/cloneServerGroup/awsCloneServerGroupStage.d.ts +0 -2
  272. package/dist/pipeline/stages/deployCloudFormation/cloudFormationTemplateEntry.component.d.ts +0 -1
  273. package/dist/pipeline/stages/deployCloudFormation/deployCloudFormationStackConfig.controller.d.ts +0 -25
  274. package/dist/pipeline/stages/disableAsg/awsDisableAsgStage.d.ts +0 -2
  275. package/dist/pipeline/stages/disableCluster/awsDisableClusterStage.d.ts +0 -2
  276. package/dist/pipeline/stages/enableAsg/awsEnableAsgStage.d.ts +0 -2
  277. package/dist/pipeline/stages/rollbackCluster/awsRollbackClusterStage.d.ts +0 -2
  278. package/dist/pipeline/stages/scaleDownCluster/awsScaleDownClusterStage.d.ts +0 -2
  279. package/dist/pipeline/stages/shrinkCluster/awsShrinkClusterStage.d.ts +0 -2
  280. package/dist/reactShims/aws.react.injector.d.ts +0 -18
  281. package/dist/reactShims/aws.react.module.d.ts +0 -1
  282. package/dist/reactShims/index.d.ts +0 -1
  283. package/dist/securityGroup/clone/cloneSecurityGroup.controller.d.ts +0 -2
  284. package/dist/securityGroup/configure/CreateSecurityGroupCtrl.d.ts +0 -2
  285. package/dist/securityGroup/configure/EditSecurityGroupCtrl.d.ts +0 -2
  286. package/dist/securityGroup/configure/configSecurityGroup.mixin.controller.d.ts +0 -2
  287. package/dist/securityGroup/configure/ingressRuleGroupSelector.component.d.ts +0 -1
  288. package/dist/securityGroup/configure/securityGroupDetailsCustom.component.d.ts +0 -1
  289. package/dist/securityGroup/configure/securityGroupDetailsCustom.d.ts +0 -10
  290. package/dist/securityGroup/details/securityGroupDetail.controller.d.ts +0 -2
  291. package/dist/securityGroup/details/securityGroupIpRangeRules.component.d.ts +0 -1
  292. package/dist/securityGroup/securityGroup.module.d.ts +0 -1
  293. package/dist/serverGroup/details/advancedSettings/editAsgAdvancedSettings.modal.controller.d.ts +0 -2
  294. package/dist/serverGroup/details/rollback/rollbackServerGroup.controller.d.ts +0 -2
  295. package/dist/serverGroup/details/scalingPolicy/createScalingPolicyButton.component.d.ts +0 -1
  296. package/dist/serverGroup/details/scalingPolicy/scalingPolicy.module.d.ts +0 -1
  297. package/dist/serverGroup/details/scalingPolicy/scalingPolicySummary.component.d.ts +0 -1
  298. package/dist/serverGroup/details/scalingProcesses/modifyScalingProcesses.controller.d.ts +0 -2
  299. package/dist/serverGroup/details/scheduledAction/editScheduledActions.modal.controller.d.ts +0 -2
  300. package/dist/serverGroup/details/securityGroup/editSecurityGroups.modal.controller.d.ts +0 -2
  301. package/dist/serverGroup/details/serverGroupDetails.module.d.ts +0 -1
  302. package/dist/subnet/subnet.renderer.d.ts +0 -5
  303. package/dist/vpc/vpc.module.d.ts +0 -1
  304. package/src/applicationProviderFields/awsFields.html +0 -13
  305. package/src/common/common.module.ts +0 -6
  306. package/src/common/footer.component.ts +0 -29
  307. package/src/function/function.module.ts +0 -5
  308. package/src/image/image.reader.spec.ts +0 -75
  309. package/src/instance/details/amazonInstanceInformation.component.ts +0 -13
  310. package/src/instance/details/instance.details.controller.js +0 -586
  311. package/src/instance/details/instance.details.controller.spec.js +0 -133
  312. package/src/instance/details/instanceDetails.html +0 -65
  313. package/src/instance/details/instanceDns.component.ts +0 -21
  314. package/src/instance/details/instanceSecurityGroups.component.ts +0 -13
  315. package/src/instance/details/instanceStatus.component.ts +0 -19
  316. package/src/instance/details/instanceTags.component.ts +0 -13
  317. package/src/loadBalancer/details/loadBalancerActions.component.ts +0 -16
  318. package/src/loadBalancer/details/loadBalancerDetails.controller.spec.ts +0 -76
  319. package/src/loadBalancer/details/loadBalancerDetails.controller.ts +0 -240
  320. package/src/loadBalancer/details/loadBalancerDetails.html +0 -266
  321. package/src/loadBalancer/details/targetGroupDetails.controller.ts +0 -95
  322. package/src/loadBalancer/details/targetGroupDetails.html +0 -138
  323. package/src/loadBalancer/loadBalancer.module.ts +0 -15
  324. package/src/loadBalancer/targetGroup.states.ts +0 -55
  325. package/src/pipeline/stages/bake/awsBakeStage.js +0 -219
  326. package/src/pipeline/stages/bake/bakeExecutionDetails.controller.js +0 -43
  327. package/src/pipeline/stages/bake/bakeExecutionDetails.html +0 -65
  328. package/src/pipeline/stages/bake/bakeStage.html +0 -205
  329. package/src/pipeline/stages/cloneServerGroup/awsCloneServerGroupStage.js +0 -143
  330. package/src/pipeline/stages/cloneServerGroup/cloneServerGroupStage.html +0 -143
  331. package/src/pipeline/stages/cloneServerGroup/cloneServerGroupStepLabel.html +0 -1
  332. package/src/pipeline/stages/deployCloudFormation/cloudFormationTemplateEntry.component.ts +0 -46
  333. package/src/pipeline/stages/deployCloudFormation/deployCloudFormationStackConfig.controller.ts +0 -84
  334. package/src/pipeline/stages/deployCloudFormation/deployCloudFormationStackConfig.html +0 -84
  335. package/src/pipeline/stages/destroyAsg/destroyAsgStage.html +0 -9
  336. package/src/pipeline/stages/destroyAsg/destroyAsgStepLabel.html +0 -1
  337. package/src/pipeline/stages/disableAsg/awsDisableAsgStage.js +0 -69
  338. package/src/pipeline/stages/disableAsg/disableAsgStage.html +0 -11
  339. package/src/pipeline/stages/disableAsg/disableAsgStepLabel.html +0 -1
  340. package/src/pipeline/stages/disableCluster/awsDisableClusterStage.js +0 -84
  341. package/src/pipeline/stages/disableCluster/disableClusterStage.html +0 -26
  342. package/src/pipeline/stages/enableAsg/awsEnableAsgStage.js +0 -73
  343. package/src/pipeline/stages/enableAsg/enableAsgStage.html +0 -11
  344. package/src/pipeline/stages/enableAsg/enableAsgStepLabel.html +0 -1
  345. package/src/pipeline/stages/findAmi/findAmiStage.html +0 -24
  346. package/src/pipeline/stages/findImageFromTags/findImageFromTagsExecutionDetails.html +0 -44
  347. package/src/pipeline/stages/findImageFromTags/findImageFromTagsStage.html +0 -11
  348. package/src/pipeline/stages/modifyScalingProcess/modifyScalingProcessExecutionDetails.html +0 -36
  349. package/src/pipeline/stages/modifyScalingProcess/modifyScalingProcessStage.html +0 -24
  350. package/src/pipeline/stages/resizeAsg/resizeAsgStage.html +0 -90
  351. package/src/pipeline/stages/resizeAsg/resizeAsgStepLabel.html +0 -4
  352. package/src/pipeline/stages/rollbackCluster/awsRollbackClusterStage.js +0 -66
  353. package/src/pipeline/stages/rollbackCluster/rollbackClusterStage.html +0 -43
  354. package/src/pipeline/stages/scaleDownCluster/awsScaleDownClusterStage.js +0 -78
  355. package/src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.html +0 -35
  356. package/src/pipeline/stages/shrinkCluster/awsShrinkClusterStage.js +0 -73
  357. package/src/pipeline/stages/shrinkCluster/shrinkClusterStage.html +0 -34
  358. package/src/pipeline/stages/tagImage/awsTagImageStage.js +0 -34
  359. package/src/pipeline/stages/tagImage/tagImageExecutionDetails.html +0 -38
  360. package/src/pipeline/stages/tagImage/tagImageStage.html +0 -10
  361. package/src/reactShims/aws.react.injector.ts +0 -25
  362. package/src/reactShims/aws.react.module.ts +0 -12
  363. package/src/reactShims/index.ts +0 -1
  364. package/src/securityGroup/clone/cloneSecurityGroup.controller.js +0 -106
  365. package/src/securityGroup/clone/cloneSecurityGroup.html +0 -19
  366. package/src/securityGroup/configure/CreateSecurityGroup.controller.spec.js +0 -307
  367. package/src/securityGroup/configure/CreateSecurityGroupCtrl.js +0 -47
  368. package/src/securityGroup/configure/EditSecurityGroupCtrl.js +0 -115
  369. package/src/securityGroup/configure/configSecurityGroup.mixin.controller.js +0 -366
  370. package/src/securityGroup/configure/createSecurityGroup.html +0 -19
  371. package/src/securityGroup/configure/createSecurityGroupIngress.html +0 -100
  372. package/src/securityGroup/configure/createSecurityGroupProperties.html +0 -123
  373. package/src/securityGroup/configure/editSecurityGroup.html +0 -20
  374. package/src/securityGroup/configure/ingressRuleGroupSelector.component.html +0 -77
  375. package/src/securityGroup/configure/ingressRuleGroupSelector.component.less +0 -6
  376. package/src/securityGroup/configure/ingressRuleGroupSelector.component.ts +0 -190
  377. package/src/securityGroup/configure/securityGroupDetailsCustom.component.ts +0 -16
  378. package/src/securityGroup/configure/securityGroupDetailsCustom.tsx +0 -16
  379. package/src/securityGroup/details/securityGroupDetail.controller.js +0 -249
  380. package/src/securityGroup/details/securityGroupDetail.html +0 -114
  381. package/src/securityGroup/details/securityGroupIpRangeRules.component.ts +0 -12
  382. package/src/securityGroup/securityGroup.module.ts +0 -26
  383. package/src/securityGroup/securityGroup.transformer.js +0 -48
  384. package/src/serverGroup/configure/serverGroupConfiguration.service.spec.ts +0 -478
  385. package/src/serverGroup/details/advancedSettings/editAsgAdvancedSettings.modal.controller.js +0 -47
  386. package/src/serverGroup/details/advancedSettings/editAsgAdvancedSettings.modal.html +0 -79
  387. package/src/serverGroup/details/rollback/rollbackServerGroup.controller.js +0 -146
  388. package/src/serverGroup/details/rollback/rollbackServerGroup.html +0 -139
  389. package/src/serverGroup/details/scalingPolicy/createScalingPolicyButton.component.ts +0 -15
  390. package/src/serverGroup/details/scalingPolicy/scalingPolicy.module.ts +0 -6
  391. package/src/serverGroup/details/scalingPolicy/scalingPolicySummary.component.ts +0 -14
  392. package/src/serverGroup/details/scalingPolicy/upsert/alarm/dimensionsEditor.less +0 -18
  393. package/src/serverGroup/details/scalingProcesses/modifyScalingProcesses.controller.js +0 -95
  394. package/src/serverGroup/details/scalingProcesses/modifyScalingProcesses.controller.spec.js +0 -106
  395. package/src/serverGroup/details/scalingProcesses/modifyScalingProcesses.html +0 -30
  396. package/src/serverGroup/details/scheduledAction/editScheduledActions.modal.controller.js +0 -70
  397. package/src/serverGroup/details/scheduledAction/editScheduledActions.modal.html +0 -89
  398. package/src/serverGroup/details/securityGroup/editSecurityGroups.modal.controller.js +0 -95
  399. package/src/serverGroup/details/securityGroup/editSecurityGroups.modal.html +0 -40
  400. package/src/serverGroup/details/serverGroupDetails.module.ts +0 -18
  401. package/src/serverGroup/serverGroup.transformer.spec.ts +0 -185
  402. package/src/subnet/SubnetSelectInput.spec.tsx +0 -91
  403. package/src/subnet/subnet.renderer.ts +0 -12
  404. package/src/vpc/vpc.module.ts +0 -9
@@ -0,0 +1,275 @@
1
+ import { get, set } from 'lodash';
2
+ import React, { useEffect, useState } from 'react';
3
+
4
+ import type { IAccount, IStageConfigProps } from '@spinnaker/core';
5
+ import {
6
+ AccountRegionClusterSelector,
7
+ AccountService,
8
+ AppListExtractor,
9
+ DeploymentStrategySelector,
10
+ HelpField,
11
+ NameUtils,
12
+ PlatformHealthOverride,
13
+ Registry,
14
+ StageConfigField,
15
+ StageConstants,
16
+ TargetSelect,
17
+ } from '@spinnaker/core';
18
+
19
+ const capacityFields = ['min', 'max', 'desired'] as const;
20
+
21
+ export function AwsCloneServerGroupStageConfig(props: IStageConfigProps) {
22
+ const { application, pipeline, stage, stageFieldUpdated, updateStageField } = props;
23
+ const [accounts, setAccounts] = useState<IAccount[]>([]);
24
+
25
+ useEffect(() => {
26
+ const changes: Record<string, any> = {};
27
+ if (!stage.application) {
28
+ changes.application = application.name;
29
+ }
30
+ if (stage.cloudProvider !== 'aws') {
31
+ changes.cloudProvider = 'aws';
32
+ }
33
+ if (stage.cloudProviderType !== 'aws') {
34
+ changes.cloudProviderType = 'aws';
35
+ }
36
+ if (!stage.credentials && application.defaultCredentials?.aws) {
37
+ changes.credentials = application.defaultCredentials.aws;
38
+ }
39
+ if (stage.target === undefined) {
40
+ changes.target = StageConstants.TARGET_LIST[0].val;
41
+ }
42
+ if (stage.useSourceCapacity === undefined) {
43
+ changes.useSourceCapacity = true;
44
+ }
45
+ if (
46
+ stage.isNew &&
47
+ application.attributes.platformHealthOnlyShowOverride &&
48
+ application.attributes.platformHealthOnly &&
49
+ stage.interestingHealthProviderNames === undefined
50
+ ) {
51
+ changes.interestingHealthProviderNames = ['Amazon'];
52
+ }
53
+ if (stage.isNew) {
54
+ changes.useAmiBlockDeviceMappings = get(
55
+ application,
56
+ 'attributes.providerSettings.aws.useAmiBlockDeviceMappings',
57
+ false,
58
+ );
59
+ changes.copySourceCustomBlockDeviceMappings = false;
60
+ }
61
+ if (Object.keys(changes).length) {
62
+ updateStageField(changes);
63
+ }
64
+ }, []);
65
+
66
+ useEffect(() => {
67
+ let active = true;
68
+ AccountService.listAccounts('aws').then((loadedAccounts) => active && setAccounts(loadedAccounts));
69
+ return () => {
70
+ active = false;
71
+ };
72
+ }, []);
73
+
74
+ useEffect(() => {
75
+ if (stage.targetCluster) {
76
+ const filterByCluster = AppListExtractor.monikerClusterNameFilter(stage.targetCluster);
77
+ const moniker = AppListExtractor.getMonikers([application], filterByCluster)[0];
78
+ if (moniker) {
79
+ updateStageField({ stack: moniker.stack, freeFormDetails: moniker.detail });
80
+ } else {
81
+ const nameParts = NameUtils.parseClusterName(stage.targetCluster);
82
+ updateStageField({ stack: nameParts.stack, freeFormDetails: nameParts.freeFormDetails });
83
+ }
84
+ } else if (stage.stack || stage.freeFormDetails) {
85
+ updateStageField({ stack: '', freeFormDetails: '' });
86
+ }
87
+ }, [stage.targetCluster]);
88
+
89
+ const toggleSuspendedProcess = (process: string) => {
90
+ const suspendedProcesses: string[] = stage.suspendedProcesses ? [...stage.suspendedProcesses] : [];
91
+ const index = suspendedProcesses.indexOf(process);
92
+ if (index === -1) {
93
+ suspendedProcesses.push(process);
94
+ } else {
95
+ suspendedProcesses.splice(index, 1);
96
+ }
97
+ updateStageField({ suspendedProcesses });
98
+ };
99
+
100
+ const blockDeviceMappingsSource = stage.copySourceCustomBlockDeviceMappings
101
+ ? 'source'
102
+ : stage.useAmiBlockDeviceMappings
103
+ ? 'ami'
104
+ : 'default';
105
+
106
+ const selectBlockDeviceMappingsSource = (selection: string) => {
107
+ if (selection === 'source') {
108
+ updateStageField({ copySourceCustomBlockDeviceMappings: true, useAmiBlockDeviceMappings: false });
109
+ } else if (selection === 'ami') {
110
+ updateStageField({ copySourceCustomBlockDeviceMappings: false, useAmiBlockDeviceMappings: true });
111
+ } else {
112
+ updateStageField({ copySourceCustomBlockDeviceMappings: false, useAmiBlockDeviceMappings: false });
113
+ }
114
+ };
115
+
116
+ return (
117
+ <div className="form-horizontal">
118
+ {!pipeline.strategy && (
119
+ <AccountRegionClusterSelector
120
+ accounts={accounts}
121
+ application={application}
122
+ clusterField="targetCluster"
123
+ component={stage}
124
+ onComponentUpdate={stageFieldUpdated}
125
+ singleRegion="true"
126
+ />
127
+ )}
128
+ <StageConfigField label="Target">
129
+ <TargetSelect
130
+ model={{ target: stage.target }}
131
+ onChange={(target: string) => updateStageField({ target })}
132
+ options={StageConstants.TARGET_LIST}
133
+ />
134
+ </StageConfigField>
135
+ <StageConfigField label="Capacity">
136
+ <div className="radio">
137
+ <label>
138
+ <input
139
+ checked={stage.useSourceCapacity !== false}
140
+ onChange={() => updateStageField({ useSourceCapacity: true, capacity: undefined })}
141
+ type="radio"
142
+ />
143
+ Copy the capacity from the current server group <HelpField id="serverGroupCapacity.useSourceCapacityTrue" />
144
+ </label>
145
+ </div>
146
+ <div className="radio">
147
+ <label>
148
+ <input
149
+ checked={stage.useSourceCapacity === false}
150
+ onChange={() => updateStageField({ useSourceCapacity: false })}
151
+ type="radio"
152
+ />
153
+ Let me specify the capacity <HelpField id="serverGroupCapacity.useSourceCapacityFalse" />
154
+ </label>
155
+ </div>
156
+ </StageConfigField>
157
+ {stage.useSourceCapacity === false && (
158
+ <>
159
+ <div className="form-group">
160
+ <div className="col-md-2 col-md-offset-3">Min</div>
161
+ <div className="col-md-2">Max</div>
162
+ <div className="col-md-2">Desired</div>
163
+ </div>
164
+ <div className="form-group">
165
+ {capacityFields.map((field) => (
166
+ <div className="col-md-2" style={field === 'min' ? { marginLeft: '25%' } : undefined} key={field}>
167
+ <input
168
+ className="form-control input-sm"
169
+ onChange={(event) =>
170
+ updateStageField({
171
+ capacity: {
172
+ ...stage.capacity,
173
+ [field]: event.target.value === '' ? undefined : Number(event.target.value),
174
+ },
175
+ })
176
+ }
177
+ required
178
+ type="number"
179
+ value={stage.capacity?.[field] ?? ''}
180
+ />
181
+ </div>
182
+ ))}
183
+ </div>
184
+ </>
185
+ )}
186
+ <StageConfigField label="Traffic" helpKey="aws.serverGroup.traffic">
187
+ <div className="checkbox">
188
+ <label>
189
+ <input
190
+ checked={!(stage.suspendedProcesses || []).includes('AddToLoadBalancer')}
191
+ onChange={() => toggleSuspendedProcess('AddToLoadBalancer')}
192
+ type="checkbox"
193
+ />
194
+ Send client requests to new instances
195
+ </label>
196
+ </div>
197
+ </StageConfigField>
198
+ <StageConfigField label="AMI Block Device Mappings">
199
+ <div className="radio">
200
+ <div>
201
+ <label>
202
+ <input
203
+ checked={blockDeviceMappingsSource === 'source'}
204
+ name="blockDeviceMappingsSource"
205
+ onChange={() => selectBlockDeviceMappingsSource('source')}
206
+ type="radio"
207
+ />
208
+ Copy from current server group <HelpField id="aws.blockDeviceMappings.useSource" />
209
+ </label>
210
+ </div>
211
+ <div>
212
+ <label>
213
+ <input
214
+ checked={blockDeviceMappingsSource === 'ami'}
215
+ name="blockDeviceMappingsSource"
216
+ onChange={() => selectBlockDeviceMappingsSource('ami')}
217
+ type="radio"
218
+ />
219
+ Prefer AMI block device mappings <HelpField id="aws.blockDeviceMappings.useAMI" />
220
+ </label>
221
+ </div>
222
+ <div>
223
+ <label>
224
+ <input
225
+ checked={blockDeviceMappingsSource === 'default'}
226
+ name="blockDeviceMappingsSource"
227
+ onChange={() => selectBlockDeviceMappingsSource('default')}
228
+ type="radio"
229
+ />
230
+ Defaults for selected instance type <HelpField id="aws.blockDeviceMappings.useDefaults" />
231
+ </label>
232
+ </div>
233
+ </div>
234
+ </StageConfigField>
235
+ {application.attributes.platformHealthOnlyShowOverride && (
236
+ <StageConfigField label="Task Completion">
237
+ <PlatformHealthOverride
238
+ interestingHealthProviderNames={stage.interestingHealthProviderNames || []}
239
+ onChange={(interestingHealthProviderNames) => updateStageField({ interestingHealthProviderNames })}
240
+ platformHealthType="Amazon"
241
+ />
242
+ </StageConfigField>
243
+ )}
244
+ <DeploymentStrategySelector
245
+ command={stage as any}
246
+ fieldColumns="6"
247
+ onFieldChange={(key, value) => {
248
+ set(stage, key, value);
249
+ stageFieldUpdated();
250
+ }}
251
+ onStrategyChange={() => stageFieldUpdated()}
252
+ />
253
+ </div>
254
+ );
255
+ }
256
+
257
+ export const awsCloneServerGroupStage = {
258
+ key: 'cloneServerGroup',
259
+ provides: 'cloneServerGroup',
260
+ cloudProvider: 'aws',
261
+ component: AwsCloneServerGroupStageConfig,
262
+ accountExtractor: (stage: any) => [stage.context.credentials],
263
+ validators: [
264
+ { type: 'requiredField', fieldName: 'targetCluster', fieldLabel: 'cluster' },
265
+ { type: 'requiredField', fieldName: 'target' },
266
+ { type: 'requiredField', fieldName: 'region' },
267
+ { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },
268
+ ],
269
+ };
270
+
271
+ export function registerAwsCloneServerGroupStage() {
272
+ Registry.pipeline.registerStage(awsCloneServerGroupStage);
273
+ }
274
+
275
+ registerAwsCloneServerGroupStage();
@@ -1,17 +1,13 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- import { module } from 'angular';
5
-
6
4
  import { Registry, SETTINGS } from '@spinnaker/core';
7
5
 
8
6
  import { lambdaDeleteStage } from './LambdaDeleteStage';
9
7
  export * from './LambdaDeleteStage';
10
8
 
11
- export const AMAZON_PIPELINE_STAGES_LAMBDA_DELETE = 'spinnaker.amazon.pipeline.stage.Aws.LambdaDeleteStage';
12
-
13
- module(AMAZON_PIPELINE_STAGES_LAMBDA_DELETE, []).config(function () {
9
+ export function registerLambdaDeleteStage(): void {
14
10
  if (SETTINGS.feature.lambdaAdditionalStages) {
15
11
  Registry.pipeline.registerStage(lambdaDeleteStage);
16
12
  }
17
- });
13
+ }
@@ -1,36 +1,27 @@
1
- import { module } from 'angular';
2
- import React, { useState } from 'react';
3
- import { react2angular } from 'react2angular';
1
+ import React from 'react';
4
2
 
5
- import type { IStage, IStageConfigProps } from '@spinnaker/core';
6
- import { CheckboxInput, ReactSelectInput, StageConfigField, TextInput, withErrorBoundary } from '@spinnaker/core';
3
+ import type { IStage } from '@spinnaker/core';
4
+ import { CheckboxInput, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';
7
5
 
8
6
  export interface ICloudFormationChangeSetInfoProps {
9
- stage: IStage[];
10
- stageconfig: IStageConfigProps;
7
+ stage: IStage;
8
+ updateStageField: (changes: { [key: string]: any }) => void;
11
9
  }
12
10
 
13
11
  export const CloudFormationChangeSetInfo = (props: ICloudFormationChangeSetInfoProps) => {
14
- const { stage, stageconfig } = props;
15
- const [changeSetName, setChangeSetName] = useState(
16
- (stage as any).changeSetName ? (stage as any).changeSetName : "ChangeSet-${execution['id']}",
17
- );
18
- const [executeChangeSet, setExecuteChangeSet] = useState((stage as any).executeChangeSet);
19
- const [actionOnReplacement, setActionOnReplacement] = useState((stage as any).actionOnReplacement);
12
+ const { stage, updateStageField } = props;
13
+ const changeSetName = stage.changeSetName || "ChangeSet-${execution['id']}";
20
14
 
21
15
  const modifyChangeSetName = (value: string) => {
22
- setChangeSetName(value);
23
- stageconfig.updateStageField({ changeSetName: value });
16
+ updateStageField({ changeSetName: value });
24
17
  };
25
18
 
26
19
  const toggleExecuteChangeSet = (checked: boolean) => {
27
- setExecuteChangeSet(checked);
28
- stageconfig.updateStageField({ executeChangeSet: checked });
20
+ updateStageField({ executeChangeSet: checked });
29
21
  };
30
22
 
31
23
  const modifyActionOnReplacement = (value: string) => {
32
- setActionOnReplacement(value);
33
- stageconfig.updateStageField({ actionOnReplacement: value });
24
+ updateStageField({ actionOnReplacement: value });
34
25
  };
35
26
 
36
27
  const actionOnReplacementOptions = [
@@ -53,13 +44,13 @@ export const CloudFormationChangeSetInfo = (props: ICloudFormationChangeSetInfoP
53
44
  />
54
45
  </StageConfigField>
55
46
  <StageConfigField label="Execute ChangeSet">
56
- <CheckboxInput checked={executeChangeSet} onChange={(e) => toggleExecuteChangeSet(e.target.checked)} />
47
+ <CheckboxInput checked={stage.executeChangeSet} onChange={(e) => toggleExecuteChangeSet(e.target.checked)} />
57
48
  </StageConfigField>
58
- {executeChangeSet && (
59
- <StageConfigField label="If ChangeSet contains a replacement" help-key="aws.cloudformation.changeSet.options">
49
+ {stage.executeChangeSet && (
50
+ <StageConfigField label="If ChangeSet contains a replacement" helpKey="aws.cloudformation.changeSet.options">
60
51
  <ReactSelectInput
61
52
  clearable={false}
62
- value={actionOnReplacement}
53
+ value={stage.actionOnReplacement}
63
54
  options={actionOnReplacementOptions}
64
55
  onChange={(e) => modifyActionOnReplacement(e.target.value)}
65
56
  />
@@ -68,13 +59,3 @@ export const CloudFormationChangeSetInfo = (props: ICloudFormationChangeSetInfoP
68
59
  </div>
69
60
  );
70
61
  };
71
-
72
- export const CLOUD_FORMATION_CHANGE_SET_INFO = 'spinnaker.amazon.cloudformation.changetset.info.component';
73
-
74
- module(CLOUD_FORMATION_CHANGE_SET_INFO, []).component(
75
- 'cloudFormationChangeSetInfo',
76
- react2angular(withErrorBoundary(CloudFormationChangeSetInfo, 'cloudFormationChangeSetInfo'), [
77
- 'stage',
78
- 'stageconfig',
79
- ]),
80
- );
@@ -0,0 +1,264 @@
1
+ import React from 'react';
2
+
3
+ import type { IAccount, IArtifact, IExpectedArtifact, IStageConfigProps } from '@spinnaker/core';
4
+ import {
5
+ AccountSelectInput,
6
+ AccountService,
7
+ ChecklistInput,
8
+ MapEditor,
9
+ ReactSelectInput,
10
+ StageArtifactSelectorDelegate,
11
+ StageConfigField,
12
+ yamlDocumentsToString,
13
+ YamlEditor,
14
+ } from '@spinnaker/core';
15
+
16
+ import { CloudFormationChangeSetInfo } from './CloudFormationChangeSetInfo';
17
+
18
+ const capabilities = ['CAPABILITY_IAM', 'CAPABILITY_NAMED_IAM', 'CAPABILITY_AUTO_EXPAND'];
19
+
20
+ function templateBodyAsYaml(templateBody: any): string {
21
+ if (typeof templateBody === 'string') {
22
+ return templateBody;
23
+ }
24
+ if (templateBody == null) {
25
+ return '';
26
+ }
27
+ return yamlDocumentsToString(Array.isArray(templateBody) ? templateBody : [templateBody]);
28
+ }
29
+
30
+ export function DeployCloudFormationStackStageConfig({
31
+ application,
32
+ pipeline,
33
+ stage,
34
+ updateStageField,
35
+ }: IStageConfigProps) {
36
+ const [accounts, setAccounts] = React.useState<IAccount[]>([]);
37
+ const [regions, setRegions] = React.useState<string[]>([]);
38
+ const [templateEditorState, setTemplateEditorState] = React.useState(() => ({
39
+ refId: stage.refId,
40
+ rawTemplateBody: templateBodyAsYaml(stage.templateBody),
41
+ }));
42
+ const source = stage.source || 'text';
43
+ const selectedAccount = stage.credentials || stage.account || '';
44
+ const accountNames = [selectedAccount, ...accounts.map((account) => account.name)].filter(
45
+ (account, index, allAccounts) => account && allAccounts.indexOf(account) === index,
46
+ );
47
+ const regionNames = [...(stage.regions || []), ...regions].filter(
48
+ (region, index, allRegions) => region && allRegions.indexOf(region) === index,
49
+ );
50
+
51
+ if (templateEditorState.refId !== stage.refId) {
52
+ setTemplateEditorState({
53
+ refId: stage.refId,
54
+ rawTemplateBody: templateBodyAsYaml(stage.templateBody),
55
+ });
56
+ }
57
+
58
+ React.useEffect(() => {
59
+ const changes: Record<string, any> = {};
60
+ const defaults: Record<string, any> = {
61
+ capabilities: [],
62
+ cloudProvider: 'aws',
63
+ parameters: {},
64
+ regions: application.defaultRegions?.aws ? [application.defaultRegions.aws] : [],
65
+ source: 'text',
66
+ tags: {},
67
+ };
68
+
69
+ Object.entries(defaults).forEach(([field, value]) => {
70
+ if (stage[field] === undefined) {
71
+ changes[field] = value;
72
+ }
73
+ });
74
+
75
+ const defaultCredentials = application.defaultCredentials?.aws;
76
+ if (defaultCredentials) {
77
+ if (stage.credentials === undefined) {
78
+ changes.credentials = defaultCredentials;
79
+ }
80
+ if (stage.account === undefined) {
81
+ changes.account = defaultCredentials;
82
+ }
83
+ }
84
+
85
+ if (Object.keys(changes).length) {
86
+ updateStageField(changes);
87
+ }
88
+ }, []);
89
+
90
+ React.useEffect(() => {
91
+ let mounted = true;
92
+ Promise.all([
93
+ AccountService.getAllAccountDetailsForProvider('aws'),
94
+ AccountService.getUniqueAttributeForAllAccounts('aws', 'regions'),
95
+ ]).then(([loadedAccounts, loadedRegions]) => {
96
+ if (mounted) {
97
+ setAccounts(loadedAccounts);
98
+ setRegions(loadedRegions);
99
+ }
100
+ });
101
+ return () => {
102
+ mounted = false;
103
+ };
104
+ }, []);
105
+
106
+ const onStackArtifactEdited = (stackArtifact: IArtifact) => {
107
+ updateStageField({ stackArtifactId: null, stackArtifact });
108
+ };
109
+
110
+ const onStackArtifactSelected = (expectedArtifact: IExpectedArtifact) => {
111
+ updateStageField({
112
+ stackArtifactId: expectedArtifact.id,
113
+ stackArtifactAccount: expectedArtifact.matchArtifact?.artifactAccount || null,
114
+ stackArtifact: null,
115
+ });
116
+ };
117
+
118
+ return (
119
+ <div className="container-fluid form-horizontal">
120
+ <h4>Basic Settings</h4>
121
+ <StageConfigField label="Account">
122
+ <AccountSelectInput
123
+ accounts={accountNames}
124
+ name="credentials"
125
+ onChange={(event: React.ChangeEvent<HTMLSelectElement>) =>
126
+ updateStageField({ credentials: event.target.value, account: event.target.value })
127
+ }
128
+ provider="aws"
129
+ value={selectedAccount}
130
+ />
131
+ </StageConfigField>
132
+ <StageConfigField label="Regions">
133
+ <ChecklistInput
134
+ inline={true}
135
+ name="regions"
136
+ onChange={(event: React.ChangeEvent<HTMLInputElement>) => updateStageField({ regions: event.target.value })}
137
+ showSelectAll={true}
138
+ stringOptions={regionNames}
139
+ value={stage.regions || []}
140
+ />
141
+ </StageConfigField>
142
+
143
+ <h4>Template Configuration</h4>
144
+ <StageConfigField label="Stack name">
145
+ <input
146
+ className="form-control input-sm"
147
+ name="stackName"
148
+ onChange={(event) => updateStageField({ stackName: event.target.value })}
149
+ required={true}
150
+ type="text"
151
+ value={stage.stackName || ''}
152
+ />
153
+ <label>
154
+ <input
155
+ checked={!!stage.isChangeSet}
156
+ name="isChangeSet"
157
+ onChange={(event) => updateStageField({ isChangeSet: event.target.checked })}
158
+ type="checkbox"
159
+ />{' '}
160
+ <strong>Create CloudFormation ChangeSet</strong>
161
+ </label>
162
+ </StageConfigField>
163
+ <StageConfigField label="IAM role ARN">
164
+ <input
165
+ className="form-control input-sm"
166
+ name="roleARN"
167
+ onChange={(event) => updateStageField({ roleARN: event.target.value })}
168
+ type="text"
169
+ value={stage.roleARN || ''}
170
+ />
171
+ </StageConfigField>
172
+ <StageConfigField label="Source" helpKey="aws.cloudformation.source">
173
+ <label>
174
+ <input
175
+ checked={source === 'text'}
176
+ name="source"
177
+ onChange={() =>
178
+ updateStageField({
179
+ source: 'text',
180
+ stackArtifactId: null,
181
+ stackArtifactAccount: null,
182
+ stackArtifact: null,
183
+ })
184
+ }
185
+ type="radio"
186
+ value="text"
187
+ />{' '}
188
+ Text
189
+ </label>
190
+ <br />
191
+ <label>
192
+ <input
193
+ checked={source === 'artifact'}
194
+ name="source"
195
+ onChange={() => updateStageField({ source: 'artifact' })}
196
+ type="radio"
197
+ value="artifact"
198
+ />{' '}
199
+ Artifact
200
+ </label>
201
+ </StageConfigField>
202
+
203
+ {source === 'text' && (
204
+ <YamlEditor
205
+ onChange={(raw, templateBody) => {
206
+ setTemplateEditorState({ refId: stage.refId, rawTemplateBody: raw });
207
+ if (templateBody !== null) {
208
+ updateStageField({ templateBody });
209
+ }
210
+ }}
211
+ value={templateEditorState.rawTemplateBody}
212
+ />
213
+ )}
214
+ {source === 'artifact' && (
215
+ <StageArtifactSelectorDelegate
216
+ artifact={stage.stackArtifact}
217
+ excludedArtifactTypePatterns={[]}
218
+ expectedArtifactId={stage.stackArtifactId}
219
+ fieldColumns={8}
220
+ helpKey="aws.cloudformation.expectedArtifact"
221
+ label="Expected Artifact"
222
+ onArtifactEdited={onStackArtifactEdited}
223
+ onExpectedArtifactSelected={onStackArtifactSelected}
224
+ pipeline={pipeline}
225
+ stage={stage}
226
+ />
227
+ )}
228
+ {stage.isChangeSet && <CloudFormationChangeSetInfo stage={stage} updateStageField={updateStageField} />}
229
+
230
+ <hr />
231
+ <StageConfigField label="Parameters" fieldColumns={6}>
232
+ <MapEditor
233
+ addButtonLabel="Add parameter"
234
+ model={stage.parameters ?? {}}
235
+ onChange={(parameters) => updateStageField({ parameters })}
236
+ pipeline={pipeline}
237
+ valueCanContainSpel={true}
238
+ />
239
+ </StageConfigField>
240
+ <hr />
241
+ <StageConfigField label="Tags" fieldColumns={6}>
242
+ <MapEditor
243
+ addButtonLabel="Add tag"
244
+ model={stage.tags ?? {}}
245
+ onChange={(tags) => updateStageField({ tags })}
246
+ pipeline={pipeline}
247
+ valueCanContainSpel={true}
248
+ />
249
+ </StageConfigField>
250
+ <hr />
251
+ <StageConfigField label="Capabilities" fieldColumns={6}>
252
+ <ReactSelectInput
253
+ multi={true}
254
+ name="capabilities"
255
+ onChange={(event: React.ChangeEvent<HTMLInputElement>) =>
256
+ updateStageField({ capabilities: event.target.value })
257
+ }
258
+ stringOptions={capabilities}
259
+ value={stage.capabilities}
260
+ />
261
+ </StageConfigField>
262
+ </div>
263
+ );
264
+ }