@spinnaker/azure 2026.2.3 → 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 (215) hide show
  1. package/dist/azure.module.d.ts +3 -1
  2. package/dist/image/image.reader.d.ts +4 -2
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/instance/azureInstanceType.service.d.ts +6 -2
  6. package/dist/instance/details/AzureInstanceDetails.d.ts +67 -0
  7. package/dist/loadBalancer/configure/AzureLoadBalancerChoiceModal.d.ts +10 -5
  8. package/dist/loadBalancer/configure/AzureLoadBalancerModal.d.ts +102 -0
  9. package/dist/loadBalancer/details/azureLoadBalancerDetails.d.ts +26 -0
  10. package/dist/loadBalancer/loadBalancer.transformer.d.ts +45 -2
  11. package/dist/pipeline/stages/AzureAccountRegionClusterSelector.d.ts +32 -0
  12. package/dist/pipeline/stages/bake/azureBakeStage.d.ts +46 -2
  13. package/dist/pipeline/stages/destroyAsg/azureDestroyAsgStage.d.ts +14 -2
  14. package/dist/pipeline/stages/disableAsg/azureDisableAsgStage.d.ts +4 -2
  15. package/dist/pipeline/stages/enableAsg/azureEnableAsgStage.d.ts +4 -2
  16. package/dist/securityGroup/configure/AzureSecurityGroupModal.d.ts +70 -0
  17. package/dist/securityGroup/details/AzureSecurityGroupDetails.d.ts +51 -0
  18. package/dist/securityGroup/securityGroup.reader.d.ts +3 -2
  19. package/dist/securityGroup/securityGroup.transformer.d.ts +3 -2
  20. package/dist/securityGroup/securityGroup.write.service.d.ts +9 -2
  21. package/dist/serverGroup/configure/serverGroupCommandBuilder.service.d.ts +88 -2
  22. package/dist/serverGroup/configure/serverGroupConfiguration.service.d.ts +30 -2
  23. package/dist/serverGroup/configure/wizard/AzureCloneServerGroupModal.d.ts +44 -0
  24. package/dist/serverGroup/configure/wizard/pages/ServerGroupAdvancedSettings.d.ts +8 -0
  25. package/dist/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.d.ts +12 -0
  26. package/dist/serverGroup/configure/wizard/pages/ServerGroupCapacityAndZones.d.ts +11 -0
  27. package/dist/serverGroup/configure/wizard/pages/ServerGroupHealthSettings.d.ts +10 -0
  28. package/dist/serverGroup/configure/wizard/pages/ServerGroupImageSettings.d.ts +12 -0
  29. package/dist/serverGroup/configure/wizard/pages/ServerGroupInstanceType.d.ts +9 -0
  30. package/dist/serverGroup/configure/wizard/pages/ServerGroupLoadBalancers.d.ts +14 -0
  31. package/dist/serverGroup/configure/wizard/pages/ServerGroupNetworkSettings.d.ts +10 -0
  32. package/dist/serverGroup/configure/wizard/pages/ServerGroupSecurityGroups.d.ts +6 -0
  33. package/dist/serverGroup/configure/wizard/pages/ServerGroupTags.d.ts +9 -0
  34. package/dist/serverGroup/configure/wizard/pages/common.d.ts +14 -0
  35. package/dist/serverGroup/configure/wizard/pages/index.d.ts +10 -0
  36. package/dist/serverGroup/details/azureServerGroupDetails.d.ts +13 -0
  37. package/dist/serverGroup/details/rollback/RollbackServerGroupModal.d.ts +6 -4
  38. package/dist/serverGroup/serverGroup.transformer.d.ts +61 -2
  39. package/dist/validation/applicationName.validator.d.ts +6 -2
  40. package/package.json +5 -8
  41. package/src/azure.module.spec.ts +921 -0
  42. package/src/azure.module.ts +56 -68
  43. package/src/image/image.reader.js +4 -15
  44. package/src/image/image.reader.spec.js +4 -7
  45. package/src/instance/azureInstanceType.service.js +8 -16
  46. package/src/instance/azureInstanceType.service.spec.js +5 -13
  47. package/src/instance/details/AzureInstanceDetails.spec.tsx +364 -0
  48. package/src/instance/details/AzureInstanceDetails.tsx +533 -0
  49. package/src/loadBalancer/configure/AzureLoadBalancerChoiceModal.spec.tsx +125 -0
  50. package/src/loadBalancer/configure/AzureLoadBalancerChoiceModal.tsx +46 -26
  51. package/src/loadBalancer/configure/AzureLoadBalancerModal.spec.tsx +658 -0
  52. package/src/loadBalancer/configure/AzureLoadBalancerModal.tsx +960 -0
  53. package/src/loadBalancer/details/azureLoadBalancerDetails.spec.tsx +470 -0
  54. package/src/loadBalancer/details/azureLoadBalancerDetails.tsx +412 -0
  55. package/src/loadBalancer/loadBalancer.transformer.js +83 -93
  56. package/src/pipeline/stages/AzureAccountRegionClusterSelector.tsx +238 -0
  57. package/src/pipeline/stages/bake/azureBakeStage.tsx +723 -0
  58. package/src/pipeline/stages/destroyAsg/azureDestroyAsgStage.tsx +128 -0
  59. package/src/pipeline/stages/disableAsg/azureDisableAsgStage.tsx +92 -0
  60. package/src/pipeline/stages/enableAsg/azureEnableAsgStage.tsx +87 -0
  61. package/src/routerConsumers.spec.tsx +69 -0
  62. package/src/securityGroup/configure/AzureSecurityGroupModal.spec.tsx +558 -0
  63. package/src/securityGroup/configure/AzureSecurityGroupModal.tsx +782 -0
  64. package/src/securityGroup/details/AzureSecurityGroupDetails.spec.tsx +291 -0
  65. package/src/securityGroup/details/AzureSecurityGroupDetails.tsx +354 -0
  66. package/src/securityGroup/securityGroup.reader.js +3 -13
  67. package/src/securityGroup/securityGroup.transformer.js +3 -13
  68. package/src/securityGroup/securityGroup.write.service.spec.ts +105 -0
  69. package/src/securityGroup/securityGroup.write.service.ts +73 -0
  70. package/src/serverGroup/configure/serverGroupCommandBuilder.service.js +167 -166
  71. package/src/serverGroup/configure/serverGroupCommandBuilder.service.spec.js +63 -0
  72. package/src/serverGroup/configure/serverGroupConfiguration.service.js +325 -309
  73. package/src/serverGroup/configure/serverGroupConfiguration.service.spec.js +57 -53
  74. package/src/serverGroup/configure/wizard/AzureCloneServerGroupModal.spec.tsx +758 -0
  75. package/src/serverGroup/configure/wizard/AzureCloneServerGroupModal.tsx +349 -0
  76. package/src/serverGroup/configure/wizard/pages/ServerGroupAdvancedSettings.tsx +208 -0
  77. package/src/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.tsx +122 -0
  78. package/src/serverGroup/configure/wizard/pages/ServerGroupCapacityAndZones.tsx +80 -0
  79. package/src/serverGroup/configure/wizard/pages/ServerGroupHealthSettings.tsx +97 -0
  80. package/src/serverGroup/configure/wizard/pages/ServerGroupImageSettings.tsx +151 -0
  81. package/src/serverGroup/configure/wizard/pages/ServerGroupInstanceType.tsx +41 -0
  82. package/src/serverGroup/configure/wizard/pages/ServerGroupLoadBalancers.tsx +214 -0
  83. package/src/serverGroup/configure/wizard/pages/ServerGroupNetworkSettings.tsx +119 -0
  84. package/src/serverGroup/configure/wizard/pages/ServerGroupSecurityGroups.tsx +54 -0
  85. package/src/serverGroup/configure/wizard/pages/ServerGroupTags.tsx +40 -0
  86. package/src/serverGroup/configure/wizard/pages/common.tsx +72 -0
  87. package/src/serverGroup/configure/wizard/pages/index.ts +10 -0
  88. package/src/serverGroup/details/azureServerGroupDetails.spec.tsx +263 -0
  89. package/src/serverGroup/details/azureServerGroupDetails.tsx +318 -0
  90. package/src/serverGroup/details/rollback/RollbackServerGroupModal.tsx +24 -30
  91. package/src/serverGroup/serverGroup.transformer.js +11 -19
  92. package/src/serverGroup/serverGroup.transformer.spec.js +2 -6
  93. package/src/validation/applicationName.validator.js +14 -29
  94. package/dist/instance/details/instance.details.controller.d.ts +0 -2
  95. package/dist/loadBalancer/configure/createLoadBalancer.controller.d.ts +0 -2
  96. package/dist/loadBalancer/details/loadBalancerDetail.controller.d.ts +0 -2
  97. package/dist/pipeline/stages/bake/bakeExecutionDetails.controller.d.ts +0 -2
  98. package/dist/securityGroup/clone/cloneSecurityGroup.controller.d.ts +0 -2
  99. package/dist/securityGroup/configure/CreateSecurityGroupCtrl.d.ts +0 -2
  100. package/dist/securityGroup/configure/EditSecurityGroupCtrl.d.ts +0 -2
  101. package/dist/securityGroup/details/securityGroupDetail.controller.d.ts +0 -2
  102. package/dist/serverGroup/configure/serverGroup.configure.azure.module.d.ts +0 -2
  103. package/dist/serverGroup/configure/wizard/CloneServerGroup.azure.controller.d.ts +0 -2
  104. package/dist/serverGroup/configure/wizard/ServerGroupInstanceArchetype.controller.d.ts +0 -2
  105. package/dist/serverGroup/configure/wizard/ServerGroupInstanceType.controller.d.ts +0 -2
  106. package/dist/serverGroup/configure/wizard/advancedSettings/ServerGroupAdvancedSettings.controller.d.ts +0 -2
  107. package/dist/serverGroup/configure/wizard/advancedSettings/advancedSettingsSelector.directive.d.ts +0 -2
  108. package/dist/serverGroup/configure/wizard/basicSettings/ServerGroupBasicSettings.controller.d.ts +0 -2
  109. package/dist/serverGroup/configure/wizard/basicSettings/image.regional.filter.d.ts +0 -2
  110. package/dist/serverGroup/configure/wizard/capacity/capacitySelector.directive.d.ts +0 -2
  111. package/dist/serverGroup/configure/wizard/healthSettings/ServerGroupHealthSettings.controller.d.ts +0 -2
  112. package/dist/serverGroup/configure/wizard/healthSettings/healthSettingsSelector.directive.d.ts +0 -2
  113. package/dist/serverGroup/configure/wizard/image/ServerGroupImageSettings.controller.d.ts +0 -2
  114. package/dist/serverGroup/configure/wizard/image/imageSettingsSelector.directive.d.ts +0 -2
  115. package/dist/serverGroup/configure/wizard/loadBalancers/ServerGroupLoadBalancers.controller.d.ts +0 -2
  116. package/dist/serverGroup/configure/wizard/loadBalancers/serverGroupLoadBalancersSelector.directive.d.ts +0 -2
  117. package/dist/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettings.controller.d.ts +0 -2
  118. package/dist/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettingsSelector.directive.d.ts +0 -2
  119. package/dist/serverGroup/configure/wizard/securityGroup/ServerGroupSecurityGroups.controller.d.ts +0 -2
  120. package/dist/serverGroup/configure/wizard/securityGroup/serverGroupSecurityGroupsSelector.directive.d.ts +0 -2
  121. package/dist/serverGroup/configure/wizard/tags/tagsSelector.directive.d.ts +0 -2
  122. package/dist/serverGroup/configure/wizard/zones/zoneSelector.directive.d.ts +0 -2
  123. package/dist/serverGroup/details/serverGroup.details.module.d.ts +0 -2
  124. package/dist/serverGroup/details/serverGroupDetails.azure.controller.d.ts +0 -2
  125. package/src/instance/details/instance.details.controller.js +0 -371
  126. package/src/instance/details/instance.details.controller.spec.js +0 -129
  127. package/src/instance/details/instanceDetails.html +0 -43
  128. package/src/loadBalancer/configure/advancedSettings.html +0 -95
  129. package/src/loadBalancer/configure/createLoadBalancer.controller.js +0 -275
  130. package/src/loadBalancer/configure/createLoadBalancer.controller.spec.js +0 -39
  131. package/src/loadBalancer/configure/createLoadBalancer.html +0 -25
  132. package/src/loadBalancer/configure/createLoadBalancerProperties.html +0 -128
  133. package/src/loadBalancer/configure/editLoadBalancer.html +0 -26
  134. package/src/loadBalancer/configure/healthCheck.html +0 -74
  135. package/src/loadBalancer/configure/listeners.html +0 -50
  136. package/src/loadBalancer/details/loadBalancerDetail.controller.js +0 -181
  137. package/src/loadBalancer/details/loadBalancerDetail.controller.spec.js +0 -39
  138. package/src/loadBalancer/details/loadBalancerDetail.html +0 -128
  139. package/src/pipeline/stages/bake/azureBakeStage.js +0 -276
  140. package/src/pipeline/stages/bake/bakeExecutionDetails.controller.js +0 -40
  141. package/src/pipeline/stages/bake/bakeExecutionDetails.html +0 -50
  142. package/src/pipeline/stages/bake/bakeStage.html +0 -187
  143. package/src/pipeline/stages/destroyAsg/azureDestroyAsgStage.js +0 -73
  144. package/src/pipeline/stages/destroyAsg/destroyAsgStage.html +0 -9
  145. package/src/pipeline/stages/destroyAsg/destroyAsgStepLabel.html +0 -1
  146. package/src/pipeline/stages/disableAsg/azureDisableAsgStage.js +0 -65
  147. package/src/pipeline/stages/disableAsg/disableAsgStage.html +0 -11
  148. package/src/pipeline/stages/disableAsg/disableAsgStepLabel.html +0 -1
  149. package/src/pipeline/stages/enableAsg/azureEnableAsgStage.js +0 -70
  150. package/src/pipeline/stages/enableAsg/enableAsgStage.html +0 -11
  151. package/src/pipeline/stages/enableAsg/enableAsgStepLabel.html +0 -1
  152. package/src/securityGroup/clone/cloneSecurityGroup.controller.js +0 -162
  153. package/src/securityGroup/clone/cloneSecurityGroup.html +0 -8
  154. package/src/securityGroup/configure/CreateSecurityGroup.controller.spec.js +0 -78
  155. package/src/securityGroup/configure/CreateSecurityGroupCtrl.js +0 -265
  156. package/src/securityGroup/configure/EditSecurityGroupCtrl.js +0 -222
  157. package/src/securityGroup/configure/configSecurityGroup.mixin.controller.js +0 -262
  158. package/src/securityGroup/configure/createSecurityGroup.html +0 -20
  159. package/src/securityGroup/configure/createSecurityGroupIngress.html +0 -75
  160. package/src/securityGroup/configure/createSecurityGroupProperties.html +0 -88
  161. package/src/securityGroup/configure/editSecurityGroup.html +0 -19
  162. package/src/securityGroup/details/securityGroupDetail.controller.js +0 -142
  163. package/src/securityGroup/details/securityGroupDetail.html +0 -78
  164. package/src/securityGroup/securityGroup.write.service.js +0 -57
  165. package/src/serverGroup/configure/serverGroup.configure.azure.module.js +0 -47
  166. package/src/serverGroup/configure/wizard/CloneServerGroup.azure.controller.js +0 -247
  167. package/src/serverGroup/configure/wizard/ServerGroupInstanceArchetype.controller.js +0 -35
  168. package/src/serverGroup/configure/wizard/ServerGroupInstanceType.controller.js +0 -15
  169. package/src/serverGroup/configure/wizard/advancedSettings/ServerGroupAdvancedSettings.controller.js +0 -25
  170. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.html +0 -5
  171. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettingsSelector.directive.html +0 -138
  172. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettingsSelector.directive.js +0 -43
  173. package/src/serverGroup/configure/wizard/basicSettings/ServerGroupBasicSettings.controller.js +0 -71
  174. package/src/serverGroup/configure/wizard/basicSettings/basicSettings.html +0 -131
  175. package/src/serverGroup/configure/wizard/basicSettings/image.regional.filter.js +0 -15
  176. package/src/serverGroup/configure/wizard/basicSettings/image.regional.filter.spec.js +0 -42
  177. package/src/serverGroup/configure/wizard/capacity/capacity.html +0 -5
  178. package/src/serverGroup/configure/wizard/capacity/capacitySelector.directive.html +0 -20
  179. package/src/serverGroup/configure/wizard/capacity/capacitySelector.directive.js +0 -21
  180. package/src/serverGroup/configure/wizard/capacity/zones.html +0 -5
  181. package/src/serverGroup/configure/wizard/healthSettings/ServerGroupHealthSettings.controller.js +0 -38
  182. package/src/serverGroup/configure/wizard/healthSettings/healthSettings.html +0 -5
  183. package/src/serverGroup/configure/wizard/healthSettings/healthSettingsSelector.directive.html +0 -32
  184. package/src/serverGroup/configure/wizard/healthSettings/healthSettingsSelector.directive.js +0 -22
  185. package/src/serverGroup/configure/wizard/image/ServerGroupImageSettings.controller.js +0 -34
  186. package/src/serverGroup/configure/wizard/image/imageSettings.html +0 -5
  187. package/src/serverGroup/configure/wizard/image/imageSettingsSelector.directive.html +0 -33
  188. package/src/serverGroup/configure/wizard/image/imageSettingsSelector.directive.js +0 -22
  189. package/src/serverGroup/configure/wizard/instanceArchetype.html +0 -33
  190. package/src/serverGroup/configure/wizard/instanceType/instanceType.html +0 -10
  191. package/src/serverGroup/configure/wizard/instanceType.html +0 -33
  192. package/src/serverGroup/configure/wizard/loadBalancers/ServerGroupLoadBalancers.controller.js +0 -137
  193. package/src/serverGroup/configure/wizard/loadBalancers/loadBalancers.html +0 -3
  194. package/src/serverGroup/configure/wizard/loadBalancers/serverGroupLoadBalancersSelector.directive.html +0 -41
  195. package/src/serverGroup/configure/wizard/loadBalancers/serverGroupLoadBalancersSelector.directive.js +0 -22
  196. package/src/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettings.controller.js +0 -44
  197. package/src/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettingsSelector.directive.html +0 -54
  198. package/src/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettingsSelector.directive.js +0 -19
  199. package/src/serverGroup/configure/wizard/networkSettings/networkSettings.html +0 -3
  200. package/src/serverGroup/configure/wizard/securityGroup/ServerGroupSecurityGroups.controller.js +0 -28
  201. package/src/serverGroup/configure/wizard/securityGroup/securityGroups.html +0 -3
  202. package/src/serverGroup/configure/wizard/securityGroup/serverGroupSecurityGroupsSelector.directive.html +0 -40
  203. package/src/serverGroup/configure/wizard/securityGroup/serverGroupSecurityGroupsSelector.directive.js +0 -38
  204. package/src/serverGroup/configure/wizard/serverGroupWizard.html +0 -61
  205. package/src/serverGroup/configure/wizard/tags/tags.html +0 -5
  206. package/src/serverGroup/configure/wizard/tags/tagsSelector.directive.html +0 -16
  207. package/src/serverGroup/configure/wizard/tags/tagsSelector.directive.js +0 -30
  208. package/src/serverGroup/configure/wizard/templateSelection.html +0 -9
  209. package/src/serverGroup/configure/wizard/zones/zoneSelector.directive.html +0 -21
  210. package/src/serverGroup/configure/wizard/zones/zoneSelector.directive.js +0 -28
  211. package/src/serverGroup/details/serverGroup.details.module.js +0 -11
  212. package/src/serverGroup/details/serverGroupDetails.azure.controller.js +0 -260
  213. package/src/serverGroup/details/serverGroupDetails.html +0 -98
  214. package/src/subnet/subnetSelectField.directive.html +0 -28
  215. package/src/subnet/subnetSelectField.directive.js +0 -35
