@spinnaker/google 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 (548) hide show
  1. package/dist/autoHealingPolicy/GceAutoHealingPolicyEditor.d.ts +24 -0
  2. package/dist/autoHealingPolicy/index.d.ts +1 -0
  3. package/dist/autoscalingPolicy/GceAutoscalingPolicyEditor.d.ts +8 -0
  4. package/dist/autoscalingPolicy/GceAutoscalingPolicyWriter.d.ts +25 -0
  5. package/dist/autoscalingPolicy/IGceAutoscalingPolicy.d.ts +33 -2
  6. package/dist/autoscalingPolicy/index.d.ts +2 -0
  7. package/dist/cache/cacheConfigurer.service.d.ts +2 -2
  8. package/dist/certificate/certificate.reader.d.ts +1 -2
  9. package/dist/common/xpnNaming.gce.service.d.ts +4 -2
  10. package/dist/domain/autoHealingPolicy.d.ts +0 -5
  11. package/dist/domain/serverGroup.d.ts +24 -0
  12. package/dist/gce.module.d.ts +3 -1
  13. package/dist/healthCheck/healthCheck.read.service.d.ts +1 -2
  14. package/dist/image/ImageSelect.d.ts +0 -1
  15. package/dist/image/image.reader.d.ts +2 -2
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/instance/custom/customInstanceBuilder.gce.service.d.ts +17 -2
  20. package/dist/instance/details/GceInstanceDetails.d.ts +24 -0
  21. package/dist/instance/gceInstanceType.service.d.ts +3 -2
  22. package/dist/instance/gceMultiInstanceTask.transformer.d.ts +3 -2
  23. package/dist/loadBalancer/configure/choice/GceLoadBalancerChoiceModal.d.ts +34 -0
  24. package/dist/loadBalancer/configure/common/GceProxyLoadBalancerEditor.d.ts +36 -0
  25. package/dist/loadBalancer/configure/common/GceProxyLoadBalancerModal.d.ts +36 -0
  26. package/dist/loadBalancer/configure/common/gceLoadBalancerData.d.ts +47 -0
  27. package/dist/loadBalancer/configure/common/gceLoadBalancerModels.d.ts +106 -0
  28. package/dist/loadBalancer/configure/common/gceLoadBalancerSubmission.d.ts +10 -0
  29. package/dist/loadBalancer/configure/common/index.d.ts +4 -0
  30. package/dist/loadBalancer/configure/common/useGceLoadBalancerData.d.ts +5 -0
  31. package/dist/loadBalancer/configure/http/GceHttpLoadBalancerEditor.d.ts +33 -0
  32. package/dist/loadBalancer/configure/http/GceHttpLoadBalancerListenerEditor.d.ts +12 -0
  33. package/dist/loadBalancer/configure/http/GceHttpLoadBalancerModal.d.ts +37 -0
  34. package/dist/loadBalancer/configure/http/GceHttpLoadBalancerResourceEditors.d.ts +18 -0
  35. package/dist/loadBalancer/configure/http/GceHttpLoadBalancerRoutingEditor.d.ts +16 -0
  36. package/dist/loadBalancer/configure/network/GceNetworkLoadBalancerEditor.d.ts +30 -0
  37. package/dist/loadBalancer/configure/network/GceNetworkLoadBalancerModal.d.ts +58 -0
  38. package/dist/loadBalancer/details/gceLoadBalancerDetails.d.ts +36 -0
  39. package/dist/loadBalancer/httpLoadBalancerUtils.service.d.ts +0 -1
  40. package/dist/loadBalancer/loadBalancer.setTransformer.d.ts +1 -5
  41. package/dist/loadBalancer/loadBalancer.transformer.d.ts +3 -2
  42. package/dist/pipeline/stages/bake/gceBakeStage.d.ts +2 -2
  43. package/dist/pipeline/stages/cloneServerGroup/gceCloneServerGroupStage.d.ts +1 -2
  44. package/dist/pipeline/stages/destroyAsg/gceDestroyAsgStage.d.ts +1 -2
  45. package/dist/pipeline/stages/disableAsg/gceDisableAsgStage.d.ts +1 -2
  46. package/dist/pipeline/stages/disableCluster/gceDisableClusterStage.d.ts +1 -2
  47. package/dist/pipeline/stages/enableAsg/gceEnableAsgStage.d.ts +1 -2
  48. package/dist/pipeline/stages/findAmi/gceFindAmiStage.d.ts +1 -2
  49. package/dist/pipeline/stages/findImageFromTags/gceFindImageFromTagsStage.d.ts +1 -2
  50. package/dist/pipeline/stages/googleStageConfig.d.ts +40 -0
  51. package/dist/pipeline/stages/resizeAsg/gceResizeAsgStage.d.ts +1 -2
  52. package/dist/pipeline/stages/scaleDownCluster/gceScaleDownClusterStage.d.ts +1 -2
  53. package/dist/pipeline/stages/shrinkCluster/gceShrinkClusterStage.d.ts +1 -2
  54. package/dist/pipeline/stages/tagImage/gceTagImageStage.d.ts +1 -2
  55. package/dist/securityGroup/configure/GceSecurityGroupModal.d.ts +50 -0
  56. package/dist/securityGroup/details/GceSecurityGroupDetails.d.ts +12 -0
  57. package/dist/securityGroup/securityGroup.reader.d.ts +3 -2
  58. package/dist/securityGroup/securityGroup.transformer.d.ts +5 -2
  59. package/dist/serverGroup/configure/serverGroupCommandBuilder.service.d.ts +6 -2
  60. package/dist/serverGroup/configure/serverGroupConfiguration.service.d.ts +8 -0
  61. package/dist/serverGroup/configure/wizard/GceCloneServerGroupModal.d.ts +49 -0
  62. package/dist/serverGroup/configure/wizard/GceServerGroupWizard.helpers.d.ts +4 -0
  63. package/dist/serverGroup/configure/wizard/GceServerGroupWizard.types.d.ts +113 -0
  64. package/dist/serverGroup/configure/wizard/GceServerGroupWizardAdapter.d.ts +16 -0
  65. package/dist/serverGroup/configure/wizard/GceServerGroupWizardPage.d.ts +20 -0
  66. package/dist/serverGroup/configure/wizard/customInstance/GceCustomInstanceBuilder.d.ts +3 -0
  67. package/dist/serverGroup/configure/wizard/hiddenMetadataKeys.value.d.ts +1 -2
  68. package/dist/serverGroup/configure/wizard/index.d.ts +5 -0
  69. package/dist/serverGroup/configure/wizard/pages/AdvancedSettings.d.ts +20 -0
  70. package/dist/serverGroup/configure/wizard/pages/GceServerGroupFirewalls.d.ts +10 -0
  71. package/dist/serverGroup/configure/wizard/pages/GceServerGroupLoadBalancers.d.ts +21 -0
  72. package/dist/serverGroup/configure/wizard/pages/Policies.d.ts +14 -0
  73. package/dist/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.d.ts +13 -0
  74. package/dist/serverGroup/configure/wizard/pages/ServerGroupCapacity.d.ts +35 -0
  75. package/dist/serverGroup/configure/wizard/pages/ServerGroupImageSettings.d.ts +11 -0
  76. package/dist/serverGroup/configure/wizard/pages/ServerGroupInstanceType.d.ts +29 -0
  77. package/dist/serverGroup/configure/wizard/pages/index.d.ts +8 -0
  78. package/dist/serverGroup/configure/wizard/securityGroups/tagManager.service.d.ts +17 -2
  79. package/dist/serverGroup/configure/wizard/zones/GceInstanceFlexibilityConfigurer.d.ts +19 -0
  80. package/dist/serverGroup/details/GceInstanceFlexibilityPolicyDetails.d.ts +6 -0
  81. package/dist/serverGroup/details/autoHealingPolicy/GceAutoHealingPolicyDetails.d.ts +11 -0
  82. package/dist/serverGroup/details/autoHealingPolicy/index.d.ts +2 -0
  83. package/dist/serverGroup/details/autoHealingPolicy/modal/GceUpsertAutoHealingPolicyModal.d.ts +21 -0
  84. package/dist/serverGroup/details/autoscalingPolicy/GceAutoscalingPolicyDetails.d.ts +12 -0
  85. package/dist/serverGroup/details/autoscalingPolicy/index.d.ts +2 -0
  86. package/dist/serverGroup/details/autoscalingPolicy/modal/GceUpsertAutoscalingPolicyModal.d.ts +26 -0
  87. package/dist/serverGroup/details/gceServerGroupDetails.d.ts +32 -0
  88. package/dist/serverGroup/details/resize/GceResizeServerGroupModal.d.ts +60 -0
  89. package/dist/serverGroup/details/rollback/GceRollbackServerGroupModal.d.ts +44 -0
  90. package/dist/serverGroup/details/stateful/StatefulMIGService.d.ts +2 -2
  91. package/dist/serverGroup/serverGroup.transformer.d.ts +2 -2
  92. package/dist/subnet/subnet.renderer.d.ts +4 -2
  93. package/dist/validation/ApplicationNameValidator.d.ts +6 -0
  94. package/package.json +3 -12
  95. package/src/autoHealingPolicy/GceAutoHealingPolicyEditor.spec.tsx +133 -0
  96. package/src/autoHealingPolicy/GceAutoHealingPolicyEditor.tsx +143 -0
  97. package/src/autoHealingPolicy/index.ts +1 -0
  98. package/src/autoscalingPolicy/GceAutoscalingPolicyEditor.spec.tsx +241 -0
  99. package/src/autoscalingPolicy/GceAutoscalingPolicyEditor.tsx +479 -0
  100. package/src/autoscalingPolicy/GceAutoscalingPolicyWriter.spec.ts +135 -0
  101. package/src/autoscalingPolicy/GceAutoscalingPolicyWriter.ts +101 -0
  102. package/src/autoscalingPolicy/IGceAutoscalingPolicy.ts +37 -2
  103. package/src/autoscalingPolicy/index.ts +2 -0
  104. package/src/cache/cacheConfigurer.service.js +30 -22
  105. package/src/certificate/certificate.reader.ts +1 -6
  106. package/src/common/xpnNaming.gce.service.js +4 -12
  107. package/src/domain/autoHealingPolicy.ts +0 -6
  108. package/src/domain/serverGroup.ts +25 -0
  109. package/src/gce.module.spec.ts +638 -0
  110. package/src/gce.module.ts +106 -126
  111. package/src/healthCheck/healthCheck.read.service.ts +1 -5
  112. package/src/help/gce.help.ts +3 -7
  113. package/src/image/ImageSelect.tsx +0 -15
  114. package/src/image/image.reader.spec.ts +10 -0
  115. package/src/image/image.reader.ts +3 -3
  116. package/src/index.ts +1 -1
  117. package/src/instance/custom/customInstanceBuilder.gce.service.js +123 -141
  118. package/src/instance/details/GceInstanceDetails.spec.tsx +354 -0
  119. package/src/instance/details/GceInstanceDetails.tsx +419 -0
  120. package/src/instance/gceInstanceType.service.js +6 -11
  121. package/src/instance/gceMultiInstanceTask.transformer.js +11 -23
  122. package/src/loadBalancer/configure/choice/GceLoadBalancerChoiceModal.less +17 -0
  123. package/src/loadBalancer/configure/choice/GceLoadBalancerChoiceModal.spec.tsx +279 -0
  124. package/src/loadBalancer/configure/choice/GceLoadBalancerChoiceModal.tsx +169 -0
  125. package/src/loadBalancer/configure/common/GceProxyLoadBalancerEditor.spec.tsx +353 -0
  126. package/src/loadBalancer/configure/common/GceProxyLoadBalancerEditor.tsx +503 -0
  127. package/src/loadBalancer/configure/common/GceProxyLoadBalancerModal.spec.tsx +313 -0
  128. package/src/loadBalancer/configure/common/GceProxyLoadBalancerModal.tsx +241 -0
  129. package/src/loadBalancer/configure/common/gceLoadBalancerData.spec.ts +117 -0
  130. package/src/loadBalancer/configure/common/gceLoadBalancerData.ts +191 -0
  131. package/src/loadBalancer/configure/common/gceLoadBalancerModels.spec.ts +409 -0
  132. package/src/loadBalancer/configure/common/gceLoadBalancerModels.ts +534 -0
  133. package/src/loadBalancer/configure/common/gceLoadBalancerSubmission.spec.ts +297 -0
  134. package/src/loadBalancer/configure/common/gceLoadBalancerSubmission.ts +127 -0
  135. package/src/loadBalancer/configure/common/index.spec.ts +17 -0
  136. package/src/loadBalancer/configure/common/index.ts +4 -0
  137. package/src/loadBalancer/configure/common/useGceLoadBalancerData.spec.tsx +78 -0
  138. package/src/loadBalancer/configure/common/useGceLoadBalancerData.ts +34 -0
  139. package/src/loadBalancer/configure/http/GceHttpLoadBalancerEditor.spec.tsx +472 -0
  140. package/src/loadBalancer/configure/http/GceHttpLoadBalancerEditor.tsx +586 -0
  141. package/src/loadBalancer/configure/http/GceHttpLoadBalancerListenerEditor.spec.tsx +94 -0
  142. package/src/loadBalancer/configure/http/GceHttpLoadBalancerListenerEditor.tsx +153 -0
  143. package/src/loadBalancer/configure/http/GceHttpLoadBalancerModal.spec.tsx +326 -0
  144. package/src/loadBalancer/configure/http/GceHttpLoadBalancerModal.tsx +217 -0
  145. package/src/loadBalancer/configure/http/GceHttpLoadBalancerResourceEditors.spec.tsx +86 -0
  146. package/src/loadBalancer/configure/http/GceHttpLoadBalancerResourceEditors.tsx +284 -0
  147. package/src/loadBalancer/configure/http/GceHttpLoadBalancerRoutingEditor.spec.tsx +82 -0
  148. package/src/loadBalancer/configure/http/GceHttpLoadBalancerRoutingEditor.tsx +174 -0
  149. package/src/loadBalancer/configure/http/httpLoadBalancerWizard.component.less +31 -12
  150. package/src/loadBalancer/configure/network/GceNetworkLoadBalancerEditor.spec.tsx +175 -0
  151. package/src/loadBalancer/configure/network/GceNetworkLoadBalancerEditor.tsx +315 -0
  152. package/src/loadBalancer/configure/network/GceNetworkLoadBalancerModal.spec.tsx +303 -0
  153. package/src/loadBalancer/configure/network/GceNetworkLoadBalancerModal.tsx +368 -0
  154. package/src/loadBalancer/details/gceLoadBalancerDetails.spec.tsx +65 -0
  155. package/src/loadBalancer/details/gceLoadBalancerDetails.tsx +456 -0
  156. package/src/loadBalancer/httpLoadBalancerUtils.service.ts +3 -6
  157. package/src/loadBalancer/loadBalancer.setTransformer.ts +3 -12
  158. package/src/loadBalancer/loadBalancer.transformer.js +5 -9
  159. package/src/pipeline/stages/bake/gceBakeStage.js +362 -155
  160. package/src/pipeline/stages/cloneServerGroup/gceCloneServerGroupStage.js +17 -83
  161. package/src/pipeline/stages/destroyAsg/gceDestroyAsgStage.js +24 -62
  162. package/src/pipeline/stages/disableAsg/gceDisableAsgStage.js +22 -68
  163. package/src/pipeline/stages/disableCluster/gceDisableClusterStage.js +21 -79
  164. package/src/pipeline/stages/enableAsg/gceEnableAsgStage.js +17 -65
  165. package/src/pipeline/stages/findAmi/gceFindAmiStage.js +17 -79
  166. package/src/pipeline/stages/findImageFromTags/gceFindImageFromTagsStage.js +121 -35
  167. package/src/pipeline/stages/googleStageConfig.js +580 -0
  168. package/src/pipeline/stages/googleStageConfig.spec.js +44 -0
  169. package/src/pipeline/stages/resizeAsg/gceResizeAsgStage.js +26 -125
  170. package/src/pipeline/stages/scaleDownCluster/gceScaleDownClusterStage.js +24 -78
  171. package/src/pipeline/stages/shrinkCluster/gceShrinkClusterStage.js +19 -73
  172. package/src/pipeline/stages/tagImage/gceTagImageStage.js +165 -36
  173. package/src/securityGroup/configure/GceSecurityGroupModal.spec.tsx +381 -0
  174. package/src/securityGroup/configure/GceSecurityGroupModal.tsx +543 -0
  175. package/src/securityGroup/details/GceSecurityGroupDetails.spec.tsx +232 -0
  176. package/src/securityGroup/details/GceSecurityGroupDetails.tsx +261 -0
  177. package/src/securityGroup/securityGroup.reader.js +3 -11
  178. package/src/securityGroup/securityGroup.transformer.js +8 -15
  179. package/src/serverGroup/configure/serverGroupCommandBuilder.service.js +563 -556
  180. package/src/serverGroup/configure/serverGroupCommandBuilder.service.spec.js +238 -0
  181. package/src/serverGroup/configure/serverGroupConfiguration.service.js +621 -653
  182. package/src/serverGroup/configure/serverGroupConfiguration.service.spec.js +9 -0
  183. package/src/serverGroup/configure/wizard/GceCloneServerGroupModal.spec.tsx +1228 -0
  184. package/src/serverGroup/configure/wizard/GceCloneServerGroupModal.tsx +824 -0
  185. package/src/serverGroup/configure/wizard/GceServerGroupWizard.helpers.ts +51 -0
  186. package/src/serverGroup/configure/wizard/GceServerGroupWizard.types.ts +176 -0
  187. package/src/serverGroup/configure/wizard/GceServerGroupWizardAdapter.ts +115 -0
  188. package/src/serverGroup/configure/wizard/GceServerGroupWizardPage.spec.tsx +460 -0
  189. package/src/serverGroup/configure/wizard/GceServerGroupWizardPage.tsx +285 -0
  190. package/src/serverGroup/configure/wizard/customInstance/GceCustomInstanceBuilder.spec.tsx +125 -0
  191. package/src/serverGroup/configure/wizard/customInstance/GceCustomInstanceBuilder.tsx +127 -0
  192. package/src/serverGroup/configure/wizard/hiddenMetadataKeys.value.js +2 -7
  193. package/src/serverGroup/configure/wizard/index.ts +5 -0
  194. package/src/serverGroup/configure/wizard/pages/AdvancedSettings.spec.tsx +339 -0
  195. package/src/serverGroup/configure/wizard/pages/AdvancedSettings.tsx +871 -0
  196. package/src/serverGroup/configure/wizard/pages/GceServerGroupFirewalls.spec.tsx +196 -0
  197. package/src/serverGroup/configure/wizard/pages/GceServerGroupFirewalls.tsx +278 -0
  198. package/src/serverGroup/configure/wizard/pages/GceServerGroupLoadBalancers.spec.tsx +643 -0
  199. package/src/serverGroup/configure/wizard/pages/GceServerGroupLoadBalancers.tsx +851 -0
  200. package/src/serverGroup/configure/wizard/pages/Policies.spec.tsx +317 -0
  201. package/src/serverGroup/configure/wizard/pages/Policies.tsx +293 -0
  202. package/src/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.spec.tsx +418 -0
  203. package/src/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.tsx +247 -0
  204. package/src/serverGroup/configure/wizard/pages/ServerGroupCapacity.spec.tsx +659 -0
  205. package/src/serverGroup/configure/wizard/pages/ServerGroupCapacity.tsx +470 -0
  206. package/src/serverGroup/configure/wizard/pages/ServerGroupImageSettings.spec.tsx +146 -0
  207. package/src/serverGroup/configure/wizard/pages/ServerGroupImageSettings.tsx +163 -0
  208. package/src/serverGroup/configure/wizard/pages/ServerGroupInstanceType.spec.tsx +536 -0
  209. package/src/serverGroup/configure/wizard/pages/ServerGroupInstanceType.tsx +728 -0
  210. package/src/serverGroup/configure/wizard/pages/index.ts +8 -0
  211. package/src/serverGroup/configure/wizard/securityGroups/tagManager.service.js +186 -182
  212. package/src/serverGroup/configure/wizard/zones/GceInstanceFlexibilityConfigurer.spec.tsx +390 -0
  213. package/src/serverGroup/configure/wizard/zones/GceInstanceFlexibilityConfigurer.tsx +310 -0
  214. package/src/serverGroup/details/GceInstanceFlexibilityPolicyDetails.spec.tsx +32 -0
  215. package/src/serverGroup/details/GceInstanceFlexibilityPolicyDetails.tsx +36 -0
  216. package/src/serverGroup/details/autoHealingPolicy/GceAutoHealingPolicyDetails.spec.tsx +192 -0
  217. package/src/serverGroup/details/autoHealingPolicy/GceAutoHealingPolicyDetails.tsx +83 -0
  218. package/src/serverGroup/details/autoHealingPolicy/index.ts +2 -0
  219. package/src/serverGroup/details/autoHealingPolicy/modal/GceUpsertAutoHealingPolicyModal.spec.tsx +94 -0
  220. package/src/serverGroup/details/autoHealingPolicy/modal/GceUpsertAutoHealingPolicyModal.tsx +102 -0
  221. package/src/serverGroup/details/autoscalingPolicy/GceAutoscalingPolicyDetails.spec.tsx +200 -0
  222. package/src/serverGroup/details/autoscalingPolicy/GceAutoscalingPolicyDetails.tsx +153 -0
  223. package/src/serverGroup/details/autoscalingPolicy/index.ts +2 -0
  224. package/src/serverGroup/details/autoscalingPolicy/modal/GceUpsertAutoscalingPolicyModal.spec.tsx +227 -0
  225. package/src/serverGroup/details/autoscalingPolicy/modal/GceUpsertAutoscalingPolicyModal.tsx +196 -0
  226. package/src/serverGroup/details/gceServerGroupDetails.spec.tsx +290 -0
  227. package/src/serverGroup/details/gceServerGroupDetails.tsx +372 -0
  228. package/src/serverGroup/details/resize/GceResizeServerGroupModal.spec.tsx +390 -0
  229. package/src/serverGroup/details/resize/GceResizeServerGroupModal.tsx +346 -0
  230. package/src/serverGroup/details/rollback/GceRollbackServerGroupModal.spec.tsx +168 -0
  231. package/src/serverGroup/details/rollback/GceRollbackServerGroupModal.tsx +196 -0
  232. package/src/serverGroup/details/stateful/UpdateBootImageButton.tsx +1 -1
  233. package/src/serverGroup/serverGroup.transformer.js +73 -54
  234. package/src/serverGroup/serverGroup.transformer.spec.js +90 -15
  235. package/src/subnet/subnet.renderer.js +10 -15
  236. package/src/validation/ApplicationNameValidator.spec.ts +47 -0
  237. package/src/validation/ApplicationNameValidator.ts +89 -0
  238. package/dist/address/address.reader.d.ts +0 -15
  239. package/dist/autoscalingPolicy/autoscalingPolicy.write.service.d.ts +0 -2
  240. package/dist/autoscalingPolicy/components/basicSettings/basicSettings.component.d.ts +0 -2
  241. package/dist/autoscalingPolicy/components/metricSettings/GcePredictiveAutoscaling.d.ts +0 -1
  242. package/dist/autoscalingPolicy/components/metricSettings/metricSettings.component.d.ts +0 -2
  243. package/dist/autoscalingPolicy/components/scalingSchedules/scalingSchedules.component.d.ts +0 -2
  244. package/dist/autoscalingPolicy/components/scalingSchedules/timeZoneSelect.d.ts +0 -13
  245. package/dist/backendService/backendService.reader.d.ts +0 -2
  246. package/dist/cache/cacheRefresh.component.d.ts +0 -1
  247. package/dist/common/footer.directive.d.ts +0 -2
  248. package/dist/gceNetworkSelectField.directive.d.ts +0 -2
  249. package/dist/gceRegionSelectField.directive.d.ts +0 -2
  250. package/dist/instance/custom/customInstance.filter.d.ts +0 -2
  251. package/dist/instance/details/instance.details.controller.d.ts +0 -2
  252. package/dist/interceptors/iap.interceptor.d.ts +0 -8
  253. package/dist/loadBalancer/configure/choice/gceLoadBalancerChoice.modal.d.ts +0 -1
  254. package/dist/loadBalancer/configure/choice/gceLoadBalancerPipelineModal.d.ts +0 -9
  255. package/dist/loadBalancer/configure/choice/loadBalancerTypeToWizardMap.constant.d.ts +0 -10
  256. package/dist/loadBalancer/configure/common/addressSelector.component.d.ts +0 -1
  257. package/dist/loadBalancer/configure/common/commonLoadBalancer.controller.d.ts +0 -17
  258. package/dist/loadBalancer/configure/common/commonLoadBalancerCommandBuilder.service.d.ts +0 -23
  259. package/dist/loadBalancer/configure/common/healthCheck.component.d.ts +0 -1
  260. package/dist/loadBalancer/configure/http/backendService/backendService.component.d.ts +0 -2
  261. package/dist/loadBalancer/configure/http/basicSettings/basicSettings.component.d.ts +0 -2
  262. package/dist/loadBalancer/configure/http/commandBuilder.service.d.ts +0 -2
  263. package/dist/loadBalancer/configure/http/createHttpLoadBalancer.controller.d.ts +0 -2
  264. package/dist/loadBalancer/configure/http/healthCheck/healthCheck.component.d.ts +0 -2
  265. package/dist/loadBalancer/configure/http/hostRule/hostRule.component.d.ts +0 -2
  266. package/dist/loadBalancer/configure/http/httpLoadBalancer.write.service.d.ts +0 -2
  267. package/dist/loadBalancer/configure/http/listeners/listener.component.d.ts +0 -2
  268. package/dist/loadBalancer/configure/http/pathRule/pathRule.component.d.ts +0 -2
  269. package/dist/loadBalancer/configure/http/transformer.service.d.ts +0 -2
  270. package/dist/loadBalancer/configure/internal/gceCreateInternalLoadBalancer.controller.d.ts +0 -1
  271. package/dist/loadBalancer/configure/internalhttp/createInternalHttpLoadBalancer.controller.d.ts +0 -3
  272. package/dist/loadBalancer/configure/network/createLoadBalancer.controller.d.ts +0 -2
  273. package/dist/loadBalancer/configure/ssl/gceCreateSslLoadBalancer.controller.d.ts +0 -1
  274. package/dist/loadBalancer/configure/tcp/gceCreateTcpLoadBalancer.controller.d.ts +0 -1
  275. package/dist/loadBalancer/details/backendService/backendService.component.d.ts +0 -1
  276. package/dist/loadBalancer/details/backendService/sessionAffinity.filter.d.ts +0 -1
  277. package/dist/loadBalancer/details/deleteModal/deleteModal.controller.d.ts +0 -1
  278. package/dist/loadBalancer/details/healthCheck/healthCheck.component.d.ts +0 -2
  279. package/dist/loadBalancer/details/hostAndPathRules/hostAndPathRules.controller.d.ts +0 -2
  280. package/dist/loadBalancer/details/hostAndPathRules/hostAndPathRules.service.d.ts +0 -2
  281. package/dist/loadBalancer/details/hostAndPathRules/hostAndPathRulesButton.component.d.ts +0 -2
  282. package/dist/loadBalancer/details/loadBalancerDetail.controller.d.ts +0 -2
  283. package/dist/loadBalancer/details/loadBalancerType/loadBalancerType.component.d.ts +0 -2
  284. package/dist/pipeline/stages/bake/bakeExecutionDetails.controller.d.ts +0 -2
  285. package/dist/securityGroup/clone/cloneSecurityGroup.controller.d.ts +0 -2
  286. package/dist/securityGroup/configure/ConfigSecurityGroupMixin.controller.d.ts +0 -2
  287. package/dist/securityGroup/configure/createSecurityGroup.controller.d.ts +0 -2
  288. package/dist/securityGroup/configure/editSecurityGroup.controller.d.ts +0 -2
  289. package/dist/securityGroup/details/securityGroupDetail.controller.d.ts +0 -2
  290. package/dist/securityGroup/securityGroupHelpText.service.d.ts +0 -13
  291. package/dist/serverGroup/configure/serverGroup.configure.gce.module.d.ts +0 -2
  292. package/dist/serverGroup/configure/wizard/advancedSettings/GceAcceleratorConfigurer.d.ts +0 -16
  293. package/dist/serverGroup/configure/wizard/advancedSettings/advancedSettingsSelector.directive.d.ts +0 -2
  294. package/dist/serverGroup/configure/wizard/advancedSettings/diskConfigurer.component.d.ts +0 -1
  295. package/dist/serverGroup/configure/wizard/autoHealingPolicy/autoHealingPolicySelector.component.d.ts +0 -1
  296. package/dist/serverGroup/configure/wizard/autoScalingPolicy/autoScalingPolicySelector.component.d.ts +0 -1
  297. package/dist/serverGroup/configure/wizard/capacity/advancedCapacitySelector.component.d.ts +0 -2
  298. package/dist/serverGroup/configure/wizard/capacity/simpleCapacitySelector.component.d.ts +0 -2
  299. package/dist/serverGroup/configure/wizard/cloneServerGroup.gce.controller.d.ts +0 -2
  300. package/dist/serverGroup/configure/wizard/customInstance/customInstanceConfigurer.component.d.ts +0 -1
  301. package/dist/serverGroup/configure/wizard/loadBalancers/elSevenOptions/backendServiceSelector.component.d.ts +0 -2
  302. package/dist/serverGroup/configure/wizard/loadBalancers/elSevenOptions/elSevenOptionsGenerator.component.d.ts +0 -2
  303. package/dist/serverGroup/configure/wizard/loadBalancers/loadBalancerSelector.directive.d.ts +0 -2
  304. package/dist/serverGroup/configure/wizard/loadBalancingPolicy/loadBalancingPolicySelector.component.d.ts +0 -2
  305. package/dist/serverGroup/configure/wizard/location/basicSettings.controller.d.ts +0 -2
  306. package/dist/serverGroup/configure/wizard/securityGroups/securityGroupSelector.directive.d.ts +0 -2
  307. package/dist/serverGroup/configure/wizard/securityGroups/securityGroupsRemoved.directive.d.ts +0 -2
  308. package/dist/serverGroup/configure/wizard/securityGroups/tagSelector.component.d.ts +0 -2
  309. package/dist/serverGroup/configure/wizard/securityGroups/tagSelectorGenerator.component.d.ts +0 -2
  310. package/dist/serverGroup/configure/wizard/zones/regionalSelector.directive.d.ts +0 -2
  311. package/dist/serverGroup/configure/wizard/zones/targetShapeSelector.directive.d.ts +0 -1
  312. package/dist/serverGroup/configure/wizard/zones/zoneSelector.directive.d.ts +0 -2
  313. package/dist/serverGroup/details/ServerGroupDiskDescriptions.d.ts +0 -1
  314. package/dist/serverGroup/details/autoHealingPolicy/addAutoHealingPolicyButton.component.d.ts +0 -1
  315. package/dist/serverGroup/details/autoHealingPolicy/autoHealingPolicy.component.d.ts +0 -1
  316. package/dist/serverGroup/details/autoHealingPolicy/modal/upsertAutoHealingPolicy.modal.controller.d.ts +0 -2
  317. package/dist/serverGroup/details/autoscalingPolicy/addAutoscalingPolicyButton.component.d.ts +0 -2
  318. package/dist/serverGroup/details/autoscalingPolicy/autoscalingPolicy.directive.d.ts +0 -2
  319. package/dist/serverGroup/details/autoscalingPolicy/modal/GceScaleInControls.d.ts +0 -1
  320. package/dist/serverGroup/details/autoscalingPolicy/modal/upsertAutoscalingPolicy.modal.controller.d.ts +0 -2
  321. package/dist/serverGroup/details/resize/resizeAutoscalingPolicy.component.d.ts +0 -2
  322. package/dist/serverGroup/details/resize/resizeCapacity.component.d.ts +0 -2
  323. package/dist/serverGroup/details/resize/resizeServerGroup.controller.d.ts +0 -2
  324. package/dist/serverGroup/details/rollback/rollbackServerGroup.controller.d.ts +0 -2
  325. package/dist/serverGroup/details/serverGroup.details.gce.module.d.ts +0 -2
  326. package/dist/serverGroup/details/serverGroupDetails.gce.controller.d.ts +0 -2
  327. package/dist/subnet/subnetSelectField.directive.d.ts +0 -2
  328. package/dist/validation/applicationName.validator.d.ts +0 -2
  329. package/src/address/address.reader.ts +0 -61
  330. package/src/applicationProviderFields/gceFields.html +0 -13
  331. package/src/autoscalingPolicy/autoscalingPolicy.write.service.js +0 -83
  332. package/src/autoscalingPolicy/components/basicSettings/basicSettings.component.html +0 -71
  333. package/src/autoscalingPolicy/components/basicSettings/basicSettings.component.js +0 -20
  334. package/src/autoscalingPolicy/components/metricSettings/GcePredictiveAutoscaling.tsx +0 -54
  335. package/src/autoscalingPolicy/components/metricSettings/metricSettings.component.html +0 -208
  336. package/src/autoscalingPolicy/components/metricSettings/metricSettings.component.js +0 -108
  337. package/src/autoscalingPolicy/components/scalingSchedules/scalingSchedules.component.html +0 -84
  338. package/src/autoscalingPolicy/components/scalingSchedules/scalingSchedules.component.js +0 -61
  339. package/src/autoscalingPolicy/components/scalingSchedules/timeZoneSelect.tsx +0 -63
  340. package/src/backendService/backendService.reader.js +0 -28
  341. package/src/cache/cacheRefresh.component.html +0 -17
  342. package/src/cache/cacheRefresh.component.ts +0 -53
  343. package/src/cache/cacheRefreshTooltip.html +0 -3
  344. package/src/common/footer.directive.html +0 -7
  345. package/src/common/footer.directive.js +0 -22
  346. package/src/gceNetworkSelectField.directive.js +0 -22
  347. package/src/gceRegionSelectField.directive.js +0 -22
  348. package/src/instance/custom/customInstance.filter.js +0 -26
  349. package/src/instance/details/instance.details.controller.js +0 -518
  350. package/src/instance/details/instance.details.controller.spec.js +0 -27
  351. package/src/instance/details/instanceDetails.html +0 -248
  352. package/src/instance/gceInstanceType.service.spec.js +0 -19
  353. package/src/interceptors/iap.interceptor.ts +0 -36
  354. package/src/loadBalancer/configure/choice/gceLoadBalancerChoice.modal.html +0 -33
  355. package/src/loadBalancer/configure/choice/gceLoadBalancerChoice.modal.spec.js +0 -66
  356. package/src/loadBalancer/configure/choice/gceLoadBalancerChoice.modal.ts +0 -64
  357. package/src/loadBalancer/configure/choice/gceLoadBalancerPipelineModal.ts +0 -47
  358. package/src/loadBalancer/configure/choice/loadBalancerTypeToWizardMap.constant.ts +0 -58
  359. package/src/loadBalancer/configure/common/addressSelector.component.ts +0 -47
  360. package/src/loadBalancer/configure/common/commonAdvancedSettingsPage.html +0 -32
  361. package/src/loadBalancer/configure/common/commonCreateLoadBalancer.html +0 -41
  362. package/src/loadBalancer/configure/common/commonEditLoadBalancer.html +0 -38
  363. package/src/loadBalancer/configure/common/commonHealthCheckPage.html +0 -16
  364. package/src/loadBalancer/configure/common/commonLoadBalancer.controller.ts +0 -56
  365. package/src/loadBalancer/configure/common/commonLoadBalancerCommandBuilder.service.ts +0 -87
  366. package/src/loadBalancer/configure/common/healthCheck.component.html +0 -179
  367. package/src/loadBalancer/configure/common/healthCheck.component.ts +0 -82
  368. package/src/loadBalancer/configure/gceL4LoadBalancerPipeline.spec.js +0 -143
  369. package/src/loadBalancer/configure/http/backendService/backendService.component.html +0 -157
  370. package/src/loadBalancer/configure/http/backendService/backendService.component.js +0 -80
  371. package/src/loadBalancer/configure/http/backendService/backendServices.html +0 -57
  372. package/src/loadBalancer/configure/http/basicSettings/basicSettings.component.html +0 -105
  373. package/src/loadBalancer/configure/http/basicSettings/basicSettings.component.js +0 -46
  374. package/src/loadBalancer/configure/http/basicSettings/basicSettings.html +0 -6
  375. package/src/loadBalancer/configure/http/commandBuilder.service.js +0 -404
  376. package/src/loadBalancer/configure/http/createHttpLoadBalancer.controller.js +0 -184
  377. package/src/loadBalancer/configure/http/createHttpLoadBalancer.controller.spec.js +0 -96
  378. package/src/loadBalancer/configure/http/createHttpLoadBalancer.html +0 -39
  379. package/src/loadBalancer/configure/http/defaultService/defaultService.html +0 -24
  380. package/src/loadBalancer/configure/http/editHttpLoadBalancer.html +0 -36
  381. package/src/loadBalancer/configure/http/healthCheck/healthCheck.component.html +0 -180
  382. package/src/loadBalancer/configure/http/healthCheck/healthCheck.component.js +0 -69
  383. package/src/loadBalancer/configure/http/healthCheck/healthChecks.html +0 -55
  384. package/src/loadBalancer/configure/http/hostRule/hostRule.component.html +0 -60
  385. package/src/loadBalancer/configure/http/hostRule/hostRule.component.js +0 -35
  386. package/src/loadBalancer/configure/http/hostRule/hostRules.html +0 -16
  387. package/src/loadBalancer/configure/http/httpLoadBalancer.write.service.js +0 -56
  388. package/src/loadBalancer/configure/http/listeners/listener.component.html +0 -245
  389. package/src/loadBalancer/configure/http/listeners/listener.component.js +0 -164
  390. package/src/loadBalancer/configure/http/listeners/listener.component.spec.js +0 -125
  391. package/src/loadBalancer/configure/http/listeners/listeners.html +0 -17
  392. package/src/loadBalancer/configure/http/pathRule/pathRule.component.html +0 -51
  393. package/src/loadBalancer/configure/http/pathRule/pathRule.component.js +0 -16
  394. package/src/loadBalancer/configure/http/transformer.service.js +0 -191
  395. package/src/loadBalancer/configure/http/transformer.service.spec.js +0 -182
  396. package/src/loadBalancer/configure/internal/createLoadBalancerProperties.html +0 -98
  397. package/src/loadBalancer/configure/internal/gceCreateInternalLoadBalancer.controller.ts +0 -284
  398. package/src/loadBalancer/configure/internal/listener.html +0 -41
  399. package/src/loadBalancer/configure/internalhttp/createInternalHttpLoadBalancer.controller.spec.js +0 -89
  400. package/src/loadBalancer/configure/internalhttp/createInternalHttpLoadBalancer.controller.ts +0 -196
  401. package/src/loadBalancer/configure/network/advancedSettings.html +0 -54
  402. package/src/loadBalancer/configure/network/createLoadBalancer.controller.js +0 -240
  403. package/src/loadBalancer/configure/network/createLoadBalancer.controller.spec.js +0 -118
  404. package/src/loadBalancer/configure/network/createLoadBalancer.html +0 -25
  405. package/src/loadBalancer/configure/network/createLoadBalancerProperties.html +0 -86
  406. package/src/loadBalancer/configure/network/editLoadBalancer.html +0 -29
  407. package/src/loadBalancer/configure/network/healthCheck.html +0 -36
  408. package/src/loadBalancer/configure/network/listeners.html +0 -55
  409. package/src/loadBalancer/configure/ssl/backendService.html +0 -31
  410. package/src/loadBalancer/configure/ssl/createLoadBalancerProperties.html +0 -86
  411. package/src/loadBalancer/configure/ssl/gceCreateSslLoadBalancer.controller.ts +0 -244
  412. package/src/loadBalancer/configure/ssl/listener.html +0 -43
  413. package/src/loadBalancer/configure/tcp/backendService.html +0 -31
  414. package/src/loadBalancer/configure/tcp/createLoadBalancerProperties.html +0 -86
  415. package/src/loadBalancer/configure/tcp/gceCreateTcpLoadBalancer.controller.ts +0 -234
  416. package/src/loadBalancer/configure/tcp/listener.html +0 -15
  417. package/src/loadBalancer/details/backendService/backendService.component.ts +0 -23
  418. package/src/loadBalancer/details/backendService/sessionAffinity.filter.ts +0 -11
  419. package/src/loadBalancer/details/deleteModal/deleteModal.controller.ts +0 -105
  420. package/src/loadBalancer/details/deleteModal/deleteModal.html +0 -31
  421. package/src/loadBalancer/details/healthCheck/healthCheck.component.html +0 -14
  422. package/src/loadBalancer/details/healthCheck/healthCheck.component.js +0 -13
  423. package/src/loadBalancer/details/hostAndPathRules/hostAndPathRules.controller.js +0 -23
  424. package/src/loadBalancer/details/hostAndPathRules/hostAndPathRules.modal.html +0 -40
  425. package/src/loadBalancer/details/hostAndPathRules/hostAndPathRules.service.js +0 -41
  426. package/src/loadBalancer/details/hostAndPathRules/hostAndPathRulesButton.component.js +0 -39
  427. package/src/loadBalancer/details/loadBalancerDetail.controller.js +0 -260
  428. package/src/loadBalancer/details/loadBalancerDetail.controller.spec.js +0 -41
  429. package/src/loadBalancer/details/loadBalancerDetails.html +0 -202
  430. package/src/loadBalancer/details/loadBalancerType/loadBalancerType.component.js +0 -31
  431. package/src/loadBalancer/details/loadBalancerType/loadBalancerType.component.spec.js +0 -85
  432. package/src/networkSelectField.directive.html +0 -14
  433. package/src/pipeline/stages/bake/bakeExecutionDetails.controller.js +0 -40
  434. package/src/pipeline/stages/bake/bakeExecutionDetails.html +0 -60
  435. package/src/pipeline/stages/bake/bakeStage.html +0 -117
  436. package/src/pipeline/stages/cloneServerGroup/cloneServerGroupStage.html +0 -99
  437. package/src/pipeline/stages/cloneServerGroup/cloneServerGroupStepLabel.html +0 -1
  438. package/src/pipeline/stages/destroyAsg/destroyAsgStage.html +0 -9
  439. package/src/pipeline/stages/destroyAsg/destroyAsgStepLabel.html +0 -1
  440. package/src/pipeline/stages/disableAsg/disableAsgStage.html +0 -11
  441. package/src/pipeline/stages/disableAsg/disableAsgStepLabel.html +0 -1
  442. package/src/pipeline/stages/disableCluster/disableClusterStage.html +0 -26
  443. package/src/pipeline/stages/enableAsg/enableAsgStage.html +0 -11
  444. package/src/pipeline/stages/enableAsg/enableAsgStepLabel.html +0 -1
  445. package/src/pipeline/stages/findAmi/findAmiStage.html +0 -20
  446. package/src/pipeline/stages/findImageFromTags/findImageFromTagsExecutionDetails.html +0 -40
  447. package/src/pipeline/stages/findImageFromTags/findImageFromTagsStage.html +0 -8
  448. package/src/pipeline/stages/resizeAsg/resizeAsgStage.html +0 -97
  449. package/src/pipeline/stages/resizeAsg/resizeAsgStepLabel.html +0 -1
  450. package/src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.html +0 -35
  451. package/src/pipeline/stages/shrinkCluster/shrinkClusterStage.html +0 -34
  452. package/src/pipeline/stages/tagImage/tagImageExecutionDetails.html +0 -39
  453. package/src/pipeline/stages/tagImage/tagImageStage.html +0 -14
  454. package/src/regionSelectField.directive.html +0 -18
  455. package/src/securityGroup/clone/cloneSecurityGroup.controller.js +0 -85
  456. package/src/securityGroup/clone/cloneSecurityGroup.html +0 -25
  457. package/src/securityGroup/configure/ConfigSecurityGroupMixin.controller.js +0 -318
  458. package/src/securityGroup/configure/createSecurityGroup.controller.js +0 -62
  459. package/src/securityGroup/configure/createSecurityGroup.html +0 -25
  460. package/src/securityGroup/configure/createSecurityGroupIngress.html +0 -81
  461. package/src/securityGroup/configure/createSecurityGroupProperties.html +0 -70
  462. package/src/securityGroup/configure/createSecurityGroupSourceFilters.html +0 -56
  463. package/src/securityGroup/configure/createSecurityGroupTargets.html +0 -43
  464. package/src/securityGroup/configure/editSecurityGroup.controller.js +0 -132
  465. package/src/securityGroup/configure/editSecurityGroup.html +0 -26
  466. package/src/securityGroup/details/securityGroupDetail.controller.js +0 -258
  467. package/src/securityGroup/details/securityGroupDetail.html +0 -171
  468. package/src/securityGroup/securityGroupHelpText.service.spec.ts +0 -102
  469. package/src/securityGroup/securityGroupHelpText.service.ts +0 -83
  470. package/src/serverGroup/configure/serverGroup.configure.gce.module.js +0 -59
  471. package/src/serverGroup/configure/wizard/advancedSettings/GceAcceleratorConfigurer.tsx +0 -222
  472. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.directive.html +0 -277
  473. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.html +0 -9
  474. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettingsSelector.directive.js +0 -71
  475. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettingsSelector.directive.spec.js +0 -58
  476. package/src/serverGroup/configure/wizard/advancedSettings/diskConfigurer.component.ts +0 -199
  477. package/src/serverGroup/configure/wizard/autoHealingPolicy/autoHealingPolicy.html +0 -20
  478. package/src/serverGroup/configure/wizard/autoHealingPolicy/autoHealingPolicySelector.component.html +0 -90
  479. package/src/serverGroup/configure/wizard/autoHealingPolicy/autoHealingPolicySelector.component.ts +0 -70
  480. package/src/serverGroup/configure/wizard/autoScalingPolicy/autoScalingPolicy.html +0 -20
  481. package/src/serverGroup/configure/wizard/autoScalingPolicy/autoScalingPolicySelector.component.html +0 -21
  482. package/src/serverGroup/configure/wizard/autoScalingPolicy/autoScalingPolicySelector.component.js +0 -44
  483. package/src/serverGroup/configure/wizard/capacity/advancedCapacitySelector.component.html +0 -42
  484. package/src/serverGroup/configure/wizard/capacity/advancedCapacitySelector.component.js +0 -16
  485. package/src/serverGroup/configure/wizard/capacity/capacity.html +0 -16
  486. package/src/serverGroup/configure/wizard/capacity/simpleCapacitySelector.component.html +0 -14
  487. package/src/serverGroup/configure/wizard/capacity/simpleCapacitySelector.component.js +0 -22
  488. package/src/serverGroup/configure/wizard/capacity/simpleCapacitySelector.component.spec.js +0 -31
  489. package/src/serverGroup/configure/wizard/capacity/zones.html +0 -7
  490. package/src/serverGroup/configure/wizard/cloneServerGroup.gce.controller.js +0 -476
  491. package/src/serverGroup/configure/wizard/customInstance/customInstanceBuilder.html +0 -13
  492. package/src/serverGroup/configure/wizard/customInstance/customInstanceConfigurer.component.ts +0 -21
  493. package/src/serverGroup/configure/wizard/instanceType/instanceType.html +0 -11
  494. package/src/serverGroup/configure/wizard/loadBalancers/elSevenOptions/backendServiceSelector.component.html +0 -21
  495. package/src/serverGroup/configure/wizard/loadBalancers/elSevenOptions/backendServiceSelector.component.js +0 -33
  496. package/src/serverGroup/configure/wizard/loadBalancers/elSevenOptions/elSevenOptionsGenerator.component.js +0 -42
  497. package/src/serverGroup/configure/wizard/loadBalancers/loadBalancerSelector.directive.html +0 -53
  498. package/src/serverGroup/configure/wizard/loadBalancers/loadBalancerSelector.directive.js +0 -55
  499. package/src/serverGroup/configure/wizard/loadBalancers/loadBalancers.html +0 -5
  500. package/src/serverGroup/configure/wizard/loadBalancingPolicy/loadBalancingPolicySelector.component.html +0 -182
  501. package/src/serverGroup/configure/wizard/loadBalancingPolicy/loadBalancingPolicySelector.component.less +0 -11
  502. package/src/serverGroup/configure/wizard/loadBalancingPolicy/loadBalancingPolicySelector.component.ts +0 -153
  503. package/src/serverGroup/configure/wizard/location/basicSettings.controller.js +0 -139
  504. package/src/serverGroup/configure/wizard/location/basicSettings.html +0 -167
  505. package/src/serverGroup/configure/wizard/securityGroups/securityGroupSelector.directive.html +0 -66
  506. package/src/serverGroup/configure/wizard/securityGroups/securityGroupSelector.directive.js +0 -48
  507. package/src/serverGroup/configure/wizard/securityGroups/securityGroups.html +0 -4
  508. package/src/serverGroup/configure/wizard/securityGroups/securityGroupsRemoved.directive.html +0 -14
  509. package/src/serverGroup/configure/wizard/securityGroups/securityGroupsRemoved.directive.js +0 -25
  510. package/src/serverGroup/configure/wizard/securityGroups/tagSelector.component.html +0 -26
  511. package/src/serverGroup/configure/wizard/securityGroups/tagSelector.component.js +0 -31
  512. package/src/serverGroup/configure/wizard/securityGroups/tagSelectorGenerator.component.js +0 -44
  513. package/src/serverGroup/configure/wizard/serverGroupWizard.html +0 -52
  514. package/src/serverGroup/configure/wizard/templateSelection/templateSelection.html +0 -9
  515. package/src/serverGroup/configure/wizard/zones/regionalSelector.directive.html +0 -13
  516. package/src/serverGroup/configure/wizard/zones/regionalSelector.directive.js +0 -21
  517. package/src/serverGroup/configure/wizard/zones/targetShapeSelector.directive.html +0 -13
  518. package/src/serverGroup/configure/wizard/zones/targetShapeSelector.directive.ts +0 -20
  519. package/src/serverGroup/configure/wizard/zones/zoneSelector.directive.html +0 -24
  520. package/src/serverGroup/configure/wizard/zones/zoneSelector.directive.js +0 -21
  521. package/src/serverGroup/details/ServerGroupDiskDescriptions.tsx +0 -97
  522. package/src/serverGroup/details/autoHealingPolicy/addAutoHealingPolicyButton.component.ts +0 -38
  523. package/src/serverGroup/details/autoHealingPolicy/autoHealingPolicy.component.ts +0 -73
  524. package/src/serverGroup/details/autoHealingPolicy/modal/upsertAutoHealingPolicy.modal.controller.ts +0 -88
  525. package/src/serverGroup/details/autoHealingPolicy/modal/upsertAutoHealingPolicy.modal.html +0 -29
  526. package/src/serverGroup/details/autoscalingPolicy/addAutoscalingPolicyButton.component.js +0 -38
  527. package/src/serverGroup/details/autoscalingPolicy/autoscalingPolicy.directive.html +0 -49
  528. package/src/serverGroup/details/autoscalingPolicy/autoscalingPolicy.directive.js +0 -138
  529. package/src/serverGroup/details/autoscalingPolicy/modal/GceScaleInControls.tsx +0 -137
  530. package/src/serverGroup/details/autoscalingPolicy/modal/upsertAutoscalingPolicy.modal.controller.js +0 -56
  531. package/src/serverGroup/details/autoscalingPolicy/modal/upsertAutoscalingPolicy.modal.html +0 -38
  532. package/src/serverGroup/details/resize/resizeAutoscalingPolicy.component.html +0 -55
  533. package/src/serverGroup/details/resize/resizeAutoscalingPolicy.component.js +0 -60
  534. package/src/serverGroup/details/resize/resizeCapacity.component.html +0 -36
  535. package/src/serverGroup/details/resize/resizeCapacity.component.js +0 -46
  536. package/src/serverGroup/details/resize/resizeServerGroup.controller.js +0 -64
  537. package/src/serverGroup/details/resize/resizeServerGroup.controller.spec.js +0 -119
  538. package/src/serverGroup/details/resize/resizeServerGroup.html +0 -41
  539. package/src/serverGroup/details/rollback/rollbackServerGroup.controller.js +0 -73
  540. package/src/serverGroup/details/rollback/rollbackServerGroup.html +0 -43
  541. package/src/serverGroup/details/serverGroup.details.gce.module.js +0 -17
  542. package/src/serverGroup/details/serverGroupDetails.gce.controller.js +0 -511
  543. package/src/serverGroup/details/serverGroupDetails.gce.controller.spec.js +0 -26
  544. package/src/serverGroup/details/serverGroupDetails.html +0 -359
  545. package/src/serverGroup/details/serverGroupDetails.less +0 -3
  546. package/src/subnet/subnetSelectField.directive.html +0 -21
  547. package/src/subnet/subnetSelectField.directive.js +0 -24
  548. package/src/validation/applicationName.validator.js +0 -114
