@spinnaker/azure 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 (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,95 +0,0 @@
1
- <div class="container-fluid form-horizontal">
2
- <div class="form-group">
3
- <div class="col-md-12">
4
- <div class="form-group">
5
- <div class="col-md-3">
6
- <b>Custom DNS Label</b>
7
- <help-field key="azure.loadBalancer.dnsName"></help-field>
8
- </div>
9
- <div class="col-md-6">
10
- <input class="form-control input-sm" type="text" ng-model="loadBalancer.dnsName" />
11
- <span>.{{loadBalancer.region}}.cloudapp.azure.com</span>
12
- </div>
13
- </div>
14
- <div class="form-group">
15
- <div class="col-md-3">
16
- <b>Health Check</b>
17
- </div>
18
- </div>
19
- <div class="form-group">
20
- <div class="col-md-4 sm-label-right">
21
- <b>Interval</b>
22
- <help-field key="azure.loadBalancer.probes.probeInterval"></help-field>
23
- </div>
24
- <div class="col-md-4">
25
- <input class="form-control input-sm" type="number" min="0" ng-model="loadBalancer.probes[0].probeInterval" />
26
- </div>
27
- </div>
28
- <div class="form-group">
29
- <div class="col-md-4 sm-label-right">
30
- <b>Unhealthy Threshold</b>
31
- <help-field key="azure.loadBalancer.probes.unhealthyThreshold"></help-field>
32
- </div>
33
- <div class="col-md-4">
34
- <input
35
- class="form-control input-sm"
36
- type="number"
37
- min="0"
38
- ng-model="loadBalancer.probes[0].unhealthyThreshold"
39
- />
40
- </div>
41
- </div>
42
- <div class="form-group" ng-if="isALB">
43
- <div class="col-md-4 sm-label-right">
44
- <b>Idle Timeout</b>
45
- <help-field key="azure.loadBalancer.loadBalancingRules.idleTimeout"></help-field>
46
- </div>
47
- <div class="col-md-4">
48
- <input
49
- class="form-control input-sm"
50
- type="number"
51
- min="0"
52
- ng-model="loadBalancer.loadBalancingRules[0].idleTimeout"
53
- />
54
- </div>
55
- </div>
56
- <div class="form-group" ng-if="!isALB">
57
- <div class="col-md-4 sm-label-right">
58
- <b>Timeout</b>
59
- <help-field key="azure.loadBalancer.probes.timeout"></help-field>
60
- </div>
61
- <div class="col-md-4">
62
- <input class="form-control input-sm" type="number" min="0" ng-model="loadBalancer.probes[0].timeout" />
63
- </div>
64
- </div>
65
- <div class="form-group" ng-if="isNew && !isALB">
66
- <div class="col-md-4 sm-label-right">
67
- <b>SKU</b>
68
- <help-field key="azure.loadBalancer.sku"></help-field>
69
- </div>
70
- <div class="col-md-4">
71
- <select
72
- class="form-control input-sm"
73
- ng-model="loadBalancer.sku"
74
- ng-options="sku for sku in validSkus"
75
- ></select>
76
- </div>
77
- </div>
78
- <div class="form-group" ng-if="isALB">
79
- <div class="col-md-4 sm-label-right">
80
- <b>Session persistence</b>
81
- <help-field key="azure.loadBalancer.loadBalancingRules.sessionPersistence"></help-field>
82
- </div>
83
- <div class="col-md-4">
84
- <select
85
- class="form-control input-sm"
86
- ng-model="loadBalancer.sessionPersistence"
87
- ng-init="loadBalancer.sessionPersistence = 'None'"
88
- required
89
- ng-options="p for p in ['None', 'Client IP', 'Client IP and protocol']"
90
- ></select>
91
- </div>
92
- </div>
93
- </div>
94
- </div>
95
- </div>
@@ -1,275 +0,0 @@
1
- 'use strict';
2
-
3
- import UIROUTER_ANGULARJS from '@uirouter/angularjs';
4
- import { module } from 'angular';
5
- import _ from 'lodash';
6
-
7
- import { AccountService, LoadBalancerWriter, NameUtils, NetworkReader, TaskMonitor } from '@spinnaker/core';
8
-
9
- import { AZURE_LOADBALANCER_LOADBALANCER_TRANSFORMER } from '../loadBalancer.transformer';
10
-
11
- export const AZURE_LOADBALANCER_CONFIGURE_CREATELOADBALANCER_CONTROLLER =
12
- 'spinnaker.azure.loadBalancer.create.controller';
13
- export const name = AZURE_LOADBALANCER_CONFIGURE_CREATELOADBALANCER_CONTROLLER; // for backwards compatibility
14
- module(AZURE_LOADBALANCER_CONFIGURE_CREATELOADBALANCER_CONTROLLER, [
15
- UIROUTER_ANGULARJS,
16
- AZURE_LOADBALANCER_LOADBALANCER_TRANSFORMER,
17
- ]).controller('azureCreateLoadBalancerCtrl', [
18
- '$scope',
19
- '$uibModalInstance',
20
- '$state',
21
- 'azureLoadBalancerTransformer',
22
- 'application',
23
- 'loadBalancer',
24
- 'isNew',
25
- 'loadBalancerType',
26
- function (
27
- $scope,
28
- $uibModalInstance,
29
- $state,
30
- azureLoadBalancerTransformer,
31
- application,
32
- loadBalancer,
33
- isNew,
34
- loadBalancerType,
35
- ) {
36
- const ctrl = this;
37
-
38
- $scope.regions = [];
39
-
40
- $scope.pages = {
41
- location: require('./createLoadBalancerProperties.html'),
42
- listeners: require('./listeners.html'),
43
- healthCheck: require('./healthCheck.html'),
44
- advancedSettings: require('./advancedSettings.html'),
45
- };
46
-
47
- $scope.isNew = isNew;
48
- $scope.loadBalancerType = loadBalancerType.type;
49
- $scope.isALB = loadBalancerType.type === 'Azure Load Balancer';
50
-
51
- $scope.state = {
52
- accountsLoaded: false,
53
- submitting: false,
54
- };
55
-
56
- $scope.validSkus = ['Standard_v2', 'Standard_Small'];
57
-
58
- function onApplicationRefresh() {
59
- // If the user has already closed the modal, do not navigate to the new details view
60
- if ($scope.$$destroyed) {
61
- return;
62
- }
63
- $uibModalInstance.close();
64
- const newStateParams = {
65
- name: $scope.loadBalancer.name,
66
- accountId: $scope.loadBalancer.credentials,
67
- region: $scope.loadBalancer.region,
68
- provider: 'azure',
69
- };
70
-
71
- if (!$state.includes('**.loadBalancerDetails')) {
72
- $state.go('.loadBalancerDetails', newStateParams);
73
- } else {
74
- $state.go('^.loadBalancerDetails', newStateParams);
75
- }
76
- }
77
-
78
- function onTaskComplete() {
79
- application.loadBalancers.refresh();
80
- application.loadBalancers.onNextRefresh($scope, onApplicationRefresh);
81
- }
82
-
83
- $scope.taskMonitor = new TaskMonitor({
84
- application: application,
85
- title: (isNew ? 'Creating ' : 'Updating ') + 'your load balancer',
86
- modalInstance: $uibModalInstance,
87
- onTaskComplete: onTaskComplete,
88
- });
89
-
90
- function initializeCreateMode() {
91
- AccountService.listAccounts('azure').then(function (accounts) {
92
- $scope.accounts = accounts;
93
- $scope.state.accountsLoaded = true;
94
- ctrl.accountUpdated();
95
- });
96
- }
97
-
98
- function initializeController() {
99
- if (loadBalancer) {
100
- $scope.loadBalancer = azureLoadBalancerTransformer.convertLoadBalancerForEditing(loadBalancer);
101
- if (isNew) {
102
- const nameParts = NameUtils.parseLoadBalancerName($scope.loadBalancer.name);
103
- $scope.loadBalancer.stack = nameParts.stack;
104
- $scope.loadBalancer.detail = nameParts.freeFormDetails;
105
- delete $scope.loadBalancer.name;
106
- }
107
- } else {
108
- $scope.loadBalancer = azureLoadBalancerTransformer.constructNewLoadBalancerTemplate(application);
109
- }
110
- if (isNew) {
111
- updateLoadBalancerNames();
112
- initializeCreateMode();
113
- }
114
- }
115
-
116
- function updateLoadBalancerNames() {
117
- const account = $scope.loadBalancer.credentials;
118
- const region = $scope.loadBalancer.region;
119
-
120
- const accountLoadBalancersByRegion = {};
121
- application
122
- .getDataSource('loadBalancers')
123
- .refresh(true)
124
- .then(() => {
125
- application.getDataSource('loadBalancers').data.forEach((loadBalancer) => {
126
- if (loadBalancer.account === account) {
127
- accountLoadBalancersByRegion[loadBalancer.region] =
128
- accountLoadBalancersByRegion[loadBalancer.region] || [];
129
- accountLoadBalancersByRegion[loadBalancer.region].push(loadBalancer.name);
130
- }
131
- });
132
-
133
- $scope.existingLoadBalancerNames = accountLoadBalancersByRegion[region] || [];
134
- });
135
- }
136
-
137
- initializeController();
138
-
139
- this.requiresHealthCheckPath = function () {
140
- return (
141
- $scope.loadBalancer.probes[0].probeProtocol && $scope.loadBalancer.probes[0].probeProtocol.indexOf('HTTP') === 0
142
- );
143
- };
144
-
145
- this.updateName = function () {
146
- $scope.loadBalancer.name = this.getName();
147
- };
148
-
149
- this.getName = function () {
150
- const elb = $scope.loadBalancer;
151
- const elbName = [application.name, elb.stack || '', elb.detail || ''].join('-');
152
- return _.trimEnd(elbName, '-');
153
- };
154
-
155
- this.accountUpdated = function () {
156
- AccountService.getRegionsForAccount($scope.loadBalancer.credentials).then(function (regions) {
157
- $scope.regions = regions;
158
- ctrl.regionUpdated();
159
- });
160
- };
161
-
162
- this.regionUpdated = function () {
163
- updateLoadBalancerNames();
164
- ctrl.updateName();
165
- ctrl.vnetUpdated();
166
- };
167
-
168
- this.vnetUpdated = function () {
169
- const account = $scope.loadBalancer.credentials;
170
- const region = $scope.loadBalancer.region;
171
- $scope.loadBalancer.selectedVnet = null;
172
- $scope.loadBalancer.vnet = null;
173
- $scope.loadBalancer.vnetResourceGroup = null;
174
- ctrl.selectedVnets = [];
175
-
176
- NetworkReader.listNetworks().then(function (vnets) {
177
- if (vnets.azure) {
178
- vnets.azure.forEach((vnet) => {
179
- if (vnet.account === account && vnet.region === region) {
180
- ctrl.selectedVnets.push(vnet);
181
- }
182
- });
183
- }
184
- });
185
-
186
- ctrl.subnetUpdated();
187
- };
188
-
189
- this.subnetUpdated = function () {
190
- $scope.loadBalancer.selectedSubnet = null;
191
- $scope.loadBalancer.subnet = null;
192
- ctrl.selectedSubnets = [];
193
- };
194
-
195
- this.selectedVnetChanged = function (item) {
196
- $scope.loadBalancer.vnet = item.name;
197
- $scope.loadBalancer.vnetResourceGroup = item.resourceGroup;
198
- $scope.loadBalancer.selectedSubnet = null;
199
- $scope.loadBalancer.subnet = null;
200
- ctrl.selectedSubnets = [];
201
- if (item.subnets) {
202
- item.subnets.map(function (subnet) {
203
- let addSubnet = true;
204
- if (subnet.devices) {
205
- subnet.devices.map(function (device) {
206
- if (device && device.type !== 'applicationGateways') {
207
- addSubnet = false;
208
- }
209
- });
210
- }
211
- if (addSubnet) {
212
- ctrl.selectedSubnets.push(subnet);
213
- }
214
- });
215
- }
216
- };
217
-
218
- this.removeListener = function (index) {
219
- $scope.loadBalancer.loadBalancingRules.splice(index, 1);
220
- };
221
-
222
- this.addListener = function () {
223
- $scope.loadBalancer.loadBalancingRules.push({ protocol: 'HTTP' });
224
- };
225
-
226
- this.submit = function () {
227
- const descriptor = isNew ? 'Create' : 'Update';
228
-
229
- $scope.taskMonitor.submit(function () {
230
- const params = {
231
- cloudProvider: 'azure',
232
- appName: application.name,
233
- clusterName: $scope.loadBalancer.clusterName,
234
- resourceGroupName: $scope.loadBalancer.clusterName,
235
- loadBalancerName: $scope.loadBalancer.name,
236
- };
237
-
238
- if ($scope.loadBalancer.selectedVnet) {
239
- $scope.loadBalancer.vnet = $scope.loadBalancer.selectedVnet.name;
240
- $scope.loadBalancer.vnetResourceGroup = $scope.loadBalancer.selectedVnet.resourceGroup;
241
- }
242
-
243
- if ($scope.loadBalancer.selectedSubnet) {
244
- $scope.loadBalancer.subnet = $scope.loadBalancer.selectedSubnet.name;
245
- }
246
-
247
- const name = $scope.loadBalancer.clusterName || $scope.loadBalancer.name;
248
- const probeName = name + '-probe';
249
- const ruleNameBase = name + '-rule';
250
- $scope.loadBalancer.type = 'upsertLoadBalancer';
251
- $scope.loadBalancer.loadBalancerType = $scope.loadBalancerType;
252
- if (!$scope.loadBalancer.vnet && !$scope.loadBalancer.subnetType) {
253
- $scope.loadBalancer.securityGroups = null;
254
- }
255
-
256
- $scope.loadBalancer.probes[0].probeName = probeName;
257
-
258
- $scope.loadBalancer.loadBalancingRules.forEach((rule, index) => {
259
- rule.ruleName = ruleNameBase + index;
260
- rule.probeName = probeName;
261
- });
262
-
263
- if ($scope.loadBalancer.probes[0].probeProtocol === 'TCP') {
264
- $scope.loadBalancer.probes[0].probePath = undefined;
265
- }
266
-
267
- return LoadBalancerWriter.upsertLoadBalancer($scope.loadBalancer, application, descriptor, params);
268
- });
269
- };
270
-
271
- this.cancel = function () {
272
- $uibModalInstance.dismiss();
273
- };
274
- },
275
- ]);
@@ -1,39 +0,0 @@
1
- 'use strict';
2
- import { ApplicationModelBuilder } from '@spinnaker/core';
3
-
4
- describe('Controller: azureCreateLoadBalancerCtrl', function () {
5
- // load the controller's module
6
- beforeEach(window.module(require('./createLoadBalancer.controller').name));
7
-
8
- // Initialize the controller and a mock scope
9
- beforeEach(
10
- window.inject(function ($controller, $rootScope) {
11
- const app = ApplicationModelBuilder.createApplicationForTests('app', {
12
- key: 'loadBalancers',
13
- lazy: true,
14
- defaultData: [],
15
- });
16
- this.$scope = $rootScope.$new();
17
- this.ctrl = $controller('azureCreateLoadBalancerCtrl', {
18
- $scope: this.$scope,
19
- $uibModalInstance: { dismiss: angular.noop, result: { then: angular.noop } },
20
- application: app,
21
- loadBalancer: null,
22
- isNew: true,
23
- loadBalancerType: 'Azure Load Balancer',
24
- });
25
- }),
26
- );
27
-
28
- it('correctly creates a default loadbalancer', function () {
29
- var lb = this.$scope.loadBalancer;
30
-
31
- expect(lb.probes.length).toEqual(1);
32
- expect(lb.loadBalancingRules.length).toEqual(1);
33
-
34
- expect(lb.loadBalancingRules[0].protocol).toEqual('HTTP');
35
-
36
- expect(this.$scope.existingLoadBalancerNames).toEqual(undefined);
37
- expect(lb.providerType).toEqual(undefined);
38
- });
39
- });
@@ -1,25 +0,0 @@
1
- <form name="form" class="form-horizontal" novalidate validate-on-submit>
2
- <v2-modal-wizard heading="Create New {{loadBalancerType}}" task-monitor="taskMonitor" dismiss="$dismiss()">
3
- <v2-wizard-page key="Location" label="Location">
4
- <ng-include src="pages.location"></ng-include>
5
- </v2-wizard-page>
6
- <v2-wizard-page key="Listeners" label="Listeners" done="true">
7
- <ng-include src="pages.listeners"></ng-include>
8
- </v2-wizard-page>
9
- <v2-wizard-page key="Health Check" label="Health Check" done="true" hide-subheading="true">
10
- <ng-include src="pages.healthCheck"></ng-include>
11
- </v2-wizard-page>
12
- <v2-wizard-page key="Advanced Settings" label="Advanced Settings" done="true">
13
- <ng-include src="pages.advancedSettings"></ng-include>
14
- </v2-wizard-page>
15
- </v2-modal-wizard>
16
- <div class="modal-footer">
17
- <button ng-disabled="taskMonitor.submitting" class="btn btn-default" ng-click="ctrl.cancel()">Cancel</button>
18
- <submit-button
19
- is-disabled="!state.accountsLoaded || taskMonitor.submitting"
20
- submitting="taskMonitor.submitting"
21
- on-click="form.$valid && ctrl.submit()"
22
- is-new="isNew"
23
- ></submit-button>
24
- </div>
25
- </form>
@@ -1,128 +0,0 @@
1
- <div>
2
- <div ng-if="!state.accountsLoaded" style="height: 200px" class="horizontal center middle">
3
- <loading-spinner size="'small'"></loading-spinner>
4
- </div>
5
- <div class="modal-body" ng-if="state.accountsLoaded">
6
- <div class="form-group">
7
- <div
8
- class="col-md-12 well"
9
- ng-class="{'alert-danger': form.loadBalancerName.$error.validateUnique, 'alert-info': !form.loadBalancerName.$error.validateUnique}"
10
- >
11
- <strong>Your {{loadBalancerType}} will be named:</strong>
12
- <span>{{ctrl.getName()}}</span>
13
- <!-- Angular does not seem to run length validation on hidden inputs, hence the text + display:none -->
14
- <input
15
- type="text"
16
- style="display: none"
17
- ng-maxlength="32"
18
- class="form-control input-sm"
19
- ng-model="loadBalancer.name"
20
- validate-unique="existingLoadBalancerNames"
21
- validate-ignore-case="true"
22
- name="loadBalancerName"
23
- />
24
- <validation-error
25
- ng-if="form.loadBalancerName.$error.validateUnique"
26
- message="There is already a load balancer in {{loadBalancer.credentials}}:{{loadBalancer.region}} with that name."
27
- ></validation-error>
28
- </div>
29
- </div>
30
- <div class="form-group">
31
- <div class="col-md-3 sm-label-right">Account</div>
32
- <div class="col-md-7">
33
- <account-select-field
34
- required
35
- component="loadBalancer"
36
- field="credentials"
37
- accounts="accounts"
38
- provider="'azure'"
39
- on-change="ctrl.accountUpdated()"
40
- ></account-select-field>
41
- </div>
42
- </div>
43
- <region-select-field
44
- required
45
- label-columns="3"
46
- component="loadBalancer"
47
- field="region"
48
- account="loadBalancer.credentials"
49
- provider="'azure'"
50
- on-change="ctrl.regionUpdated()"
51
- regions="regions"
52
- ></region-select-field>
53
-
54
- <div class="form-group" ng-if="!isALB">
55
- <div class="col-md-3 sm-label-right">Virtual Network</div>
56
- <div class="col-md-7">
57
- <ui-select
58
- class="form-control input-sm"
59
- required
60
- ng-model="loadBalancer.selectedVnet"
61
- on-select="ctrl.selectedVnetChanged($item)"
62
- >
63
- <ui-select-match placeholder="Select from existing virtual networks"
64
- >{{$select.selected.name}}</ui-select-match
65
- >
66
- <ui-select-choices repeat="selectVnet in ctrl.selectedVnets | filter: $select.search">
67
- <span ng-bind-html="selectVnet.name | highlight: $select.search"></span>
68
- </ui-select-choices>
69
- </ui-select>
70
- </div>
71
- </div>
72
-
73
- <div class="form-group" ng-if="!isALB">
74
- <div class="col-md-3 sm-label-right">Subnet</div>
75
- <div class="col-md-7">
76
- <ui-select
77
- class="form-control input-sm"
78
- required
79
- ng-model="loadBalancer.selectedSubnet"
80
- on-select="ctrl.selectedSubnetChanged($item)"
81
- >
82
- <ui-select-match placeholder="Select from existing subnets">{{$select.selected.name}}</ui-select-match>
83
- <ui-select-choices repeat="selectSubnet in ctrl.selectedSubnets | filter: $select.search">
84
- <span ng-bind-html="selectSubnet.name | highlight: $select.search"></span>
85
- </ui-select-choices>
86
- </ui-select>
87
- </div>
88
- </div>
89
-
90
- <div class="form-group">
91
- <div class="col-md-3 sm-label-right">Stack <help-field key="azure.loadBalancer.stack"></help-field></div>
92
- <div class="col-md-3">
93
- <input
94
- required
95
- type="text"
96
- class="form-control input-sm"
97
- ng-model="loadBalancer.stack"
98
- name="stackName"
99
- ng-change="ctrl.updateName()"
100
- ng-pattern="/^[a-zA-Z0-9]*$/"
101
- />
102
- </div>
103
- <div class="col-md-6 form-inline">
104
- <label class="sm-label-right"> Detail <help-field key="azure.loadBalancer.detail"></help-field> </label>
105
- <input
106
- required
107
- type="text"
108
- class="form-control input-sm"
109
- ng-model="loadBalancer.detail"
110
- name="detailName"
111
- ng-change="ctrl.updateName()"
112
- ng-pattern="/^[a-zA-Z0-9-]*$/"
113
- />
114
- </div>
115
- <div class="col-md-7 col-md-offset-3" ng-if="form.stackName.$error.pattern">
116
- <validation-error message="Stack can only contain letters and numbers."></validation-error>
117
- </div>
118
- <div class="col-md-7 col-md-offset-3" ng-if="form.detailName.$error.pattern">
119
- <validation-error message="Detail can only contain letters, numbers, and dashes."></validation-error>
120
- </div>
121
- </div>
122
- <div class="form-group">
123
- <div class="col-md-9 col-md-offset-3" ng-if="form.loadBalancerName.$error.maxlength">
124
- <validation-error message="Load Balancer name can only be 32 characters."></validation-error>
125
- </div>
126
- </div>
127
- </div>
128
- </div>
@@ -1,26 +0,0 @@
1
- <form name="form" novalidate validate-on-submit>
2
- <v2-modal-wizard
3
- heading="Edit {{loadBalancerType}} {{loadBalancer.name}}"
4
- task-monitor="taskMonitor"
5
- dismiss="$dismiss()"
6
- >
7
- <v2-wizard-page key="Listeners" label="Listeners" done="true">
8
- <ng-include src="pages.listeners"></ng-include>
9
- </v2-wizard-page>
10
- <v2-wizard-page key="Health Check" label="Health Check" done="true" hide-subheading="true">
11
- <ng-include src="pages.healthCheck"></ng-include>
12
- </v2-wizard-page>
13
- <v2-wizard-page key="Advanced Settings" label="Advanced Settings" done="true">
14
- <ng-include src="pages.advancedSettings"></ng-include>
15
- </v2-wizard-page>
16
- </v2-modal-wizard>
17
- <div class="modal-footer">
18
- <button ng-disabled="taskMonitor.submitting" class="btn btn-default" ng-click="ctrl.cancel()">Cancel</button>
19
- <submit-button
20
- is-disabled="taskMonitor.submitting"
21
- submitting="taskMonitor.submitting"
22
- on-click="form.$valid && ctrl.submit()"
23
- is-new="isNew"
24
- ></submit-button>
25
- </div>
26
- </form>
@@ -1,74 +0,0 @@
1
- <div class="container-fluid form-horizontal">
2
- <div class="form-group">
3
- <div class="col-md-12">
4
- <table class="table table-condensed packed" ng-if="!isALB">
5
- <thead>
6
- <tr>
7
- <th width="35%">Protocol</th>
8
- <th width="30%">Host</th>
9
- <th><span ng-if="ctrl.requiresHealthCheckPath()">Path</span></th>
10
- </tr>
11
- </thead>
12
- <tbody>
13
- <tr>
14
- <td>
15
- <select
16
- class="form-control input-sm"
17
- ng-model="loadBalancer.probes[0].probeProtocol"
18
- required
19
- ng-options="protocol for protocol in ['HTTP']"
20
- ></select>
21
- </td>
22
- <td>
23
- <input class="form-control input-sm" type="text" ng-model="loadBalancer.probes[0].probePort" />
24
- </td>
25
- <td>
26
- <input
27
- ng-if="ctrl.requiresHealthCheckPath()"
28
- class="form-control input-sm"
29
- type="text"
30
- ng-model="loadBalancer.probes[0].probePath"
31
- required
32
- />
33
- </td>
34
- </tr>
35
- </tbody>
36
- </table>
37
-
38
- <table class="table table-condensed packed" ng-if="isALB">
39
- <thead>
40
- <tr>
41
- <th width="35%">Protocol</th>
42
- <th width="30%">Port</th>
43
- <th><span ng-if="ctrl.requiresHealthCheckPath()">Path</span></th>
44
- </tr>
45
- </thead>
46
- <tbody>
47
- <tr>
48
- <td>
49
- <select
50
- class="form-control input-sm"
51
- ng-model="loadBalancer.probes[0].probeProtocol"
52
- ng-init="loadBalancer.probes[0].probeProtocol = 'TCP'"
53
- required
54
- ng-options="protocol for protocol in ['TCP', 'HTTP']"
55
- ></select>
56
- </td>
57
- <td>
58
- <input class="form-control input-sm" type="text" ng-model="loadBalancer.probes[0].probePort" />
59
- </td>
60
- <td>
61
- <input
62
- ng-if="ctrl.requiresHealthCheckPath()"
63
- class="form-control input-sm"
64
- type="text"
65
- ng-model="loadBalancer.probes[0].probePath"
66
- required
67
- />
68
- </td>
69
- </tr>
70
- </tbody>
71
- </table>
72
- </div>
73
- </div>
74
- </div>