@spinnaker/amazon 0.8.14 → 0.11.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 (319) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/aws.settings.d.ts +1 -1
  3. package/dist/certificates/AmazonCertificateReader.d.ts +1 -1
  4. package/dist/deploymentStrategy/AdditionalFields.d.ts +2 -2
  5. package/dist/deploymentStrategy/rollingPush.strategy.d.ts +1 -1
  6. package/dist/domain/IAmazonCertificate.d.ts +1 -1
  7. package/dist/domain/IAmazonFunction.d.ts +1 -1
  8. package/dist/domain/IAmazonFunctionSourceData.d.ts +2 -1
  9. package/dist/domain/IAmazonHealth.d.ts +1 -1
  10. package/dist/domain/IAmazonInstance.d.ts +2 -2
  11. package/dist/domain/IAmazonLaunchTemplate.d.ts +1 -1
  12. package/dist/domain/IAmazonLoadBalancer.d.ts +4 -4
  13. package/dist/domain/IAmazonLoadBalancerSourceData.d.ts +3 -3
  14. package/dist/domain/IAmazonScalingPolicy.d.ts +3 -1
  15. package/dist/domain/IAmazonServerGroup.d.ts +5 -5
  16. package/dist/domain/IScalingPolicy.d.ts +1 -1
  17. package/dist/domain/ITargetTrackingPolicy.d.ts +1 -1
  18. package/dist/function/CreateLambdaFunction.d.ts +3 -2
  19. package/dist/function/configure/ExecutionRole.d.ts +4 -4
  20. package/dist/function/configure/FunctionBasicInformation.d.ts +4 -4
  21. package/dist/function/configure/FunctionDebugAndErrorHandling.d.ts +4 -4
  22. package/dist/function/configure/FunctionEnvironmentVariables.d.ts +4 -4
  23. package/dist/function/configure/FunctionSettings.d.ts +4 -4
  24. package/dist/function/configure/FunctionTags.d.ts +4 -4
  25. package/dist/function/configure/Network.d.ts +3 -3
  26. package/dist/function/details/AmazonFunctionDetails.d.ts +1 -1
  27. package/dist/function/details/FunctionActions.d.ts +3 -3
  28. package/dist/function/function.transformer.d.ts +2 -2
  29. package/dist/index.js +1 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/instance/amazon.instance.write.service.d.ts +3 -2
  32. package/dist/instance/details/AmazonInstanceInformation.d.ts +2 -1
  33. package/dist/instance/details/InstanceDns.d.ts +1 -0
  34. package/dist/instance/details/InstanceInformation.d.ts +1 -0
  35. package/dist/instance/details/InstanceSecurityGroups.d.ts +2 -1
  36. package/dist/instance/details/InstanceStatus.d.ts +2 -1
  37. package/dist/instance/details/InstanceTags.d.ts +1 -0
  38. package/dist/instance/details/utils.d.ts +1 -1
  39. package/dist/keyPairs/KeyPairsReader.d.ts +1 -1
  40. package/dist/loadBalancer/AmazonLoadBalancerClusterContainer.d.ts +1 -1
  41. package/dist/loadBalancer/AmazonLoadBalancersTag.d.ts +2 -2
  42. package/dist/loadBalancer/TargetGroup.d.ts +1 -1
  43. package/dist/loadBalancer/TargetGroupDetails.d.ts +1 -1
  44. package/dist/loadBalancer/amazonLoadBalancerDataUtils.d.ts +2 -2
  45. package/dist/loadBalancer/configure/AmazonLoadBalancerChoiceModal.d.ts +2 -2
  46. package/dist/loadBalancer/configure/LoadBalancerTypes.d.ts +2 -2
  47. package/dist/loadBalancer/configure/application/ALBListeners.d.ts +4 -4
  48. package/dist/loadBalancer/configure/application/ConfigureOidcConfigModal.d.ts +1 -1
  49. package/dist/loadBalancer/configure/application/ConfigureRedirectConfigModal.d.ts +1 -1
  50. package/dist/loadBalancer/configure/application/CreateApplicationLoadBalancer.d.ts +3 -2
  51. package/dist/loadBalancer/configure/application/TargetGroups.d.ts +3 -3
  52. package/dist/loadBalancer/configure/classic/AdvancedSettings.d.ts +2 -2
  53. package/dist/loadBalancer/configure/classic/CreateClassicLoadBalancer.d.ts +3 -2
  54. package/dist/loadBalancer/configure/classic/HealthCheck.d.ts +2 -2
  55. package/dist/loadBalancer/configure/classic/Listeners.d.ts +3 -3
  56. package/dist/loadBalancer/configure/common/AmazonCertificateSelectField.d.ts +2 -2
  57. package/dist/loadBalancer/configure/common/LoadBalancerLocation.d.ts +3 -3
  58. package/dist/loadBalancer/configure/common/SecurityGroups.d.ts +3 -3
  59. package/dist/loadBalancer/configure/common/targetGroupValidators.d.ts +2 -2
  60. package/dist/loadBalancer/configure/network/CertificateSelectors.d.ts +2 -1
  61. package/dist/loadBalancer/configure/network/CreateNetworkLoadBalancer.d.ts +3 -2
  62. package/dist/loadBalancer/configure/network/NLBListeners.d.ts +4 -4
  63. package/dist/loadBalancer/configure/network/TargetGroups.d.ts +3 -3
  64. package/dist/loadBalancer/details/LoadBalancerActions.d.ts +3 -3
  65. package/dist/loadBalancer/details/loadBalancerDetails.controller.d.ts +4 -4
  66. package/dist/loadBalancer/details/targetGroupDetails.controller.d.ts +4 -4
  67. package/dist/loadBalancer/loadBalancer.transformer.d.ts +2 -2
  68. package/dist/pipeline/stages/deployCloudFormation/CloudFormationChangeSetInfo.d.ts +2 -1
  69. package/dist/pipeline/stages/deployCloudFormation/deployCloudFormationExecutionDetails.d.ts +1 -1
  70. package/dist/pipeline/stages/deployCloudFormation/deployCloudFormationStackConfig.controller.d.ts +3 -2
  71. package/dist/pipeline/stages/deployCloudFormation/evaluateCloudFormationChangeSetExecution.service.d.ts +3 -3
  72. package/dist/pipeline/stages/deployCloudFormation/evaluateCloudFormationChangeSetExecutionApproval.d.ts +2 -1
  73. package/dist/pipeline/stages/deployCloudFormation/evaluateCloudFormationChangeSetExecutionDetails.d.ts +1 -1
  74. package/dist/pipeline/stages/deployCloudFormation/evaluateCloudFormationChangeSetExecutionLabel.d.ts +2 -2
  75. package/dist/pipeline/stages/deployCloudFormation/evaluateCloudFormationChangeSetExecutionMarkerIcon.d.ts +1 -1
  76. package/dist/reactShims/aws.ngReact.d.ts +2 -2
  77. package/dist/reactShims/aws.react.injector.d.ts +5 -4
  78. package/dist/reactShims/index.d.ts +0 -1
  79. package/dist/securityGroup/configure/securityGroupDetailsCustom.d.ts +1 -1
  80. package/dist/securityGroup/securityGroup.reader.d.ts +1 -1
  81. package/dist/serverGroup/configure/AmazonImageSelectInput.d.ts +2 -2
  82. package/dist/serverGroup/configure/serverGroupConfiguration.service.d.ts +2 -2
  83. package/dist/serverGroup/configure/wizard/AmazonCloneServerGroupModal.d.ts +3 -2
  84. package/dist/serverGroup/configure/wizard/ServerGroupTemplateSelection.d.ts +1 -1
  85. package/dist/serverGroup/configure/wizard/capacity/CapacitySelector.d.ts +2 -2
  86. package/dist/serverGroup/configure/wizard/capacity/MinMaxDesired.d.ts +1 -1
  87. package/dist/serverGroup/configure/wizard/instanceType/CpuCreditsToggle.d.ts +2 -1
  88. package/dist/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.d.ts +4 -4
  89. package/dist/serverGroup/configure/wizard/pages/ServerGroupCapacity.d.ts +3 -3
  90. package/dist/serverGroup/configure/wizard/pages/ServerGroupInstanceType.d.ts +3 -3
  91. package/dist/serverGroup/configure/wizard/pages/ServerGroupLoadBalancers.d.ts +3 -3
  92. package/dist/serverGroup/configure/wizard/pages/ServerGroupSecurityGroups.d.ts +3 -3
  93. package/dist/serverGroup/configure/wizard/pages/ServerGroupZones.d.ts +3 -3
  94. package/dist/serverGroup/configure/wizard/pages/advancedSettings/ServerGroupAdvancedSettings.d.ts +3 -3
  95. package/dist/serverGroup/configure/wizard/pages/advancedSettings/ServerGroupAdvancedSettingsCommon.d.ts +2 -2
  96. package/dist/serverGroup/configure/wizard/pages/advancedSettings/ServerGroupAdvancedSettingsInner.d.ts +4 -4
  97. package/dist/serverGroup/configure/wizard/securityGroups/SecurityGroupSelector.d.ts +2 -2
  98. package/dist/serverGroup/configure/wizard/securityGroups/ServerGroupSecurityGroupsRemoved.d.ts +1 -1
  99. package/dist/serverGroup/details/AmazonServerGroupActions.d.ts +3 -3
  100. package/dist/serverGroup/details/amazonServerGroupDetailsGetter.d.ts +2 -2
  101. package/dist/serverGroup/details/resize/AmazonResizeServerGroupModal.d.ts +3 -2
  102. package/dist/serverGroup/details/scalingPolicy/CreateScalingPolicyButton.d.ts +2 -2
  103. package/dist/serverGroup/details/scalingPolicy/ScalingPolicySummary.d.ts +7 -4
  104. package/dist/serverGroup/details/scalingPolicy/ScalingPolicyWriter.d.ts +2 -2
  105. package/dist/serverGroup/details/scalingPolicy/StepPolicySummary.d.ts +10 -0
  106. package/dist/serverGroup/details/scalingPolicy/chart/DateLineChart.d.ts +2 -1
  107. package/dist/serverGroup/details/scalingPolicy/chart/MetricAlarmChart.d.ts +4 -3
  108. package/dist/serverGroup/details/scalingPolicy/detailsSummary.component.d.ts +3 -3
  109. package/dist/serverGroup/details/scalingPolicy/index.d.ts +4 -0
  110. package/dist/serverGroup/details/scalingPolicy/popover/AlarmSummary.d.ts +8 -1
  111. package/dist/serverGroup/details/scalingPolicy/popover/StepPolicyPopoverContent.d.ts +7 -0
  112. package/dist/serverGroup/details/scalingPolicy/scalingPolicySummary.component.d.ts +1 -0
  113. package/dist/serverGroup/details/scalingPolicy/stepPolicySummary.component.d.ts +1 -0
  114. package/dist/serverGroup/details/scalingPolicy/targetTracking/TargetMetricFields.d.ts +4 -4
  115. package/dist/serverGroup/details/scalingPolicy/targetTracking/TargetTrackingAdditionalSettings.d.ts +2 -1
  116. package/dist/serverGroup/details/scalingPolicy/targetTracking/TargetTrackingChart.d.ts +2 -1
  117. package/dist/serverGroup/details/scalingPolicy/targetTracking/TargetTrackingSummary.d.ts +10 -0
  118. package/dist/serverGroup/details/scalingPolicy/targetTracking/UpsertTargetTrackingModal.d.ts +3 -2
  119. package/dist/serverGroup/details/scalingPolicy/upsert/PolicyTypeSelectionModal.d.ts +1 -0
  120. package/dist/serverGroup/details/scalingPolicy/upsert/ScalingPolicyAdditionalSettings.d.ts +2 -1
  121. package/dist/serverGroup/details/scalingPolicy/upsert/ScalingPolicyCommandBuilderService.d.ts +2 -2
  122. package/dist/serverGroup/details/scalingPolicy/upsert/UpsertScalingPolicyModal.d.ts +3 -2
  123. package/dist/serverGroup/details/scalingPolicy/upsert/alarm/AlarmConfigurer.d.ts +6 -1
  124. package/dist/serverGroup/details/scalingPolicy/upsert/alarm/DimensionsEditor.d.ts +4 -3
  125. package/dist/serverGroup/details/scalingPolicy/upsert/alarm/MetricSelector.d.ts +3 -2
  126. package/dist/serverGroup/details/scalingPolicy/upsert/index.d.ts +1 -0
  127. package/dist/serverGroup/details/scalingPolicy/upsert/simple/SimplePolicyAction.d.ts +1 -0
  128. package/dist/serverGroup/details/scalingPolicy/upsert/step/StepPolicyAction.d.ts +2 -1
  129. package/dist/serverGroup/details/scalingProcesses/AutoScalingProcessService.d.ts +1 -1
  130. package/dist/serverGroup/details/scheduledAction/ScheduledAction.d.ts +1 -1
  131. package/dist/serverGroup/details/sections/AdvancedSettingsDetailsSection.d.ts +1 -1
  132. package/dist/serverGroup/details/sections/AmazonCapacityDetailsSection.d.ts +1 -1
  133. package/dist/serverGroup/details/sections/AmazonInfoDetailsSection.d.ts +2 -2
  134. package/dist/serverGroup/details/sections/HealthDetailsSection.d.ts +1 -1
  135. package/dist/serverGroup/details/sections/IAmazonServerGroupDetailsSectionProps.d.ts +2 -2
  136. package/dist/serverGroup/details/sections/InstancesDistributionDetailsSection.d.ts +2 -1
  137. package/dist/serverGroup/details/sections/LaunchConfigDetailsSection.d.ts +1 -1
  138. package/dist/serverGroup/details/sections/LaunchTemplateDetailsSection.d.ts +2 -1
  139. package/dist/serverGroup/details/sections/LogsDetailsSection.d.ts +1 -1
  140. package/dist/serverGroup/details/sections/MultipleInstanceTypesSubSection.d.ts +2 -1
  141. package/dist/serverGroup/details/sections/PackageDetailsSection.d.ts +1 -1
  142. package/dist/serverGroup/details/sections/ScalingPoliciesDetailsSection.d.ts +2 -2
  143. package/dist/serverGroup/details/sections/ScalingProcessesDetailsSection.d.ts +2 -2
  144. package/dist/serverGroup/details/sections/ScheduledActionsDetailsSection.d.ts +1 -1
  145. package/dist/serverGroup/details/sections/SecurityGroupsDetailsSection.d.ts +2 -2
  146. package/dist/serverGroup/details/sections/TagsDetailsSection.d.ts +1 -1
  147. package/dist/serverGroup/serverGroup.transformer.d.ts +1 -1
  148. package/dist/subnet/SubnetSelectField.d.ts +1 -1
  149. package/dist/subnet/SubnetSelectInput.d.ts +2 -2
  150. package/dist/subnet/subnet.renderer.d.ts +1 -1
  151. package/dist/vpc/VpcReader.d.ts +1 -1
  152. package/dist/vpc/VpcTag.d.ts +1 -0
  153. package/package.json +6 -6
  154. package/src/aws.module.ts +11 -1
  155. package/src/aws.settings.ts +2 -1
  156. package/src/certificates/AmazonCertificateReader.ts +1 -1
  157. package/src/common/AwsModalFooter.tsx +2 -1
  158. package/src/common/footer.component.ts +2 -1
  159. package/src/deploymentStrategy/AdditionalFields.tsx +3 -2
  160. package/src/deploymentStrategy/rollingPush.strategy.ts +2 -1
  161. package/src/domain/IAmazonCertificate.ts +1 -1
  162. package/src/domain/IAmazonFunction.ts +1 -1
  163. package/src/domain/IAmazonFunctionSourceData.ts +2 -1
  164. package/src/domain/IAmazonHealth.ts +1 -1
  165. package/src/domain/IAmazonInstance.ts +2 -2
  166. package/src/domain/IAmazonLaunchTemplate.ts +1 -1
  167. package/src/domain/IAmazonLoadBalancer.ts +4 -4
  168. package/src/domain/IAmazonLoadBalancerSourceData.ts +3 -3
  169. package/src/domain/IAmazonScalingPolicy.ts +3 -1
  170. package/src/domain/IAmazonServerGroup.ts +5 -5
  171. package/src/domain/IScalingPolicy.ts +1 -1
  172. package/src/domain/ITargetTrackingPolicy.ts +1 -1
  173. package/src/function/CreateLambdaFunction.tsx +3 -11
  174. package/src/function/configure/ExecutionRole.tsx +5 -4
  175. package/src/function/configure/FunctionBasicInformation.tsx +6 -8
  176. package/src/function/configure/FunctionDebugAndErrorHandling.tsx +5 -11
  177. package/src/function/configure/FunctionEnvironmentVariables.tsx +5 -11
  178. package/src/function/configure/FunctionSettings.tsx +5 -4
  179. package/src/function/configure/FunctionTags.tsx +5 -4
  180. package/src/function/configure/Network.tsx +8 -6
  181. package/src/function/details/AmazonFunctionDetails.tsx +30 -10
  182. package/src/function/details/FunctionActions.spec.tsx +24 -1
  183. package/src/function/details/FunctionActions.tsx +30 -28
  184. package/src/function/function.transformer.ts +2 -2
  185. package/src/instance/amazon.instance.write.service.ts +3 -9
  186. package/src/instance/details/AmazonInstanceInformation.tsx +1 -1
  187. package/src/instance/details/InstanceSecurityGroups.tsx +1 -1
  188. package/src/instance/details/InstanceStatus.tsx +1 -1
  189. package/src/instance/details/instance.details.controller.js +2 -0
  190. package/src/instance/details/instanceDetails.html +1 -1
  191. package/src/instance/details/utils.ts +6 -1
  192. package/src/keyPairs/KeyPairsReader.ts +1 -1
  193. package/src/loadBalancer/AmazonLoadBalancerClusterContainer.tsx +3 -2
  194. package/src/loadBalancer/AmazonLoadBalancersTag.tsx +2 -3
  195. package/src/loadBalancer/TargetGroup.tsx +1 -1
  196. package/src/loadBalancer/TargetGroupDetails.tsx +2 -1
  197. package/src/loadBalancer/amazonLoadBalancerDataUtils.ts +3 -2
  198. package/src/loadBalancer/configure/AmazonLoadBalancerChoiceModal.tsx +4 -10
  199. package/src/loadBalancer/configure/LoadBalancerTypes.ts +2 -2
  200. package/src/loadBalancer/configure/application/ALBListeners.tsx +9 -14
  201. package/src/loadBalancer/configure/application/ConfigureOidcConfigModal.tsx +3 -2
  202. package/src/loadBalancer/configure/application/ConfigureRedirectConfigModal.tsx +1 -1
  203. package/src/loadBalancer/configure/application/CreateApplicationLoadBalancer.tsx +2 -2
  204. package/src/loadBalancer/configure/application/TargetGroups.tsx +3 -4
  205. package/src/loadBalancer/configure/classic/AdvancedSettings.tsx +2 -2
  206. package/src/loadBalancer/configure/classic/CreateClassicLoadBalancer.tsx +3 -3
  207. package/src/loadBalancer/configure/classic/HealthCheck.tsx +2 -2
  208. package/src/loadBalancer/configure/classic/Listeners.tsx +3 -3
  209. package/src/loadBalancer/configure/common/AmazonCertificateSelectField.tsx +5 -3
  210. package/src/loadBalancer/configure/common/LoadBalancerLocation.tsx +6 -9
  211. package/src/loadBalancer/configure/common/SecurityGroups.tsx +4 -11
  212. package/src/loadBalancer/configure/common/targetGroupValidators.ts +2 -2
  213. package/src/loadBalancer/configure/network/CertificateSelectors.tsx +3 -2
  214. package/src/loadBalancer/configure/network/CreateNetworkLoadBalancer.tsx +3 -3
  215. package/src/loadBalancer/configure/network/NLBListeners.tsx +5 -4
  216. package/src/loadBalancer/configure/network/TargetGroups.tsx +3 -4
  217. package/src/loadBalancer/details/LoadBalancerActions.tsx +48 -46
  218. package/src/loadBalancer/details/loadBalancerDetails.controller.ts +10 -7
  219. package/src/loadBalancer/details/targetGroupDetails.controller.ts +6 -4
  220. package/src/loadBalancer/loadBalancer.transformer.ts +3 -11
  221. package/src/loadBalancer/targetGroup.states.ts +3 -2
  222. package/src/pipeline/stages/deployCloudFormation/CloudFormationChangeSetInfo.tsx +2 -9
  223. package/src/pipeline/stages/deployCloudFormation/cloudFormationTemplateEntry.component.ts +2 -1
  224. package/src/pipeline/stages/deployCloudFormation/deployCloudFormationExecutionDetails.tsx +2 -6
  225. package/src/pipeline/stages/deployCloudFormation/deployCloudFormationStackConfig.controller.ts +3 -9
  226. package/src/pipeline/stages/deployCloudFormation/deployCloudFormationStackStage.ts +2 -1
  227. package/src/pipeline/stages/deployCloudFormation/evaluateCloudFormationChangeSetExecution.service.ts +4 -3
  228. package/src/pipeline/stages/deployCloudFormation/evaluateCloudFormationChangeSetExecutionApproval.tsx +2 -1
  229. package/src/pipeline/stages/deployCloudFormation/evaluateCloudFormationChangeSetExecutionDetails.tsx +1 -1
  230. package/src/pipeline/stages/deployCloudFormation/evaluateCloudFormationChangeSetExecutionLabel.tsx +2 -2
  231. package/src/pipeline/stages/deployCloudFormation/evaluateCloudFormationChangeSetExecutionMarkerIcon.tsx +1 -1
  232. package/src/reactShims/aws.ngReact.ts +2 -2
  233. package/src/reactShims/aws.react.injector.ts +5 -4
  234. package/src/reactShims/aws.react.module.ts +0 -2
  235. package/src/reactShims/index.ts +0 -1
  236. package/src/securityGroup/configure/ingressRuleGroupSelector.component.ts +4 -3
  237. package/src/securityGroup/configure/securityGroupDetailsCustom.tsx +1 -1
  238. package/src/securityGroup/details/securityGroupDetail.controller.js +3 -0
  239. package/src/securityGroup/details/securityGroupDetail.html +1 -1
  240. package/src/securityGroup/securityGroup.reader.ts +1 -1
  241. package/src/serverGroup/configure/AmazonImageSelectInput.tsx +5 -3
  242. package/src/serverGroup/configure/serverGroupCommandBuilder.service.js +1 -1
  243. package/src/serverGroup/configure/serverGroupConfiguration.service.ts +9 -7
  244. package/src/serverGroup/configure/wizard/AmazonCloneServerGroupModal.tsx +3 -13
  245. package/src/serverGroup/configure/wizard/ServerGroupTemplateSelection.tsx +2 -7
  246. package/src/serverGroup/configure/wizard/capacity/CapacitySelector.tsx +5 -3
  247. package/src/serverGroup/configure/wizard/capacity/MinMaxDesired.tsx +2 -1
  248. package/src/serverGroup/configure/wizard/instanceType/CpuCreditsToggle.tsx +1 -1
  249. package/src/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.tsx +5 -6
  250. package/src/serverGroup/configure/wizard/pages/ServerGroupCapacity.tsx +4 -3
  251. package/src/serverGroup/configure/wizard/pages/ServerGroupInstanceType.tsx +4 -3
  252. package/src/serverGroup/configure/wizard/pages/ServerGroupLoadBalancers.tsx +5 -4
  253. package/src/serverGroup/configure/wizard/pages/ServerGroupSecurityGroups.tsx +3 -3
  254. package/src/serverGroup/configure/wizard/pages/ServerGroupZones.tsx +3 -3
  255. package/src/serverGroup/configure/wizard/pages/advancedSettings/ServerGroupAdvancedSettings.tsx +3 -3
  256. package/src/serverGroup/configure/wizard/pages/advancedSettings/ServerGroupAdvancedSettingsCommon.tsx +4 -3
  257. package/src/serverGroup/configure/wizard/pages/advancedSettings/ServerGroupAdvancedSettingsInner.tsx +5 -4
  258. package/src/serverGroup/configure/wizard/securityGroups/SecurityGroupSelector.tsx +4 -10
  259. package/src/serverGroup/configure/wizard/securityGroups/ServerGroupSecurityGroupsRemoved.tsx +1 -1
  260. package/src/serverGroup/details/AmazonServerGroupActions.tsx +56 -56
  261. package/src/serverGroup/details/amazonServerGroupDetailsGetter.ts +3 -2
  262. package/src/serverGroup/details/resize/AmazonResizeServerGroupModal.tsx +4 -6
  263. package/src/serverGroup/details/scalingPolicy/CreateScalingPolicyButton.tsx +7 -4
  264. package/src/serverGroup/details/scalingPolicy/ScalingPolicySummary.tsx +25 -4
  265. package/src/serverGroup/details/scalingPolicy/ScalingPolicyWriter.ts +3 -2
  266. package/src/serverGroup/details/scalingPolicy/StepPolicySummary.less +10 -0
  267. package/src/serverGroup/details/scalingPolicy/StepPolicySummary.tsx +122 -0
  268. package/src/serverGroup/details/scalingPolicy/alarmBasedSummary.template.html +2 -2
  269. package/src/serverGroup/details/scalingPolicy/chart/DateLineChart.tsx +7 -5
  270. package/src/serverGroup/details/scalingPolicy/chart/MetricAlarmChart.tsx +6 -11
  271. package/src/serverGroup/details/scalingPolicy/detailsSummary.component.ts +4 -3
  272. package/src/serverGroup/details/scalingPolicy/index.ts +4 -0
  273. package/src/serverGroup/details/scalingPolicy/popover/AlarmSummary.tsx +16 -7
  274. package/src/serverGroup/details/scalingPolicy/popover/StepPolicyPopoverContent.tsx +90 -0
  275. package/src/serverGroup/details/scalingPolicy/popover/scalingPolicyPopover.component.ts +2 -1
  276. package/src/serverGroup/details/scalingPolicy/scalingPolicy.module.ts +4 -2
  277. package/src/serverGroup/details/scalingPolicy/scalingPolicySummary.component.ts +10 -0
  278. package/src/serverGroup/details/scalingPolicy/stepPolicySummary.component.ts +10 -0
  279. package/src/serverGroup/details/scalingPolicy/targetTracking/TargetMetricFields.tsx +19 -26
  280. package/src/serverGroup/details/scalingPolicy/targetTracking/TargetTrackingAdditionalSettings.tsx +1 -1
  281. package/src/serverGroup/details/scalingPolicy/targetTracking/TargetTrackingChart.tsx +3 -3
  282. package/src/serverGroup/details/scalingPolicy/targetTracking/TargetTrackingSummary.less +11 -0
  283. package/src/serverGroup/details/scalingPolicy/targetTracking/TargetTrackingSummary.tsx +117 -0
  284. package/src/serverGroup/details/scalingPolicy/targetTracking/UpsertTargetTrackingModal.tsx +4 -3
  285. package/src/serverGroup/details/scalingPolicy/targetTracking/targetTrackingSummary.component.ts +12 -83
  286. package/src/serverGroup/details/scalingPolicy/upsert/ScalingPolicyAdditionalSettings.tsx +10 -12
  287. package/src/serverGroup/details/scalingPolicy/upsert/ScalingPolicyCommandBuilderService.ts +2 -2
  288. package/src/serverGroup/details/scalingPolicy/upsert/UpsertScalingPolicyModal.tsx +6 -4
  289. package/src/serverGroup/details/scalingPolicy/upsert/alarm/AlarmConfigurer.tsx +16 -18
  290. package/src/serverGroup/details/scalingPolicy/upsert/alarm/DimensionsEditor.tsx +14 -20
  291. package/src/serverGroup/details/scalingPolicy/upsert/alarm/MetricSelector.tsx +26 -50
  292. package/src/serverGroup/details/scalingPolicy/upsert/index.ts +1 -0
  293. package/src/serverGroup/details/scalingPolicy/upsert/simple/SimplePolicyAction.tsx +3 -5
  294. package/src/serverGroup/details/scalingPolicy/upsert/step/StepPolicyAction.tsx +8 -18
  295. package/src/serverGroup/details/scalingProcesses/AutoScalingProcessService.ts +1 -1
  296. package/src/serverGroup/details/scheduledAction/ScheduledAction.tsx +1 -1
  297. package/src/serverGroup/details/sections/AdvancedSettingsDetailsSection.tsx +7 -5
  298. package/src/serverGroup/details/sections/AmazonCapacityDetailsSection.tsx +8 -5
  299. package/src/serverGroup/details/sections/AmazonInfoDetailsSection.tsx +4 -12
  300. package/src/serverGroup/details/sections/HealthDetailsSection.tsx +1 -1
  301. package/src/serverGroup/details/sections/IAmazonServerGroupDetailsSectionProps.ts +2 -2
  302. package/src/serverGroup/details/sections/InstancesDistributionDetailsSection.tsx +1 -1
  303. package/src/serverGroup/details/sections/LaunchConfigDetailsSection.tsx +2 -2
  304. package/src/serverGroup/details/sections/LaunchTemplateDetailsSection.tsx +1 -1
  305. package/src/serverGroup/details/sections/LogsDetailsSection.tsx +1 -1
  306. package/src/serverGroup/details/sections/MultipleInstanceTypesSubSection.tsx +1 -1
  307. package/src/serverGroup/details/sections/PackageDetailsSection.tsx +1 -1
  308. package/src/serverGroup/details/sections/ScalingPoliciesDetailsSection.tsx +10 -7
  309. package/src/serverGroup/details/sections/ScalingProcessesDetailsSection.tsx +16 -6
  310. package/src/serverGroup/details/sections/ScheduledActionsDetailsSection.tsx +8 -6
  311. package/src/serverGroup/details/sections/SecurityGroupsDetailsSection.tsx +4 -10
  312. package/src/serverGroup/details/sections/TagsDetailsSection.tsx +1 -1
  313. package/src/serverGroup/serverGroup.transformer.ts +2 -2
  314. package/src/subnet/SubnetSelectField.tsx +2 -1
  315. package/src/subnet/SubnetSelectInput.tsx +4 -12
  316. package/src/subnet/subnet.renderer.ts +1 -1
  317. package/src/validation/ApplicationNameValidator.ts +2 -1
  318. package/src/vpc/VpcReader.ts +2 -1
  319. package/src/serverGroup/details/scalingPolicy/targetTracking/targetTrackingPopover.html +0 -5
