@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,659 @@
1
+ import type { FormikProps } from 'formik';
2
+ import { shallow } from 'enzyme';
3
+ import React from 'react';
4
+
5
+ import type { IGceServerGroupCommand, IGceServerGroupWizardAdapter } from '../GceServerGroupWizard.types';
6
+ import { GceInstanceFlexibilityConfigurer } from '../zones/GceInstanceFlexibilityConfigurer';
7
+ import { ServerGroupCapacity } from './ServerGroupCapacity';
8
+
9
+ describe('GCE server group Capacity page', () => {
10
+ it('restores desired capacity and keeps simple capacity min, max, and desired linked', () => {
11
+ const values = command({ autoscalingPolicy: null, capacity: { min: 0, max: 0, desired: 3 } });
12
+ const { formik } = testProps(values);
13
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} />);
14
+
15
+ expect(wrapper.find('input[aria-label="Desired capacity"]').prop('value')).toBe(3);
16
+
17
+ wrapper.find('input[aria-label="Desired capacity"]').simulate('change', { target: { value: '5' } });
18
+
19
+ expect(formik.setFieldValue).toHaveBeenCalledWith('capacity', { min: 5, max: 5, desired: 5 });
20
+ });
21
+
22
+ it('defaults commands without an explicit capacity mode to simple capacity', () => {
23
+ const values = command({
24
+ autoscalingPolicy: undefined,
25
+ capacity: { min: 0, max: 0, desired: 3 },
26
+ viewState: { mode: 'create' },
27
+ });
28
+ const { formik } = testProps(values);
29
+ const page = new ServerGroupCapacity({ app: {} as any, formik } as any);
30
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} />);
31
+
32
+ wrapper.find('input[aria-label="Desired capacity"]').simulate('change', { target: { value: '4' } });
33
+
34
+ expect(formik.setFieldValue).toHaveBeenCalledWith('capacity', { min: 4, max: 4, desired: 4 });
35
+ expect(page.validate(values)).toEqual({});
36
+ });
37
+
38
+ it('derives capacity mode and validation from canonical policy presence instead of stale view state', () => {
39
+ const autoscaling = command({
40
+ capacity: { min: 2, max: 6, desired: 4 },
41
+ autoscalingPolicy: { minNumReplicas: 2, maxNumReplicas: 6 },
42
+ viewState: { mode: 'create', useSimpleCapacity: true },
43
+ });
44
+ const autoscalingProps = testProps(autoscaling);
45
+ const autoscalingWrapper = shallow(<ServerGroupCapacity app={{} as any} formik={autoscalingProps.formik} />);
46
+
47
+ expect(autoscalingWrapper.find('input[aria-label="Autoscaling capacity"]').prop('checked')).toBe(true);
48
+ expect(autoscalingWrapper.find('input[aria-label="Minimum capacity"]').exists()).toBe(true);
49
+ expect(
50
+ new ServerGroupCapacity({ app: {} as any, formik: autoscalingProps.formik } as any).validate(autoscaling),
51
+ ).toEqual({});
52
+
53
+ const fixed = command({
54
+ capacity: { min: 3, max: 3, desired: 3 },
55
+ autoscalingPolicy: null,
56
+ viewState: { mode: 'create', useSimpleCapacity: false },
57
+ });
58
+ const fixedProps = testProps(fixed);
59
+ const fixedWrapper = shallow(<ServerGroupCapacity app={{} as any} formik={fixedProps.formik} />);
60
+
61
+ expect(fixedWrapper.find('input[aria-label="Simple capacity"]').prop('checked')).toBe(true);
62
+ expect(fixedWrapper.find('input[aria-label="Minimum capacity"]').exists()).toBe(false);
63
+ expect(new ServerGroupCapacity({ app: {} as any, formik: fixedProps.formik } as any).validate(fixed)).toEqual({});
64
+ });
65
+
66
+ it('links autoscaling minimum and maximum to the policy and capacity command fields', () => {
67
+ const values = command({
68
+ capacity: { min: 2, max: 6, desired: 4 },
69
+ autoscalingPolicy: { minNumReplicas: 2, maxNumReplicas: 6, unknownPolicyField: 'keep' },
70
+ viewState: { mode: 'clone', useSimpleCapacity: false },
71
+ });
72
+ const { formik } = testProps(values);
73
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} />);
74
+
75
+ expect(wrapper.find('input[aria-label="Minimum capacity"]').prop('value')).toBe(2);
76
+ expect(wrapper.find('input[aria-label="Maximum capacity"]').prop('value')).toBe(6);
77
+ expect(wrapper.find('input[aria-label="Desired capacity"]').prop('value')).toBe(4);
78
+
79
+ wrapper.find('input[aria-label="Minimum capacity"]').simulate('change', { target: { value: '3' } });
80
+ wrapper.find('input[aria-label="Maximum capacity"]').simulate('change', { target: { value: '8' } });
81
+
82
+ expect(formik.setFieldValue.calls.allArgs()).toEqual([
83
+ ['autoscalingPolicy', { minNumReplicas: 3, maxNumReplicas: 6, unknownPolicyField: 'keep' }],
84
+ ['capacity', { min: 3, max: 6, desired: 4 }],
85
+ ['autoscalingPolicy', { minNumReplicas: 3, maxNumReplicas: 8, unknownPolicyField: 'keep' }],
86
+ ['capacity', { min: 3, max: 8, desired: 4 }],
87
+ ]);
88
+ });
89
+
90
+ it('switches an autoscaled clone to fixed capacity without inheriting its ancestor policy', () => {
91
+ const values = command({
92
+ capacity: { min: 1, max: 8, desired: 4 },
93
+ autoscalingPolicy: { minNumReplicas: 1, maxNumReplicas: 8 },
94
+ enableAutoScaling: true,
95
+ source: { region: 'us-central1', serverGroupName: 'app-v001', useSourceCapacity: true },
96
+ viewState: { mode: 'clone', useSimpleCapacity: false, unrelated: 'keep' },
97
+ });
98
+ const { formik } = testProps(values);
99
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} />);
100
+
101
+ wrapper.find('input[aria-label="Simple capacity"]').simulate('change', { target: { checked: true } });
102
+
103
+ expect(values.viewState).toEqual({ mode: 'clone', useSimpleCapacity: true, unrelated: 'keep' });
104
+ expect(values.autoscalingPolicy).toBeNull();
105
+ expect(values.enableAutoScaling).toBe(false);
106
+ expect(values.overwriteAncestorAutoscalingPolicy).toBe(true);
107
+ expect(values.source).toEqual({
108
+ region: 'us-central1',
109
+ serverGroupName: 'app-v001',
110
+ useSourceCapacity: false,
111
+ });
112
+ expect(values.capacity).toEqual({ min: 4, max: 4, desired: 4 });
113
+ });
114
+
115
+ (['create', 'createPipeline', 'editPipeline'] as const).forEach((mode) => {
116
+ it(`does not overwrite ancestor autoscaling when switching to fixed capacity in ${mode} mode`, () => {
117
+ const values = command({
118
+ autoscalingPolicy: { minNumReplicas: 1, maxNumReplicas: 8 },
119
+ overwriteAncestorAutoscalingPolicy: true,
120
+ viewState: { mode, useSimpleCapacity: false },
121
+ });
122
+ const { formik } = testProps(values);
123
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} />);
124
+
125
+ wrapper.find('input[aria-label="Simple capacity"]').simulate('change', { target: { checked: true } });
126
+
127
+ expect(values.overwriteAncestorAutoscalingPolicy).toBe(false);
128
+ });
129
+ });
130
+
131
+ it('does not overwrite ancestor autoscaling for a clone without an autoscaling policy', () => {
132
+ const values = command({
133
+ autoscalingPolicy: null,
134
+ overwriteAncestorAutoscalingPolicy: true,
135
+ viewState: { mode: 'clone', useSimpleCapacity: true },
136
+ });
137
+ const { formik } = testProps(values);
138
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} />);
139
+
140
+ wrapper.find('input[aria-label="Simple capacity"]').simulate('change', { target: { checked: true } });
141
+
142
+ expect(values.overwriteAncestorAutoscalingPolicy).toBe(false);
143
+ });
144
+
145
+ it('round trips fixed capacity through autoscaling with a complete synchronized policy', () => {
146
+ const values = command({
147
+ capacity: { min: 3, max: 3, desired: 3 },
148
+ autoscalingPolicy: null,
149
+ enableAutoScaling: false,
150
+ source: { useSourceCapacity: true },
151
+ viewState: { mode: 'clone', useSimpleCapacity: true, unrelated: 'keep' },
152
+ });
153
+ const { formik } = testProps(values);
154
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} />);
155
+
156
+ wrapper.find('input[aria-label="Autoscaling capacity"]').simulate('change', { target: { checked: true } });
157
+
158
+ expect(values.autoscalingPolicy).toEqual({
159
+ minNumReplicas: 3,
160
+ maxNumReplicas: 3,
161
+ coolDownPeriodSec: 60,
162
+ cpuUtilization: { utilizationTarget: 0.5 },
163
+ });
164
+ expect(values.capacity).toEqual({ min: 3, max: 3, desired: 3 });
165
+ expect(values.enableAutoScaling).toBe(true);
166
+ expect(values.overwriteAncestorAutoscalingPolicy).toBe(false);
167
+ expect(values.source.useSourceCapacity).toBe(false);
168
+ expect(values.viewState).toEqual({ mode: 'clone', useSimpleCapacity: false, unrelated: 'keep' });
169
+
170
+ wrapper.setProps({ formik });
171
+ wrapper.find('input[aria-label="Simple capacity"]').simulate('change', { target: { checked: true } });
172
+
173
+ expect(values.autoscalingPolicy).toBeNull();
174
+ expect(values.capacity).toEqual({ min: 3, max: 3, desired: 3 });
175
+ expect(values.enableAutoScaling).toBe(false);
176
+ expect(values.overwriteAncestorAutoscalingPolicy).toBe(true);
177
+ expect(values.source.useSourceCapacity).toBe(false);
178
+ expect(values.viewState).toEqual({ mode: 'clone', useSimpleCapacity: true, unrelated: 'keep' });
179
+
180
+ wrapper.setProps({ formik });
181
+ wrapper.find('input[aria-label="Autoscaling capacity"]').simulate('change', { target: { checked: true } });
182
+
183
+ expect(values.overwriteAncestorAutoscalingPolicy).toBe(false);
184
+ });
185
+
186
+ it('does not persist non-finite, negative, fractional, or empty capacities', () => {
187
+ const values = command({
188
+ autoscalingPolicy: { minNumReplicas: 1, maxNumReplicas: 5 },
189
+ viewState: { mode: 'create', useSimpleCapacity: false },
190
+ });
191
+ const { formik } = testProps(values);
192
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} />);
193
+
194
+ ['-1', '1.5', 'Infinity', 'NaN', ''].forEach((value) => {
195
+ wrapper.find('input[aria-label="Minimum capacity"]').simulate('change', { target: { value } });
196
+ wrapper.find('input[aria-label="Maximum capacity"]').simulate('change', { target: { value } });
197
+ wrapper.find('input[aria-label="Desired capacity"]').simulate('change', { target: { value } });
198
+ });
199
+
200
+ expect(formik.setFieldValue).not.toHaveBeenCalled();
201
+ });
202
+
203
+ it('accepts capacity expressions only in pipeline modes while preserving literal validation', () => {
204
+ const values = command({
205
+ capacity: { min: '${ parameters.min }', max: '${ parameters.max }', desired: '${ parameters.desired }' } as any,
206
+ autoscalingPolicy: {
207
+ minNumReplicas: '${ parameters.min }',
208
+ maxNumReplicas: '${ parameters.max }',
209
+ } as any,
210
+ viewState: { mode: 'editPipeline', useSimpleCapacity: false, templatingEnabled: true },
211
+ });
212
+ const { formik } = testProps(values);
213
+ const page = new ServerGroupCapacity({ app: {} as any, formik } as any);
214
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} />);
215
+
216
+ expect(page.validate(values)).toEqual({});
217
+ expect(wrapper.find('input[aria-label="Minimum capacity"]').prop('type')).toBe('text');
218
+ expect(wrapper.find('input[aria-label="Maximum capacity"]').prop('type')).toBe('text');
219
+ expect(wrapper.find('input[aria-label="Desired capacity"]').prop('type')).toBe('text');
220
+
221
+ wrapper.find('input[aria-label="Minimum capacity"]').simulate('change', {
222
+ target: { value: '${ parameters.newMin }' },
223
+ });
224
+ wrapper.find('input[aria-label="Maximum capacity"]').simulate('change', {
225
+ target: { value: '${ parameters.newMax }' },
226
+ });
227
+ wrapper.find('input[aria-label="Desired capacity"]').simulate('change', {
228
+ target: { value: '${ parameters.newDesired }' },
229
+ });
230
+
231
+ expect(formik.setFieldValue.calls.allArgs()).toEqual([
232
+ ['autoscalingPolicy', { minNumReplicas: '${ parameters.newMin }', maxNumReplicas: '${ parameters.max }' }],
233
+ ['capacity', { min: '${ parameters.newMin }', max: '${ parameters.max }', desired: '${ parameters.desired }' }],
234
+ ['autoscalingPolicy', { minNumReplicas: '${ parameters.newMin }', maxNumReplicas: '${ parameters.newMax }' }],
235
+ [
236
+ 'capacity',
237
+ { min: '${ parameters.newMin }', max: '${ parameters.newMax }', desired: '${ parameters.desired }' },
238
+ ],
239
+ [
240
+ 'capacity',
241
+ { min: '${ parameters.newMin }', max: '${ parameters.newMax }', desired: '${ parameters.newDesired }' },
242
+ ],
243
+ ]);
244
+
245
+ expect(
246
+ page.validate(
247
+ command({
248
+ capacity: { desired: '${ parameters.desired }' } as any,
249
+ autoscalingPolicy: {
250
+ minNumReplicas: '${ parameters.min }',
251
+ maxNumReplicas: '${ parameters.max }',
252
+ } as any,
253
+ viewState: { mode: 'create', useSimpleCapacity: false },
254
+ }),
255
+ ),
256
+ ).toEqual({
257
+ capacity: { desired: 'Desired capacity must be a finite non-negative integer.' },
258
+ autoscalingPolicy: {
259
+ minNumReplicas: 'Minimum capacity must be a finite non-negative integer.',
260
+ maxNumReplicas: 'Maximum capacity must be a finite non-negative integer.',
261
+ },
262
+ });
263
+ });
264
+
265
+ it('validates integer capacities and enforces min <= desired <= max', () => {
266
+ const { formik } = testProps();
267
+ const page = new ServerGroupCapacity({ app: {} as any, formik } as any);
268
+
269
+ expect(
270
+ page.validate(
271
+ command({
272
+ capacity: { desired: Number.POSITIVE_INFINITY },
273
+ autoscalingPolicy: { minNumReplicas: -1, maxNumReplicas: 2.5 },
274
+ viewState: { mode: 'create', useSimpleCapacity: false },
275
+ }),
276
+ ),
277
+ ).toEqual({
278
+ capacity: { desired: 'Desired capacity must be a finite non-negative integer.' },
279
+ autoscalingPolicy: {
280
+ minNumReplicas: 'Minimum capacity must be a finite non-negative integer.',
281
+ maxNumReplicas: 'Maximum capacity must be a finite non-negative integer.',
282
+ },
283
+ });
284
+
285
+ expect(
286
+ page.validate(
287
+ command({
288
+ capacity: { desired: 2 },
289
+ autoscalingPolicy: { minNumReplicas: 3, maxNumReplicas: 4 },
290
+ viewState: { mode: 'create', useSimpleCapacity: false },
291
+ }),
292
+ ),
293
+ ).toEqual({ capacity: { desired: 'Desired capacity must be at least minimum capacity.' } });
294
+
295
+ expect(
296
+ page.validate(
297
+ command({
298
+ capacity: { desired: 5 },
299
+ autoscalingPolicy: { minNumReplicas: 1, maxNumReplicas: 4 },
300
+ viewState: { mode: 'create', useSimpleCapacity: false },
301
+ }),
302
+ ),
303
+ ).toEqual({ capacity: { desired: 'Desired capacity must not exceed maximum capacity.' } });
304
+ });
305
+
306
+ it('requires a zone for zonal commands and invokes zoneChanged with the selected zone', async () => {
307
+ const values = command({ zone: 'persisted-zone' });
308
+ const { adapter, formik, reconciled } = testProps(values);
309
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} adapter={adapter} />);
310
+
311
+ expect(selectOptions(wrapper, 'Zone')).toEqual([
312
+ ['', 'Select...'],
313
+ ['known-zone-a', 'known-zone-a'],
314
+ ['known-zone-b', 'known-zone-b'],
315
+ ['persisted-zone', 'persisted-zone (unavailable)'],
316
+ ]);
317
+ expect(new ServerGroupCapacity({ app: {} as any, formik } as any).validate(command({ zone: null }))).toEqual({
318
+ zone: 'Zone required.',
319
+ });
320
+
321
+ wrapper.find('select[aria-label="Zone"]').simulate('change', { target: { value: 'known-zone-b' } });
322
+ await flush();
323
+
324
+ const changedCommand = adapter.applyCommandHandler.calls.first().args[0];
325
+ expect(changedCommand.zone).toBe('known-zone-b');
326
+ expect(adapter.applyCommandHandler).toHaveBeenCalledWith(changedCommand, 'zoneChanged');
327
+ expect(handlerNames(adapter)).toEqual(['zoneChanged', 'selectZonesChanged']);
328
+ expect(formik.setValues).toHaveBeenCalledWith(reconciled);
329
+ });
330
+
331
+ it('supports preferred and explicit regional distribution while retaining unavailable selected zones', async () => {
332
+ const values = command({
333
+ regional: true,
334
+ zone: null,
335
+ selectZones: true,
336
+ distributionPolicy: { zones: ['known-zone-a', 'persisted-zone'], targetShape: 'EVEN' },
337
+ });
338
+ const { adapter, formik } = testProps(values);
339
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} adapter={adapter} />);
340
+
341
+ expect(wrapper.find('input[aria-label="Explicit zone distribution"]').prop('checked')).toBe(true);
342
+ expect(wrapper.find('input[aria-label="Preferred zone distribution"]').prop('checked')).toBe(false);
343
+ expect(wrapper.find('input[aria-label="Zone known-zone-a"]').prop('checked')).toBe(true);
344
+ expect(wrapper.find('input[aria-label="Zone persisted-zone"]').prop('checked')).toBe(true);
345
+ expect(wrapper.find('label[htmlFor="gce-capacity-zone-persisted-zone"]').text()).toContain('(unavailable)');
346
+ expect(wrapper.find('select[aria-label="Target shape"]').prop('value')).toBe('EVEN');
347
+
348
+ wrapper.find('input[aria-label="Preferred zone distribution"]').simulate('change', { target: { checked: true } });
349
+ await flush();
350
+
351
+ const changedCommand = adapter.applyCommandHandler.calls.first().args[0];
352
+ expect(changedCommand.selectZones).toBe(false);
353
+ expect(changedCommand.distributionPolicy.zones).toEqual(['known-zone-a', 'persisted-zone']);
354
+ expect(adapter.applyCommandHandler).toHaveBeenCalledWith(changedCommand, 'selectZonesChanged');
355
+ expect(handlerNames(adapter)).toEqual(['selectZonesChanged', 'zoneChanged']);
356
+ });
357
+
358
+ it('serializes the full regional transition cascade against each reconciled command', async () => {
359
+ const transitions = [deferredCommand(), deferredCommand(), deferredCommand(), deferredCommand()];
360
+ const values = command();
361
+ const { adapter, formik } = transitionProps(values, transitions);
362
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} adapter={adapter} />);
363
+
364
+ wrapper.find('input[aria-label="Regional server group"]').simulate('change', { target: { checked: true } });
365
+ expect(handlerNames(adapter)).toEqual(['regionalChanged']);
366
+
367
+ const afterRegional = command({ regional: true, zone: null, transition: 'regional' });
368
+ transitions[0].resolve(update(afterRegional));
369
+ await flush();
370
+ expect(handlerNames(adapter)).toEqual(['regionalChanged', 'regionChanged']);
371
+ expect(adapter.applyCommandHandler.calls.argsFor(1)[0]).toBe(afterRegional);
372
+
373
+ const afterRegion = command({ regional: true, zone: null, transition: 'region' });
374
+ transitions[1].resolve(update(afterRegion));
375
+ await flush();
376
+ expect(handlerNames(adapter)).toEqual(['regionalChanged', 'regionChanged', 'zoneChanged']);
377
+ expect(adapter.applyCommandHandler.calls.argsFor(2)[0]).toBe(afterRegion);
378
+
379
+ const afterZone = command({ regional: true, zone: null, transition: 'zone' });
380
+ transitions[2].resolve(update(afterZone));
381
+ await flush();
382
+ expect(handlerNames(adapter)).toEqual(['regionalChanged', 'regionChanged', 'zoneChanged', 'selectZonesChanged']);
383
+ expect(adapter.applyCommandHandler.calls.argsFor(3)[0]).toBe(afterZone);
384
+ expect(formik.setValues).not.toHaveBeenCalled();
385
+
386
+ const reconciled = command({ regional: true, zone: null, transition: 'selectZones' });
387
+ transitions[3].resolve(update(reconciled));
388
+ await flush();
389
+ expect(formik.setValues).toHaveBeenCalledWith(reconciled);
390
+ });
391
+
392
+ it('serializes zonal and explicit-zone reconciliation handlers', async () => {
393
+ const zonalTransitions = [deferredCommand(), deferredCommand()];
394
+ const zonal = transitionProps(command(), zonalTransitions);
395
+ const zonalWrapper = shallow(<ServerGroupCapacity app={{} as any} formik={zonal.formik} adapter={zonal.adapter} />);
396
+
397
+ zonalWrapper.find('select[aria-label="Zone"]').simulate('change', { target: { value: 'known-zone-b' } });
398
+ expect(handlerNames(zonal.adapter)).toEqual(['zoneChanged']);
399
+ const afterZone = command({ zone: 'known-zone-b', transition: 'zone' });
400
+ zonalTransitions[0].resolve(update(afterZone));
401
+ await flush();
402
+ expect(handlerNames(zonal.adapter)).toEqual(['zoneChanged', 'selectZonesChanged']);
403
+ expect(zonal.adapter.applyCommandHandler.calls.argsFor(1)[0]).toBe(afterZone);
404
+ const zonalReconciled = command({ zone: 'known-zone-b', transition: 'selectZones' });
405
+ zonalTransitions[1].resolve(update(zonalReconciled));
406
+ await flush();
407
+ expect(zonal.formik.setValues).toHaveBeenCalledWith(zonalReconciled);
408
+
409
+ const regionalTransitions = [deferredCommand(), deferredCommand()];
410
+ const regional = transitionProps(
411
+ command({ regional: true, zone: null, selectZones: true, distributionPolicy: { zones: ['known-zone-a'] } }),
412
+ regionalTransitions,
413
+ );
414
+ const regionalWrapper = shallow(
415
+ <ServerGroupCapacity app={{} as any} formik={regional.formik} adapter={regional.adapter} />,
416
+ );
417
+
418
+ regionalWrapper.find('input[aria-label="Zone known-zone-b"]').simulate('change', { target: { checked: true } });
419
+ expect(handlerNames(regional.adapter)).toEqual(['selectZonesChanged']);
420
+ const afterSelectZones = command({
421
+ regional: true,
422
+ zone: null,
423
+ selectZones: true,
424
+ distributionPolicy: { zones: ['known-zone-a', 'known-zone-b'] },
425
+ transition: 'selectZones',
426
+ });
427
+ regionalTransitions[0].resolve(update(afterSelectZones));
428
+ await flush();
429
+ expect(handlerNames(regional.adapter)).toEqual(['selectZonesChanged', 'zoneChanged']);
430
+ expect(regional.adapter.applyCommandHandler.calls.argsFor(1)[0]).toBe(afterSelectZones);
431
+ const regionalReconciled = { ...afterSelectZones, transition: 'zone' };
432
+ regionalTransitions[1].resolve(update(regionalReconciled));
433
+ await flush();
434
+ expect(regional.formik.setValues).toHaveBeenCalledWith(regionalReconciled);
435
+ });
436
+
437
+ it('persists target shape and requires zones only for explicit regional distribution', () => {
438
+ const values = command({
439
+ regional: true,
440
+ zone: null,
441
+ distributionPolicy: { zones: [], targetShape: 'EVEN' },
442
+ });
443
+ const { formik } = testProps(values);
444
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} />);
445
+
446
+ wrapper.find('select[aria-label="Target shape"]').simulate('change', { target: { value: 'ANY' } });
447
+
448
+ expect(formik.setFieldValue).toHaveBeenCalledWith('distributionPolicy', { zones: [], targetShape: 'ANY' });
449
+ expect(new ServerGroupCapacity({ app: {} as any, formik } as any).validate(values)).toEqual({});
450
+ expect(
451
+ new ServerGroupCapacity({ app: {} as any, formik } as any).validate({ ...values, selectZones: true }),
452
+ ).toEqual({ distributionPolicy: { zones: 'At least one zone required.' } });
453
+ });
454
+
455
+ it('renders the React instance flexibility configurer and immutably persists policy changes', () => {
456
+ const instanceFlexibilityPolicy = {
457
+ instanceSelections: {
458
+ preferred: { rank: 1, machineTypes: ['n2-standard-8'] },
459
+ },
460
+ };
461
+ const values = command({
462
+ regional: true,
463
+ zone: null,
464
+ distributionPolicy: { zones: [], targetShape: 'BALANCED' },
465
+ instanceFlexibilityPolicy,
466
+ });
467
+ const { formik } = testProps(values);
468
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} />);
469
+ const configurer = wrapper.find(GceInstanceFlexibilityConfigurer);
470
+
471
+ expect(configurer.props()).toEqual(
472
+ jasmine.objectContaining({
473
+ instanceFlexibilityPolicy,
474
+ regional: true,
475
+ targetShape: 'BALANCED',
476
+ }),
477
+ );
478
+
479
+ const nextPolicy = {
480
+ instanceSelections: {
481
+ fallback: { machineTypes: ['e2-standard-8'] },
482
+ },
483
+ };
484
+ configurer.prop('setInstanceFlexibilityPolicy')(nextPolicy);
485
+
486
+ expect(formik.setFieldValue).toHaveBeenCalledWith('instanceFlexibilityPolicy', nextPolicy);
487
+ });
488
+
489
+ it('passes the Formik flexibility validation error to the configurer', () => {
490
+ const values = command({
491
+ regional: true,
492
+ zone: null,
493
+ distributionPolicy: { zones: [], targetShape: 'BALANCED' },
494
+ instanceFlexibilityPolicy: {
495
+ instanceSelections: {
496
+ preferred: { rank: -1, machineTypes: [''] },
497
+ },
498
+ },
499
+ });
500
+ const { formik } = testProps(values);
501
+ (formik as any).errors = {
502
+ instanceFlexibilityPolicy: 'Instance flexibility policy is invalid.',
503
+ };
504
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} />);
505
+
506
+ expect(wrapper.find(GceInstanceFlexibilityConfigurer).prop('validationError')).toBe(
507
+ 'Instance flexibility policy is invalid.',
508
+ );
509
+ });
510
+
511
+ it('blocks invalid enabled flexibility while allowing absent and explicitly empty policies', () => {
512
+ const { formik } = testProps();
513
+ const page = new ServerGroupCapacity({ app: {} as any, formik } as any);
514
+ const enabledPolicy = {
515
+ instanceSelections: {
516
+ preferred: { machineTypes: ['n2-standard-8'] },
517
+ },
518
+ };
519
+
520
+ expect(
521
+ page.validate(
522
+ command({
523
+ regional: false,
524
+ distributionPolicy: { zones: [], targetShape: 'BALANCED' },
525
+ instanceFlexibilityPolicy: enabledPolicy,
526
+ }),
527
+ ).instanceFlexibilityPolicy,
528
+ ).toBeDefined();
529
+ expect(
530
+ page.validate(
531
+ command({
532
+ regional: true,
533
+ zone: null,
534
+ distributionPolicy: { zones: [], targetShape: 'EVEN' },
535
+ instanceFlexibilityPolicy: enabledPolicy,
536
+ }),
537
+ ).instanceFlexibilityPolicy,
538
+ ).toBeDefined();
539
+
540
+ ['BALANCED', 'ANY', 'ANY_SINGLE_ZONE'].forEach((targetShape) => {
541
+ expect(
542
+ page.validate(
543
+ command({
544
+ regional: true,
545
+ zone: null,
546
+ distributionPolicy: { zones: [], targetShape },
547
+ instanceFlexibilityPolicy: enabledPolicy,
548
+ }),
549
+ ),
550
+ ).toEqual({});
551
+ });
552
+
553
+ expect(page.validate(command({ instanceFlexibilityPolicy: undefined }))).toEqual({});
554
+ expect(
555
+ page.validate(
556
+ command({
557
+ instanceFlexibilityPolicy: { instanceSelections: {} },
558
+ }),
559
+ ),
560
+ ).toEqual({});
561
+ });
562
+
563
+ it('offers every target shape supported by the merged Google contract', () => {
564
+ const values = command({
565
+ regional: true,
566
+ zone: null,
567
+ backingData: {
568
+ filtered: { zones: ['known-zone-a', 'known-zone-b'] },
569
+ },
570
+ });
571
+ const { formik } = testProps(values);
572
+ const wrapper = shallow(<ServerGroupCapacity app={{} as any} formik={formik} />);
573
+
574
+ expect(selectOptions(wrapper, 'Target shape')).toEqual([
575
+ ['', 'Select...'],
576
+ ['ANY', 'ANY'],
577
+ ['EVEN', 'EVEN'],
578
+ ['BALANCED', 'BALANCED'],
579
+ ['ANY_SINGLE_ZONE', 'ANY_SINGLE_ZONE'],
580
+ ]);
581
+ });
582
+ });
583
+
584
+ function selectOptions(wrapper: ReturnType<typeof shallow>, label: string): string[][] {
585
+ return wrapper
586
+ .find(`select[aria-label="${label}"] option`)
587
+ .map((option) => [option.prop('value') as string, option.text()]);
588
+ }
589
+
590
+ function testProps(values = command()) {
591
+ const formik = ({
592
+ values,
593
+ setFieldValue: jasmine.createSpy('setFieldValue').and.callFake((field: string, value: any) => {
594
+ values[field] = value;
595
+ }),
596
+ setValues: jasmine.createSpy('setValues'),
597
+ } as unknown) as FormikProps<IGceServerGroupCommand>;
598
+ const reconciled = command({ region: 'reconciled-region' });
599
+ const adapter = ({
600
+ applyCommandHandler: jasmine
601
+ .createSpy('applyCommandHandler')
602
+ .and.resolveTo({ command: reconciled, result: { dirty: {} } }),
603
+ } as unknown) as jasmine.SpyObj<IGceServerGroupWizardAdapter>;
604
+ return { adapter, formik, reconciled };
605
+ }
606
+
607
+ function transitionProps(values: IGceServerGroupCommand, transitions: Array<ReturnType<typeof deferredCommand>>) {
608
+ const formik = ({
609
+ values,
610
+ setFieldValue: jasmine.createSpy('setFieldValue'),
611
+ setValues: jasmine.createSpy('setValues'),
612
+ } as unknown) as FormikProps<IGceServerGroupCommand>;
613
+ const adapter = ({
614
+ applyCommandHandler: jasmine
615
+ .createSpy('applyCommandHandler')
616
+ .and.callFake(() => transitions[(adapter.applyCommandHandler as jasmine.Spy).calls.count() - 1].promise),
617
+ } as unknown) as jasmine.SpyObj<IGceServerGroupWizardAdapter>;
618
+ return { adapter, formik };
619
+ }
620
+
621
+ function handlerNames(adapter: jasmine.SpyObj<IGceServerGroupWizardAdapter>): string[] {
622
+ return adapter.applyCommandHandler.calls.allArgs().map((args) => args[1]);
623
+ }
624
+
625
+ function update(commandValue: IGceServerGroupCommand) {
626
+ return { command: commandValue, result: { dirty: {} } };
627
+ }
628
+
629
+ function deferredCommand() {
630
+ let resolve!: (value: ReturnType<typeof update>) => void;
631
+ const promise = new Promise<ReturnType<typeof update>>((promiseResolve) => {
632
+ resolve = promiseResolve;
633
+ });
634
+ return { promise, resolve };
635
+ }
636
+
637
+ function command(overrides: Partial<IGceServerGroupCommand> = {}): IGceServerGroupCommand {
638
+ return {
639
+ credentials: 'account',
640
+ regional: false,
641
+ region: 'us-central1',
642
+ zone: 'known-zone-a',
643
+ capacity: { min: 2, max: 6, desired: 4 },
644
+ autoscalingPolicy: { minNumReplicas: 2, maxNumReplicas: 6 },
645
+ distributionPolicy: { zones: [], targetShape: 'EVEN' },
646
+ selectZones: false,
647
+ backingData: {
648
+ distributionPolicyTargetShapes: ['ANY', 'EVEN'],
649
+ filtered: { zones: ['known-zone-a', 'known-zone-b'] },
650
+ },
651
+ viewState: { mode: 'create', useSimpleCapacity: true },
652
+ ...overrides,
653
+ } as IGceServerGroupCommand;
654
+ }
655
+
656
+ async function flush(): Promise<void> {
657
+ await Promise.resolve();
658
+ await Promise.resolve();
659
+ }