@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
@@ -1,620 +1,627 @@
1
1
  'use strict';
2
2
 
3
- import * as angular from 'angular';
4
3
  import _ from 'lodash';
5
4
 
6
- import { AccountService, ExpectedArtifactService, INSTANCE_TYPE_SERVICE } from '@spinnaker/core';
7
- import { GOOGLE_COMMON_XPNNAMING_GCE_SERVICE } from '../../common/xpnNaming.gce.service';
5
+ import { AccountService, ExpectedArtifactService } from '@spinnaker/core';
6
+ import { GceXpnNamingService } from '../../common/xpnNaming.gce.service';
8
7
  import { GCEProviderSettings } from '../../gce.settings';
9
8
  import { parseHealthCheckUrl } from '../../healthCheck/healthCheckUtils';
10
9
 
11
- import { GOOGLE_INSTANCE_CUSTOM_CUSTOMINSTANCEBUILDER_GCE_SERVICE } from './../../instance/custom/customInstanceBuilder.gce.service';
12
- import { GOOGLE_SERVERGROUP_CONFIGURE_WIZARD_HIDDENMETADATAKEYS_VALUE } from './wizard/hiddenMetadataKeys.value';
13
-
14
- export const GOOGLE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE =
15
- 'spinnaker.gce.serverGroupCommandBuilder.service';
16
- export const name = GOOGLE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE; // for backwards compatibility
17
- angular
18
- .module(GOOGLE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE, [
19
- INSTANCE_TYPE_SERVICE,
20
- GOOGLE_COMMON_XPNNAMING_GCE_SERVICE,
21
- GOOGLE_INSTANCE_CUSTOM_CUSTOMINSTANCEBUILDER_GCE_SERVICE,
22
- GOOGLE_SERVERGROUP_CONFIGURE_WIZARD_HIDDENMETADATAKEYS_VALUE,
23
- ])
24
- .factory('gceServerGroupCommandBuilder', [
25
- '$q',
26
- 'instanceTypeService',
27
- 'gceCustomInstanceBuilderService',
28
- 'gceServerGroupHiddenMetadataKeys',
29
- 'gceXpnNamingService',
30
- function (
31
- $q,
32
- instanceTypeService,
33
- gceCustomInstanceBuilderService,
34
- gceServerGroupHiddenMetadataKeys,
35
- gceXpnNamingService,
36
- ) {
37
- // Two assumptions here:
38
- // 1) All GCE machine types are represented in the tree of choices.
39
- // 2) Each machine type appears in exactly one category.
40
- function determineInstanceCategoryFromInstanceType(command) {
41
- return instanceTypeService.getCategories('gce').then(function (categories) {
42
- categories.forEach(function (category) {
43
- category.families.forEach(function (family) {
44
- family.instanceTypes.forEach(function (instanceType) {
45
- if (instanceType.name === command.instanceType) {
46
- command.viewState.instanceProfile = category.type;
47
- }
48
- });
10
+ import { GceCustomInstanceBuilderService } from './../../instance/custom/customInstanceBuilder.gce.service';
11
+ import { GceInstanceTypeService } from '../../instance/gceInstanceType.service';
12
+ import { GCE_SERVER_GROUP_HIDDEN_METADATA_KEYS } from './wizard/hiddenMetadataKeys.value';
13
+
14
+ export class GceServerGroupCommandBuilder {
15
+ constructor(
16
+ promiseService,
17
+ instanceTypeService = new GceInstanceTypeService(promiseService),
18
+ gceCustomInstanceBuilderService = new GceCustomInstanceBuilderService(),
19
+ gceXpnNamingService = new GceXpnNamingService(),
20
+ gceServerGroupHiddenMetadataKeys = GCE_SERVER_GROUP_HIDDEN_METADATA_KEYS,
21
+ ) {
22
+ // Two assumptions here:
23
+ // 1) All GCE machine types are represented in the tree of choices.
24
+ // 2) Each machine type appears in exactly one category.
25
+ function determineInstanceCategoryFromInstanceType(command) {
26
+ return instanceTypeService.getCategories('gce').then(function (categories) {
27
+ categories.forEach(function (category) {
28
+ category.families.forEach(function (family) {
29
+ family.instanceTypes.forEach(function (instanceType) {
30
+ if (instanceType.name === command.instanceType) {
31
+ command.viewState.instanceProfile = category.type;
32
+ }
49
33
  });
50
34
  });
51
35
  });
36
+ });
37
+ }
38
+
39
+ function extractNetworkName(serverGroup) {
40
+ const projectId = gceXpnNamingService.deriveProjectId(serverGroup.launchConfig.instanceTemplate);
41
+ const networkUrl = _.get(serverGroup, 'launchConfig.instanceTemplate.properties.networkInterfaces[0].network');
42
+ return gceXpnNamingService.decorateXpnResourceIfNecessary(projectId, networkUrl);
43
+ }
44
+
45
+ function extractSubnetName(serverGroup) {
46
+ const projectId = gceXpnNamingService.deriveProjectId(serverGroup.launchConfig.instanceTemplate);
47
+ const subnetworkUrl = _.get(
48
+ serverGroup,
49
+ 'launchConfig.instanceTemplate.properties.networkInterfaces[0].subnetwork',
50
+ );
51
+ return gceXpnNamingService.decorateXpnResourceIfNecessary(projectId, subnetworkUrl);
52
+ }
53
+
54
+ function determineAssociatePublicIPAddress(serverGroup) {
55
+ return _.has(serverGroup, 'launchConfig.instanceTemplate.properties.networkInterfaces[0].accessConfigs');
56
+ }
57
+
58
+ function loadBalancerMetadataValues(value) {
59
+ if (Array.isArray(value)) {
60
+ return value;
52
61
  }
53
-
54
- function extractNetworkName(serverGroup) {
55
- const projectId = gceXpnNamingService.deriveProjectId(serverGroup.launchConfig.instanceTemplate);
56
- const networkUrl = _.get(serverGroup, 'launchConfig.instanceTemplate.properties.networkInterfaces[0].network');
57
- return gceXpnNamingService.decorateXpnResourceIfNecessary(projectId, networkUrl);
62
+ if (typeof value === 'string') {
63
+ return value.split(',').filter(Boolean);
58
64
  }
59
-
60
- function extractSubnetName(serverGroup) {
61
- const projectId = gceXpnNamingService.deriveProjectId(serverGroup.launchConfig.instanceTemplate);
62
- const subnetworkUrl = _.get(
63
- serverGroup,
64
- 'launchConfig.instanceTemplate.properties.networkInterfaces[0].subnetwork',
65
- );
66
- return gceXpnNamingService.decorateXpnResourceIfNecessary(projectId, subnetworkUrl);
65
+ return [];
66
+ }
67
+
68
+ function extractLoadBalancerMetadata(metadata) {
69
+ return ['load-balancer-names', 'global-load-balancer-names'].reduce((loadBalancerMetadata, property) => {
70
+ const values = loadBalancerMetadataValues(metadata[property]);
71
+ if (values.length) {
72
+ loadBalancerMetadata[property] = values;
73
+ }
74
+ return loadBalancerMetadata;
75
+ }, {});
76
+ }
77
+
78
+ function extractLoadBalancers(asg) {
79
+ return ['load-balancer-names', 'global-load-balancer-names'].reduce((loadBalancers, property) => {
80
+ if (asg[property]) {
81
+ loadBalancers = loadBalancers.concat(loadBalancerMetadataValues(asg[property]));
82
+ }
83
+ return loadBalancers;
84
+ }, []);
85
+ }
86
+
87
+ function extractLoadBalancersFromMetadata(metadata) {
88
+ return ['load-balancer-names', 'global-load-balancer-names'].reduce((loadBalancers, property) => {
89
+ if (metadata[property]) {
90
+ loadBalancers = loadBalancers.concat(loadBalancerMetadataValues(metadata[property]));
91
+ }
92
+ return loadBalancers;
93
+ }, []);
94
+ }
95
+
96
+ function populateDisksFromExisting(disks, command) {
97
+ disks = disks.map((disk, index) => {
98
+ if (index === 0) {
99
+ return {
100
+ type: disk.initializeParams.diskType,
101
+ sizeGb: disk.initializeParams.diskSizeGb,
102
+ };
103
+ } else {
104
+ return {
105
+ type: disk.initializeParams.diskType,
106
+ sizeGb: disk.initializeParams.diskSizeGb,
107
+ sourceImage: _.last(_.get(disk, 'initializeParams.sourceImage', '').split('/')) || null,
108
+ };
109
+ }
110
+ });
111
+ const localSSDDisks = disks.filter((disk) => disk.type === 'local-ssd');
112
+ const persistentDisks = disks.filter((disk) => disk.type.startsWith('pd-') || disk.type.startsWith('hyperdisk-'));
113
+
114
+ if (persistentDisks.length) {
115
+ command.disks = persistentDisks.concat(localSSDDisks);
116
+ return instanceTypeService
117
+ .getInstanceTypeDetails(
118
+ command.selectedProvider,
119
+ _.includes(command.instanceType, 'custom-') ? 'buildCustom' : command.instanceType,
120
+ )
121
+ .then((instanceTypeDetails) => {
122
+ command.viewState.instanceTypeDetails = instanceTypeDetails;
123
+ calculateOverriddenStorageDescription(instanceTypeDetails, command);
124
+ });
125
+ } else {
126
+ command.disks = [{ type: 'pd-ssd', sizeGb: 10 }].concat(localSSDDisks);
127
+ return promiseService.resolve(null);
67
128
  }
68
-
69
- function determineAssociatePublicIPAddress(serverGroup) {
70
- return _.has(serverGroup, 'launchConfig.instanceTemplate.properties.networkInterfaces[0].accessConfigs');
129
+ }
130
+
131
+ function populateDisksFromPipeline(command) {
132
+ const persistentDisks = getPersistentDisks(command);
133
+ const localSSDDisks = getLocalSSDDisks(command);
134
+
135
+ if (persistentDisks.length) {
136
+ command.disks = persistentDisks.concat(localSSDDisks);
137
+ return instanceTypeService
138
+ .getInstanceTypeDetails(
139
+ command.selectedProvider,
140
+ _.includes(command.instanceType, 'custom-') ? 'buildCustom' : command.instanceType,
141
+ )
142
+ .then((instanceTypeDetails) => {
143
+ command.viewState.instanceTypeDetails = instanceTypeDetails;
144
+ calculateOverriddenStorageDescription(instanceTypeDetails, command);
145
+ });
146
+ } else {
147
+ command.disks = [{ type: 'pd-ssd', sizeGb: 10 }].concat(localSSDDisks);
148
+ return promiseService.resolve(null);
71
149
  }
150
+ }
72
151
 
73
- function extractLoadBalancers(asg) {
74
- return ['load-balancer-names', 'global-load-balancer-names'].reduce((loadBalancers, property) => {
75
- if (asg[property]) {
76
- loadBalancers = loadBalancers.concat(asg[property]);
77
- }
78
- return loadBalancers;
79
- }, []);
80
- }
152
+ function getLocalSSDDisks(command) {
153
+ return (command.disks || []).filter((disk) => disk.type === 'local-ssd');
154
+ }
81
155
 
82
- function extractLoadBalancersFromMetadata(metadata) {
83
- return ['load-balancer-names', 'global-load-balancer-names'].reduce((loadBalancers, property) => {
84
- if (metadata[property]) {
85
- loadBalancers = loadBalancers.concat(metadata[property].split(','));
86
- }
87
- return loadBalancers;
88
- }, []);
89
- }
156
+ function getPersistentDisks(command) {
157
+ return (command.disks || []).filter((disk) => disk.type.startsWith('pd-') || disk.type.startsWith('hyperdisk-'));
158
+ }
90
159
 
91
- function populateDisksFromExisting(disks, command) {
92
- disks = disks.map((disk, index) => {
93
- if (index === 0) {
94
- return {
95
- type: disk.initializeParams.diskType,
96
- sizeGb: disk.initializeParams.diskSizeGb,
97
- };
98
- } else {
99
- return {
100
- type: disk.initializeParams.diskType,
101
- sizeGb: disk.initializeParams.diskSizeGb,
102
- sourceImage: _.last(_.get(disk, 'initializeParams.sourceImage', '').split('/')) || null,
103
- };
104
- }
105
- });
106
- const localSSDDisks = disks.filter((disk) => disk.type === 'local-ssd');
107
- const persistentDisks = disks.filter(
108
- (disk) => disk.type.startsWith('pd-') || disk.type.startsWith('hyperdisk-'),
109
- );
110
-
111
- if (persistentDisks.length) {
112
- command.disks = persistentDisks.concat(localSSDDisks);
113
- return instanceTypeService
114
- .getInstanceTypeDetails(
115
- command.selectedProvider,
116
- _.includes(command.instanceType, 'custom-') ? 'buildCustom' : command.instanceType,
117
- )
118
- .then((instanceTypeDetails) => {
119
- command.viewState.instanceTypeDetails = instanceTypeDetails;
120
- calculateOverriddenStorageDescription(instanceTypeDetails, command);
121
- });
160
+ function calculatePersistentDiskOverriddenStorageDescription(command) {
161
+ const persistentDisks = getPersistentDisks(command);
162
+
163
+ const diskCountBySizeGb = new Map();
164
+ persistentDisks.forEach((disk) => {
165
+ if (diskCountBySizeGb.has(disk.sizeGb)) {
166
+ diskCountBySizeGb.set(disk.sizeGb, diskCountBySizeGb.get(disk.sizeGb) + 1);
122
167
  } else {
123
- command.disks = [{ type: 'pd-ssd', sizeGb: 10 }].concat(localSSDDisks);
124
- return $q.when(null);
168
+ diskCountBySizeGb.set(disk.sizeGb, 1);
125
169
  }
126
- }
127
-
128
- function populateDisksFromPipeline(command) {
170
+ });
171
+
172
+ return Array.from(diskCountBySizeGb)
173
+ .sort(([sizeA], [sizeB]) => sizeB - sizeA)
174
+ .map(([sizeGb, count]) => count + '×' + sizeGb)
175
+ .join(', ');
176
+ }
177
+
178
+ function calculateOverriddenStorageDescription(instanceTypeDetails, command) {
179
+ if (instanceTypeDetails.storage.localSSDSupported) {
180
+ if (getLocalSSDDisks(command).length !== instanceTypeDetails.storage.count) {
181
+ command.viewState.overriddenStorageDescription = getLocalSSDDisks(command).length + '×375';
182
+ }
183
+ } else {
129
184
  const persistentDisks = getPersistentDisks(command);
130
- const localSSDDisks = getLocalSSDDisks(command);
131
-
132
- if (persistentDisks.length) {
133
- command.disks = persistentDisks.concat(localSSDDisks);
134
- return instanceTypeService
135
- .getInstanceTypeDetails(
136
- command.selectedProvider,
137
- _.includes(command.instanceType, 'custom-') ? 'buildCustom' : command.instanceType,
138
- )
139
- .then((instanceTypeDetails) => {
140
- command.viewState.instanceTypeDetails = instanceTypeDetails;
141
- calculateOverriddenStorageDescription(instanceTypeDetails, command);
142
- });
143
- } else {
144
- command.disks = [{ type: 'pd-ssd', sizeGb: 10 }].concat(localSSDDisks);
145
- return $q.when(null);
185
+ const overrideStorageDescription =
186
+ persistentDisks.some((disk) => disk.sizeGb !== instanceTypeDetails.storage.size) ||
187
+ persistentDisks.length !== instanceTypeDetails.storage.count;
188
+
189
+ if (overrideStorageDescription) {
190
+ command.viewState.overriddenStorageDescription = calculatePersistentDiskOverriddenStorageDescription(command);
146
191
  }
147
192
  }
148
-
149
- function getLocalSSDDisks(command) {
150
- return (command.disks || []).filter((disk) => disk.type === 'local-ssd');
193
+ }
194
+
195
+ function populateAvailabilityPolicies(scheduling, command) {
196
+ if (scheduling) {
197
+ command.preemptible = scheduling.preemptible;
198
+ command.automaticRestart = scheduling.automaticRestart;
199
+ command.onHostMaintenance = scheduling.onHostMaintenance;
200
+ } else {
201
+ command.preemptible = false;
202
+ command.automaticRestart = true;
203
+ command.onHostMaintenance = 'MIGRATE';
151
204
  }
152
-
153
- function getPersistentDisks(command) {
154
- return (command.disks || []).filter(
155
- (disk) => disk.type.startsWith('pd-') || disk.type.startsWith('hyperdisk-'),
156
- );
205
+ }
206
+
207
+ function populateAutoHealingPolicy(serverGroup, command) {
208
+ // Always clear first: pipeline edit copies cluster JSON onto the command before this
209
+ // runs, and legacy payloads may carry unsupported maxUnavailable alone or alongside
210
+ // a health check. Rebuild from supported fields only so Deck cannot resubmit it.
211
+ delete command.autoHealingPolicy;
212
+ const autoHealingPolicy = serverGroup.autoHealingPolicy;
213
+ if (!autoHealingPolicy) {
214
+ return;
157
215
  }
158
-
159
- function calculatePersistentDiskOverriddenStorageDescription(command) {
160
- const persistentDisks = getPersistentDisks(command);
161
-
162
- const diskCountBySizeGb = new Map();
163
- persistentDisks.forEach((disk) => {
164
- if (diskCountBySizeGb.has(disk.sizeGb)) {
165
- diskCountBySizeGb.set(disk.sizeGb, diskCountBySizeGb.get(disk.sizeGb) + 1);
166
- } else {
167
- diskCountBySizeGb.set(disk.sizeGb, 1);
168
- }
169
- });
170
-
171
- return Array.from(diskCountBySizeGb)
172
- .sort(([sizeA], [sizeB]) => sizeB - sizeA)
173
- .map(([sizeGb, count]) => count + '×' + sizeGb)
174
- .join(', ');
216
+ const healthCheckUrl = autoHealingPolicy.healthCheckUrl
217
+ ? autoHealingPolicy.healthCheckUrl
218
+ : autoHealingPolicy.healthCheck;
219
+ if (!healthCheckUrl) {
220
+ return;
175
221
  }
176
-
177
- function calculateOverriddenStorageDescription(instanceTypeDetails, command) {
178
- if (instanceTypeDetails.storage.localSSDSupported) {
179
- if (getLocalSSDDisks(command).length !== instanceTypeDetails.storage.count) {
180
- command.viewState.overriddenStorageDescription = getLocalSSDDisks(command).length + '×375';
222
+ const { healthCheckName, healthCheckKind } = parseHealthCheckUrl(healthCheckUrl);
223
+ command.autoHealingPolicy = {
224
+ healthCheck: healthCheckName,
225
+ healthCheckKind,
226
+ healthCheckUrl: healthCheckUrl,
227
+ initialDelaySec: autoHealingPolicy.initialDelaySec,
228
+ };
229
+ }
230
+
231
+ // Dual-key fallback: try v1 key (shieldedInstanceConfig) first, then legacy beta key
232
+ // (shieldedVmConfig) for backward compat with server groups created before the v1 migration.
233
+ // Ref: https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates
234
+ function populateShieldedVmConfig(source, command) {
235
+ const shieldedInstanceConfig = _.get(source, 'launchConfig.instanceTemplate.properties.shieldedInstanceConfig');
236
+ const shieldedVmConfig = _.get(source, 'launchConfig.instanceTemplate.properties.shieldedVmConfig');
237
+ ['enableSecureBoot', 'enableVtpm', 'enableIntegrityMonitoring'].forEach((field) => {
238
+ command[field] = _.has(shieldedInstanceConfig, field)
239
+ ? shieldedInstanceConfig[field]
240
+ : _.has(shieldedVmConfig, field)
241
+ ? shieldedVmConfig[field]
242
+ : _.get(source, field, false);
243
+ });
244
+ }
245
+
246
+ function populateCustomMetadata(metadataItems, command) {
247
+ // Hide metadata items in the wizard.
248
+ if (metadataItems) {
249
+ let customUserData = '';
250
+ let customUserDataKeys = [];
251
+ if (Array.isArray(metadataItems)) {
252
+ const customUserDataItem = metadataItems.find((metadataItem) => metadataItem.key === 'customUserData');
253
+ if (customUserDataItem) {
254
+ customUserData = customUserDataItem.value;
255
+ customUserDataKeys = getCustomUserDataKeys(customUserData);
256
+ command.userData = customUserData;
181
257
  }
258
+ metadataItems.forEach(function (metadataItem) {
259
+ if (
260
+ !_.includes(customUserDataKeys, metadataItem.key) &&
261
+ !_.includes(gceServerGroupHiddenMetadataKeys, metadataItem.key)
262
+ ) {
263
+ command.instanceMetadata[metadataItem.key] = metadataItem.value;
264
+ }
265
+ });
182
266
  } else {
183
- const persistentDisks = getPersistentDisks(command);
184
- const overrideStorageDescription =
185
- persistentDisks.some((disk) => disk.sizeGb !== instanceTypeDetails.storage.size) ||
186
- persistentDisks.length !== instanceTypeDetails.storage.count;
187
-
188
- if (overrideStorageDescription) {
189
- command.viewState.overriddenStorageDescription = calculatePersistentDiskOverriddenStorageDescription(
190
- command,
191
- );
267
+ if (metadataItems.customUserData) {
268
+ customUserData = metadataItems.customUserData;
269
+ customUserDataKeys = getCustomUserDataKeys(customUserData);
270
+ command.userData = customUserData;
271
+ metadataItems = _.omit(metadataItems, customUserDataKeys);
192
272
  }
273
+ Object.assign(command.instanceMetadata, _.omit(metadataItems, gceServerGroupHiddenMetadataKeys));
193
274
  }
194
275
  }
195
276
 
196
- function populateAvailabilityPolicies(scheduling, command) {
197
- if (scheduling) {
198
- command.preemptible = scheduling.preemptible;
199
- command.automaticRestart = scheduling.automaticRestart;
200
- command.onHostMaintenance = scheduling.onHostMaintenance;
201
- } else {
202
- command.preemptible = false;
203
- command.automaticRestart = true;
204
- command.onHostMaintenance = 'MIGRATE';
205
- }
277
+ if (command.labels['spinnaker-moniker-sequence']) {
278
+ delete command.labels['spinnaker-moniker-sequence'];
206
279
  }
207
-
208
- function populateAutoHealingPolicy(serverGroup, command) {
209
- const autoHealingPolicy = serverGroup.autoHealingPolicy;
210
- if (autoHealingPolicy) {
211
- const healthCheckUrl = autoHealingPolicy.healthCheckUrl
212
- ? autoHealingPolicy.healthCheckUrl
213
- : autoHealingPolicy.healthCheck;
214
-
215
- if (healthCheckUrl) {
216
- const { healthCheckName, healthCheckKind } = parseHealthCheckUrl(healthCheckUrl);
217
- command.autoHealingPolicy = {
218
- healthCheck: healthCheckName,
219
- healthCheckKind: healthCheckKind,
220
- healthCheckUrl: healthCheckUrl,
221
- initialDelaySec: autoHealingPolicy.initialDelaySec,
222
- };
223
- }
224
-
225
- const maxUnavailable = autoHealingPolicy.maxUnavailable;
226
- if (maxUnavailable) {
227
- command.autoHealingPolicy.maxUnavailable = maxUnavailable;
228
- command.viewState.maxUnavailableMetric = typeof maxUnavailable.percent === 'number' ? 'percent' : 'fixed';
229
- }
230
- }
280
+ }
281
+
282
+ function getCustomUserDataKeys(customUserData) {
283
+ const customUserDataKeys = [];
284
+ customUserData.split(/\n|,/).forEach(function (userDataItem) {
285
+ const customUserDataKey = userDataItem.split('=')[0];
286
+ customUserDataKeys.push(customUserDataKey);
287
+ });
288
+ return customUserDataKeys;
289
+ }
290
+
291
+ function populateTags(instanceTemplateTags, command) {
292
+ if (instanceTemplateTags && instanceTemplateTags.items) {
293
+ _.map(instanceTemplateTags.items, function (tag) {
294
+ command.tags.push({ value: tag });
295
+ });
231
296
  }
297
+ }
232
298
 
233
- function populateShieldedVmConfig(serverGroup, command) {
234
- command.enableSecureBoot = serverGroup.enableSecureBoot;
235
- command.enableVtpm = serverGroup.enableVtpm;
236
- command.enableIntegrityMonitoring = serverGroup.enableIntegrityMonitoring;
299
+ function populateResourceManagerTags(instanceTemplateResourceManagerTags, command) {
300
+ if (instanceTemplateResourceManagerTags) {
301
+ Object.assign(command.resourceManagerTags, instanceTemplateResourceManagerTags);
237
302
  }
303
+ }
238
304
 
239
- function populateCustomMetadata(metadataItems, command) {
240
- // Hide metadata items in the wizard.
241
- if (metadataItems) {
242
- let customUserData = '';
243
- let customUserDataKeys = [];
244
- if (angular.isArray(metadataItems)) {
245
- const customUserDataItem = metadataItems.find((metadataItem) => metadataItem.key === 'customUserData');
246
- if (customUserDataItem) {
247
- customUserData = customUserDataItem.value;
248
- customUserDataKeys = getCustomUserDataKeys(customUserData);
249
- command.userData = customUserData;
250
- }
251
- metadataItems.forEach(function (metadataItem) {
252
- if (
253
- !_.includes(customUserDataKeys, metadataItem.key) &&
254
- !_.includes(gceServerGroupHiddenMetadataKeys, metadataItem.key)
255
- ) {
256
- command.instanceMetadata[metadataItem.key] = metadataItem.value;
257
- }
258
- });
259
- } else {
260
- if (metadataItems.customUserData) {
261
- customUserData = metadataItems.customUserData;
262
- customUserDataKeys = getCustomUserDataKeys(customUserData);
263
- command.userData = customUserData;
264
- metadataItems = _.omit(metadataItems, customUserDataKeys);
265
- }
266
- angular.extend(command.instanceMetadata, _.omit(metadataItems, gceServerGroupHiddenMetadataKeys));
267
- }
305
+ function populateLabels(instanceTemplateLabels, command) {
306
+ if (instanceTemplateLabels) {
307
+ Object.assign(command.labels, instanceTemplateLabels);
308
+
309
+ if (command.labels['spinnaker-region']) {
310
+ delete command.labels['spinnaker-region'];
268
311
  }
269
312
 
313
+ if (command.labels['spinnaker-server-group']) {
314
+ delete command.labels['spinnaker-server-group'];
315
+ }
316
+
317
+ // Need to delete the sequence, otherwise it won't increment
270
318
  if (command.labels['spinnaker-moniker-sequence']) {
271
319
  delete command.labels['spinnaker-moniker-sequence'];
272
320
  }
273
321
  }
322
+ }
274
323
 
275
- function getCustomUserDataKeys(customUserData) {
276
- const customUserDataKeys = [];
277
- customUserData.split(/\n|,/).forEach(function (userDataItem) {
278
- const customUserDataKey = userDataItem.split('=')[0];
279
- customUserDataKeys.push(customUserDataKey);
324
+ function populateAuthScopes(serviceAccounts, command) {
325
+ if (serviceAccounts && serviceAccounts.length) {
326
+ command.serviceAccountEmail = serviceAccounts[0].email;
327
+ command.authScopes = _.map(serviceAccounts[0].scopes, (authScope) => {
328
+ return authScope.replace('https://www.googleapis.com/auth/', '');
280
329
  });
281
- return customUserDataKeys;
282
- }
283
-
284
- function populateTags(instanceTemplateTags, command) {
285
- if (instanceTemplateTags && instanceTemplateTags.items) {
286
- _.map(instanceTemplateTags.items, function (tag) {
287
- command.tags.push({ value: tag });
288
- });
289
- }
290
- }
291
-
292
- function populateResourceManagerTags(instanceTemplateResourceManagerTags, command) {
293
- if (instanceTemplateResourceManagerTags) {
294
- Object.assign(command.resourceManagerTags, instanceTemplateResourceManagerTags);
295
- }
330
+ } else {
331
+ command.authScopes = [];
296
332
  }
333
+ }
334
+
335
+ function attemptToSetValidCredentials(application, defaultCredentials, command) {
336
+ return AccountService.listAccounts('gce').then(function (gceAccounts) {
337
+ const gceAccountNames = _.map(gceAccounts, 'name');
338
+ const firstGCEAccount = gceAccountNames[0];
339
+
340
+ const defaultCredentialsAreValid = defaultCredentials && gceAccountNames.includes(defaultCredentials);
341
+
342
+ command.credentials = defaultCredentialsAreValid ? defaultCredentials : firstGCEAccount || 'my-account-name';
343
+ });
344
+ }
345
+
346
+ function buildNewServerGroupCommand(application, defaults) {
347
+ defaults = defaults || {};
348
+
349
+ const defaultCredentials = defaults.account || GCEProviderSettings.defaults.account;
350
+ const defaultRegion = defaults.region || GCEProviderSettings.defaults.region;
351
+ const defaultZone = defaults.zone || GCEProviderSettings.defaults.zone;
352
+ const associatePublicIpAddress = _.has(application, 'attributes.providerSettings.gce.associatePublicIpAddress')
353
+ ? application.attributes.providerSettings.gce.associatePublicIpAddress
354
+ : true;
355
+
356
+ const command = {
357
+ application: application.name,
358
+ credentials: defaultCredentials,
359
+ region: defaultRegion,
360
+ zone: defaultZone,
361
+ regional: false, // TODO(duftler): Externalize this default alongside defaultRegion and defaultZone.
362
+ selectZones: false, // Explicitly select zones for regional server groups.
363
+ distributionPolicy: { zones: [] },
364
+ network: 'default',
365
+ associatePublicIpAddress: associatePublicIpAddress,
366
+ canIpForward: false,
367
+ strategy: '',
368
+ capacity: {
369
+ min: 0,
370
+ max: 0,
371
+ desired: 1,
372
+ },
373
+ backendServiceMetadata: [],
374
+ minCpuPlatform: '(Automatic)',
375
+ disks: [
376
+ { type: 'pd-ssd', sizeGb: 10 },
377
+ { type: 'local-ssd', sizeGb: 375 },
378
+ ],
379
+ imageSource: 'priorStage',
380
+ instanceMetadata: {},
381
+ tags: [],
382
+ labels: {},
383
+ resourceManagerTags: {},
384
+ enableSecureBoot: false,
385
+ enableVtpm: false,
386
+ enableIntegrityMonitoring: false,
387
+ preemptible: false,
388
+ automaticRestart: true,
389
+ onHostMaintenance: 'MIGRATE',
390
+ serviceAccountEmail: 'default',
391
+ authScopes: ['cloud.useraccounts.readonly', 'devstorage.read_only', 'logging.write', 'monitoring.write'],
392
+ enableTraffic: true,
393
+ cloudProvider: 'gce',
394
+ selectedProvider: 'gce',
395
+ availabilityZones: [],
396
+ viewState: {
397
+ instanceProfile: 'custom',
398
+ allImageSelection: null,
399
+ useSimpleCapacity: true,
400
+ usePreferredZones: true,
401
+ listImplicitSecurityGroups: false,
402
+ mode: defaults.mode || 'create',
403
+ disableStrategySelection: true,
404
+ expectedArtifacts: [],
405
+ },
406
+ };
297
407
 
298
- function populatePartnerMetadata(instanceTemplatePartnerMetadata, command) {
299
- if (instanceTemplatePartnerMetadata) {
300
- Object.assign(command.partnerMetadata, instanceTemplatePartnerMetadata);
301
- }
408
+ if (
409
+ application.attributes &&
410
+ application.attributes.platformHealthOnlyShowOverride &&
411
+ application.attributes.platformHealthOnly
412
+ ) {
413
+ command.interestingHealthProviderNames = ['Google'];
302
414
  }
303
415
 
304
- function populateLabels(instanceTemplateLabels, command) {
305
- if (instanceTemplateLabels) {
306
- Object.assign(command.labels, instanceTemplateLabels);
307
-
308
- if (command.labels['spinnaker-region']) {
309
- delete command.labels['spinnaker-region'];
310
- }
416
+ return attemptToSetValidCredentials(application, defaultCredentials, command).then(() => command);
417
+ }
418
+
419
+ // Only used to prepare view requiring template selecting
420
+ function buildNewServerGroupCommandForPipeline(currentStage, pipeline) {
421
+ const expectedArtifacts = ExpectedArtifactService.getExpectedArtifactsAvailableToStage(currentStage, pipeline);
422
+ return promiseService.resolve({
423
+ viewState: {
424
+ pipeline,
425
+ expectedArtifacts: expectedArtifacts,
426
+ requiresTemplateSelection: true,
427
+ stage: currentStage,
428
+ },
429
+ });
430
+ }
431
+
432
+ function buildServerGroupCommandFromExisting(application, serverGroup, mode) {
433
+ mode = mode || 'clone';
434
+ const moniker = serverGroup.moniker;
435
+
436
+ const command = {
437
+ application: application.name,
438
+ autoscalingPolicy: _.cloneDeep(serverGroup.autoscalingPolicy),
439
+ strategy: '',
440
+ stack: moniker.stack,
441
+ freeFormDetails: moniker.detail,
442
+ credentials: serverGroup.account,
443
+ loadBalancers: extractLoadBalancers(serverGroup.asg),
444
+ loadBalancerMetadata: extractLoadBalancerMetadata(serverGroup.asg),
445
+ loadBalancingPolicy: _.cloneDeep(serverGroup.loadBalancingPolicy),
446
+ backendServiceMetadata: serverGroup.asg['backend-service-names'],
447
+ securityGroups: serverGroup.securityGroups,
448
+ region: serverGroup.region,
449
+ capacity: {
450
+ min: serverGroup.asg.minSize,
451
+ max: serverGroup.asg.maxSize,
452
+ desired: serverGroup.asg.desiredCapacity,
453
+ },
454
+ regional: serverGroup.regional,
455
+ network: extractNetworkName(serverGroup),
456
+ subnet: extractSubnetName(serverGroup),
457
+ associatePublicIpAddress: determineAssociatePublicIPAddress(serverGroup),
458
+ canIpForward: serverGroup.canIpForward,
459
+ minCpuPlatform: serverGroup.launchConfig.minCpuPlatform || '(Automatic)',
460
+ instanceMetadata: {},
461
+ tags: [],
462
+ labels: {},
463
+ resourceManagerTags: {},
464
+ availabilityZones: [],
465
+ enableSecureBoot: false,
466
+ enableVtpm: false,
467
+ enableIntegrityMonitoring: false,
468
+ enableTraffic: true,
469
+ cloudProvider: 'gce',
470
+ selectedProvider: 'gce',
471
+ distributionPolicy: {
472
+ zones: serverGroup.distributionPolicy ? serverGroup.distributionPolicy.zones : [],
473
+ targetShape: serverGroup.distributionPolicy ? serverGroup.distributionPolicy.targetShape : null,
474
+ },
475
+ // Preserve explicit empty policies while keeping absence distinct.
476
+ instanceFlexibilityPolicy:
477
+ serverGroup.instanceFlexibilityPolicy === undefined
478
+ ? undefined
479
+ : _.cloneDeep(serverGroup.instanceFlexibilityPolicy),
480
+ selectZones: serverGroup.selectZones,
481
+ source: {
482
+ account: serverGroup.account,
483
+ region: serverGroup.region,
484
+ serverGroupName: serverGroup.name,
485
+ asgName: serverGroup.name,
486
+ },
487
+ viewState: {
488
+ allImageSelection: null,
489
+ useSimpleCapacity: !serverGroup.autoscalingPolicy,
490
+ usePreferredZones: false,
491
+ listImplicitSecurityGroups: false,
492
+ mode: mode,
493
+ },
494
+ };
311
495
 
312
- if (command.labels['spinnaker-server-group']) {
313
- delete command.labels['spinnaker-server-group'];
314
- }
496
+ populateShieldedVmConfig(serverGroup, command);
315
497
 
316
- // Need to delete the sequence, otherwise it won't increment
317
- if (command.labels['spinnaker-moniker-sequence']) {
318
- delete command.labels['spinnaker-moniker-sequence'];
319
- }
320
- }
498
+ if (!command.regional) {
499
+ command.zone = serverGroup.zones[0];
500
+ command.source.zone = serverGroup.zones[0];
321
501
  }
322
502
 
323
- function populateAuthScopes(serviceAccounts, command) {
324
- if (serviceAccounts && serviceAccounts.length) {
325
- command.serviceAccountEmail = serviceAccounts[0].email;
326
- command.authScopes = _.map(serviceAccounts[0].scopes, (authScope) => {
327
- return authScope.replace('https://www.googleapis.com/auth/', '');
328
- });
329
- } else {
330
- command.authScopes = [];
331
- }
503
+ if (
504
+ application.attributes &&
505
+ application.attributes.platformHealthOnlyShowOverride &&
506
+ application.attributes.platformHealthOnly
507
+ ) {
508
+ command.interestingHealthProviderNames = ['Google'];
332
509
  }
333
510
 
334
- function attemptToSetValidCredentials(application, defaultCredentials, command) {
335
- return AccountService.listAccounts('gce').then(function (gceAccounts) {
336
- const gceAccountNames = _.map(gceAccounts, 'name');
337
- const firstGCEAccount = gceAccountNames[0];
338
-
339
- const defaultCredentialsAreValid = defaultCredentials && gceAccountNames.includes(defaultCredentials);
511
+ populateAutoHealingPolicy(serverGroup, command);
340
512
 
341
- command.credentials = defaultCredentialsAreValid ? defaultCredentials : firstGCEAccount || 'my-account-name';
513
+ if (serverGroup.launchConfig) {
514
+ const instanceType = serverGroup.launchConfig.instanceType;
515
+ Object.assign(command, {
516
+ instanceType: instanceType,
342
517
  });
343
- }
344
518
 
345
- function buildNewServerGroupCommand(application, defaults) {
346
- defaults = defaults || {};
347
-
348
- const defaultCredentials = defaults.account || GCEProviderSettings.defaults.account;
349
- const defaultRegion = defaults.region || GCEProviderSettings.defaults.region;
350
- const defaultZone = defaults.zone || GCEProviderSettings.defaults.zone;
351
- const associatePublicIpAddress = _.has(application, 'attributes.providerSettings.gce.associatePublicIpAddress')
352
- ? application.attributes.providerSettings.gce.associatePublicIpAddress
353
- : true;
354
-
355
- const command = {
356
- application: application.name,
357
- credentials: defaultCredentials,
358
- region: defaultRegion,
359
- zone: defaultZone,
360
- regional: false, // TODO(duftler): Externalize this default alongside defaultRegion and defaultZone.
361
- selectZones: false, // Explicitly select zones for regional server groups.
362
- distributionPolicy: { zones: [] },
363
- network: 'default',
364
- associatePublicIpAddress: associatePublicIpAddress,
365
- canIpForward: false,
366
- strategy: '',
367
- capacity: {
368
- min: 0,
369
- max: 0,
370
- desired: 1,
371
- },
372
- backendServiceMetadata: [],
373
- minCpuPlatform: '(Automatic)',
374
- disks: [
375
- { type: 'pd-ssd', sizeGb: 10 },
376
- { type: 'local-ssd', sizeGb: 375 },
377
- ],
378
- imageSource: 'priorStage',
379
- instanceMetadata: {},
380
- tags: [],
381
- labels: {},
382
- resourceManagerTags: {},
383
- partnerMetadata: {},
384
- enableSecureBoot: false,
385
- enableVtpm: false,
386
- enableIntegrityMonitoring: false,
387
- preemptible: false,
388
- automaticRestart: true,
389
- onHostMaintenance: 'MIGRATE',
390
- serviceAccountEmail: 'default',
391
- authScopes: ['cloud.useraccounts.readonly', 'devstorage.read_only', 'logging.write', 'monitoring.write'],
392
- enableTraffic: true,
393
- cloudProvider: 'gce',
394
- selectedProvider: 'gce',
395
- availabilityZones: [],
396
- viewState: {
397
- instanceProfile: 'custom',
398
- allImageSelection: null,
399
- useSimpleCapacity: true,
400
- usePreferredZones: true,
401
- listImplicitSecurityGroups: false,
402
- mode: defaults.mode || 'create',
403
- disableStrategySelection: true,
404
- expectedArtifacts: [],
405
- },
406
- };
407
-
408
- if (
409
- application.attributes &&
410
- application.attributes.platformHealthOnlyShowOverride &&
411
- application.attributes.platformHealthOnly
412
- ) {
413
- command.interestingHealthProviderNames = ['Google'];
519
+ if (_.includes(instanceType, 'custom-')) {
520
+ command.viewState.customInstance = gceCustomInstanceBuilderService.parseInstanceTypeString(instanceType);
521
+ command.viewState.instanceProfile = 'buildCustom';
414
522
  }
415
523
 
416
- return attemptToSetValidCredentials(application, defaultCredentials, command).then(() => command);
524
+ command.viewState.imageId = serverGroup.launchConfig.imageId;
525
+ return determineInstanceCategoryFromInstanceType(command).then(function () {
526
+ populateAvailabilityPolicies(serverGroup.launchConfig.instanceTemplate.properties.scheduling, command);
527
+ populateCustomMetadata(serverGroup.launchConfig.instanceTemplate.properties.metadata.items, command);
528
+ populateTags(serverGroup.launchConfig.instanceTemplate.properties.tags, command);
529
+ populateLabels(serverGroup.instanceTemplateLabels, command);
530
+ populateAuthScopes(serverGroup.launchConfig.instanceTemplate.properties.serviceAccounts, command);
531
+ populateResourceManagerTags(
532
+ serverGroup.launchConfig.instanceTemplate.properties.resourceManagerTags,
533
+ command,
534
+ );
535
+
536
+ return populateDisksFromExisting(serverGroup.launchConfig.instanceTemplate.properties.disks, command).then(
537
+ function () {
538
+ return command;
539
+ },
540
+ );
541
+ });
417
542
  }
418
543
 
419
- // Only used to prepare view requiring template selecting
420
- function buildNewServerGroupCommandForPipeline(currentStage, pipeline) {
421
- const expectedArtifacts = ExpectedArtifactService.getExpectedArtifactsAvailableToStage(currentStage, pipeline);
422
- return $q.when({
423
- viewState: {
544
+ return promiseService.resolve(command);
545
+ }
546
+
547
+ function buildServerGroupCommandFromPipeline(application, originalCluster, currentStage, pipeline) {
548
+ const pipelineCluster = _.cloneDeep(originalCluster);
549
+ const region = Object.keys(pipelineCluster.availabilityZones)[0];
550
+ const zone = pipelineCluster.zone;
551
+ const instanceTypeCategoryLoader = instanceTypeService.getCategoryForInstanceType(
552
+ 'gce',
553
+ pipelineCluster.instanceType,
554
+ );
555
+
556
+ const commandOptions = { account: pipelineCluster.account, region: region, zone: zone };
557
+ return promiseService
558
+ .all([buildNewServerGroupCommand(application, commandOptions), instanceTypeCategoryLoader])
559
+ .then(function ([command, instanceProfile]) {
560
+ const expectedArtifacts = ExpectedArtifactService.getExpectedArtifactsAvailableToStage(
561
+ currentStage,
562
+ pipeline,
563
+ );
564
+ const viewState = {
424
565
  pipeline,
425
- expectedArtifacts: expectedArtifacts,
426
- requiresTemplateSelection: true,
427
566
  stage: currentStage,
428
- },
429
- });
430
- }
431
-
432
- function buildServerGroupCommandFromExisting(application, serverGroup, mode) {
433
- mode = mode || 'clone';
434
- const moniker = serverGroup.moniker;
435
-
436
- const command = {
437
- application: application.name,
438
- autoscalingPolicy: _.cloneDeep(serverGroup.autoscalingPolicy),
439
- strategy: '',
440
- stack: moniker.stack,
441
- freeFormDetails: moniker.detail,
442
- credentials: serverGroup.account,
443
- loadBalancers: extractLoadBalancers(serverGroup.asg),
444
- loadBalancingPolicy: _.cloneDeep(serverGroup.loadBalancingPolicy),
445
- backendServiceMetadata: serverGroup.asg['backend-service-names'],
446
- securityGroups: serverGroup.securityGroups,
447
- region: serverGroup.region,
448
- capacity: {
449
- min: serverGroup.asg.minSize,
450
- max: serverGroup.asg.maxSize,
451
- desired: serverGroup.asg.desiredCapacity,
452
- },
453
- regional: serverGroup.regional,
454
- network: extractNetworkName(serverGroup),
455
- subnet: extractSubnetName(serverGroup),
456
- associatePublicIpAddress: determineAssociatePublicIPAddress(serverGroup),
457
- canIpForward: serverGroup.canIpForward,
458
- minCpuPlatform: serverGroup.launchConfig.minCpuPlatform || '(Automatic)',
459
- instanceMetadata: {},
460
- tags: [],
461
- labels: {},
462
- resourceManagerTags: {},
463
- partnerMetadata: {},
464
- availabilityZones: [],
465
- enableSecureBoot: serverGroup.enableSecureBoot,
466
- enableVtpm: serverGroup.enableVtpm,
467
- enableIntegrityMonitoring: serverGroup.enableIntegrityMonitoring,
468
- enableTraffic: true,
469
- cloudProvider: 'gce',
470
- selectedProvider: 'gce',
471
- distributionPolicy: {
472
- zones: serverGroup.distributionPolicy ? serverGroup.distributionPolicy.zones : [],
473
- targetShape: serverGroup.distributionPolicy ? serverGroup.distributionPolicy.targetShape : null,
474
- },
475
- selectZones: serverGroup.selectZones,
476
- source: {
477
- account: serverGroup.account,
478
- region: serverGroup.region,
479
- serverGroupName: serverGroup.name,
480
- asgName: serverGroup.name,
481
- },
482
- viewState: {
483
- allImageSelection: null,
484
- useSimpleCapacity: !serverGroup.autoscalingPolicy,
485
- usePreferredZones: false,
486
- listImplicitSecurityGroups: false,
487
- mode: mode,
488
- },
489
- };
490
-
491
- if (!command.regional) {
492
- command.zone = serverGroup.zones[0];
493
- command.source.zone = serverGroup.zones[0];
494
- }
495
-
496
- if (
497
- application.attributes &&
498
- application.attributes.platformHealthOnlyShowOverride &&
499
- application.attributes.platformHealthOnly
500
- ) {
501
- command.interestingHealthProviderNames = ['Google'];
502
- }
503
-
504
- populateAutoHealingPolicy(serverGroup, command);
505
-
506
- if (serverGroup.launchConfig) {
507
- const instanceType = serverGroup.launchConfig.instanceType;
508
- angular.extend(command, {
509
- instanceType: instanceType,
510
- });
511
-
512
- if (_.includes(instanceType, 'custom-')) {
513
- command.viewState.customInstance = gceCustomInstanceBuilderService.parseInstanceTypeString(instanceType);
514
- command.viewState.instanceProfile = 'buildCustom';
515
- }
516
-
517
- command.viewState.imageId = serverGroup.launchConfig.imageId;
518
- return determineInstanceCategoryFromInstanceType(command).then(function () {
519
- populateAvailabilityPolicies(serverGroup.launchConfig.instanceTemplate.properties.scheduling, command);
520
- populateCustomMetadata(serverGroup.launchConfig.instanceTemplate.properties.metadata.items, command);
521
- populateTags(serverGroup.launchConfig.instanceTemplate.properties.tags, command);
522
- populateLabels(serverGroup.instanceTemplateLabels, command);
523
- populateAuthScopes(serverGroup.launchConfig.instanceTemplate.properties.serviceAccounts, command);
524
- populateResourceManagerTags(
525
- serverGroup.launchConfig.instanceTemplate.properties.resourceManagerTags,
526
- command,
527
- );
528
- populatePartnerMetadata(serverGroup.launchConfig.instanceTemplate.properties.partnerMetadata, command);
529
-
530
- return populateDisksFromExisting(serverGroup.launchConfig.instanceTemplate.properties.disks, command).then(
531
- function () {
532
- return command;
533
- },
534
- );
535
- });
536
- }
537
-
538
- return $q.when(command);
539
- }
540
-
541
- function buildServerGroupCommandFromPipeline(application, originalCluster, currentStage, pipeline) {
542
- const pipelineCluster = _.cloneDeep(originalCluster);
543
- const region = Object.keys(pipelineCluster.availabilityZones)[0];
544
- const zone = pipelineCluster.zone;
545
- const instanceTypeCategoryLoader = instanceTypeService.getCategoryForInstanceType(
546
- 'gce',
547
- pipelineCluster.instanceType,
548
- );
549
-
550
- const commandOptions = { account: pipelineCluster.account, region: region, zone: zone };
551
- return $q
552
- .all([buildNewServerGroupCommand(application, commandOptions), instanceTypeCategoryLoader])
553
- .then(function ([command, instanceProfile]) {
554
- const expectedArtifacts = ExpectedArtifactService.getExpectedArtifactsAvailableToStage(
555
- currentStage,
556
- pipeline,
557
- );
558
- const viewState = {
559
- pipeline,
560
- stage: currentStage,
561
- instanceProfile,
562
- disableImageSelection: true,
563
- expectedArtifacts: expectedArtifacts,
564
- showImageSourceSelector: true,
565
- useSimpleCapacity: !pipelineCluster.autoscalingPolicy,
566
- mode: 'editPipeline',
567
- submitButtonLabel: 'Done',
568
- customInstance:
569
- instanceProfile === 'buildCustom'
570
- ? gceCustomInstanceBuilderService.parseInstanceTypeString(pipelineCluster.instanceType)
571
- : null,
572
- templatingEnabled: true,
573
- };
574
-
575
- const viewOverrides = {
576
- region: region,
577
- credentials: pipelineCluster.account,
578
- enableTraffic: !pipelineCluster.disableTraffic,
579
- viewState: viewState,
580
- };
581
-
582
- pipelineCluster.strategy = pipelineCluster.strategy || '';
583
-
584
- const extendedCommand = angular.extend({}, command, pipelineCluster, viewOverrides);
585
-
586
- return populateDisksFromPipeline(extendedCommand).then(function () {
587
- const instanceMetadata = extendedCommand.instanceMetadata;
588
- extendedCommand.loadBalancers = extractLoadBalancersFromMetadata(instanceMetadata);
589
- extendedCommand.backendServiceMetadata = instanceMetadata['backend-service-names']
590
- ? instanceMetadata['backend-service-names'].split(',')
591
- : [];
592
- extendedCommand.minCpuPlatform = pipelineCluster.minCpuPlatform || '(Automatic)';
593
- extendedCommand.instanceMetadata = {};
594
- populateCustomMetadata(instanceMetadata, extendedCommand);
595
- populateAutoHealingPolicy(pipelineCluster, extendedCommand);
596
- populateShieldedVmConfig(pipelineCluster, extendedCommand);
597
-
598
- const instanceTemplateTags = { items: extendedCommand.tags };
599
- extendedCommand.tags = [];
600
- populateTags(instanceTemplateTags, extendedCommand);
601
-
602
- const resourceManagerTags = extendedCommand.resourceManagerTags;
603
- populateResourceManagerTags(resourceManagerTags, extendedCommand);
604
-
605
- const partnerMetadata = extendedCommand.partnerMetadata;
606
- populatePartnerMetadata(partnerMetadata, extendedCommand);
607
-
608
- return extendedCommand;
609
- });
567
+ instanceProfile,
568
+ disableImageSelection: true,
569
+ expectedArtifacts: expectedArtifacts,
570
+ showImageSourceSelector: true,
571
+ useSimpleCapacity: !pipelineCluster.autoscalingPolicy,
572
+ mode: 'editPipeline',
573
+ submitButtonLabel: 'Done',
574
+ customInstance:
575
+ instanceProfile === 'buildCustom'
576
+ ? gceCustomInstanceBuilderService.parseInstanceTypeString(pipelineCluster.instanceType)
577
+ : null,
578
+ templatingEnabled: true,
579
+ };
580
+
581
+ const viewOverrides = {
582
+ region: region,
583
+ credentials: pipelineCluster.account,
584
+ enableTraffic: !pipelineCluster.disableTraffic,
585
+ viewState: viewState,
586
+ };
587
+
588
+ pipelineCluster.strategy = pipelineCluster.strategy || '';
589
+
590
+ const extendedCommand = Object.assign({}, command, pipelineCluster, viewOverrides);
591
+ // Older saved pipeline payloads may still include partnerMetadata. Do not propagate it
592
+ // into deploy/clone commands that eventually create stable Compute v1 instance templates.
593
+ delete extendedCommand.partnerMetadata;
594
+
595
+ return populateDisksFromPipeline(extendedCommand).then(function () {
596
+ const instanceMetadata = extendedCommand.instanceMetadata;
597
+ extendedCommand.loadBalancers = extractLoadBalancersFromMetadata(instanceMetadata);
598
+ extendedCommand.loadBalancerMetadata = extractLoadBalancerMetadata(instanceMetadata);
599
+ extendedCommand.backendServiceMetadata = instanceMetadata['backend-service-names']
600
+ ? instanceMetadata['backend-service-names'].split(',')
601
+ : [];
602
+ extendedCommand.minCpuPlatform = pipelineCluster.minCpuPlatform || '(Automatic)';
603
+ extendedCommand.instanceMetadata = {};
604
+ populateCustomMetadata(instanceMetadata, extendedCommand);
605
+ populateAutoHealingPolicy(pipelineCluster, extendedCommand);
606
+ populateShieldedVmConfig(pipelineCluster, extendedCommand);
607
+
608
+ const instanceTemplateTags = { items: extendedCommand.tags };
609
+ extendedCommand.tags = [];
610
+ populateTags(instanceTemplateTags, extendedCommand);
611
+
612
+ const resourceManagerTags = extendedCommand.resourceManagerTags;
613
+ populateResourceManagerTags(resourceManagerTags, extendedCommand);
614
+
615
+ return extendedCommand;
610
616
  });
611
- }
612
-
613
- return {
614
- buildNewServerGroupCommand: buildNewServerGroupCommand,
615
- buildNewServerGroupCommandForPipeline: buildNewServerGroupCommandForPipeline,
616
- buildServerGroupCommandFromExisting: buildServerGroupCommandFromExisting,
617
- buildServerGroupCommandFromPipeline: buildServerGroupCommandFromPipeline,
618
- };
619
- },
620
- ]);
617
+ });
618
+ }
619
+
620
+ return {
621
+ buildNewServerGroupCommand: buildNewServerGroupCommand,
622
+ buildNewServerGroupCommandForPipeline: buildNewServerGroupCommandForPipeline,
623
+ buildServerGroupCommandFromExisting: buildServerGroupCommandFromExisting,
624
+ buildServerGroupCommandFromPipeline: buildServerGroupCommandFromPipeline,
625
+ };
626
+ }
627
+ }