@@ -1,17 +1,26 @@
1
1
  import * as React from 'react';
2
- import { IScalingPolicyAlarmView } from '../../../../domain';
2
+ import type { IScalingPolicyAlarmView } from '../../../../domain';
3
3
 
4
4
  export interface IAlarmSummaryProps {
5
5
  alarm: IScalingPolicyAlarmView;
6
6
  }
7
7
 
8
+ export const comparatorMap = {
9
+ GreaterThanOrEqualToThreshold: '>=',
10
+ GreaterThanThreshold: '>',
11
+ LessThanOrEqualToThreshold: '<=',
12
+ LessThanThreshold: '<',
13
+ };
14
+
8
15
  export const AlarmSummary = ({ alarm }: IAlarmSummaryProps) => (
9
16
  <div>
10
- <b>Whenever</b>
11
- {` ${alarm.statistic} of `}
12
- <span className="alarm-name">{alarm.metricName}</span>
13
- {` is ${alarm.comparator} ${alarm.threshold} `}
14
- <b>for at least</b>
15
- {` ${alarm.evaluationPeriods} consecutive periods of ${alarm.period} seconds`}
17
+ <div>
18
+ <b>Whenever</b>
19
+ {` ${alarm.statistic} of ${alarm.metricName}`}
20
+ </div>
21
+ <div>
22
+ <b>for at least</b>
23
+ {` ${alarm.evaluationPeriods} consecutive periods of ${alarm.period} seconds`}
24
+ </div>
16
25
  </div>
17
26
  );