@@ -1,357 +1,373 @@
1
- 'use strict';
2
-
3
- import * as angular from 'angular';
4
1
  import _ from 'lodash';
5
2
 
6
- import {
7
- AccountService,
8
- CACHE_INITIALIZER_SERVICE,
9
- LOAD_BALANCER_READ_SERVICE,
10
- SECURITY_GROUP_READER,
11
- } from '@spinnaker/core';
12
- import { AZURE_IMAGE_IMAGE_READER } from '../../image/image.reader';
13
- import { AZURE_INSTANCE_AZUREINSTANCETYPE_SERVICE } from '../../instance/azureInstanceType.service';
14
-
15
- export const AZURE_SERVERGROUP_CONFIGURE_SERVERGROUPCONFIGURATION_SERVICE =
16
- 'spinnaker.azure.serverGroup.configure.service';
17
- export const name = AZURE_SERVERGROUP_CONFIGURE_SERVERGROUPCONFIGURATION_SERVICE; // for backwards compatibility
18
- angular
19
- .module(AZURE_SERVERGROUP_CONFIGURE_SERVERGROUPCONFIGURATION_SERVICE, [
20
- AZURE_IMAGE_IMAGE_READER,
21
- LOAD_BALANCER_READ_SERVICE,
22
- SECURITY_GROUP_READER,
23
- CACHE_INITIALIZER_SERVICE,
24
- AZURE_INSTANCE_AZUREINSTANCETYPE_SERVICE,
25
- ])
26
- .factory('azureServerGroupConfigurationService', [
27
- '$q',
28
- 'azureImageReader',
29
- 'securityGroupReader',
30
- 'cacheInitializer',
31
- 'loadBalancerReader',
32
- 'azureInstanceTypeService',
33
- function (
34
- $q,
35
- azureImageReader,
36
- securityGroupReader,
37
- cacheInitializer,
38
- loadBalancerReader,
39
- azureInstanceTypeService,
40
- ) {
41
- const dataDiskTypes = ['Standard_LRS', 'StandardSSD_LRS', 'Premium_LRS'];
42
- const dataDiskCachingTypes = ['None', 'ReadOnly', 'ReadWrite'];
43
-
44
- const healthCheckTypes = ['EC2', 'ELB'];
45
- const terminationPolicies = [
46
- 'OldestInstance',
47
- 'NewestInstance',
48
- 'OldestLaunchConfiguration',
49
- 'ClosestToNextInstanceHour',
50
- 'Default',
51
- ];
52
-
53
- function configureUpdateCommand(command) {
3
+ import { AccountService } from '@spinnaker/core';
4
+ import { AzureInstanceTypeService } from '../../instance/azureInstanceType.service';
5
+
6
+ export class AzureServerGroupConfigurationService {
7
+ static requiresDeckRuntimeServices = true;
8
+
9
+ constructor(promiseService, runtimeServices) {
10
+ this.promiseService = promiseService;
11
+ this.azureInstanceTypeService = new AzureInstanceTypeService(promiseService);
12
+ this.cacheInitializer = runtimeServices.cacheInitializer;
13
+ this.loadBalancerReader = runtimeServices.loadBalancerReader;
14
+ this.securityGroupReader = runtimeServices.securityGroupReader;
15
+ }
16
+
17
+ createDelegate() {
18
+ const all = (values) => this.promiseService.all(values);
19
+ const azureInstanceTypeService = this.azureInstanceTypeService;
20
+ const cacheInitializer = this.cacheInitializer;
21
+ const loadBalancerReader = this.loadBalancerReader;
22
+ const securityGroupReader = this.securityGroupReader;
23
+ const dataDiskTypes = ['Standard_LRS', 'StandardSSD_LRS', 'Premium_LRS'];
24
+ const dataDiskCachingTypes = ['None', 'ReadOnly', 'ReadWrite'];
25
+
26
+ const healthCheckTypes = ['EC2', 'ELB'];
27
+ const terminationPolicies = [
28
+ 'OldestInstance',
29
+ 'NewestInstance',
30
+ 'OldestLaunchConfiguration',
31
+ 'ClosestToNextInstanceHour',
32
+ 'Default',
33
+ ];
34
+
35
+ function configureUpdateCommand(command) {
36
+ command.backingData = {
37
+ healthCheckTypes: _.cloneDeep(healthCheckTypes),
38
+ terminationPolicies: _.cloneDeep(terminationPolicies),
39
+ };
40
+ }
41
+
42
+ function configureCommand(application, command) {
43
+ return all([
44
+ AccountService.getCredentialsKeyedByAccount('azure'),
45
+ securityGroupReader.loadSecurityGroups(),
46
+ loadBalancerReader.loadLoadBalancers(application.name),
47
+ ]).then(function ([credentialsKeyedByAccount, securityGroups, loadBalancers]) {
54
48
  command.backingData = {
55
- healthCheckTypes: angular.copy(healthCheckTypes),
56
- terminationPolicies: angular.copy(terminationPolicies),
49
+ credentialsKeyedByAccount,
50
+ securityGroups,
51
+ loadBalancers,
52
+ dataDiskTypes: _.cloneDeep(dataDiskTypes),
53
+ dataDiskCachingTypes: _.cloneDeep(dataDiskCachingTypes),
54
+ accounts: _.keys(credentialsKeyedByAccount),
55
+ filtered: {},
57
56
  };
58
- }
59
-
60
- function configureCommand(application, command) {
61
- return $q
62
- .all([
63
- AccountService.getCredentialsKeyedByAccount('azure'),
64
- securityGroupReader.loadSecurityGroups(),
65
- loadBalancerReader.loadLoadBalancers(application.name),
66
- ])
67
- .then(function ([credentialsKeyedByAccount, securityGroups, loadBalancers]) {
68
- command.backingData = {
69
- credentialsKeyedByAccount,
70
- securityGroups,
71
- loadBalancers,
72
- dataDiskTypes: angular.copy(dataDiskTypes),
73
- dataDiskCachingTypes: angular.copy(dataDiskCachingTypes),
74
- accounts: _.keys(credentialsKeyedByAccount),
75
- filtered: {},
76
- };
77
- attachEventHandlers(command);
78
- });
79
- }
57
+ attachEventHandlers(command);
58
+ });
59
+ }
80
60
 
81
- function configureInstanceTypes(command) {
82
- const result = {
83
- dirty: {},
84
- };
85
- if (command.region) {
86
- const results = [result.dirty];
61
+ function configureInstanceTypes(command) {
62
+ const result = {
63
+ dirty: {},
64
+ };
65
+ if (command.region) {
66
+ const results = [result.dirty];
87
67
 
88
- // results.push(configureCustomInstanceTypes(command).dirty);
89
- results.push(configureStandardInstanceTypes(command).dirty);
68
+ // results.push(configureCustomInstanceTypes(command).dirty);
69
+ results.push(configureStandardInstanceTypes(command).dirty);
90
70
 
91
- angular.extend(...results);
92
- } else {
93
- command.backingData.filtered.instanceTypes = [];
94
- }
95
- return result;
71
+ _.extend(...results);
72
+ } else {
73
+ command.backingData.filtered.instanceTypes = [];
96
74
  }
75
+ return result;
76
+ }
97
77
 
98
- function configureStandardInstanceTypes(command) {
99
- const c = command;
100
- const result = {
101
- dirty: {},
102
- };
78
+ function configureStandardInstanceTypes(command) {
79
+ const c = command;
80
+ const result = {
81
+ dirty: {},
82
+ };
103
83
 
104
- const locations = [c.region];
105
- const { credentialsKeyedByAccount } = c.backingData;
106
- const { locationToInstanceTypesMap } = credentialsKeyedByAccount[c.credentials];
84
+ const locations = [c.region];
85
+ const { credentialsKeyedByAccount } = c.backingData;
86
+ const { locationToInstanceTypesMap } = credentialsKeyedByAccount[c.credentials];
107
87
 
108
- if (locations.every((l) => !l)) {
109
- return result;
110
- }
88
+ if (locations.every((l) => !l)) {
89
+ return result;
90
+ }
111
91
 
112
- const filtered = azureInstanceTypeService
113
- .getAvailableTypesForRegions(locationToInstanceTypesMap, locations)
114
- .map((type) => type.name);
92
+ const filtered = azureInstanceTypeService
93
+ .getAvailableTypesForRegions(locationToInstanceTypesMap, locations)
94
+ .map((type) => type.name);
115
95
 
116
- const instanceType = c.instanceType;
117
- if (_.every([instanceType, !_.startsWith(instanceType, 'custom'), !_.includes(filtered, instanceType)])) {
118
- result.dirty.instanceType = c.instanceType;
119
- c.instanceType = null;
120
- }
121
- c.backingData.filtered.instanceTypes = filtered;
122
- return result;
96
+ const instanceType = c.instanceType;
97
+ if (_.every([instanceType, !_.startsWith(instanceType, 'custom'), !_.includes(filtered, instanceType)])) {
98
+ result.dirty.instanceType = c.instanceType;
99
+ c.instanceType = null;
123
100
  }
101
+ c.backingData.filtered.instanceTypes = filtered;
102
+ return result;
103
+ }
124
104
 
125
- function configureImages(command) {
126
- const result = {
127
- dirty: {},
128
- };
129
- let regionalImages = null;
130
- if (command.viewState.disableImageSelection) {
131
- return result;
132
- }
133
- if (command.region) {
134
- regionalImages = command.backingData.packageImages
135
- .filter(function (image) {
136
- return image.amis && image.amis[command.region];
137
- })
138
- .map(function (image) {
139
- return {
140
- imageName: image.imageName,
141
- ami: image.amis ? image.amis[command.region][0] : null,
142
- };
143
- });
144
- if (
145
- command.amiName &&
146
- !regionalImages.some(function (image) {
147
- return image.imageName === command.amiName;
148
- })
149
- ) {
150
- result.dirty.amiName = true;
151
- command.amiName = null;
152
- }
153
- } else {
105
+ function configureImages(command) {
106
+ const result = {
107
+ dirty: {},
108
+ };
109
+ let regionalImages = null;
110
+ const clearSelectedImage = function () {
111
+ if (command.amiName) {
112
+ result.dirty.amiName = true;
154
113
  command.amiName = null;
155
114
  }
156
- command.backingData.filtered.images = regionalImages;
115
+ if (command.imageName) {
116
+ result.dirty.imageName = true;
117
+ command.imageName = null;
118
+ }
119
+ if (command.selectedImage) {
120
+ result.dirty.selectedImage = true;
121
+ command.selectedImage = null;
122
+ }
123
+ };
124
+ if (command.viewState.disableImageSelection) {
157
125
  return result;
158
126
  }
159
-
160
- function configureZones(command) {
161
- const result = { dirty: {} };
162
- const filteredData = command.backingData.filtered;
163
- if (!command.region) {
164
- return result;
127
+ if (command.region) {
128
+ regionalImages = (command.backingData.packageImages || command.images || [])
129
+ .filter(function (image) {
130
+ return image.amis && image.amis[command.region];
131
+ })
132
+ .map(function (image) {
133
+ return {
134
+ imageName: image.imageName,
135
+ ami: image.amis ? image.amis[command.region][0] : null,
136
+ };
137
+ });
138
+ const selectedImageName =
139
+ command.imageName || (command.selectedImage && command.selectedImage.imageName) || command.amiName;
140
+ const selectedRegionalImage = regionalImages.find(function (image) {
141
+ return image.imageName === selectedImageName;
142
+ });
143
+ if (selectedImageName && !selectedRegionalImage) {
144
+ clearSelectedImage();
145
+ } else if (selectedRegionalImage && !command.image?.isCustom) {
146
+ command.imageName = selectedRegionalImage.imageName;
147
+ command.selectedImage = selectedRegionalImage;
165
148
  }
166
- let { regionsSupportZones, availabilityZones } = command.backingData.credentialsKeyedByAccount[
167
- command.credentials
168
- ];
169
- regionsSupportZones = regionsSupportZones || [];
170
- availabilityZones = availabilityZones || [];
171
- filteredData.zones = regionsSupportZones.includes(command.region) ? availabilityZones : [];
172
-
149
+ } else {
150
+ clearSelectedImage();
151
+ }
152
+ command.backingData.filtered.images = regionalImages;
153
+ return result;
154
+ }
155
+
156
+ function configureZones(command) {
157
+ const result = { dirty: {} };
158
+ const filteredData = command.backingData.filtered;
159
+ if (!command.region) {
173
160
  return result;
174
161
  }
162
+ let { regionsSupportZones, availabilityZones } = command.backingData.credentialsKeyedByAccount[
163
+ command.credentials
164
+ ];
165
+ regionsSupportZones = regionsSupportZones || [];
166
+ availabilityZones = availabilityZones || [];
167
+ filteredData.zones = regionsSupportZones.includes(command.region) ? availabilityZones : [];
175
168
 
176
- function getRegionalSecurityGroups(command) {
177
- const newSecurityGroups = command.backingData.securityGroups[command.credentials] || {
178
- azure: {},
179
- };
180
- return _.chain(newSecurityGroups[command.region]).sortBy('name').value();
181
- }
169
+ return result;
170
+ }
182
171
 
183
- function configureSecurityGroupOptions(command) {
184
- const result = {
185
- dirty: {},
186
- };
187
- let currentOptions;
188
- if (command.backingData.filtered.securityGroups) {
189
- currentOptions = command.backingData.filtered.securityGroups;
190
- }
191
- const newRegionalSecurityGroups = getRegionalSecurityGroups(command);
192
- if (command.selectedSecurityGroup) {
193
- // one has not been previously selected. We are either configuring for the
194
- //first time or they changed regions or account
195
- command.selectedSecurityGroup = null;
196
- result.dirty.securityGroups = true;
197
- }
198
- if (currentOptions != newRegionalSecurityGroups) {
199
- command.backingData.filtered.securityGroups = newRegionalSecurityGroups;
200
- result.dirty.securityGroups = true;
201
- }
202
-
203
- if (command.backingData.filtered.securityGroups.length === 0) {
204
- command.viewState.securityGroupsConfigured = false;
205
- } else {
206
- command.viewState.securityGroupsConfigured = true;
207
- }
172
+ function getRegionalSecurityGroups(command) {
173
+ const newSecurityGroups = command.backingData.securityGroups[command.credentials] || {
174
+ azure: {},
175
+ };
176
+ return _.chain(newSecurityGroups[command.region]).sortBy('name').value();
177
+ }
208
178
 
209
- return result;
179
+ function configureSecurityGroupOptions(command) {
180
+ const result = {
181
+ dirty: {},
182
+ };
183
+ let currentOptions;
184
+ if (command.backingData.filtered.securityGroups) {
185
+ currentOptions = command.backingData.filtered.securityGroups;
210
186
  }
211
-
212
- function refreshSecurityGroups(command, skipCommandReconfiguration) {
213
- return cacheInitializer.refreshCache('securityGroups').then(function () {
214
- return securityGroupReader.getAllSecurityGroups().then(function (securityGroups) {
215
- command.backingData.securityGroups = securityGroups;
216
- if (!skipCommandReconfiguration) {
217
- configureSecurityGroupOptions(command);
218
- }
219
- });
220
- });
187
+ const newRegionalSecurityGroups = getRegionalSecurityGroups(command);
188
+ if (command.selectedSecurityGroup) {
189
+ // one has not been previously selected. We are either configuring for the
190
+ //first time or they changed regions or account
191
+ command.selectedSecurityGroup = null;
192
+ result.dirty.securityGroups = true;
221
193
  }
222
-
223
- function getLoadBalancerNames(loadBalancers) {
224
- return _.chain(loadBalancers).map('name').uniq().value().sort();
194
+ if (currentOptions != newRegionalSecurityGroups) {
195
+ command.backingData.filtered.securityGroups = newRegionalSecurityGroups;
196
+ result.dirty.securityGroups = true;
225
197
  }
226
198
 
227
- function configureLoadBalancerOptions(command) {
228
- const result = {
229
- dirty: {},
230
- };
231
- const current = command.loadBalancers;
232
- const newLoadBalancers = getLoadBalancerNames(command.backingData.loadBalancers);
233
-
234
- if (current && command.loadBalancers) {
235
- const matched = _.intersection(newLoadBalancers, command.loadBalancers);
236
- const removed = _.xor(matched, current);
237
- command.loadBalancers = matched;
238
- if (removed.length) {
239
- result.dirty.loadBalancers = removed;
240
- }
241
- }
242
- command.backingData.filtered.loadBalancers = newLoadBalancers;
243
- return result;
199
+ if (command.backingData.filtered.securityGroups.length === 0) {
200
+ command.viewState.securityGroupsConfigured = false;
201
+ } else {
202
+ command.viewState.securityGroupsConfigured = true;
244
203
  }
245
204
 
246
- function refreshLoadBalancers(command, skipCommandReconfiguration) {
247
- return loadBalancerReader.listLoadBalancers('azure').then(function (loadBalancers) {
248
- command.backingData.loadBalancers = loadBalancers;
205
+ return result;
206
+ }
207
+
208
+ function refreshSecurityGroups(command, skipCommandReconfiguration) {
209
+ return cacheInitializer.refreshCache('securityGroups').then(function () {
210
+ return securityGroupReader.getAllSecurityGroups().then(function (securityGroups) {
211
+ command.backingData.securityGroups = securityGroups;
249
212
  if (!skipCommandReconfiguration) {
250
- configureLoadBalancerOptions(command);
213
+ configureSecurityGroupOptions(command);
251
214
  }
252
215
  });
216
+ });
217
+ }
218
+
219
+ function getLoadBalancerNames(loadBalancers) {
220
+ return _.chain(loadBalancers).map('name').uniq().value().sort();
221
+ }
222
+
223
+ function configureLoadBalancerOptions(command) {
224
+ const result = {
225
+ dirty: {},
226
+ };
227
+ const current = command.loadBalancers;
228
+ const newLoadBalancers = getLoadBalancerNames(command.backingData.loadBalancers);
229
+
230
+ if (current && command.loadBalancers) {
231
+ const matched = _.intersection(newLoadBalancers, command.loadBalancers);
232
+ const removed = _.xor(matched, current);
233
+ command.loadBalancers = matched;
234
+ if (removed.length) {
235
+ result.dirty.loadBalancers = removed;
236
+ }
253
237
  }
238
+ command.backingData.filtered.loadBalancers = newLoadBalancers;
239
+ return result;
240
+ }
241
+
242
+ function refreshLoadBalancers(command, skipCommandReconfiguration) {
243
+ return loadBalancerReader.listLoadBalancers('azure').then(function (loadBalancers) {
244
+ command.backingData.loadBalancers = loadBalancers;
245
+ if (!skipCommandReconfiguration) {
246
+ configureLoadBalancerOptions(command);
247
+ }
248
+ });
249
+ }
254
250
 
255
- function configureLoadBalancers(command) {
251
+ function configureLoadBalancers(command) {
252
+ const result = {
253
+ dirty: {},
254
+ };
255
+ const temp = command.backingData.loadBalancers;
256
+ const filterlist = _.filter(temp, function (lb) {
257
+ return lb.account === command.credentials && lb.region === command.region;
258
+ });
259
+
260
+ command.loadBalancers = getLoadBalancerNames(filterlist);
261
+ command.viewState.loadBalancersConfigured = true;
262
+
263
+ return result;
264
+ }
265
+
266
+ function attachEventHandlers(cmd) {
267
+ cmd.regionChanged = function regionChanged(command, isInit = false) {
256
268
  const result = {
257
269
  dirty: {},
258
270
  };
259
- const temp = command.backingData.loadBalancers;
260
- const filterlist = _.filter(temp, function (lb) {
261
- return lb.account === command.credentials && lb.region === command.region;
262
- });
263
-
264
- command.loadBalancers = getLoadBalancerNames(filterlist);
265
- command.viewState.loadBalancersConfigured = true;
271
+ if (command.region && command.credentials) {
272
+ _.extend(result.dirty, configureLoadBalancers(command).dirty);
273
+ _.extend(result.dirty, configureSecurityGroupOptions(command).dirty);
274
+ _.extend(result.dirty, configureInstanceTypes(command).dirty);
275
+ _.extend(result.dirty, configureZones(command).dirty);
276
+ }
277
+ // reset previous set values
278
+ if (!isInit) {
279
+ command.loadBalancerName = null;
280
+ command.loadBalancerType = null;
281
+ command.vnet = null;
282
+ command.vnetResourceGroup = null;
283
+ command.subnet = null;
284
+ command.selectedSubnet = null;
285
+ command.selectedVnet = null;
286
+ command.selectedVnetSubnets = [];
287
+ command.viewState.networkSettingsConfigured = false;
288
+ command.selectedSecurityGroup = null;
289
+ command.securityGroupName = null;
290
+ command.zonesEnabled = false;
291
+ command.zones = [];
292
+ }
266
293
 
267
294
  return result;
268
- }
269
-
270
- function attachEventHandlers(cmd) {
271
- cmd.regionChanged = function regionChanged(command, isInit = false) {
272
- const result = {
273
- dirty: {},
274
- };
275
- if (command.region && command.credentials) {
276
- angular.extend(result.dirty, configureLoadBalancers(command).dirty);
277
- angular.extend(result.dirty, configureSecurityGroupOptions(command).dirty);
278
- angular.extend(result.dirty, configureInstanceTypes(command).dirty);
279
- angular.extend(result.dirty, configureZones(command).dirty);
280
- }
281
- // reset previous set values
282
- if (!isInit) {
283
- command.loadBalancerName = null;
284
- command.loadBalancerType = null;
285
- command.vnet = null;
286
- command.vnetResourceGroup = null;
287
- command.subnet = null;
288
- command.selectedSubnet = null;
289
- command.selectedVnet = null;
290
- command.selectedVnetSubnets = [];
291
- command.viewState.networkSettingsConfigured = false;
292
- command.selectedSecurityGroup = null;
293
- command.securityGroupName = null;
294
- command.zonesEnabled = false;
295
- command.zones = [];
296
- }
295
+ };
297
296
 
298
- return result;
297
+ cmd.credentialsChanged = function credentialsChanged(command, isInit) {
298
+ const result = {
299
+ dirty: {},
299
300
  };
300
-
301
- cmd.credentialsChanged = function credentialsChanged(command, isInit) {
302
- const result = {
303
- dirty: {},
301
+ const backingData = command.backingData;
302
+ if (command.credentials) {
303
+ const regionsForAccount = backingData.credentialsKeyedByAccount[command.credentials] || {
304
+ regions: [],
305
+ defaultKeyPair: null,
304
306
  };
305
- const backingData = command.backingData;
306
- if (command.credentials) {
307
- const regionsForAccount = backingData.credentialsKeyedByAccount[command.credentials] || {
308
- regions: [],
309
- defaultKeyPair: null,
310
- };
311
- backingData.filtered.regions = regionsForAccount.regions;
312
- if (
313
- !_.chain(backingData.filtered.regions)
314
- .some({
315
- name: command.region,
316
- })
317
- .value()
318
- ) {
319
- command.region = null;
320
- result.dirty.region = true;
321
- } else {
322
- angular.extend(result.dirty, command.regionChanged(command, isInit).dirty);
323
- }
324
- if (command.region) {
325
- angular.extend(result.dirty, configureLoadBalancers(command).dirty);
326
- }
327
- angular.extend(result.dirty, configureInstanceTypes(command).dirty);
328
- } else {
307
+ backingData.filtered.regions = regionsForAccount.regions;
308
+ if (
309
+ !_.chain(backingData.filtered.regions)
310
+ .some({
311
+ name: command.region,
312
+ })
313
+ .value()
314
+ ) {
329
315
  command.region = null;
316
+ result.dirty.region = true;
317
+ } else {
318
+ _.extend(result.dirty, command.regionChanged(command, isInit).dirty);
330
319
  }
331
- return result;
332
- };
333
- }
320
+ if (command.region) {
321
+ _.extend(result.dirty, configureLoadBalancers(command).dirty);
322
+ }
323
+ _.extend(result.dirty, configureInstanceTypes(command).dirty);
324
+ } else {
325
+ command.region = null;
326
+ }
327
+ return result;
328
+ };
329
+ }
334
330
 
335
- function refreshInstanceTypes(command) {
336
- return cacheInitializer.refreshCache('instanceTypes').then(function () {
337
- return azureInstanceTypeService.getAllTypesByRegion().then(function (instanceTypes) {
338
- command.backingData.instanceTypes = instanceTypes;
339
- configureInstanceTypes(command);
340
- });
331
+ function refreshInstanceTypes(command) {
332
+ return cacheInitializer.refreshCache('instanceTypes').then(function () {
333
+ return azureInstanceTypeService.getAllTypesByRegion().then(function (instanceTypes) {
334
+ command.backingData.instanceTypes = instanceTypes;
335
+ configureInstanceTypes(command);
341
336
  });
342
- }
343
-
344
- return {
345
- configureUpdateCommand: configureUpdateCommand,
346
- configureCommand: configureCommand,
347
- configureImages: configureImages,
348
- configureSecurityGroupOptions: configureSecurityGroupOptions,
349
- configureLoadBalancerOptions: configureLoadBalancerOptions,
350
- refreshLoadBalancers: refreshLoadBalancers,
351
- refreshSecurityGroups: refreshSecurityGroups,
352
- getRegionalSecurityGroups: getRegionalSecurityGroups,
353
- refreshInstanceTypes: refreshInstanceTypes,
354
- configureZones: configureZones,
355
- };
356
- },
357
- ]);
337
+ });
338
+ }
339
+
340
+ return {
341
+ configureUpdateCommand: configureUpdateCommand,
342
+ configureCommand: configureCommand,
343
+ configureImages: configureImages,
344
+ configureSecurityGroupOptions: configureSecurityGroupOptions,
345
+ configureLoadBalancerOptions: configureLoadBalancerOptions,
346
+ refreshLoadBalancers: refreshLoadBalancers,
347
+ refreshSecurityGroups: refreshSecurityGroups,
348
+ getRegionalSecurityGroups: getRegionalSecurityGroups,
349
+ refreshInstanceTypes: refreshInstanceTypes,
350
+ configureZones: configureZones,
351
+ };
352
+ }
353
+ }
354
+
355
+ [
356
+ 'configureUpdateCommand',
357
+ 'configureCommand',
358
+ 'configureImages',
359
+ 'configureSecurityGroupOptions',
360
+ 'configureLoadBalancerOptions',
361
+ 'refreshLoadBalancers',
362
+ 'refreshSecurityGroups',
363
+ 'getRegionalSecurityGroups',
364
+ 'refreshInstanceTypes',
365
+ 'configureZones',
366
+ ].forEach((method) => {
367
+ AzureServerGroupConfigurationService.prototype[method] = function (...args) {
368
+ if (!this.delegate) {
369
+ this.delegate = this.createDelegate();
370
+ }
371
+ return this.delegate[method](...args);
372
+ };
373
+ });