@@ -0,0 +1,851 @@
1
+ import React from 'react';
2
+
3
+ import { HelpField } from '@spinnaker/core';
4
+
5
+ import type {
6
+ IGceServerGroupCommand,
7
+ IGceServerGroupCommandValidationErrors,
8
+ IGceServerGroupWizardPageProps,
9
+ } from '../GceServerGroupWizard.types';
10
+ import { GceServerGroupWizardPage } from '../GceServerGroupWizardPage';
11
+
12
+ interface ILoadBalancerOption {
13
+ name: string;
14
+ region?: string;
15
+ }
16
+
17
+ interface IBackendServiceData {
18
+ name: string;
19
+ portName?: string;
20
+ }
21
+
22
+ interface ILoadBalancerData {
23
+ backendServices?: Array<string | Partial<IBackendServiceData>>;
24
+ listeners?: Array<{ name?: string }>;
25
+ loadBalancerType?: string;
26
+ name?: string;
27
+ }
28
+
29
+ interface INamedPort {
30
+ name: string;
31
+ port: number | string;
32
+ }
33
+
34
+ interface ILoadBalancingPolicy {
35
+ [key: string]: any;
36
+ balancingMode?: string;
37
+ capacityScaler?: number | string;
38
+ maxConnectionsPerInstance?: number | string;
39
+ maxRatePerInstance?: number | string;
40
+ maxUtilization?: number | string;
41
+ namedPorts?: INamedPort[];
42
+ }
43
+
44
+ interface ILoadBalancingPolicyErrors {
45
+ balancingMode?: string;
46
+ capacityScaler?: string;
47
+ maxConnectionsPerInstance?: string;
48
+ maxRatePerInstance?: string;
49
+ maxUtilization?: string;
50
+ namedPorts?: Array<{ name?: string; port?: string }>;
51
+ }
52
+
53
+ interface ILoadBalancerMetadataReference {
54
+ key: 'global-load-balancer-names' | 'load-balancer-names';
55
+ names: string[];
56
+ }
57
+
58
+ interface IStringReference {
59
+ unavailable: boolean;
60
+ value: string;
61
+ }
62
+
63
+ type PreservedField =
64
+ | 'backendServiceMetadata'
65
+ | 'backendServices'
66
+ | 'loadBalancerMetadata'
67
+ | 'loadBalancers'
68
+ | 'loadBalancingPolicy';
69
+
70
+ const HTTP_BALANCING_MODES = ['RATE', 'UTILIZATION'];
71
+ const CONNECTION_BALANCING_MODES = ['CONNECTION', 'UTILIZATION'];
72
+ const MODE_LIMIT_FIELDS = ['maxConnectionsPerInstance', 'maxRatePerInstance', 'maxUtilization'];
73
+ const DEFAULT_LOAD_BALANCING_POLICY = {
74
+ balancingMode: 'UTILIZATION',
75
+ capacityScaler: 1,
76
+ maxUtilization: 0.8,
77
+ namedPorts: [{ name: 'http', port: 80 }],
78
+ };
79
+
80
+ function policyErrorId(field: string): string {
81
+ return `gce-load-balancing-policy-${field.replace(/([A-Z])/g, '-$1').toLowerCase()}-error`;
82
+ }
83
+
84
+ function renderPolicyError(error: string | undefined, id: string): React.ReactNode {
85
+ return (
86
+ error && (
87
+ <span className="help-block" id={id} role="alert">
88
+ {error}
89
+ </span>
90
+ )
91
+ );
92
+ }
93
+
94
+ export class GceServerGroupLoadBalancers extends GceServerGroupWizardPage<IGceServerGroupWizardPageProps> {
95
+ public validate(values: IGceServerGroupCommand): IGceServerGroupCommandValidationErrors {
96
+ const errors = super.validate(values) as IGceServerGroupCommandValidationErrors & {
97
+ loadBalancingPolicy?: ILoadBalancingPolicyErrors;
98
+ };
99
+ const policy = values.loadBalancingPolicy as ILoadBalancingPolicy | undefined;
100
+ if (!policy || !uniqueStrings(values.loadBalancers).length) {
101
+ return errors;
102
+ }
103
+
104
+ const policyErrors: ILoadBalancingPolicyErrors = {};
105
+ const balancingModes = getBalancingModes(values);
106
+ if (!policy.balancingMode || !balancingModes.includes(policy.balancingMode)) {
107
+ policyErrors.balancingMode = 'Select a balancing mode supported by the selected load balancers.';
108
+ }
109
+ if (!isValidBoundedValue(policy.capacityScaler, values, 0, 1)) {
110
+ policyErrors.capacityScaler = 'Capacity must be between 0 and 100%.';
111
+ }
112
+
113
+ const namedPortErrors = (policy.namedPorts || []).map(({ name, port }) => {
114
+ const namedPortError: { name?: string; port?: string } = {};
115
+ if (!name?.trim()) {
116
+ namedPortError.name = 'Port name required.';
117
+ }
118
+ if (!isValidInteger(port, values, 1, 65535)) {
119
+ namedPortError.port = 'Port must be an integer between 1 and 65535.';
120
+ }
121
+ return namedPortError;
122
+ });
123
+ if (namedPortErrors.some((namedPortError) => Object.keys(namedPortError).length)) {
124
+ policyErrors.namedPorts = namedPortErrors;
125
+ }
126
+
127
+ if (policy.balancingMode === 'RATE' && !isValidMinimum(policy.maxRatePerInstance, values, 0)) {
128
+ policyErrors.maxRatePerInstance = 'Max rate must be a finite number greater than or equal to zero.';
129
+ }
130
+ if (policy.balancingMode === 'CONNECTION' && !isValidMinimum(policy.maxConnectionsPerInstance, values, 0)) {
131
+ policyErrors.maxConnectionsPerInstance = 'Max connections must be a finite number greater than or equal to zero.';
132
+ }
133
+ if (policy.balancingMode === 'UTILIZATION' && !isValidBoundedValue(policy.maxUtilization, values, 0, 1)) {
134
+ policyErrors.maxUtilization = 'Max utilization must be between 0 and 100%.';
135
+ }
136
+
137
+ if (Object.keys(policyErrors).length) {
138
+ errors.loadBalancingPolicy = policyErrors;
139
+ }
140
+ return errors;
141
+ }
142
+
143
+ public render(): React.ReactElement {
144
+ const values = this.props.formik.values;
145
+ const selectedLoadBalancers = uniqueStrings(values.loadBalancers);
146
+ const selectedReferences = preserveReferences(getAvailableLoadBalancers(values), selectedLoadBalancers);
147
+ const policy = (values.loadBalancingPolicy || {}) as ILoadBalancingPolicy;
148
+ const policyErrors = (this.validate(values) as IGceServerGroupCommandValidationErrors & {
149
+ loadBalancingPolicy?: ILoadBalancingPolicyErrors;
150
+ }).loadBalancingPolicy || { namedPorts: [] };
151
+ const balancingModes = getBalancingModes(values);
152
+
153
+ return (
154
+ <div className="container-fluid form-horizontal">
155
+ <div className="form-group">
156
+ <label className="col-md-3 sm-label-right" htmlFor="gce-server-group-load-balancers">
157
+ Load Balancers
158
+ </label>
159
+ <div className="col-md-7">
160
+ <select
161
+ aria-label="Load balancers"
162
+ className="form-control input-sm"
163
+ id="gce-server-group-load-balancers"
164
+ multiple={true}
165
+ onChange={this.handleLoadBalancersChanged}
166
+ value={selectedLoadBalancers}
167
+ >
168
+ {selectedReferences.map(({ name, unavailable }) => (
169
+ <option key={name} value={name}>
170
+ {name}
171
+ {unavailable ? ' (unavailable)' : ''}
172
+ </option>
173
+ ))}
174
+ </select>
175
+ </div>
176
+ <div className="col-md-1">
177
+ <button
178
+ aria-label="Refresh load balancers"
179
+ className="btn btn-default btn-sm"
180
+ onClick={this.handleRefresh}
181
+ type="button"
182
+ >
183
+ <span className="glyphicon glyphicon-refresh" />
184
+ </button>
185
+ </div>
186
+ </div>
187
+
188
+ {selectedLoadBalancers.map((loadBalancerName) => this.renderBackendServiceSelector(values, loadBalancerName))}
189
+
190
+ {selectedLoadBalancers.length > 0 && balancingModes.length > 0 && (
191
+ <>
192
+ <div className="form-group">
193
+ <label className="col-md-3 sm-label-right" htmlFor="gce-balancing-mode">
194
+ Balancing mode
195
+ </label>
196
+ <div className="col-md-4">
197
+ <select
198
+ aria-describedby={policyErrors.balancingMode ? policyErrorId('balancingMode') : undefined}
199
+ aria-invalid={Boolean(policyErrors.balancingMode)}
200
+ aria-label="Balancing mode"
201
+ className="form-control input-sm"
202
+ id="gce-balancing-mode"
203
+ onChange={this.handleBalancingModeChanged}
204
+ required={true}
205
+ value={policy.balancingMode || ''}
206
+ >
207
+ {!policy.balancingMode && <option value="">Select...</option>}
208
+ {balancingModes.map((mode) => (
209
+ <option key={mode} value={mode}>
210
+ {mode}
211
+ </option>
212
+ ))}
213
+ </select>
214
+ {renderPolicyError(policyErrors.balancingMode, policyErrorId('balancingMode'))}
215
+ </div>
216
+ </div>
217
+
218
+ {this.renderNamedPorts(values, policy, policyErrors.namedPorts || [])}
219
+ {this.renderPercentageInput(
220
+ 'Capacity scaler',
221
+ 'capacityScaler',
222
+ policy.capacityScaler,
223
+ values,
224
+ policyErrors.capacityScaler,
225
+ )}
226
+ {policy.balancingMode === 'UTILIZATION' &&
227
+ this.renderPercentageInput(
228
+ 'Max utilization',
229
+ 'maxUtilization',
230
+ policy.maxUtilization,
231
+ values,
232
+ policyErrors.maxUtilization,
233
+ )}
234
+ {policy.balancingMode === 'RATE' &&
235
+ this.renderNumberInput(
236
+ 'Max rate per instance',
237
+ 'maxRatePerInstance',
238
+ policy.maxRatePerInstance,
239
+ values,
240
+ policyErrors.maxRatePerInstance,
241
+ )}
242
+ {policy.balancingMode === 'CONNECTION' &&
243
+ this.renderNumberInput(
244
+ 'Max connections per instance',
245
+ 'maxConnectionsPerInstance',
246
+ policy.maxConnectionsPerInstance,
247
+ values,
248
+ policyErrors.maxConnectionsPerInstance,
249
+ )}
250
+ </>
251
+ )}
252
+ </div>
253
+ );
254
+ }
255
+
256
+ private renderBackendServiceSelector(
257
+ values: IGceServerGroupCommand,
258
+ loadBalancerName: string,
259
+ ): React.ReactElement | null {
260
+ const availableBackendServices = getBackendServiceData(values, loadBalancerName).map(({ name }) => name);
261
+ const selectedBackendServices = uniqueStrings(values.backendServices?.[loadBalancerName]);
262
+ if (!availableBackendServices.length && !selectedBackendServices.length) {
263
+ return null;
264
+ }
265
+ const references = preserveStringReferences(availableBackendServices, selectedBackendServices);
266
+
267
+ return (
268
+ <div className="form-group" key={loadBalancerName}>
269
+ <label className="col-md-3 sm-label-right" htmlFor={`gce-backend-services-${loadBalancerName}`}>
270
+ Backend services for {loadBalancerName}
271
+ </label>
272
+ <div className="col-md-7">
273
+ <select
274
+ aria-label={`Backend services for ${loadBalancerName}`}
275
+ className="form-control input-sm"
276
+ id={`gce-backend-services-${loadBalancerName}`}
277
+ multiple={true}
278
+ onChange={(event) => this.handleBackendServicesChanged(loadBalancerName, event)}
279
+ value={selectedBackendServices}
280
+ >
281
+ {references.map(({ unavailable, value }) => (
282
+ <option key={value} value={value}>
283
+ {value}
284
+ {unavailable ? ' (unavailable)' : ''}
285
+ </option>
286
+ ))}
287
+ </select>
288
+ </div>
289
+ </div>
290
+ );
291
+ }
292
+
293
+ private renderNamedPorts(
294
+ values: IGceServerGroupCommand,
295
+ policy: ILoadBalancingPolicy,
296
+ errors: Array<{ name?: string; port?: string }>,
297
+ ): React.ReactElement {
298
+ const availableNames = getNamedPortNames(values);
299
+ const namedPorts = policy.namedPorts || [];
300
+ return (
301
+ <>
302
+ {namedPorts.map((namedPort, index) => {
303
+ const references = preserveStringReferences(availableNames, namedPort.name ? [namedPort.name] : []);
304
+ const nameErrorId = policyErrorId(`namedPortName-${index}`);
305
+ const portErrorId = policyErrorId(`namedPortPort-${index}`);
306
+ return (
307
+ <div className="form-group" key={index}>
308
+ <label className="col-md-3 sm-label-right" htmlFor={`gce-named-port-name-${index}`}>
309
+ Named port {index + 1}
310
+ </label>
311
+ <div className="col-md-3">
312
+ <select
313
+ aria-describedby={errors[index]?.name ? nameErrorId : undefined}
314
+ aria-invalid={Boolean(errors[index]?.name)}
315
+ aria-label={`Named port name ${index + 1}`}
316
+ className="form-control input-sm"
317
+ id={`gce-named-port-name-${index}`}
318
+ onChange={(event) => this.handleNamedPortChanged(index, 'name', event.target.value)}
319
+ required={true}
320
+ value={namedPort.name}
321
+ >
322
+ {!namedPort.name && <option value="">Select...</option>}
323
+ {references.map(({ unavailable, value }) => (
324
+ <option key={value} value={value}>
325
+ {value}
326
+ {unavailable ? ' (unavailable)' : ''}
327
+ </option>
328
+ ))}
329
+ </select>
330
+ {renderPolicyError(errors[index]?.name, nameErrorId)}
331
+ </div>
332
+ <div className="col-md-2">
333
+ <input
334
+ aria-describedby={errors[index]?.port ? portErrorId : undefined}
335
+ aria-invalid={Boolean(errors[index]?.port)}
336
+ aria-label={`Named port number ${index + 1}`}
337
+ className="form-control input-sm"
338
+ onChange={(event) =>
339
+ this.handleNamedPortChanged(index, 'port', parseNumericValue(event.target.value))
340
+ }
341
+ required={true}
342
+ type={isPipelineMode(values) ? 'text' : 'number'}
343
+ value={namedPort.port}
344
+ />
345
+ {renderPolicyError(errors[index]?.port, portErrorId)}
346
+ </div>
347
+ <div className="col-md-1">
348
+ <button
349
+ aria-label={`Remove named port ${index + 1}`}
350
+ className="btn btn-default btn-sm"
351
+ onClick={() => this.handleRemoveNamedPort(index)}
352
+ type="button"
353
+ >
354
+ <span className="glyphicon glyphicon-trash" />
355
+ </button>
356
+ </div>
357
+ </div>
358
+ );
359
+ })}
360
+ <div className="form-group">
361
+ <div className="col-md-offset-3 col-md-4">
362
+ <button
363
+ aria-label="Add named port"
364
+ className="btn btn-default btn-sm"
365
+ onClick={this.handleAddNamedPort}
366
+ type="button"
367
+ >
368
+ Add named port
369
+ </button>
370
+ </div>
371
+ </div>
372
+ </>
373
+ );
374
+ }
375
+
376
+ private renderPercentageInput(
377
+ label: string,
378
+ field: 'capacityScaler' | 'maxUtilization',
379
+ value: number | string | undefined,
380
+ values: IGceServerGroupCommand,
381
+ error?: string,
382
+ ): React.ReactElement {
383
+ const errorId = policyErrorId(field);
384
+ return (
385
+ <div className="form-group">
386
+ <label className="col-md-3 sm-label-right" htmlFor={`gce-${field}`}>
387
+ {label}
388
+ <HelpField id={`gce.serverGroup.loadBalancingPolicy.${field}`} />
389
+ </label>
390
+ <div className="col-md-3">
391
+ <div className="input-group">
392
+ <input
393
+ aria-describedby={error ? errorId : undefined}
394
+ aria-invalid={Boolean(error)}
395
+ aria-label={label}
396
+ className="form-control input-sm"
397
+ id={`gce-${field}`}
398
+ onChange={(event) => this.handlePolicyFieldChanged(field, parsePercentageValue(event.target.value))}
399
+ required={true}
400
+ type={isPipelineMode(values) ? 'text' : 'number'}
401
+ value={toPercentageValue(value)}
402
+ />
403
+ <span className="input-group-addon">%</span>
404
+ </div>
405
+ {renderPolicyError(error, errorId)}
406
+ </div>
407
+ </div>
408
+ );
409
+ }
410
+
411
+ private renderNumberInput(
412
+ label: string,
413
+ field: 'maxConnectionsPerInstance' | 'maxRatePerInstance',
414
+ value: number | string | undefined,
415
+ values: IGceServerGroupCommand,
416
+ error?: string,
417
+ ): React.ReactElement {
418
+ const errorId = policyErrorId(field);
419
+ return (
420
+ <div className="form-group">
421
+ <label className="col-md-3 sm-label-right" htmlFor={`gce-${field}`}>
422
+ {label}
423
+ <HelpField id={`gce.serverGroup.loadBalancingPolicy.${field}`} />
424
+ </label>
425
+ <div className="col-md-3">
426
+ <input
427
+ aria-describedby={error ? errorId : undefined}
428
+ aria-invalid={Boolean(error)}
429
+ aria-label={label}
430
+ className="form-control input-sm"
431
+ id={`gce-${field}`}
432
+ onChange={(event) => this.handlePolicyFieldChanged(field, parseNumericValue(event.target.value))}
433
+ required={true}
434
+ type={isPipelineMode(values) ? 'text' : 'number'}
435
+ value={value === undefined ? '' : value}
436
+ />
437
+ {renderPolicyError(error, errorId)}
438
+ </div>
439
+ </div>
440
+ );
441
+ }
442
+
443
+ private handleLoadBalancersChanged = (event: React.ChangeEvent<HTMLSelectElement>): void => {
444
+ const values = this.props.formik.values;
445
+ const loadBalancers = uniqueStrings(Array.from(event.target.selectedOptions).map(({ value }) => value));
446
+ const previouslySelected = new Set(uniqueStrings(values.loadBalancers));
447
+ const backendServices = Object.entries(values.backendServices || {}).reduce<Record<string, string[]>>(
448
+ (mappings, [loadBalancerName, services]) => {
449
+ if (loadBalancers.includes(loadBalancerName) || !previouslySelected.has(loadBalancerName)) {
450
+ mappings[loadBalancerName] = uniqueStrings(services);
451
+ }
452
+ return mappings;
453
+ },
454
+ {},
455
+ );
456
+ const nextCommand: IGceServerGroupCommand = {
457
+ ...values,
458
+ loadBalancers,
459
+ loadBalancerMetadata: reconcileLoadBalancerMetadata(values, loadBalancers),
460
+ backendServices,
461
+ backendServiceMetadata: uniqueStrings(Object.values(backendServices).flat()),
462
+ };
463
+ nextCommand.loadBalancingPolicy = reconcileLoadBalancingPolicy(nextCommand);
464
+ void this.applyPageUpdate(nextCommand, ['loadBalancers', 'loadBalancerMetadata', 'loadBalancingPolicy'], true);
465
+ };
466
+
467
+ private handleBackendServicesChanged = (
468
+ loadBalancerName: string,
469
+ event: React.ChangeEvent<HTMLSelectElement>,
470
+ ): void => {
471
+ const values = this.props.formik.values;
472
+ const backendServices = {
473
+ ...(values.backendServices || {}),
474
+ [loadBalancerName]: uniqueStrings(Array.from(event.target.selectedOptions).map(({ value }) => value)),
475
+ };
476
+ const nextCommand = {
477
+ ...values,
478
+ backendServices,
479
+ backendServiceMetadata: uniqueStrings(Object.values(backendServices).flat()),
480
+ };
481
+ void this.applyPageUpdate(nextCommand, ['backendServices', 'backendServiceMetadata']);
482
+ };
483
+
484
+ private handleBalancingModeChanged = (event: React.ChangeEvent<HTMLSelectElement>): void => {
485
+ const policy = { ...((this.props.formik.values.loadBalancingPolicy || {}) as ILoadBalancingPolicy) };
486
+ MODE_LIMIT_FIELDS.forEach((field) => delete policy[field]);
487
+ policy.balancingMode = event.target.value;
488
+ void this.updatePolicy(policy);
489
+ };
490
+
491
+ private handleNamedPortChanged = (index: number, field: keyof INamedPort, value: number | string): void => {
492
+ const policy = { ...((this.props.formik.values.loadBalancingPolicy || {}) as ILoadBalancingPolicy) };
493
+ policy.namedPorts = (policy.namedPorts || []).map((namedPort, namedPortIndex) =>
494
+ namedPortIndex === index ? { ...namedPort, [field]: value } : namedPort,
495
+ );
496
+ void this.updatePolicy(policy);
497
+ };
498
+
499
+ private handleAddNamedPort = (): void => {
500
+ const policy = { ...((this.props.formik.values.loadBalancingPolicy || {}) as ILoadBalancingPolicy) };
501
+ policy.namedPorts = [...(policy.namedPorts || []), { name: '', port: 80 }];
502
+ void this.updatePolicy(policy);
503
+ };
504
+
505
+ private handleRemoveNamedPort = (index: number): void => {
506
+ const policy = { ...((this.props.formik.values.loadBalancingPolicy || {}) as ILoadBalancingPolicy) };
507
+ policy.namedPorts = (policy.namedPorts || []).filter((_namedPort, namedPortIndex) => namedPortIndex !== index);
508
+ void this.updatePolicy(policy);
509
+ };
510
+
511
+ private handlePolicyFieldChanged = (field: keyof ILoadBalancingPolicy, value: number | string): void => {
512
+ const policy = {
513
+ ...((this.props.formik.values.loadBalancingPolicy || {}) as ILoadBalancingPolicy),
514
+ [field]: value,
515
+ };
516
+ void this.updatePolicy(policy);
517
+ };
518
+
519
+ private updatePolicy(policy: ILoadBalancingPolicy): Promise<IGceServerGroupCommand | undefined> {
520
+ const values = this.props.formik.values;
521
+ return this.applyPageUpdate({ ...values, loadBalancingPolicy: policy }, [
522
+ 'backendServices',
523
+ 'backendServiceMetadata',
524
+ 'loadBalancers',
525
+ 'loadBalancerMetadata',
526
+ 'loadBalancingPolicy',
527
+ ]);
528
+ }
529
+
530
+ private applyPageUpdate(
531
+ nextCommand: IGceServerGroupCommand,
532
+ preservedFields: PreservedField[],
533
+ mergeConfiguredBackendServices = false,
534
+ ): Promise<IGceServerGroupCommand | undefined> {
535
+ return this.runLatestCommandRequest(nextCommand, async (latestCommand) => {
536
+ const loadBalancerIndex = getLoadBalancerIndex(latestCommand);
537
+ const configurationCommand = {
538
+ ...latestCommand,
539
+ loadBalancers: uniqueStrings(latestCommand.loadBalancers).filter((name) => Boolean(loadBalancerIndex[name])),
540
+ };
541
+ const update = await this.adapter.applyConfigurationUpdate(configurationCommand, 'configureLoadBalancerOptions');
542
+ const command: IGceServerGroupCommand = {
543
+ ...update.command,
544
+ loadBalancers: latestCommand.loadBalancers,
545
+ viewState: {
546
+ ...update.command.viewState,
547
+ dirty: update.result.dirty,
548
+ },
549
+ };
550
+ if (mergeConfiguredBackendServices) {
551
+ command.backendServices = {
552
+ ...(latestCommand.backendServices || {}),
553
+ ...(update.command.backendServices || {}),
554
+ };
555
+ command.backendServiceMetadata = uniqueStrings(Object.values(command.backendServices).flat());
556
+ }
557
+ preservedFields.forEach((field) => {
558
+ command[field] = latestCommand[field];
559
+ });
560
+ return command;
561
+ });
562
+ }
563
+
564
+ private handleRefresh = (): void => {
565
+ const selectedLoadBalancers = uniqueStrings(this.props.formik.values.loadBalancers);
566
+ void this.runLatestCommandRequest(this.props.formik.values, async (latestCommand) => {
567
+ const update = await this.adapter.applyConfigurationRefresh(latestCommand, 'refreshLoadBalancers');
568
+ return {
569
+ ...update.command,
570
+ loadBalancers: selectedLoadBalancers,
571
+ viewState: {
572
+ ...update.command.viewState,
573
+ dirty: update.result.dirty,
574
+ },
575
+ };
576
+ });
577
+ };
578
+ }
579
+
580
+ function getAvailableLoadBalancers(command: IGceServerGroupCommand): ILoadBalancerOption[] {
581
+ const rawLoadBalancers = command.backingData?.loadBalancers;
582
+ if (Array.isArray(rawLoadBalancers)) {
583
+ return uniqueLoadBalancers(
584
+ rawLoadBalancers
585
+ .flatMap((provider: any) => (Array.isArray(provider?.accounts) ? provider.accounts : []))
586
+ .filter((account: any) => account?.name === command.credentials)
587
+ .flatMap((account: any) => (Array.isArray(account?.regions) ? account.regions : []))
588
+ .flatMap((region: any) => (Array.isArray(region?.loadBalancers) ? region.loadBalancers : []))
589
+ .filter((loadBalancer: any) => isLoadBalancerInRegion(loadBalancer, command))
590
+ .map(toLoadBalancerOption)
591
+ .filter((loadBalancer): loadBalancer is ILoadBalancerOption => Boolean(loadBalancer)),
592
+ );
593
+ }
594
+
595
+ const filteredLoadBalancers = command.backingData?.filtered?.loadBalancers;
596
+ if (!Array.isArray(filteredLoadBalancers)) {
597
+ return [];
598
+ }
599
+ return uniqueLoadBalancers(
600
+ filteredLoadBalancers
601
+ .map(toLoadBalancerOption)
602
+ .filter((loadBalancer): loadBalancer is ILoadBalancerOption => Boolean(loadBalancer)),
603
+ );
604
+ }
605
+
606
+ function getLoadBalancerIndex(command: IGceServerGroupCommand): Record<string, ILoadBalancerData> {
607
+ return (command.backingData?.filtered?.loadBalancerIndex || {}) as Record<string, ILoadBalancerData>;
608
+ }
609
+
610
+ function getBackendServiceData(command: IGceServerGroupCommand, loadBalancerName: string): IBackendServiceData[] {
611
+ const loadBalancer = getLoadBalancerIndex(command)[loadBalancerName];
612
+ if (!Array.isArray(loadBalancer?.backendServices)) {
613
+ return [];
614
+ }
615
+ const byName = new Map<string, IBackendServiceData>();
616
+ loadBalancer.backendServices.forEach((backendService) => {
617
+ const value =
618
+ typeof backendService === 'string'
619
+ ? { name: backendService }
620
+ : { name: backendService.name || '', portName: backendService.portName };
621
+ if (value.name && !byName.has(value.name)) {
622
+ byName.set(value.name, value);
623
+ }
624
+ });
625
+ return Array.from(byName.values());
626
+ }
627
+
628
+ function getNamedPortNames(command: IGceServerGroupCommand): string[] {
629
+ return uniqueStrings(
630
+ uniqueStrings(command.loadBalancers).flatMap((loadBalancerName) =>
631
+ getBackendServiceData(command, loadBalancerName).map(({ portName }) => portName || ''),
632
+ ),
633
+ ).filter(Boolean);
634
+ }
635
+
636
+ function getBalancingModes(command: IGceServerGroupCommand): string[] {
637
+ const loadBalancerIndex = getLoadBalancerIndex(command);
638
+ const modeSets = uniqueStrings(command.loadBalancers)
639
+ .map((loadBalancerName) => loadBalancerIndex[loadBalancerName]?.loadBalancerType)
640
+ .filter((loadBalancerType): loadBalancerType is string => Boolean(loadBalancerType))
641
+ .map((loadBalancerType) =>
642
+ loadBalancerType === 'HTTP' || loadBalancerType === 'INTERNAL_MANAGED'
643
+ ? HTTP_BALANCING_MODES
644
+ : CONNECTION_BALANCING_MODES,
645
+ );
646
+ if (!modeSets.length) {
647
+ const persistedMode = (command.loadBalancingPolicy as ILoadBalancingPolicy | undefined)?.balancingMode;
648
+ return persistedMode ? [persistedMode] : [];
649
+ }
650
+ return modeSets.slice(1).reduce((modes, nextModes) => modes.filter((mode) => nextModes.includes(mode)), modeSets[0]);
651
+ }
652
+
653
+ function reconcileLoadBalancingPolicy(command: IGceServerGroupCommand): ILoadBalancingPolicy | undefined {
654
+ const balancingModes = getBalancingModes(command);
655
+ if (!balancingModes.length) {
656
+ return undefined;
657
+ }
658
+ const existing = command.loadBalancingPolicy as ILoadBalancingPolicy | undefined;
659
+ const balancingMode =
660
+ existing?.balancingMode && balancingModes.includes(existing.balancingMode)
661
+ ? existing.balancingMode
662
+ : DEFAULT_LOAD_BALANCING_POLICY.balancingMode;
663
+ const policy: ILoadBalancingPolicy = {
664
+ ...existing,
665
+ balancingMode,
666
+ capacityScaler: existing?.capacityScaler ?? DEFAULT_LOAD_BALANCING_POLICY.capacityScaler,
667
+ namedPorts: existing?.namedPorts ?? DEFAULT_LOAD_BALANCING_POLICY.namedPorts.map((namedPort) => ({ ...namedPort })),
668
+ };
669
+ if (existing?.balancingMode !== balancingMode) {
670
+ MODE_LIMIT_FIELDS.forEach((field) => delete policy[field]);
671
+ }
672
+ if (balancingMode === 'UTILIZATION' && policy.maxUtilization === undefined) {
673
+ policy.maxUtilization = DEFAULT_LOAD_BALANCING_POLICY.maxUtilization;
674
+ }
675
+ return policy;
676
+ }
677
+
678
+ function reconcileLoadBalancerMetadata(
679
+ command: IGceServerGroupCommand,
680
+ nextLoadBalancers: string[],
681
+ ): Record<string, string[]> {
682
+ const metadata = Object.entries(command.loadBalancerMetadata || {}).reduce<Record<string, string[]>>(
683
+ (copy, [key, values]) => ({ ...copy, [key]: uniqueStrings(values) }),
684
+ {},
685
+ );
686
+ uniqueStrings(command.loadBalancers).forEach((loadBalancerName) => {
687
+ const reference = getLoadBalancerMetadataReference(command, loadBalancerName);
688
+ if (reference) {
689
+ metadata[reference.key] = (metadata[reference.key] || []).filter((name) => !reference.names.includes(name));
690
+ }
691
+ });
692
+ nextLoadBalancers.forEach((loadBalancerName) => {
693
+ const reference = getLoadBalancerMetadataReference(command, loadBalancerName);
694
+ if (reference) {
695
+ metadata[reference.key] = uniqueStrings([...(metadata[reference.key] || []), ...reference.names]);
696
+ }
697
+ });
698
+ return metadata;
699
+ }
700
+
701
+ function getLoadBalancerMetadataReference(
702
+ command: IGceServerGroupCommand,
703
+ loadBalancerName: string,
704
+ ): ILoadBalancerMetadataReference | undefined {
705
+ const loadBalancer = getLoadBalancerIndex(command)[loadBalancerName];
706
+ if (!loadBalancer) {
707
+ return undefined;
708
+ }
709
+ if (loadBalancer.loadBalancerType === 'HTTP' || loadBalancer.loadBalancerType === 'INTERNAL_MANAGED') {
710
+ const names = uniqueStrings((loadBalancer.listeners || []).map(({ name }) => name || ''));
711
+ if (!names.length) {
712
+ return undefined;
713
+ }
714
+ return {
715
+ key: loadBalancer.loadBalancerType === 'HTTP' ? 'global-load-balancer-names' : 'load-balancer-names',
716
+ names,
717
+ };
718
+ }
719
+ return {
720
+ key:
721
+ loadBalancer.loadBalancerType === 'SSL' || loadBalancer.loadBalancerType === 'TCP'
722
+ ? 'global-load-balancer-names'
723
+ : 'load-balancer-names',
724
+ names: [loadBalancerName],
725
+ };
726
+ }
727
+
728
+ function preserveReferences(
729
+ availableLoadBalancers: ILoadBalancerOption[],
730
+ selectedLoadBalancers: string[],
731
+ ): Array<ILoadBalancerOption & { unavailable: boolean }> {
732
+ const availableNames = new Set(availableLoadBalancers.map(({ name }) => name));
733
+ return [
734
+ ...availableLoadBalancers
735
+ .map((loadBalancer) => ({ ...loadBalancer, unavailable: false }))
736
+ .sort((left, right) => left.name.localeCompare(right.name)),
737
+ ...selectedLoadBalancers.filter((name) => !availableNames.has(name)).map((name) => ({ name, unavailable: true })),
738
+ ];
739
+ }
740
+
741
+ function preserveStringReferences(availableValues: string[], persistedValues: string[]): IStringReference[] {
742
+ const available = uniqueStrings(availableValues);
743
+ return [
744
+ ...available.map((value) => ({ unavailable: false, value })),
745
+ ...uniqueStrings(persistedValues)
746
+ .filter((value) => !available.includes(value))
747
+ .map((value) => ({ unavailable: true, value })),
748
+ ];
749
+ }
750
+
751
+ function isPipelineMode(command: IGceServerGroupCommand): boolean {
752
+ return command.viewState.mode === 'createPipeline' || command.viewState.mode === 'editPipeline';
753
+ }
754
+
755
+ function isExpression(value: unknown): boolean {
756
+ return typeof value === 'string' && /^\s*\$\{.+\}\s*$/.test(value);
757
+ }
758
+
759
+ function isValidBoundedValue(
760
+ value: unknown,
761
+ command: IGceServerGroupCommand,
762
+ minimum: number,
763
+ maximum: number,
764
+ ): boolean {
765
+ if (isPipelineMode(command) && isExpression(value)) {
766
+ return true;
767
+ }
768
+ if (!hasNumericValue(value)) {
769
+ return false;
770
+ }
771
+ const numericValue = Number(value);
772
+ return Number.isFinite(numericValue) && numericValue >= minimum && numericValue <= maximum;
773
+ }
774
+
775
+ function isValidMinimum(value: unknown, command: IGceServerGroupCommand, minimum: number): boolean {
776
+ if (isPipelineMode(command) && isExpression(value)) {
777
+ return true;
778
+ }
779
+ if (!hasNumericValue(value)) {
780
+ return false;
781
+ }
782
+ const numericValue = Number(value);
783
+ return Number.isFinite(numericValue) && numericValue >= minimum;
784
+ }
785
+
786
+ function isValidInteger(value: unknown, command: IGceServerGroupCommand, minimum: number, maximum: number): boolean {
787
+ if (isPipelineMode(command) && isExpression(value)) {
788
+ return true;
789
+ }
790
+ if (!hasNumericValue(value)) {
791
+ return false;
792
+ }
793
+ const numericValue = Number(value);
794
+ return (
795
+ Number.isFinite(numericValue) &&
796
+ Number.isInteger(numericValue) &&
797
+ numericValue >= minimum &&
798
+ numericValue <= maximum
799
+ );
800
+ }
801
+
802
+ function hasNumericValue(value: unknown): boolean {
803
+ return value !== null && value !== undefined && (typeof value !== 'string' || Boolean(value.trim()));
804
+ }
805
+
806
+ function parsePercentageValue(value: string): number | string {
807
+ if (isExpression(value)) {
808
+ return value;
809
+ }
810
+ return value.trim() ? Number(value) / 100 : '';
811
+ }
812
+
813
+ function parseNumericValue(value: string): number | string {
814
+ if (isExpression(value)) {
815
+ return value;
816
+ }
817
+ return value.trim() ? Number(value) : '';
818
+ }
819
+
820
+ function toPercentageValue(value: number | string | undefined): number | string {
821
+ if (typeof value === 'number') {
822
+ return value * 100;
823
+ }
824
+ return value === undefined ? '' : value;
825
+ }
826
+
827
+ function isLoadBalancerInRegion(loadBalancer: any, command: IGceServerGroupCommand): boolean {
828
+ return loadBalancer?.region === command.region || loadBalancer?.region === 'global';
829
+ }
830
+
831
+ function toLoadBalancerOption(loadBalancer: unknown): ILoadBalancerOption | null {
832
+ if (typeof loadBalancer === 'string') {
833
+ return { name: loadBalancer };
834
+ }
835
+ if (loadBalancer && typeof (loadBalancer as ILoadBalancerOption).name === 'string') {
836
+ const { name, region } = loadBalancer as ILoadBalancerOption;
837
+ return { name, region };
838
+ }
839
+ return null;
840
+ }
841
+
842
+ function uniqueLoadBalancers(loadBalancers: ILoadBalancerOption[]): ILoadBalancerOption[] {
843
+ return Array.from(new Map(loadBalancers.map((loadBalancer) => [loadBalancer.name, loadBalancer])).values());
844
+ }
845
+
846
+ function uniqueStrings(values: unknown): string[] {
847
+ if (!Array.isArray(values)) {
848
+ return [];
849
+ }
850
+ return Array.from(new Set(values.filter((value): value is string => typeof value === 'string' && Boolean(value))));
851
+ }