@@ -0,0 +1,90 @@
1
+ import * as React from 'react';
2
+
3
+ import { LabeledValue, LabeledValueList } from '@spinnaker/core';
4
+
5
+ import { MetricAlarmChart } from '../chart/MetricAlarmChart';
6
+ import type {
7
+ IAmazonServerGroup,
8
+ IScalingPolicyAlarmView,
9
+ IScalingPolicyView,
10
+ IStepAdjustmentView,
11
+ } from '../../../../domain';
12
+ import { comparatorMap } from '../popover/AlarmSummary';
13
+
14
+ export interface IStepPolicyPopoverContentProps {
15
+ policy: IScalingPolicyView;
16
+ serverGroup: IAmazonServerGroup;
17
+ }
18
+
19
+ export const StepPolicyPopoverContent = ({ policy, serverGroup }: IStepPolicyPopoverContentProps) => {
20
+ const { adjustmentType, alarms, cooldown, estimatedInstanceWarmup, minAdjustmentMagnitude, stepAdjustments } = policy;
21
+ const showWait = cooldown ? true : stepAdjustments?.[0]?.operator === 'decrease';
22
+ const alarm = alarms[0] || ({} as IScalingPolicyAlarmView);
23
+ const isGreater = alarm?.comparisonOperator.includes('Greater');
24
+
25
+ const getAdjustmentTypeString = (step: IScalingPolicyView | IStepAdjustmentView): string => {
26
+ if (adjustmentType === 'ExactCapacity') {
27
+ return `set capacity to ${step.scalingAdjustment} instance${step.scalingAdjustment > 1 ? 's' : ''}`;
28
+ }
29
+
30
+ return `${step.operator} capacity by ${step.absAdjustment}${
31
+ adjustmentType === 'PercentChangeInCapacity' ? '%' : ' instance'
32
+ }${adjustmentType === 'ChangeInCapacity' && step.absAdjustment > 1 ? 's' : ''}`;
33
+ };
34
+
35
+ const getBoundaryStr = (step: IStepAdjustmentView) => {
36
+ const middleBounds =
37
+ step.metricIntervalLowerBound !== undefined && step.metricIntervalUpperBound !== undefined
38
+ ? `is between ${alarm.threshold + step.metricIntervalLowerBound} and ${
39
+ alarm.threshold + step.metricIntervalUpperBound
40
+ } `
41
+ : '';
42
+
43
+ const sourceBound = isGreater ? step.metricIntervalLowerBound : step.metricIntervalUpperBound;
44
+ const finalBound = `is ${isGreater ? 'greater' : 'less'} than ${alarm.threshold + sourceBound}`;
45
+
46
+ return `if ${alarm.metricName} ${middleBounds}${finalBound}`;
47
+ };
48
+
49
+ return (
50
+ <div>
51
+ <LabeledValueList className="dl-horizontal dl-narrow">
52
+ <LabeledValue
53
+ label="Whenever"
54
+ value={`${alarm.statistic} of ${alarm.metricName} is ${comparatorMap[alarm.comparisonOperator]} ${
55
+ alarm.threshold
56
+ }`}
57
+ />
58
+ <LabeledValue
59
+ label="for at least"
60
+ value={`${alarm.evaluationPeriods} consecutive periods of ${alarm.period} seconds`}
61
+ />
62
+ {Boolean(stepAdjustments?.length) && (
63
+ <LabeledValue
64
+ label="then"
65
+ value={stepAdjustments.map((sa, index) => (
66
+ <div key={`step-adjustment-boundary-${index}`}>
67
+ {stepAdjustments.length > 1 && <span>{getBoundaryStr(sa)}</span>}
68
+ <span>{getAdjustmentTypeString(sa)}</span>
69
+ </div>
70
+ ))}
71
+ />
72
+ )}
73
+ {!Boolean(stepAdjustments?.length) && <LabeledValue label="then" value={getAdjustmentTypeString(policy)} />}
74
+ {Boolean(minAdjustmentMagnitude) && (
75
+ <LabeledValue
76
+ label="in"
77
+ value={`increments of at least ${minAdjustmentMagnitude} instance${minAdjustmentMagnitude > 1 ? 's' : ''}`}
78
+ />
79
+ )}
80
+ {Boolean(showWait) && (
81
+ <LabeledValue label="wait" value={`${cooldown} seconds before allowing another scaling activity.`} />
82
+ )}
83
+ {Boolean(estimatedInstanceWarmup) && (
84
+ <LabeledValue label="wait" value={`${estimatedInstanceWarmup} seconds to warm up after each step.`} />
85
+ )}
86
+ </LabeledValueList>
87
+ <MetricAlarmChart alarm={alarm} serverGroup={serverGroup} />
88
+ </div>
89
+ );
90
+ };
@@ -1,4 +1,5 @@
1
- import { IComponentOptions, module } from 'angular';
1
+ import type { IComponentOptions } from 'angular';
2
+ import { module } from 'angular';
2
3
  import { AMAZON_SERVERGROUP_DETAILS_SCALINGPOLICY_CHART_METRICALARMCHART_COMPONENT } from '../chart/MetricAlarmChart';
