@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,728 @@
1
+ import React from 'react';
2
+
3
+ import { DeckRuntimeContext, HelpField, SpelService } from '@spinnaker/core';
4
+
5
+ import type { IGceServerGroupCommand } from '../GceServerGroupWizard.types';
6
+ import { GceServerGroupWizardPage } from '../GceServerGroupWizardPage';
7
+
8
+ const MIN_BOOT_DISK_SIZE_GB = 10;
9
+ const MAX_BOOT_DISK_SIZE_GB = 65536;
10
+
11
+ interface IGceAcceleratorConfig {
12
+ acceleratorCount: number | string;
13
+ acceleratorType: string;
14
+ }
15
+
16
+ interface IGceAcceleratorType {
17
+ availableCardCounts: number[];
18
+ description?: string;
19
+ name: string;
20
+ }
21
+
22
+ interface IGceCustomInstanceConfig {
23
+ extendedMemory: boolean;
24
+ instanceFamily: string;
25
+ memory: number;
26
+ vCpuCount: number;
27
+ }
28
+
29
+ interface IGceDisk {
30
+ sizeGb: number | string;
31
+ sourceImage?: string;
32
+ type: string;
33
+ }
34
+
35
+ interface IGceInstanceTypeValidationErrors {
36
+ acceleratorConfigs?: string;
37
+ disks?: string;
38
+ instanceType?: string;
39
+ }
40
+
41
+ export class ServerGroupInstanceType extends GceServerGroupWizardPage {
42
+ public static contextType = DeckRuntimeContext;
43
+ public declare context: React.ContextType<typeof DeckRuntimeContext>;
44
+
45
+ private instanceTypeRequestGeneration = 0;
46
+
47
+ public validate(values: IGceServerGroupCommand): IGceInstanceTypeValidationErrors {
48
+ const errors: IGceInstanceTypeValidationErrors = {};
49
+ if (!values.instanceType) {
50
+ errors.instanceType = 'Machine type required.';
51
+ }
52
+
53
+ const bootDisk = getBootDisk(values);
54
+ if (
55
+ !bootDisk?.type ||
56
+ !isValidBoundedValue(bootDisk.sizeGb, values, MIN_BOOT_DISK_SIZE_GB, MAX_BOOT_DISK_SIZE_GB)
57
+ ) {
58
+ errors.disks = `Boot disk size must be between ${MIN_BOOT_DISK_SIZE_GB} and ${MAX_BOOT_DISK_SIZE_GB} GB.`;
59
+ }
60
+
61
+ const accelerators = getAcceleratorConfigs(values);
62
+ const availableAccelerators = getAvailableAccelerators(values);
63
+ if (
64
+ accelerators.some((config) => {
65
+ if (!config.acceleratorType || !isValidPositiveInteger(config.acceleratorCount, values)) {
66
+ return true;
67
+ }
68
+ const available = availableAccelerators.find((accelerator) => accelerator.name === config.acceleratorType);
69
+ return available ? !available.availableCardCounts.includes(Number(config.acceleratorCount)) : false;
70
+ })
71
+ ) {
72
+ errors.acceleratorConfigs = 'Accelerator count is unavailable for the selected type.';
73
+ }
74
+
75
+ return errors;
76
+ }
77
+
78
+ private publish = (nextValues: IGceServerGroupCommand): void => {
79
+ this.props.formik.setValues(nextValues);
80
+ };
81
+
82
+ private updateValues = (changes: Partial<IGceServerGroupCommand>): void => {
83
+ this.publish({ ...this.props.formik.values, ...changes });
84
+ };
85
+
86
+ private updateMachineType = (instanceType: string): void => {
87
+ const values = this.props.formik.values;
88
+ const nextValues = {
89
+ ...values,
90
+ instanceType,
91
+ viewState: { ...values.viewState, instanceProfile: 'custom' },
92
+ };
93
+ const requestGeneration = ++this.instanceTypeRequestGeneration;
94
+ this.publish(nextValues);
95
+ if (isPipelineMode(values) && SpelService.includesSpel(instanceType)) {
96
+ return;
97
+ }
98
+ void this.runLatestCommandRequest(nextValues, async (latestCommand) => {
99
+ const instanceTypeDetails = await this.context.services.instanceTypeService.getInstanceTypeDetails(
100
+ latestCommand.selectedProvider || 'gce',
101
+ instanceType,
102
+ );
103
+ if (requestGeneration !== this.instanceTypeRequestGeneration) {
104
+ return latestCommand;
105
+ }
106
+ const reconciledCommand = reconcileInstanceTypeDetails(latestCommand, instanceTypeDetails);
107
+ const update = await this.adapter.applyCommandHandler(reconciledCommand, 'zoneChanged');
108
+ return requestGeneration === this.instanceTypeRequestGeneration ? update.command : latestCommand;
109
+ });
110
+ };
111
+
112
+ private updateMachineTypeMode = (custom: boolean): void => {
113
+ const values = this.props.formik.values;
114
+ if (!custom) {
115
+ this.publish({ ...values, viewState: { ...values.viewState, instanceProfile: 'custom' } });
116
+ return;
117
+ }
118
+ this.updateCustomInstance(getCustomInstanceConfig(values));
119
+ };
120
+
121
+ private updateCustomInstance = (customInstance: IGceCustomInstanceConfig): void => {
122
+ this.instanceTypeRequestGeneration++;
123
+ const values = this.props.formik.values;
124
+ const nextValues = {
125
+ ...values,
126
+ instanceType: buildCustomMachineType(customInstance),
127
+ viewState: { ...values.viewState, customInstance, instanceProfile: 'buildCustom' },
128
+ };
129
+ void this.runLatestCommandRequest(nextValues, async (latestCommand) => {
130
+ const update = await this.adapter.applyCommandHandler(latestCommand, 'customInstanceChanged');
131
+ return update.command;
132
+ });
133
+ };
134
+
135
+ private updatePreemptible = (preemptible: boolean): void => {
136
+ this.updateValues({
137
+ preemptible,
138
+ automaticRestart: !preemptible,
139
+ onHostMaintenance: preemptible ? 'TERMINATE' : 'MIGRATE',
140
+ });
141
+ };
142
+
143
+ private updateAcceleratorType = (index: number, acceleratorType: string): void => {
144
+ const values = this.props.formik.values;
145
+ const accelerators = getAcceleratorConfigs(values);
146
+ const available = getAvailableAccelerators(values).find((candidate) => candidate.name === acceleratorType);
147
+ const currentCount = Number(accelerators[index].acceleratorCount);
148
+ const acceleratorCount = available
149
+ ? nearestAvailableCount(available.availableCardCounts, currentCount)
150
+ : currentCount;
151
+ this.updateValues({
152
+ acceleratorConfigs: accelerators.map((config, configIndex) =>
153
+ configIndex === index ? { acceleratorType, acceleratorCount } : config,
154
+ ),
155
+ });
156
+ };
157
+
158
+ private updateAcceleratorCount = (index: number, rawValue: string): void => {
159
+ const accelerators = getAcceleratorConfigs(this.props.formik.values);
160
+ this.updateValues({
161
+ acceleratorConfigs: accelerators.map((config, configIndex) =>
162
+ configIndex === index ? { ...config, acceleratorCount: parseNumericOrExpression(rawValue) } : config,
163
+ ),
164
+ });
165
+ };
166
+
167
+ private addAccelerator = (): void => {
168
+ const values = this.props.formik.values;
169
+ const available = getAvailableAccelerators(values)[0];
170
+ if (!available) {
171
+ return;
172
+ }
173
+ this.updateValues({
174
+ acceleratorConfigs: getAcceleratorConfigs(values).concat({
175
+ acceleratorType: available.name,
176
+ acceleratorCount: available.availableCardCounts[0] || 1,
177
+ }),
178
+ });
179
+ };
180
+
181
+ private removeAccelerator = (index: number): void => {
182
+ this.updateValues({
183
+ acceleratorConfigs: getAcceleratorConfigs(this.props.formik.values).filter(
184
+ (_config, configIndex) => configIndex !== index,
185
+ ),
186
+ });
187
+ };
188
+
189
+ private updateBootDisk = (changes: Partial<IGceDisk>): void => {
190
+ const values = this.props.formik.values;
191
+ const disks = ([...(values.disks || [])] as unknown) as IGceDisk[];
192
+ const bootDiskIndex = getBootDiskIndex(disks);
193
+ if (bootDiskIndex === -1) {
194
+ disks.unshift({ type: 'pd-ssd', sizeGb: MIN_BOOT_DISK_SIZE_GB, ...changes });
195
+ } else {
196
+ disks[bootDiskIndex] = { ...disks[bootDiskIndex], ...changes };
197
+ }
198
+ this.updateValues({ disks });
199
+ };
200
+
201
+ public render(): JSX.Element {
202
+ const values = this.props.formik.values;
203
+ const errors = (this.props.formik.errors || {}) as IGceInstanceTypeValidationErrors;
204
+ const customMode = values.viewState.instanceProfile === 'buildCustom';
205
+ const pipelineMode = isPipelineMode(values);
206
+ const machineTypes = preserveStringReference(
207
+ values.backingData?.filtered?.instanceTypes || [],
208
+ values.instanceType,
209
+ );
210
+ const cpuPlatforms = preserveStringReference(
211
+ values.backingData?.filtered?.cpuPlatforms || ['(Automatic)'],
212
+ values.minCpuPlatform,
213
+ );
214
+ const custom = getCustomInstanceConfig(values);
215
+ const customChoices = values.backingData?.customInstanceTypes || {};
216
+ const bootDisk = getBootDisk(values) || { type: 'pd-ssd', sizeGb: MIN_BOOT_DISK_SIZE_GB };
217
+ const diskTypes = preserveStringReference(values.backingData?.persistentDiskTypes || [], bootDisk.type);
218
+ const availableAccelerators = getAvailableAccelerators(values);
219
+ const acceleratorConfigs = getAcceleratorConfigs(values);
220
+
221
+ return (
222
+ <div className="container-fluid form-horizontal">
223
+ <div className="form-group">
224
+ <div className="col-md-5 sm-label-right">
225
+ <b>Machine type</b>
226
+ </div>
227
+ <div className="col-md-6">
228
+ <label className="radio-inline" htmlFor="gce-machine-type-standard">
229
+ <input
230
+ checked={!customMode}
231
+ id="gce-machine-type-standard"
232
+ name="gce-machine-type-mode"
233
+ onChange={() => this.updateMachineTypeMode(false)}
234
+ type="radio"
235
+ />
236
+ Standard
237
+ </label>
238
+ <label className="radio-inline" htmlFor="gce-machine-type-custom">
239
+ <input
240
+ checked={customMode}
241
+ id="gce-machine-type-custom"
242
+ name="gce-machine-type-mode"
243
+ onChange={() => this.updateMachineTypeMode(true)}
244
+ type="radio"
245
+ />
246
+ Custom CPU and memory
247
+ </label>
248
+ </div>
249
+ </div>
250
+
251
+ {!customMode && (
252
+ <div className="form-group">
253
+ <label className="col-md-5 sm-label-right" htmlFor="gce-machine-type">
254
+ Machine type
255
+ </label>
256
+ <div className="col-md-6">
257
+ {pipelineMode ? (
258
+ <input
259
+ aria-describedby={errors.instanceType ? 'gce-machine-type-error' : undefined}
260
+ aria-invalid={Boolean(errors.instanceType)}
261
+ aria-label="Machine type"
262
+ className="form-control input-sm"
263
+ id="gce-machine-type"
264
+ onChange={(event) => this.updateMachineType(event.target.value)}
265
+ type="text"
266
+ value={values.instanceType || ''}
267
+ />
268
+ ) : (
269
+ <select
270
+ aria-describedby={errors.instanceType ? 'gce-machine-type-error' : undefined}
271
+ aria-invalid={Boolean(errors.instanceType)}
272
+ aria-label="Machine type"
273
+ className="form-control input-sm"
274
+ id="gce-machine-type"
275
+ onChange={(event) => this.updateMachineType(event.target.value)}
276
+ required={true}
277
+ value={values.instanceType || ''}
278
+ >
279
+ <option value="">Select...</option>
280
+ {machineTypes.map(({ unavailable, value }) => (
281
+ <option key={value} value={value}>
282
+ {value}
283
+ {unavailable ? ' (Unavailable)' : ''}
284
+ </option>
285
+ ))}
286
+ </select>
287
+ )}
288
+ {renderValidationError(errors.instanceType, 'gce-machine-type-error')}
289
+ </div>
290
+ </div>
291
+ )}
292
+
293
+ {customMode && (
294
+ <>
295
+ {this.renderSelect(
296
+ 'gce-custom-family',
297
+ 'Machine family',
298
+ custom.instanceFamily,
299
+ preserveNumberOrStringReference(
300
+ customChoices.instanceFamilyList || ['N1', 'E2', 'N2', 'N2D'],
301
+ custom.instanceFamily,
302
+ ),
303
+ (value) =>
304
+ this.updateCustomInstance({
305
+ ...custom,
306
+ extendedMemory: value === 'E2' ? false : custom.extendedMemory,
307
+ instanceFamily: value,
308
+ }),
309
+ )}
310
+ {this.renderSelect(
311
+ 'gce-custom-cpu',
312
+ 'vCPU count',
313
+ custom.vCpuCount,
314
+ preserveNumberOrStringReference(customChoices.vCpuList || [], custom.vCpuCount),
315
+ (value) => this.updateCustomInstance({ ...custom, vCpuCount: Number(value) }),
316
+ errors.instanceType,
317
+ 'gce-machine-type-error',
318
+ )}
319
+ {this.renderSelect(
320
+ 'gce-custom-memory',
321
+ 'Memory (GB)',
322
+ custom.memory,
323
+ preserveNumberOrStringReference(customChoices.memoryList || [], custom.memory),
324
+ (value) => this.updateCustomInstance({ ...custom, memory: Number(value) }),
325
+ errors.instanceType,
326
+ 'gce-machine-type-error',
327
+ )}
328
+ {custom.instanceFamily !== 'E2' && (
329
+ <div className="form-group">
330
+ <div className="col-md-offset-5 col-md-6 checkbox">
331
+ <label htmlFor="gce-custom-extended-memory">
332
+ <input
333
+ checked={custom.extendedMemory}
334
+ id="gce-custom-extended-memory"
335
+ onChange={(event) =>
336
+ this.updateCustomInstance({ ...custom, extendedMemory: event.target.checked })
337
+ }
338
+ type="checkbox"
339
+ />{' '}
340
+ Extended memory
341
+ </label>
342
+ </div>
343
+ </div>
344
+ )}
345
+ {renderValidationError(errors.instanceType, 'gce-machine-type-error')}
346
+ </>
347
+ )}
348
+
349
+ <div className="form-group">
350
+ <label className="col-md-5 sm-label-right" htmlFor="gce-min-cpu-platform">
351
+ Minimum CPU platform <HelpField id="gce.serverGroup.minCpuPlatform" />
352
+ </label>
353
+ <div className="col-md-6">
354
+ {pipelineMode ? (
355
+ <input
356
+ aria-label="Minimum CPU platform"
357
+ className="form-control input-sm"
358
+ id="gce-min-cpu-platform"
359
+ onChange={(event) => this.updateValues({ minCpuPlatform: event.target.value })}
360
+ type="text"
361
+ value={values.minCpuPlatform || ''}
362
+ />
363
+ ) : (
364
+ <select
365
+ aria-label="Minimum CPU platform"
366
+ className="form-control input-sm"
367
+ id="gce-min-cpu-platform"
368
+ onChange={(event) => this.updateValues({ minCpuPlatform: event.target.value })}
369
+ value={values.minCpuPlatform || ''}
370
+ >
371
+ {cpuPlatforms.map(({ unavailable, value }) => (
372
+ <option key={value} value={value}>
373
+ {value}
374
+ {unavailable ? ' (Unavailable)' : ''}
375
+ </option>
376
+ ))}
377
+ </select>
378
+ )}
379
+ </div>
380
+ </div>
381
+
382
+ <div className="form-group">
383
+ <div className="col-md-offset-5 col-md-6 checkbox">
384
+ <label htmlFor="gce-preemptible">
385
+ <input
386
+ checked={Boolean(values.preemptible)}
387
+ id="gce-preemptible"
388
+ onChange={(event) => this.updatePreemptible(event.target.checked)}
389
+ type="checkbox"
390
+ />{' '}
391
+ Spot (preemptible) instances <HelpField id="gce.serverGroup.preemptibility" />
392
+ </label>
393
+ </div>
394
+ </div>
395
+
396
+ <fieldset>
397
+ <legend className="sm-label-left">Accelerators (GPUs)</legend>
398
+ {acceleratorConfigs.map((config, index) => {
399
+ const selectedAccelerator = availableAccelerators.find(
400
+ (accelerator) => accelerator.name === config.acceleratorType,
401
+ );
402
+ const typeOptions = preserveAcceleratorReference(availableAccelerators, config.acceleratorType);
403
+ const countOptions = preserveNumberOrStringReference(
404
+ selectedAccelerator?.availableCardCounts || [],
405
+ config.acceleratorCount,
406
+ );
407
+ return (
408
+ <div className="form-group" key={`${config.acceleratorType}-${index}`}>
409
+ <label className="col-md-3 sm-label-right" htmlFor={`gce-accelerator-type-${index}`}>
410
+ GPU type
411
+ </label>
412
+ <div className="col-md-4">
413
+ <select
414
+ aria-describedby={errors.acceleratorConfigs ? 'gce-accelerators-error' : undefined}
415
+ aria-invalid={Boolean(errors.acceleratorConfigs)}
416
+ aria-label={`GPU type ${index + 1}`}
417
+ className="form-control input-sm"
418
+ id={`gce-accelerator-type-${index}`}
419
+ onChange={(event) => this.updateAcceleratorType(index, event.target.value)}
420
+ value={config.acceleratorType}
421
+ >
422
+ {typeOptions.map(({ description, name, unavailable }) => (
423
+ <option key={name} value={name}>
424
+ {unavailable ? name : description || name}
425
+ {unavailable ? ' (Unavailable)' : ''}
426
+ </option>
427
+ ))}
428
+ </select>
429
+ </div>
430
+ <label className="col-md-1 sm-label-right" htmlFor={`gce-accelerator-count-${index}`}>
431
+ Count
432
+ </label>
433
+ <div className="col-md-2">
434
+ {pipelineMode ? (
435
+ <input
436
+ aria-describedby={errors.acceleratorConfigs ? 'gce-accelerators-error' : undefined}
437
+ aria-invalid={Boolean(errors.acceleratorConfigs)}
438
+ aria-label={`GPU count ${index + 1}`}
439
+ className="form-control input-sm"
440
+ id={`gce-accelerator-count-${index}`}
441
+ onChange={(event) => this.updateAcceleratorCount(index, event.target.value)}
442
+ type="text"
443
+ value={config.acceleratorCount}
444
+ />
445
+ ) : (
446
+ <select
447
+ aria-describedby={errors.acceleratorConfigs ? 'gce-accelerators-error' : undefined}
448
+ aria-invalid={Boolean(errors.acceleratorConfigs)}
449
+ aria-label={`GPU count ${index + 1}`}
450
+ className="form-control input-sm"
451
+ id={`gce-accelerator-count-${index}`}
452
+ onChange={(event) => this.updateAcceleratorCount(index, event.target.value)}
453
+ value={config.acceleratorCount}
454
+ >
455
+ {countOptions.map(({ unavailable, value }) => (
456
+ <option key={String(value)} value={value}>
457
+ {value}
458
+ {unavailable ? ' (Unavailable)' : ''}
459
+ </option>
460
+ ))}
461
+ </select>
462
+ )}
463
+ </div>
464
+ <div className="col-md-1">
465
+ <button
466
+ aria-label={`Remove GPU ${index + 1}`}
467
+ className="btn btn-link"
468
+ onClick={() => this.removeAccelerator(index)}
469
+ type="button"
470
+ >
471
+ <span aria-hidden="true" className="glyphicon glyphicon-trash" />
472
+ </button>
473
+ </div>
474
+ </div>
475
+ );
476
+ })}
477
+ <button
478
+ className="btn btn-block btn-sm add-new"
479
+ disabled={!availableAccelerators.length}
480
+ onClick={this.addAccelerator}
481
+ type="button"
482
+ >
483
+ <span aria-hidden="true" className="glyphicon glyphicon-plus-sign" /> Add accelerator
484
+ </button>
485
+ {renderValidationError(errors.acceleratorConfigs, 'gce-accelerators-error')}
486
+ </fieldset>
487
+
488
+ <fieldset>
489
+ <legend className="sm-label-left">Boot disk</legend>
490
+ <div className="form-group">
491
+ <label className="col-md-5 sm-label-right" htmlFor="gce-boot-disk-type">
492
+ Type
493
+ </label>
494
+ <div className="col-md-6">
495
+ <select
496
+ aria-describedby={errors.disks ? 'gce-boot-disk-error' : undefined}
497
+ aria-invalid={Boolean(errors.disks)}
498
+ aria-label="Boot disk type"
499
+ className="form-control input-sm"
500
+ id="gce-boot-disk-type"
501
+ onChange={(event) => this.updateBootDisk({ type: event.target.value })}
502
+ value={bootDisk.type}
503
+ >
504
+ {diskTypes.map(({ unavailable, value }) => (
505
+ <option key={value} value={value}>
506
+ {value}
507
+ {unavailable ? ' (Unavailable)' : ''}
508
+ </option>
509
+ ))}
510
+ </select>
511
+ </div>
512
+ </div>
513
+ <div className="form-group">
514
+ <label className="col-md-5 sm-label-right" htmlFor="gce-boot-disk-size">
515
+ Size (GB)
516
+ </label>
517
+ <div className="col-md-3">
518
+ <input
519
+ aria-describedby={errors.disks ? 'gce-boot-disk-error' : undefined}
520
+ aria-invalid={Boolean(errors.disks)}
521
+ aria-label="Boot disk size"
522
+ className="form-control input-sm"
523
+ id="gce-boot-disk-size"
524
+ max={pipelineMode ? undefined : MAX_BOOT_DISK_SIZE_GB}
525
+ min={pipelineMode ? undefined : MIN_BOOT_DISK_SIZE_GB}
526
+ onChange={(event) => this.updateBootDisk({ sizeGb: parseNumericOrExpression(event.target.value) })}
527
+ required={true}
528
+ type={pipelineMode ? 'text' : 'number'}
529
+ value={bootDisk.sizeGb}
530
+ />
531
+ {renderValidationError(errors.disks, 'gce-boot-disk-error')}
532
+ </div>
533
+ </div>
534
+ </fieldset>
535
+ </div>
536
+ );
537
+ }
538
+
539
+ private renderSelect(
540
+ id: string,
541
+ label: string,
542
+ selected: number | string,
543
+ options: Array<{ unavailable: boolean; value: number | string }>,
544
+ onChange: (value: string) => void,
545
+ error?: string,
546
+ errorId?: string,
547
+ ): JSX.Element {
548
+ return (
549
+ <div className="form-group">
550
+ <label className="col-md-5 sm-label-right" htmlFor={id}>
551
+ {label}
552
+ </label>
553
+ <div className="col-md-3">
554
+ <select
555
+ aria-describedby={error ? errorId : undefined}
556
+ aria-invalid={Boolean(error)}
557
+ aria-label={label}
558
+ className="form-control input-sm"
559
+ id={id}
560
+ onChange={(event) => onChange(event.target.value)}
561
+ value={selected}
562
+ >
563
+ {options.map(({ unavailable, value }) => (
564
+ <option key={String(value)} value={value}>
565
+ {value}
566
+ {unavailable ? ' (Unavailable)' : ''}
567
+ </option>
568
+ ))}
569
+ </select>
570
+ </div>
571
+ </div>
572
+ );
573
+ }
574
+ }
575
+
576
+ function renderValidationError(error: string | undefined, id: string): React.ReactNode {
577
+ return (
578
+ error && (
579
+ <span className="help-block" id={id} role="alert">
580
+ {error}
581
+ </span>
582
+ )
583
+ );
584
+ }
585
+
586
+ function isPipelineMode(values: IGceServerGroupCommand): boolean {
587
+ return values.viewState.mode === 'createPipeline' || values.viewState.mode === 'editPipeline';
588
+ }
589
+
590
+ function isExpression(value: unknown): value is string {
591
+ return typeof value === 'string' && /^\s*\$\{.+\}\s*$/.test(value);
592
+ }
593
+
594
+ function isValidBoundedValue(value: unknown, command: IGceServerGroupCommand, min: number, max: number): boolean {
595
+ if (isPipelineMode(command) && isExpression(value)) {
596
+ return true;
597
+ }
598
+ const numberValue = Number(value);
599
+ return Number.isFinite(numberValue) && Number.isInteger(numberValue) && numberValue >= min && numberValue <= max;
600
+ }
601
+
602
+ function isValidPositiveInteger(value: unknown, command: IGceServerGroupCommand): boolean {
603
+ if (isPipelineMode(command) && isExpression(value)) {
604
+ return true;
605
+ }
606
+ const numberValue = Number(value);
607
+ return Number.isFinite(numberValue) && Number.isInteger(numberValue) && numberValue > 0;
608
+ }
609
+
610
+ function parseNumericOrExpression(value: string): number | string {
611
+ return isExpression(value) ? value : Number(value);
612
+ }
613
+
614
+ function preserveStringReference(
615
+ availableValues: string[],
616
+ selectedValue?: string | null,
617
+ ): Array<{ unavailable: boolean; value: string }> {
618
+ const options = availableValues.map((value) => ({ unavailable: false, value }));
619
+ if (selectedValue && !availableValues.includes(selectedValue)) {
620
+ options.push({ unavailable: true, value: selectedValue });
621
+ }
622
+ return options;
623
+ }
624
+
625
+ function preserveNumberOrStringReference(
626
+ availableValues: Array<number | string>,
627
+ selectedValue: number | string,
628
+ ): Array<{ unavailable: boolean; value: number | string }> {
629
+ const options = availableValues.map((value) => ({ unavailable: false, value }));
630
+ if (!availableValues.some((value) => String(value) === String(selectedValue))) {
631
+ options.push({ unavailable: true, value: selectedValue });
632
+ }
633
+ return options;
634
+ }
635
+
636
+ function preserveAcceleratorReference(
637
+ availableAccelerators: IGceAcceleratorType[],
638
+ selectedType: string,
639
+ ): Array<IGceAcceleratorType & { unavailable: boolean }> {
640
+ const options = availableAccelerators.map((accelerator) => ({ ...accelerator, unavailable: false }));
641
+ if (selectedType && !availableAccelerators.some((accelerator) => accelerator.name === selectedType)) {
642
+ options.push({ availableCardCounts: [], name: selectedType, unavailable: true });
643
+ }
644
+ return options;
645
+ }
646
+
647
+ function getAvailableAccelerators(values: IGceServerGroupCommand): IGceAcceleratorType[] {
648
+ return values.viewState.acceleratorTypes || [];
649
+ }
650
+
651
+ function getAcceleratorConfigs(values: IGceServerGroupCommand): IGceAcceleratorConfig[] {
652
+ return values.acceleratorConfigs || [];
653
+ }
654
+
655
+ function nearestAvailableCount(availableCounts: number[], currentCount: number): number {
656
+ if (!availableCounts.length) {
657
+ return 1;
658
+ }
659
+ if (availableCounts.includes(currentCount)) {
660
+ return currentCount;
661
+ }
662
+ return availableCounts.reduce(
663
+ (nearest, count) => (count <= currentCount && count > nearest ? count : nearest),
664
+ availableCounts[0],
665
+ );
666
+ }
667
+
668
+ function getBootDiskIndex(disks: IGceDisk[]): number {
669
+ return disks.findIndex((disk) => disk.type.startsWith('pd-') || disk.type.startsWith('hyperdisk-'));
670
+ }
671
+
672
+ function getBootDisk(values: IGceServerGroupCommand): IGceDisk | undefined {
673
+ const disks = ((values.disks || []) as unknown) as IGceDisk[];
674
+ return disks[getBootDiskIndex(disks)];
675
+ }
676
+
677
+ function reconcileInstanceTypeDetails(
678
+ command: IGceServerGroupCommand,
679
+ instanceTypeDetails: any,
680
+ ): IGceServerGroupCommand {
681
+ const defaultDisks = instanceTypeDetails?.storage?.defaultSettings?.disks;
682
+ const viewState = { ...command.viewState };
683
+ if (defaultDisks) {
684
+ delete viewState.overriddenStorageDescription;
685
+ }
686
+ return {
687
+ ...command,
688
+ ...(defaultDisks ? { disks: defaultDisks.map((disk: IGceDisk) => ({ ...disk })) } : {}),
689
+ viewState: {
690
+ ...viewState,
691
+ instanceTypeDetails,
692
+ },
693
+ };
694
+ }
695
+
696
+ function getCustomInstanceConfig(values: IGceServerGroupCommand): IGceCustomInstanceConfig {
697
+ const configured = values.viewState.customInstance || {};
698
+ const parsed = parseCustomMachineType(values.instanceType);
699
+ const choices = values.backingData?.customInstanceTypes || {};
700
+ return {
701
+ extendedMemory: configured.extendedMemory ?? parsed.extendedMemory,
702
+ instanceFamily: configured.instanceFamily || parsed.instanceFamily || choices.instanceFamilyList?.[0] || 'N1',
703
+ memory: configured.memory || parsed.memory || choices.memoryList?.[0] || 1,
704
+ vCpuCount: configured.vCpuCount || parsed.vCpuCount || choices.vCpuList?.[0] || 1,
705
+ };
706
+ }
707
+
708
+ function parseCustomMachineType(instanceType?: string | null): Partial<IGceCustomInstanceConfig> {
709
+ if (!instanceType || !instanceType.includes('custom-')) {
710
+ return { extendedMemory: false };
711
+ }
712
+ const match = /^(?:(n1|e2|n2|n2d)-)?custom-(\d+)-(\d+)(-ext)?$/i.exec(instanceType);
713
+ if (!match) {
714
+ return { extendedMemory: false };
715
+ }
716
+ return {
717
+ extendedMemory: Boolean(match[4]),
718
+ instanceFamily: (match[1] || 'N1').toUpperCase(),
719
+ memory: Number(match[3]) / 1024,
720
+ vCpuCount: Number(match[2]),
721
+ };
722
+ }
723
+
724
+ function buildCustomMachineType(config: IGceCustomInstanceConfig): string {
725
+ const family = config.instanceFamily.toLowerCase();
726
+ const prefix = family === 'n1' ? '' : `${family}-`;
727
+ return `${prefix}custom-${config.vCpuCount}-${Number(config.memory) * 1024}${config.extendedMemory ? '-ext' : ''}`;
728
+ }