@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,871 @@
1
+ import React from 'react';
2
+
3
+ import { HelpField, MapEditor } from '@spinnaker/core';
4
+
5
+ import type { IGceServerGroupCommand } from '../GceServerGroupWizard.types';
6
+ import { GceServerGroupWizardPage } from '../GceServerGroupWizardPage';
7
+
8
+ function optionsWithPersistedValue(options: string[], persistedValue?: string): string[] {
9
+ return Array.from(new Set([...options, persistedValue].filter(Boolean)) as Set<string>);
10
+ }
11
+
12
+ function hasEmptyKey(map: Record<string, unknown> = {}): boolean {
13
+ return Object.keys(map).some((key) => !key.trim());
14
+ }
15
+
16
+ function hasEmptyValue(map: Record<string, unknown> = {}): boolean {
17
+ return Object.values(map).some((value) => typeof value !== 'string' || !value.trim());
18
+ }
19
+
20
+ function isPipelineMode(values: IGceServerGroupCommand): boolean {
21
+ return values.viewState.mode === 'createPipeline' || values.viewState.mode === 'editPipeline';
22
+ }
23
+
24
+ function isExpression(value: unknown): value is string {
25
+ return typeof value === 'string' && /^\s*\$\{.+\}\s*$/.test(value);
26
+ }
27
+
28
+ function parseNumericOrExpression(value: string): number | string {
29
+ return isExpression(value) ? value : Number(value);
30
+ }
31
+
32
+ function isValidInteger(
33
+ value: unknown,
34
+ minimum: number,
35
+ values: IGceServerGroupCommand,
36
+ maximum = Number.MAX_SAFE_INTEGER,
37
+ ): boolean {
38
+ if (isPipelineMode(values) && isExpression(value)) {
39
+ return true;
40
+ }
41
+ const numericValue = Number(value);
42
+ return (
43
+ Number.isFinite(numericValue) &&
44
+ Number.isInteger(numericValue) &&
45
+ numericValue >= minimum &&
46
+ numericValue <= maximum
47
+ );
48
+ }
49
+
50
+ function isValidAccelerator(accelerator: any, values: IGceServerGroupCommand): boolean {
51
+ if (!accelerator.acceleratorType || !isValidInteger(accelerator.acceleratorCount, 1, values)) {
52
+ return false;
53
+ }
54
+ if (isPipelineMode(values) && isExpression(accelerator.acceleratorCount)) {
55
+ return true;
56
+ }
57
+ const available = (values.viewState?.acceleratorTypes || []).find(
58
+ (candidate: any) => candidate.name === accelerator.acceleratorType,
59
+ );
60
+ return available ? available.availableCardCounts.includes(Number(accelerator.acceleratorCount)) : true;
61
+ }
62
+
63
+ function getLocalSsds(values: IGceServerGroupCommand): any[] {
64
+ return (values.disks || []).filter((disk: any) => disk.type === 'local-ssd');
65
+ }
66
+
67
+ function getPersistentDisks(values: IGceServerGroupCommand): any[] {
68
+ return (values.disks || []).filter((disk: any) => disk.type !== 'local-ssd');
69
+ }
70
+
71
+ function renderValidationError(error: string, id: string): React.ReactNode {
72
+ return (
73
+ error && (
74
+ <span className="help-block" id={id} role="alert">
75
+ {error}
76
+ </span>
77
+ )
78
+ );
79
+ }
80
+
81
+ export class AdvancedSettings extends GceServerGroupWizardPage {
82
+ public validate(values: IGceServerGroupCommand): { [key: string]: string } {
83
+ const errors: { [key: string]: string } = {};
84
+ if (getPersistentDisks(values).some((disk: any) => !disk.type || !isValidInteger(disk.sizeGb, 10, values, 65536))) {
85
+ errors.disks = 'Every persistent disk requires a type and an integer size between 10 and 65536 GB.';
86
+ }
87
+ if ((values.acceleratorConfigs || []).some((accelerator: any) => !isValidAccelerator(accelerator, values))) {
88
+ errors.acceleratorConfigs = 'Every accelerator requires a type and a supported positive integer count.';
89
+ }
90
+ if (hasEmptyKey(values.instanceMetadata)) {
91
+ errors.instanceMetadata = 'Metadata keys cannot be empty.';
92
+ }
93
+ if (hasEmptyKey(values.labels) || hasEmptyValue(values.labels)) {
94
+ errors.labels = hasEmptyKey(values.labels) ? 'Label keys cannot be empty.' : 'Label values cannot be empty.';
95
+ }
96
+ if (hasEmptyKey(values.resourceManagerTags) || hasEmptyValue(values.resourceManagerTags)) {
97
+ errors.resourceManagerTags = hasEmptyKey(values.resourceManagerTags)
98
+ ? 'Resource Manager tag keys cannot be empty.'
99
+ : 'Resource Manager tag values cannot be empty.';
100
+ }
101
+ if ((values.tags || []).some((tag: any) => !(typeof tag === 'string' ? tag : tag.value)?.trim())) {
102
+ errors.tags = 'Network tags cannot be empty.';
103
+ }
104
+ if ((values.authScopes || []).some((scope: string) => !scope.trim())) {
105
+ errors.authScopes = 'Auth scopes cannot be empty.';
106
+ }
107
+ if (values.enableConfidentialCompute && 'confidentialInstanceType' in values && !values.confidentialInstanceType) {
108
+ errors.confidentialInstanceType = 'Confidential instance type required.';
109
+ }
110
+ return errors;
111
+ }
112
+
113
+ private setField = (field: string, value: any): void => {
114
+ this.props.formik.setFieldValue(field, value);
115
+ };
116
+
117
+ private updateDisk = (index: number, changes: Record<string, unknown>): void => {
118
+ const values = this.props.formik.values;
119
+ const persistentDisks = getPersistentDisks(values);
120
+ this.setField(
121
+ 'disks',
122
+ persistentDisks
123
+ .map((disk: any, diskIndex: number) => (diskIndex === index ? { ...disk, ...changes } : disk))
124
+ .concat(getLocalSsds(values)),
125
+ );
126
+ };
127
+
128
+ private removeDisk = (index: number): void => {
129
+ const values = this.props.formik.values;
130
+ this.setField(
131
+ 'disks',
132
+ getPersistentDisks(values)
133
+ .filter((_disk: any, diskIndex: number) => diskIndex !== index)
134
+ .concat(getLocalSsds(values)),
135
+ );
136
+ };
137
+
138
+ private updateLocalSsdCount = (count: number): void => {
139
+ const values = this.props.formik.values;
140
+ const localSsds = getLocalSsds(values).slice(0, count);
141
+ while (localSsds.length < count) {
142
+ localSsds.push({ type: 'local-ssd', sizeGb: 375 });
143
+ }
144
+ this.setField('disks', getPersistentDisks(values).concat(localSsds));
145
+ };
146
+
147
+ private updateAccelerator = (index: number, changes: Record<string, unknown>): void => {
148
+ const accelerators = this.props.formik.values.acceleratorConfigs || [];
149
+ this.setField(
150
+ 'acceleratorConfigs',
151
+ accelerators.map((accelerator: any, acceleratorIndex: number) =>
152
+ acceleratorIndex === index ? { ...accelerator, ...changes } : accelerator,
153
+ ),
154
+ );
155
+ };
156
+
157
+ private removeAccelerator = (index: number): void => {
158
+ this.setField(
159
+ 'acceleratorConfigs',
160
+ (this.props.formik.values.acceleratorConfigs || []).filter(
161
+ (_accelerator: any, acceleratorIndex: number) => acceleratorIndex !== index,
162
+ ),
163
+ );
164
+ };
165
+
166
+ private updateTag = (index: number, value: string): void => {
167
+ const tags = this.props.formik.values.tags || [];
168
+ this.setField(
169
+ 'tags',
170
+ tags.map((tag: any, tagIndex: number) =>
171
+ tagIndex === index ? (typeof tag === 'string' ? value : { ...tag, value }) : tag,
172
+ ),
173
+ );
174
+ };
175
+
176
+ private removeTag = (index: number): void => {
177
+ this.setField(
178
+ 'tags',
179
+ (this.props.formik.values.tags || []).filter((_tag: any, tagIndex: number) => tagIndex !== index),
180
+ );
181
+ };
182
+
183
+ private removeAuthScope = (index: number): void => {
184
+ this.setField(
185
+ 'authScopes',
186
+ (this.props.formik.values.authScopes || []).filter((_scope: string, scopeIndex: number) => scopeIndex !== index),
187
+ );
188
+ };
189
+
190
+ private setPreemptible = (preemptible: boolean): void => {
191
+ this.setField('preemptible', preemptible);
192
+ this.setField('automaticRestart', !preemptible);
193
+ this.setField('onHostMaintenance', preemptible ? 'TERMINATE' : 'MIGRATE');
194
+ };
195
+
196
+ private booleanRadios(label: string, field: string, value: boolean): JSX.Element {
197
+ const id = field.replace(/([A-Z])/g, '-$1').toLowerCase();
198
+ return (
199
+ <div className="form-group">
200
+ <div className="col-md-5 sm-label-right">
201
+ <b>{label}</b>
202
+ </div>
203
+ <div className="col-md-2 radio">
204
+ <label>
205
+ <input
206
+ checked={value === true}
207
+ data-testid={`${id}-yes`}
208
+ name={field}
209
+ onChange={() => this.setField(field, true)}
210
+ type="radio"
211
+ />{' '}
212
+ Yes
213
+ </label>
214
+ </div>
215
+ <div className="col-md-2 radio">
216
+ <label>
217
+ <input
218
+ checked={value === false}
219
+ data-testid={`${id}-no`}
220
+ name={field}
221
+ onChange={() => this.setField(field, false)}
222
+ type="radio"
223
+ />{' '}
224
+ No
225
+ </label>
226
+ </div>
227
+ </div>
228
+ );
229
+ }
230
+
231
+ public render(): JSX.Element {
232
+ const { values } = this.props.formik;
233
+ const errors = this.validate(values);
234
+ const disks = getPersistentDisks(values);
235
+ const localSsds = getLocalSsds(values);
236
+ const accelerators = values.acceleratorConfigs || [];
237
+ const acceleratorTypes = values.viewState?.acceleratorTypes || [];
238
+ const tags = values.tags || [];
239
+ const authScopes = values.authScopes || [];
240
+ const cpuPlatforms = optionsWithPersistedValue(
241
+ values.backingData?.filtered?.cpuPlatforms || [],
242
+ values.minCpuPlatform,
243
+ );
244
+ const confidentialSettingsSupported = 'enableConfidentialCompute' in values || 'confidentialInstanceType' in values;
245
+ const pipelineMode = isPipelineMode(values);
246
+
247
+ return (
248
+ <div className="container-fluid form-horizontal" data-testid="gce-advanced-settings-page">
249
+ <div className="form-group">
250
+ <label className="col-md-5 control-label">
251
+ Minimum CPU Platform <HelpField id="gce.serverGroup.minCpuPlatform" />
252
+ </label>
253
+ <div className="col-md-6">
254
+ <select
255
+ className="form-control input-sm"
256
+ data-testid="minimum-cpu-platform"
257
+ onChange={(event) => this.setField('minCpuPlatform', event.target.value)}
258
+ value={values.minCpuPlatform || ''}
259
+ >
260
+ {cpuPlatforms.map((platform) => (
261
+ <option key={platform} value={platform}>
262
+ {platform}
263
+ </option>
264
+ ))}
265
+ </select>
266
+ </div>
267
+ </div>
268
+
269
+ <div className="form-group">
270
+ <div className="sm-label-left">
271
+ <b>Storage</b>
272
+ </div>
273
+ <label className="col-md-5 control-label" htmlFor="gce-local-ssd-count">
274
+ Number of Local SSD Disks
275
+ </label>
276
+ <div className="col-md-2">
277
+ <input
278
+ aria-describedby={errors.disks ? 'gce-advanced-disks-error' : undefined}
279
+ aria-invalid={Boolean(errors.disks)}
280
+ className="form-control input-sm"
281
+ data-testid="local-ssd-count"
282
+ disabled={values.viewState?.instanceTypeDetails?.storage?.localSSDSupported === false}
283
+ id="gce-local-ssd-count"
284
+ max={8}
285
+ min={0}
286
+ onChange={(event) => this.updateLocalSsdCount(Number(event.target.value))}
287
+ type="number"
288
+ value={localSsds.length}
289
+ />
290
+ </div>
291
+ </div>
292
+ <div className="form-group">
293
+ <div className="sm-label-left">
294
+ <b>Persistent Disks</b>
295
+ </div>
296
+ <table className="table table-condensed packed tags">
297
+ <thead>
298
+ <tr>
299
+ <th>Type</th>
300
+ <th>Size (GB)</th>
301
+ <th>Source image</th>
302
+ <th />
303
+ </tr>
304
+ </thead>
305
+ <tbody>
306
+ {disks.map((disk: any, index: number) => {
307
+ const diskTypes = optionsWithPersistedValue(values.backingData?.persistentDiskTypes || [], disk.type);
308
+ return (
309
+ <tr key={index}>
310
+ <td>
311
+ <select
312
+ aria-describedby={errors.disks ? 'gce-advanced-disks-error' : undefined}
313
+ aria-invalid={Boolean(errors.disks)}
314
+ aria-label={`Disk type ${index + 1}`}
315
+ className="form-control input-sm"
316
+ data-testid={`disk-type-${index}`}
317
+ onChange={(event) => this.updateDisk(index, { type: event.target.value })}
318
+ required={true}
319
+ value={disk.type || ''}
320
+ >
321
+ {diskTypes.map((type) => (
322
+ <option key={type} value={type}>
323
+ {type}
324
+ </option>
325
+ ))}
326
+ </select>
327
+ </td>
328
+ <td>
329
+ <input
330
+ aria-describedby={errors.disks ? 'gce-advanced-disks-error' : undefined}
331
+ aria-invalid={Boolean(errors.disks)}
332
+ aria-label={`Disk size ${index + 1}`}
333
+ className="form-control input-sm"
334
+ data-testid={`disk-size-${index}`}
335
+ max={pipelineMode ? undefined : 65536}
336
+ min={pipelineMode ? undefined : 10}
337
+ onChange={(event) =>
338
+ this.updateDisk(index, { sizeGb: parseNumericOrExpression(event.target.value) })
339
+ }
340
+ required={true}
341
+ type={pipelineMode ? 'text' : 'number'}
342
+ value={disk.sizeGb ?? ''}
343
+ />
344
+ </td>
345
+ <td>
346
+ <input
347
+ aria-label={`Disk source image ${index + 1}`}
348
+ className="form-control input-sm"
349
+ onChange={(event) => this.updateDisk(index, { sourceImage: event.target.value || undefined })}
350
+ type="text"
351
+ value={disk.sourceImage || ''}
352
+ />
353
+ </td>
354
+ <td>
355
+ <button
356
+ aria-label={`Remove disk ${index + 1}`}
357
+ className="btn btn-link"
358
+ data-testid={`remove-disk-${index}`}
359
+ onClick={() => this.removeDisk(index)}
360
+ type="button"
361
+ >
362
+ <span className="glyphicon glyphicon-trash" />
363
+ </button>
364
+ </td>
365
+ </tr>
366
+ );
367
+ })}
368
+ </tbody>
369
+ <tfoot>
370
+ <tr>
371
+ <td colSpan={4}>
372
+ <button
373
+ className="btn btn-block btn-sm add-new"
374
+ data-testid="add-disk"
375
+ onClick={() => this.setField('disks', [...disks, { type: 'pd-ssd', sizeGb: 10 }, ...localSsds])}
376
+ type="button"
377
+ >
378
+ <span className="glyphicon glyphicon-plus-sign" /> Add disk
379
+ </button>
380
+ </td>
381
+ </tr>
382
+ </tfoot>
383
+ </table>
384
+ {renderValidationError(errors.disks, 'gce-advanced-disks-error')}
385
+ </div>
386
+
387
+ {(accelerators.length > 0 || acceleratorTypes.length > 0) && (
388
+ <div className="form-group">
389
+ <div className="sm-label-left">
390
+ <b>Accelerators</b> <HelpField id="gce.serverGroup.accelerator" />
391
+ </div>
392
+ <table className="table table-condensed packed tags">
393
+ <thead>
394
+ <tr>
395
+ <th>Type</th>
396
+ <th>Count</th>
397
+ <th />
398
+ </tr>
399
+ </thead>
400
+ <tbody>
401
+ {accelerators.map((accelerator: any, index: number) => {
402
+ const selectedType = acceleratorTypes.find((type: any) => type.name === accelerator.acceleratorType);
403
+ const typeNames = optionsWithPersistedValue(
404
+ acceleratorTypes.map((type: any) => type.name),
405
+ accelerator.acceleratorType,
406
+ );
407
+ const counts = Array.from(
408
+ new Set(
409
+ [...(selectedType?.availableCardCounts || []), accelerator.acceleratorCount].filter(Boolean),
410
+ ),
411
+ );
412
+ return (
413
+ <tr key={index}>
414
+ <td>
415
+ <select
416
+ aria-describedby={errors.acceleratorConfigs ? 'gce-advanced-accelerators-error' : undefined}
417
+ aria-invalid={Boolean(errors.acceleratorConfigs)}
418
+ aria-label={`Accelerator type ${index + 1}`}
419
+ className="form-control input-sm"
420
+ data-testid={`accelerator-type-${index}`}
421
+ onChange={(event) => this.updateAccelerator(index, { acceleratorType: event.target.value })}
422
+ required={true}
423
+ value={accelerator.acceleratorType || ''}
424
+ >
425
+ {typeNames.map((type) => (
426
+ <option key={type} value={type}>
427
+ {acceleratorTypes.find((candidate: any) => candidate.name === type)?.description || type}
428
+ </option>
429
+ ))}
430
+ </select>
431
+ </td>
432
+ <td>
433
+ {pipelineMode ? (
434
+ <input
435
+ aria-describedby={errors.acceleratorConfigs ? 'gce-advanced-accelerators-error' : undefined}
436
+ aria-invalid={Boolean(errors.acceleratorConfigs)}
437
+ aria-label={`Accelerator count ${index + 1}`}
438
+ className="form-control input-sm"
439
+ data-testid={`accelerator-count-${index}`}
440
+ onChange={(event) =>
441
+ this.updateAccelerator(index, {
442
+ acceleratorCount: parseNumericOrExpression(event.target.value),
443
+ })
444
+ }
445
+ required={true}
446
+ type="text"
447
+ value={accelerator.acceleratorCount ?? ''}
448
+ />
449
+ ) : counts.length ? (
450
+ <select
451
+ aria-describedby={errors.acceleratorConfigs ? 'gce-advanced-accelerators-error' : undefined}
452
+ aria-invalid={Boolean(errors.acceleratorConfigs)}
453
+ aria-label={`Accelerator count ${index + 1}`}
454
+ className="form-control input-sm"
455
+ data-testid={`accelerator-count-${index}`}
456
+ onChange={(event) =>
457
+ this.updateAccelerator(index, {
458
+ acceleratorCount: parseNumericOrExpression(event.target.value),
459
+ })
460
+ }
461
+ required={true}
462
+ value={accelerator.acceleratorCount ?? ''}
463
+ >
464
+ {counts.map((count) => (
465
+ <option key={count} value={count}>
466
+ {count}
467
+ </option>
468
+ ))}
469
+ </select>
470
+ ) : (
471
+ <input
472
+ aria-describedby={errors.acceleratorConfigs ? 'gce-advanced-accelerators-error' : undefined}
473
+ aria-invalid={Boolean(errors.acceleratorConfigs)}
474
+ aria-label={`Accelerator count ${index + 1}`}
475
+ className="form-control input-sm"
476
+ data-testid={`accelerator-count-${index}`}
477
+ min={1}
478
+ onChange={(event) =>
479
+ this.updateAccelerator(index, {
480
+ acceleratorCount: parseNumericOrExpression(event.target.value),
481
+ })
482
+ }
483
+ required={true}
484
+ type="number"
485
+ value={accelerator.acceleratorCount ?? ''}
486
+ />
487
+ )}
488
+ </td>
489
+ <td>
490
+ <button
491
+ aria-label={`Remove accelerator ${index + 1}`}
492
+ className="btn btn-link"
493
+ data-testid={`remove-accelerator-${index}`}
494
+ onClick={() => this.removeAccelerator(index)}
495
+ type="button"
496
+ >
497
+ <span className="glyphicon glyphicon-trash" />
498
+ </button>
499
+ </td>
500
+ </tr>
501
+ );
502
+ })}
503
+ </tbody>
504
+ <tfoot>
505
+ <tr>
506
+ <td colSpan={3}>
507
+ <button
508
+ className="btn btn-block btn-sm add-new"
509
+ data-testid="add-accelerator"
510
+ disabled={!acceleratorTypes.length}
511
+ onClick={() => {
512
+ const type = acceleratorTypes[0];
513
+ this.setField('acceleratorConfigs', [
514
+ ...accelerators,
515
+ { acceleratorType: type.name, acceleratorCount: type.availableCardCounts?.[0] || 1 },
516
+ ]);
517
+ }}
518
+ type="button"
519
+ >
520
+ <span className="glyphicon glyphicon-plus-sign" /> Add accelerator
521
+ </button>
522
+ </td>
523
+ </tr>
524
+ </tfoot>
525
+ </table>
526
+ {renderValidationError(errors.acceleratorConfigs, 'gce-advanced-accelerators-error')}
527
+ </div>
528
+ )}
529
+
530
+ <div className="form-group">
531
+ <label className="sm-label-left" htmlFor="gce-user-data">
532
+ User Data <HelpField id="gce.serverGroup.userData" />
533
+ </label>
534
+ <textarea
535
+ className="form-control"
536
+ id="gce-user-data"
537
+ onChange={(event) => this.setField('userData', event.target.value)}
538
+ rows={3}
539
+ value={values.userData || ''}
540
+ />
541
+ </div>
542
+
543
+ <div
544
+ aria-describedby={errors.instanceMetadata ? 'gce-advanced-instance-metadata-error' : undefined}
545
+ aria-invalid={Boolean(errors.instanceMetadata)}
546
+ aria-label="Custom Metadata"
547
+ className="form-group"
548
+ role="group"
549
+ >
550
+ <MapEditor
551
+ addButtonLabel="Add New Metadata"
552
+ allowEmpty={true}
553
+ keyLabel="Metadata key"
554
+ label="Custom Metadata"
555
+ model={values.instanceMetadata || {}}
556
+ onChange={(model) => this.setField('instanceMetadata', model)}
557
+ valueLabel="Metadata value"
558
+ />
559
+ {renderValidationError(errors.instanceMetadata, 'gce-advanced-instance-metadata-error')}
560
+ </div>
561
+ <div
562
+ aria-describedby={errors.labels ? 'gce-advanced-labels-error' : undefined}
563
+ aria-invalid={Boolean(errors.labels)}
564
+ aria-label="Labels"
565
+ className="form-group"
566
+ role="group"
567
+ >
568
+ <MapEditor
569
+ addButtonLabel="Add New Label"
570
+ allowEmpty={true}
571
+ keyLabel="Label key"
572
+ label="Labels"
573
+ model={values.labels || {}}
574
+ onChange={(model) => this.setField('labels', model)}
575
+ valueLabel="Label value"
576
+ />
577
+ {renderValidationError(errors.labels, 'gce-advanced-labels-error')}
578
+ </div>
579
+ <div
580
+ aria-describedby={errors.resourceManagerTags ? 'gce-advanced-resource-manager-tags-error' : undefined}
581
+ aria-invalid={Boolean(errors.resourceManagerTags)}
582
+ aria-label="Resource Manager Tags"
583
+ className="form-group"
584
+ role="group"
585
+ >
586
+ <MapEditor
587
+ addButtonLabel="Add New Resource Manager Tag"
588
+ allowEmpty={false}
589
+ keyLabel="Tag key"
590
+ label="Resource Manager Tags"
591
+ model={values.resourceManagerTags || {}}
592
+ onChange={(model) => this.setField('resourceManagerTags', model)}
593
+ valueLabel="Tag value"
594
+ />
595
+ {renderValidationError(errors.resourceManagerTags, 'gce-advanced-resource-manager-tags-error')}
596
+ </div>
597
+ <div className="form-group">
598
+ <div className="sm-label-left">
599
+ <b>Network Tags</b>
600
+ </div>
601
+ <table className="table table-condensed packed tags">
602
+ <tbody>
603
+ {tags.map((tag: any, index: number) => (
604
+ <tr key={index}>
605
+ <td>
606
+ <input
607
+ aria-describedby={errors.tags ? 'gce-advanced-network-tags-error' : undefined}
608
+ aria-invalid={Boolean(errors.tags)}
609
+ aria-label={`Network tag ${index + 1}`}
610
+ className="form-control input-sm"
611
+ onChange={(event) => this.updateTag(index, event.target.value)}
612
+ required={true}
613
+ value={typeof tag === 'string' ? tag : tag.value || ''}
614
+ />
615
+ </td>
616
+ <td>
617
+ <button
618
+ aria-label={`Remove network tag ${index + 1}`}
619
+ className="btn btn-link"
620
+ data-testid={`remove-network-tag-${index}`}
621
+ onClick={() => this.removeTag(index)}
622
+ type="button"
623
+ >
624
+ <span className="glyphicon glyphicon-trash" />
625
+ </button>
626
+ </td>
627
+ </tr>
628
+ ))}
629
+ </tbody>
630
+ <tfoot>
631
+ <tr>
632
+ <td colSpan={2}>
633
+ <button
634
+ className="btn btn-block btn-sm add-new"
635
+ data-testid="add-network-tag"
636
+ onClick={() => this.setField('tags', [...tags, { value: '' }])}
637
+ type="button"
638
+ >
639
+ <span className="glyphicon glyphicon-plus-sign" /> Add network tag
640
+ </button>
641
+ </td>
642
+ </tr>
643
+ </tfoot>
644
+ </table>
645
+ {renderValidationError(errors.tags, 'gce-advanced-network-tags-error')}
646
+ </div>
647
+
648
+ <fieldset className="form-group">
649
+ <legend className="sm-label-left">
650
+ Shielded VM <HelpField id="gce.serverGroup.shieldedInstanceConfig" />
651
+ </legend>
652
+ <div className="col-md-9 checkbox">
653
+ <label>
654
+ <input
655
+ checked={Boolean(values.enableSecureBoot)}
656
+ onChange={(event) => this.setField('enableSecureBoot', event.target.checked)}
657
+ type="checkbox"
658
+ />{' '}
659
+ Turn on Secure Boot
660
+ </label>
661
+ </div>
662
+ <div className="col-md-9 checkbox">
663
+ <label>
664
+ <input
665
+ checked={Boolean(values.enableVtpm)}
666
+ data-testid="enable-vtpm"
667
+ onChange={(event) => {
668
+ this.setField('enableVtpm', event.target.checked);
669
+ if (!event.target.checked) {
670
+ this.setField('enableIntegrityMonitoring', false);
671
+ }
672
+ }}
673
+ type="checkbox"
674
+ />{' '}
675
+ Turn on vTPM
676
+ </label>
677
+ </div>
678
+ <div className="col-md-9 checkbox">
679
+ <label>
680
+ <input
681
+ checked={Boolean(values.enableIntegrityMonitoring)}
682
+ disabled={!values.enableVtpm}
683
+ onChange={(event) => this.setField('enableIntegrityMonitoring', event.target.checked)}
684
+ type="checkbox"
685
+ />{' '}
686
+ Turn on Integrity Monitoring
687
+ </label>
688
+ </div>
689
+ </fieldset>
690
+
691
+ {confidentialSettingsSupported && (
692
+ <fieldset className="form-group">
693
+ <legend className="sm-label-left">Confidential VM</legend>
694
+ {'enableConfidentialCompute' in values && (
695
+ <div className="col-md-9 checkbox" data-testid="enable-confidential-compute">
696
+ <label>
697
+ <input
698
+ checked={Boolean(values.enableConfidentialCompute)}
699
+ onChange={(event) => this.setField('enableConfidentialCompute', event.target.checked)}
700
+ type="checkbox"
701
+ />{' '}
702
+ Enable Confidential Compute
703
+ </label>
704
+ </div>
705
+ )}
706
+ {'confidentialInstanceType' in values && (
707
+ <div className="col-md-9">
708
+ <label htmlFor="gce-confidential-instance-type">Confidential instance type</label>
709
+ <select
710
+ aria-describedby={
711
+ errors.confidentialInstanceType ? 'gce-advanced-confidential-instance-type-error' : undefined
712
+ }
713
+ aria-invalid={Boolean(errors.confidentialInstanceType)}
714
+ className="form-control input-sm"
715
+ id="gce-confidential-instance-type"
716
+ onChange={(event) => this.setField('confidentialInstanceType', event.target.value)}
717
+ required={Boolean(values.enableConfidentialCompute)}
718
+ value={values.confidentialInstanceType || ''}
719
+ >
720
+ <option value="">Select...</option>
721
+ {optionsWithPersistedValue(
722
+ values.backingData?.confidentialInstanceTypes || [],
723
+ values.confidentialInstanceType,
724
+ ).map((type) => (
725
+ <option key={type} value={type}>
726
+ {type}
727
+ </option>
728
+ ))}
729
+ </select>
730
+ {renderValidationError(
731
+ errors.confidentialInstanceType,
732
+ 'gce-advanced-confidential-instance-type-error',
733
+ )}
734
+ </div>
735
+ )}
736
+ </fieldset>
737
+ )}
738
+
739
+ <div className="form-group">
740
+ <div className="col-md-5 sm-label-right">
741
+ <b>Preemptibility</b>
742
+ </div>
743
+ <div className="col-md-2 radio">
744
+ <label>
745
+ <input
746
+ checked={!values.preemptible}
747
+ data-testid="preemptible-off"
748
+ name="preemptible"
749
+ onChange={() => this.setPreemptible(false)}
750
+ type="radio"
751
+ />{' '}
752
+ Off
753
+ </label>
754
+ </div>
755
+ <div className="col-md-2 radio">
756
+ <label>
757
+ <input
758
+ checked={Boolean(values.preemptible)}
759
+ data-testid="preemptible-on"
760
+ name="preemptible"
761
+ onChange={() => this.setPreemptible(true)}
762
+ type="radio"
763
+ />{' '}
764
+ On
765
+ </label>
766
+ </div>
767
+ </div>
768
+
769
+ {this.booleanRadios('Automatic Restart', 'automaticRestart', Boolean(values.automaticRestart))}
770
+ <div className="form-group">
771
+ <label className="col-md-5 control-label">On Host Maintenance</label>
772
+ <div className="col-md-4">
773
+ <select
774
+ className="form-control input-sm"
775
+ onChange={(event) => this.setField('onHostMaintenance', event.target.value)}
776
+ value={values.onHostMaintenance || ''}
777
+ >
778
+ <option value="MIGRATE">Migrate</option>
779
+ <option value="TERMINATE">Terminate</option>
780
+ </select>
781
+ </div>
782
+ </div>
783
+ {this.booleanRadios(
784
+ 'Associate Public IP Address',
785
+ 'associatePublicIpAddress',
786
+ values.associatePublicIpAddress !== false,
787
+ )}
788
+ {this.booleanRadios('Can IP Forward', 'canIpForward', Boolean(values.canIpForward))}
789
+
790
+ <div className="form-group" data-testid="service-account">
791
+ <label className="col-md-5 control-label" htmlFor="gce-service-account">
792
+ Service Account
793
+ </label>
794
+ <div className="col-md-6">
795
+ <input
796
+ className="form-control input-sm"
797
+ id="gce-service-account"
798
+ onChange={(event) => this.setField('serviceAccountEmail', event.target.value)}
799
+ type="text"
800
+ value={values.serviceAccountEmail || ''}
801
+ />
802
+ </div>
803
+ </div>
804
+
805
+ <div className="form-group">
806
+ <div className="sm-label-left">
807
+ <b>Auth Scopes</b>
808
+ </div>
809
+ <table className="table table-condensed packed tags">
810
+ <tbody>
811
+ {authScopes.map((scope: string, index: number) => (
812
+ <tr key={index} data-testid={`auth-scope-${index}`}>
813
+ <td>
814
+ <input
815
+ aria-describedby={errors.authScopes ? 'gce-advanced-auth-scopes-error' : undefined}
816
+ aria-invalid={Boolean(errors.authScopes)}
817
+ aria-label={`Auth scope ${index + 1}`}
818
+ className="form-control input-sm"
819
+ list="gce-auth-scopes"
820
+ onChange={(event) =>
821
+ this.setField(
822
+ 'authScopes',
823
+ authScopes.map((candidate: string, scopeIndex: number) =>
824
+ scopeIndex === index ? event.target.value : candidate,
825
+ ),
826
+ )
827
+ }
828
+ required={true}
829
+ value={scope}
830
+ />
831
+ </td>
832
+ <td>
833
+ <button
834
+ aria-label={`Remove auth scope ${index + 1}`}
835
+ className="btn btn-link"
836
+ data-testid={`remove-auth-scope-${index}`}
837
+ onClick={() => this.removeAuthScope(index)}
838
+ type="button"
839
+ >
840
+ <span className="glyphicon glyphicon-trash" />
841
+ </button>
842
+ </td>
843
+ </tr>
844
+ ))}
845
+ </tbody>
846
+ <tfoot>
847
+ <tr>
848
+ <td colSpan={2}>
849
+ <button
850
+ className="btn btn-block btn-sm add-new"
851
+ data-testid="add-auth-scope"
852
+ onClick={() => this.setField('authScopes', [...authScopes, ''])}
853
+ type="button"
854
+ >
855
+ <span className="glyphicon glyphicon-plus-sign" /> Add auth scope
856
+ </button>
857
+ </td>
858
+ </tr>
859
+ </tfoot>
860
+ </table>
861
+ <datalist id="gce-auth-scopes">
862
+ {(values.backingData?.authScopes || []).map((scope: string) => (
863
+ <option key={scope} value={scope} />
864
+ ))}
865
+ </datalist>
866
+ {renderValidationError(errors.authScopes, 'gce-advanced-auth-scopes-error')}
867
+ </div>
868
+ </div>
869
+ );
870
+ }
871
+ }