3
4
 
4
5
  const scalingPolicyPopover: IComponentOptions = {
@@ -1,12 +1,14 @@
1
1
  import { module } from 'angular';
2
2
 
3
3
  import { AMAZON_SERVERGROUP_DETAILS_SCALINGPOLICY_ALARMBASEDSUMMARY_COMPONENT } from './alarmBasedSummary.component';
4
- import { DETAILS_SUMMARY } from './detailsSummary.component';
4
+ import { SCALING_POLICY_SUMMARY_COMPONENT } from './scalingPolicySummary.component';
5
+ import { STEP_POLICY_SUMMARY_COMPONENT } from './stepPolicySummary.component';
5
6
  import { TARGET_TRACKING_MODULE } from './targetTracking/targetTracking.module';
6
7
 
7
8
  export const SCALING_POLICY_MODULE = 'spinnaker.amazon.scalingPolicy.module';
8
9
  module(SCALING_POLICY_MODULE, [
9
- DETAILS_SUMMARY,
10
10
  TARGET_TRACKING_MODULE,
11
11
  AMAZON_SERVERGROUP_DETAILS_SCALINGPOLICY_ALARMBASEDSUMMARY_COMPONENT,
12
+ STEP_POLICY_SUMMARY_COMPONENT,
13
+ SCALING_POLICY_SUMMARY_COMPONENT,
12
14
  ]);
@@ -0,0 +1,10 @@
1
+ import { module } from 'angular';
2
+ import { react2angular } from 'react2angular';
3
+ import { withErrorBoundary } from '@spinnaker/core';
4
+ import { StepPolicySummary } from './StepPolicySummary';
5
+
6
+ export const SCALING_POLICY_SUMMARY_COMPONENT = 'spinnaker.amazon.scalingPolicy.scalingPolicySummary.component';
7
+ module(SCALING_POLICY_SUMMARY_COMPONENT, []).component(
8
+ 'scalingPolicySummary',
9
+ react2angular(withErrorBoundary(StepPolicySummary, 'scalingPolicySummary'), ['application', 'policy', 'serverGroup']),
10
+ );
@@ -0,0 +1,10 @@
1
+ import { module } from 'angular';
2
+ import { react2angular } from 'react2angular';
3
+ import { withErrorBoundary } from '@spinnaker/core';
4
+ import { StepPolicySummary } from './StepPolicySummary';
5
+
6
+ export const STEP_POLICY_SUMMARY_COMPONENT = 'spinnaker.amazon.scalingPolicy.stepPolicySummary.component';
7
+ module(STEP_POLICY_SUMMARY_COMPONENT, []).component(
8
+ 'stepPolicySummary',
9
+ react2angular(withErrorBoundary(StepPolicySummary, 'stepPolicySummary'), ['application', 'policy', 'serverGroup']),
10
+ );
@@ -3,9 +3,9 @@ import * as React from 'react';
3
3
 
4
4
  import { NumberInput, ReactSelectInput } from '@spinnaker/core';
5
5
 
6
- import { ITargetTrackingPolicyCommand } from '../ScalingPolicyWriter';
6
+ import type { ITargetTrackingPolicyCommand } from '../ScalingPolicyWriter';
7
7
  import { TargetTrackingChart } from './TargetTrackingChart';
8
- import { IAmazonServerGroup, ICustomizedMetricSpecification, IScalingPolicyAlarmView } from '../../../../domain';
8
+ import type { IAmazonServerGroup, ICustomizedMetricSpecification, IScalingPolicyAlarmView } from '../../../../domain';
9
9
  import { MetricSelector } from '../upsert/alarm/MetricSelector';
10
10
 
11
11
  import './TargetMetricFields.less';
@@ -18,7 +18,6 @@ export interface ITargetMetricFieldsProps {
18
18
  isCustomMetric: boolean;
19
19
  serverGroup: IAmazonServerGroup;
20
20
  toggleMetricType?: (type: MetricType) => void;
21
- unit?: string;
22
21
  updateCommand: (command: ITargetTrackingPolicyCommand) => void;
23
22
  }
24
23
 
@@ -29,19 +28,15 @@ export const TargetMetricFields = ({
29
28
  isCustomMetric,
30
29
  serverGroup,
31
30
  toggleMetricType,
32
- unit,
33
31
  updateCommand,
34
32
  }: ITargetMetricFieldsProps) => {
35
33
  const predefinedMetrics = ['ASGAverageCPUUtilization', 'ASGAverageNetworkOut', 'ASGAverageNetworkIn'];
36
34
  const statistics = ['Average', 'Maximum', 'Minimum', 'SampleCount', 'Sum'];
37
- const [commandView, setCommandView] = React.useState<ITargetTrackingPolicyCommand>(command);
38
- const [isCustom, setIsCustom] = React.useState<boolean>(isCustomMetric);
39
- const [unitView, setUnitView] = React.useState<string>(unit);
35
+ const [unit, setUnit] = React.useState<string>(null);
40
36
 
41
37
  const setCommandField = (path: string, value: any) => {
42
- const newCommand = cloneDeep(commandView);
38
+ const newCommand = cloneDeep(command);
43
39
  set(newCommand, path, value);
44
- setCommandView(newCommand);
45
40
  updateCommand(newCommand);
46
41
  };
47
42
 
@@ -50,8 +45,8 @@ export const TargetMetricFields = ({
50
45
  };
51
46
 
52
47
  const onMetricTypeChange = () => {
53
- const newCommand = cloneDeep(commandView);
54
- if (isCustom) {
48
+ const newCommand = cloneDeep(command);
49
+ if (isCustomMetric) {
55
50
  set(newCommand, 'targetTrackingConfiguration.predefinedMetricSpecification', {
56
51
  predefinedMetricType: 'ASGAverageCPUUtilization',
57
52
  });
@@ -66,10 +61,8 @@ export const TargetMetricFields = ({
66
61
  });
67
62
  }
68
63
 
69
- setCommandView(newCommand);
70
64
  updateCommand(newCommand);
71
- setIsCustom(!isCustom);
72
- toggleMetricType(isCustom ? 'predefined' : 'custom');
65
+ toggleMetricType(isCustomMetric ? 'predefined' : 'custom');
73
66
  };
74
67
 
75
68
  return (
@@ -88,9 +81,9 @@ export const TargetMetricFields = ({
88
81
  <div className="row sp-margin-s-yaxis">
89
82
  <div className="col-md-2 sm-label-right">Metric</div>
90
83
  <div className="col-md-10 content-fields">
91
- {!isCustom && (
84
+ {!isCustomMetric && (
92
85
  <ReactSelectInput
93
- value={commandView.targetTrackingConfiguration.predefinedMetricSpecification?.predefinedMetricType}
86
+ value={command.targetTrackingConfiguration.predefinedMetricSpecification?.predefinedMetricType}
94
87
  stringOptions={predefinedMetrics}
95
88
  onChange={(e) =>
96
89
  setCommandField(
@@ -101,16 +94,16 @@ export const TargetMetricFields = ({
101
94
  inputClassName="metric-select-input"
102
95
  />
103
96
  )}
104
- {isCustom && (
97
+ {isCustomMetric && (
105
98
  <MetricSelector
106
- alarm={commandView.targetTrackingConfiguration.customizedMetricSpecification as IScalingPolicyAlarmView}
99
+ alarm={command.targetTrackingConfiguration.customizedMetricSpecification as IScalingPolicyAlarmView}
107
100
  serverGroup={serverGroup}
108
101
  updateAlarm={updateAlarm}
109
102
  />
110
103
  )}
111
104
  {allowDualMode && (
112
105
  <a className="clickable" onClick={onMetricTypeChange}>
113
- {isCustom ? 'Use a predefined metric' : 'Select a custom metric'}
106
+ {isCustomMetric ? 'Use a predefined metric' : 'Select a custom metric'}
114
107
  </a>
115
108
  )}
116
109
  </div>
@@ -118,10 +111,10 @@ export const TargetMetricFields = ({
118
111
  <div className="row sp-margin-s-yaxis">
119
112
  <div className="col-md-2 sm-label-right">Target</div>
120
113
  <div className="col-md-10 content-fields horizontal">
121
- {isCustom && (
114
+ {isCustomMetric && (
122
115
  <div className="horizontal middle">
123
116
  <ReactSelectInput
124
- value={commandView.targetTrackingConfiguration.customizedMetricSpecification?.statistic}
117
+ value={command.targetTrackingConfiguration.customizedMetricSpecification?.statistic}
125
118
  stringOptions={statistics}
126
119
  onChange={(e) =>
127
120
  setCommandField('targetTrackingConfiguration.customizedMetricSpecification.statistic', e.target.value)
@@ -133,23 +126,23 @@ export const TargetMetricFields = ({
133
126
  )}
134
127
  <div className="horizontal middle">
135
128
  <NumberInput
136
- value={commandView.targetTrackingConfiguration.targetValue}
129
+ value={command.targetTrackingConfiguration.targetValue}
137
130
  onChange={(e) =>
138
131
  setCommandField('targetTrackingConfiguration.targetValue', Number.parseInt(e.target.value))
139
132
  }
140
133
  inputClassName="form-control input-sm sp-margin-xs-right"
141
134
  />
142
- <span>{unitView}</span>
135
+ <span>{unit}</span>
143
136
  </div>
144
137
  </div>
145
138
  </div>
146
139
  <div className="row">
147
140
  <div className="col-md-10 col-md-offset-1">
148
141
  <TargetTrackingChart
149
- config={commandView.targetTrackingConfiguration}
142
+ config={command.targetTrackingConfiguration}
150
143
  serverGroup={serverGroup}
151
- unit={unitView}
152
- updateUnit={(u) => setUnitView(u)}
144
+ unit={unit}
145
+ updateUnit={(u) => setUnit(u)}
153
146
  />
154
147
  </div>
155
148
  </div>
@@ -1,7 +1,7 @@
1
1
  import { set } from 'lodash';
2
2
  import * as React from 'react';
3
3
  import { CheckboxInput, HelpField, NumberInput } from '@spinnaker/core';
4
- import { IUpsertScalingPolicyCommand } from '../ScalingPolicyWriter';
4
+ import type { IUpsertScalingPolicyCommand } from '../ScalingPolicyWriter';
5
5
 
6
6
  import './TargetTrackingAdditionalSettings.less';
7
7
 
@@ -1,11 +1,11 @@
1
- import { Dictionary } from 'lodash';
1
+ import type { Dictionary } from 'lodash';
2
2
  import * as React from 'react';
3
3
  import { Subject } from 'rxjs';
4
4
 
5
- import { ICloudMetricStatistics } from '@spinnaker/core';
5
+ import type { ICloudMetricStatistics } from '@spinnaker/core';
6
6
 
7
7
  import { MetricAlarmChart } from '../chart/MetricAlarmChart';
8
- import { IAmazonServerGroup, IScalingPolicyAlarm, ITargetTrackingConfiguration } from '../../../../domain';
8
+ import type { IAmazonServerGroup, IScalingPolicyAlarm, ITargetTrackingConfiguration } from '../../../../domain';
9
9
 
10
10
  export interface ITargetTrackingChartProps {
11
11
  alarmUpdated?: Subject<void>;
@@ -0,0 +1,11 @@
1
+ .TargetTrackingSummary {
2
+ .HoverablePopover {
3
+ min-height: 600px;
4
+ text-decoration: none;
5
+ }
6
+
7
+ .actions {
8
+ margin: 0 0 15px 0;
9
+ border-bottom: 1px solid var(--color-alto);
10
+ }
11
+ }
@@ -0,0 +1,117 @@
1
+ import * as React from 'react';
2
+
3
+ import type { Application, IServerGroup } from '@spinnaker/core';
4
+ import {
5
+ CloudProviderRegistry,
6
+ ConfirmationModalService,
7
+ HoverablePopover,
8
+ ReactModal,
9
+ robotToHuman,
10
+ TaskExecutor,
11
+ } from '@spinnaker/core';
12
+
13
+ import type { ITargetTrackingPolicy } from '../../../../domain';
14
+ import './TargetTrackingSummary.less';
15
+
16
+ export interface ITargetTrackingPolicySummaryProps {
17
+ application: Application;
18
+ policy: ITargetTrackingPolicy;
19
+ serverGroup: IServerGroup;
20
+ }
21
+
22
+ interface IDeletePolicyJob {
23
+ type: string;
24
+ cloudProvider: string;
25
+ credentials: string;
26
+ region: string;
27
+ policyName?: string;
28
+ scalingPolicyID?: string;
29
+ serverGroupName: string;
30
+ }
31
+
32
+ export const TargetTrackingSummary = ({ application, policy, serverGroup }: ITargetTrackingPolicySummaryProps) => {
33
+ const provider = serverGroup.type || serverGroup.cloudProvider || 'aws';
34
+ const providerConfig = CloudProviderRegistry.getValue(provider, 'serverGroup');
35
+ const policyTitle = provider === 'aws' ? policy.policyName : policy.id;
36
+
37
+ const UpsertModalComponent = providerConfig.UpsertTargetTrackingModal;
38
+ const PopoverContent = providerConfig.TargetTrackingChart;
39
+
40
+ const editPolicy = () => {
41
+ const upsertProps = {
42
+ app: application,
43
+ policy,
44
+ serverGroup,
45
+ };
46
+ const modalProps = { dialogClassName: 'wizard-modal modal-lg' };
47
+ ReactModal.show<typeof UpsertModalComponent>(UpsertModalComponent, upsertProps, modalProps);
48
+ };
49
+
50
+ const deletePolicy = () => {
51
+ const taskMonitor = {
52
+ application,
53
+ title: `Deleting scaling policy ${policyTitle}`,
54
+ };
55
+
56
+ const jobToSubmit: IDeletePolicyJob = {
57
+ type: 'deleteScalingPolicy',
58
+ cloudProvider: provider,
59
+ credentials: serverGroup.account,
60
+ region: serverGroup.region,
61
+ scalingPolicyID: policy.id,
62
+ serverGroupName: serverGroup.name,
63
+ };
64
+
65
+ if (provider === 'aws') {
66
+ delete jobToSubmit.scalingPolicyID;
67
+ jobToSubmit.policyName = policy.policyName;
68
+ }
69
+
70
+ ConfirmationModalService.confirm({
71
+ header: `Really delete ${policyTitle}?`,
72
+ buttonText: 'Delete scaling policy',
73
+ account: serverGroup.account,
74
+ taskMonitorConfig: taskMonitor,
75
+ submitMethod: () =>
76
+ TaskExecutor.executeTask({
77
+ application,
78
+ description: `Delete scaling policy ${policyTitle}`,
79
+ job: [jobToSubmit],
80
+ }),
81
+ });
82
+ };
83
+
84
+ const config = policy.targetTrackingConfiguration;
85
+ return (
86
+ <div className="TargetTrackingSummary">
87
+ <HoverablePopover
88
+ Component={() => <PopoverContent config={policy.targetTrackingConfiguration} serverGroup={serverGroup} />}
89
+ placement="left"
90
+ title={policyTitle}
91
+ >
92
+ <div>
93
+ <div className="label label-default">{robotToHuman(policy.policyType).toUpperCase()}</div>
94
+ <div>
95
+ <b>Target</b>
96
+ <span className="sp-margin-xs-left">
97
+ {config.predefinedMetricSpecification?.predefinedMetricType ||
98
+ config.customizedMetricSpecification?.metricName}
99
+ </span>
100
+ {Boolean(config.customizedMetricSpecification?.statistic) && <span>{` @ ${config.targetValue}`}</span>}
101
+ </div>
102
+ </div>
103
+ </HoverablePopover>
104
+
105
+ <div className="actions">
106
+ <button className="btn btn-xs btn-link" onClick={editPolicy}>
107
+ <span className="glyphicon glyphicon-cog"></span>
108
+ <span className="sr-only">Edit policy</span>
109
+ </button>
110
+ <button className="btn btn-xs btn-link" onClick={deletePolicy}>
111
+ <span className="glyphicon glyphicon-trash"></span>
112
+ <span className="sr-only">Delete policy</span>
113
+ </button>
114
+ </div>
115
+ </div>
116
+ );
117
+ };
@@ -1,11 +1,12 @@
1
1
  import * as React from 'react';
2
2
 
3
- import { Application, IModalComponentProps, TaskMonitorModal } from '@spinnaker/core';
3
+ import type { Application, IModalComponentProps } from '@spinnaker/core';
4
+ import { TaskMonitorModal } from '@spinnaker/core';
4
5
 
5
- import { ITargetTrackingPolicyCommand, IUpsertScalingPolicyCommand } from '../ScalingPolicyWriter';
6
+ import type { ITargetTrackingPolicyCommand, IUpsertScalingPolicyCommand } from '../ScalingPolicyWriter';
6
7
  import { TargetMetricFields } from './TargetMetricFields';
7
8
  import { TargetTrackingAdditionalSettings } from './TargetTrackingAdditionalSettings';
8
- import { IAmazonServerGroup, ITargetTrackingPolicy } from '../../../../domain';
9
+ import type { IAmazonServerGroup, ITargetTrackingPolicy } from '../../../../domain';
9
10
  import { ScalingPolicyCommandBuilder } from '../upsert/ScalingPolicyCommandBuilderService';
10
11
 
11
12
  export interface IUpsertTargetTrackingModalProps extends IModalComponentProps {
@@ -1,85 +1,14 @@
1
- import { IComponentController, IComponentOptions, module } from 'angular';
2
-
3
- import { Application, ConfirmationModalService, IServerGroup, ITaskMonitorConfig, ReactModal } from '@spinnaker/core';
4
-
5
- import { ScalingPolicyWriter } from '../ScalingPolicyWriter';
6
- import { IUpsertTargetTrackingModalProps, UpsertTargetTrackingModal } from './UpsertTargetTrackingModal';
7
- import { ITargetTrackingConfiguration, ITargetTrackingPolicy } from '../../../../domain/ITargetTrackingPolicy';
8
-
9
- class TargetTrackingSummaryController implements IComponentController {
10
- public policy: ITargetTrackingPolicy;
11
- public serverGroup: IServerGroup;
12
- public application: Application;
13
- public config: ITargetTrackingConfiguration;
14
- public popoverTemplate = require('./targetTrackingPopover.html');
15
-
16
- constructor() {}
17
-
18
- public $onInit() {
19
- this.config = this.policy.targetTrackingConfiguration;
20
- }
21
-
22
- public editPolicy(): void {
23
- const upsertProps = {
24
- app: this.application,
25
- policy: this.policy,
26
- serverGroup: this.serverGroup,
27
- } as IUpsertTargetTrackingModalProps;
28
- const modalProps = { dialogClassName: 'wizard-modal modal-lg' };
29
- ReactModal.show(UpsertTargetTrackingModal, upsertProps, modalProps);
30
- }
31
-
32
- public deletePolicy(): void {
33
- const taskMonitor: ITaskMonitorConfig = {
34
- application: this.application,
35
- title: 'Deleting scaling policy ' + this.policy.policyName,
36
- };
37
-
38
- ConfirmationModalService.confirm({
39
- header: `Really delete ${this.policy.policyName}?`,
40
- buttonText: 'Delete scaling policy',
41
- account: this.serverGroup.account,
42
- taskMonitorConfig: taskMonitor,
43
- submitMethod: () => ScalingPolicyWriter.deleteScalingPolicy(this.application, this.serverGroup, this.policy),
44
- });
45
- }
46
- }
47
-
48
- const component: IComponentOptions = {
49
- bindings: {
50
- policy: '<',
51
- serverGroup: '<',
52
- application: '<',
53
- },
54
- controller: TargetTrackingSummaryController,
55
- template: `
56
- <div uib-popover-template="$ctrl.popoverTemplate"
57
- popover-placement="left"
58
- popover-title="{{$ctrl.policy.policyName}}"
59
- popover-trigger="'mouseenter'">
60
- <p>
61
- <span class="label label-default">{{$ctrl.policy.policyType | robotToHuman | uppercase }}</span>
62
- <div>
63
- <strong>Target</strong>
64
- {{$ctrl.config.predefinedMetricSpecification.predefinedMetricType}}
65
- {{$ctrl.config.customizedMetricSpecification.metricName}}
66
- <span ng-if="$ctrl.config.customizedMetricSpecification">({{$ctrl.config.customizedMetricSpecification.statistic}})</span>
67
- @ {{$ctrl.config.targetValue}}
68
- </div>
69
- </p>
70
- <div class="actions text-right">
71
- <button class="btn btn-xs btn-link" ng-click="$ctrl.editPolicy()">
72
- <span class="glyphicon glyphicon-cog" uib-tooltip="Edit policy"></span>
73
- <span class="sr-only">Edit policy</span>
74
- </button>
75
- <button class="btn btn-xs btn-link" ng-click="$ctrl.deletePolicy()">
76
- <span class="glyphicon glyphicon-trash" uib-tooltip="Delete policy"></span>
77
- <span class="sr-only">Delete policy</span>
78
- </button>
79
- </div>
80
- </div>
81
- `,
82
- };
1
+ import { module } from 'angular';
2
+ import { react2angular } from 'react2angular';
3
+ import { withErrorBoundary } from '@spinnaker/core';
4
+ import { TargetTrackingSummary } from './TargetTrackingSummary';
83
5
 
84
6
  export const TARGET_TRACKING_SUMMARY_COMPONENT = 'spinnaker.amazon.scalingPolicy.targetTracking.summary.component';
85
- module(TARGET_TRACKING_SUMMARY_COMPONENT, []).component('targetTrackingSummary', component);
7
+ module(TARGET_TRACKING_SUMMARY_COMPONENT, []).component(
8
+ 'targetTrackingSummary',
9
+ react2angular(withErrorBoundary(TargetTrackingSummary, 'stepPolicySummary'), [
10
+ 'application',
11
+ 'policy',
12
+ 'serverGroup',
13
+ ]),
14
+ );