@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,222 +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 {
8
- CACHE_INITIALIZER_SERVICE,
9
- FirewallLabels,
10
- InfrastructureCaches,
11
- SECURITY_GROUP_READER,
12
- TaskMonitor,
13
- } from '@spinnaker/core';
14
-
15
- import { AZURE_SECURITYGROUP_SECURITYGROUP_WRITE_SERVICE } from '../securityGroup.write.service';
16
-
17
- export const AZURE_SECURITYGROUP_CONFIGURE_EDITSECURITYGROUPCTRL =
18
- 'spinnaker.azure.securityGroup.azure.edit.controller';
19
- export const name = AZURE_SECURITYGROUP_CONFIGURE_EDITSECURITYGROUPCTRL; // for backwards compatibility
20
- module(AZURE_SECURITYGROUP_CONFIGURE_EDITSECURITYGROUPCTRL, [
21
- UIROUTER_ANGULARJS,
22
- CACHE_INITIALIZER_SERVICE,
23
- SECURITY_GROUP_READER,
24
- AZURE_SECURITYGROUP_SECURITYGROUP_WRITE_SERVICE,
25
- ]).controller('azureEditSecurityGroupCtrl', [
26
- '$scope',
27
- '$uibModalInstance',
28
- '$exceptionHandler',
29
- '$state',
30
- 'securityGroupReader',
31
- 'cacheInitializer',
32
- 'application',
33
- 'securityGroup',
34
- 'azureSecurityGroupWriter',
35
- function (
36
- $scope,
37
- $uibModalInstance,
38
- $exceptionHandler,
39
- $state,
40
- securityGroupReader,
41
- cacheInitializer,
42
- application,
43
- securityGroup,
44
- azureSecurityGroupWriter,
45
- ) {
46
- $scope.pages = {
47
- ingress: require('./createSecurityGroupIngress.html'),
48
- };
49
-
50
- securityGroup.securityRules = _.map(securityGroup.securityRules, function (rule) {
51
- if (!_.isEmpty(rule.protocol)) {
52
- rule.protocolUI = rule.protocol.toLowerCase();
53
- }
54
-
55
- rule.destPortRanges = rule.destinationPortRangeModel;
56
- rule.sourceIPCIDRRanges = rule.sourceAddressPrefixModel;
57
-
58
- return rule;
59
- });
60
-
61
- $scope.securityGroup = securityGroup;
62
-
63
- $scope.state = {
64
- refreshingSecurityGroups: false,
65
- };
66
-
67
- $scope.taskMonitor = new TaskMonitor({
68
- application: application,
69
- title: `Updating your ${FirewallLabels.get('firewall')}`,
70
- modalInstance: $uibModalInstance,
71
- onTaskComplete: onTaskComplete,
72
- });
73
-
74
- this.getSecurityGroupRefreshTime = function () {
75
- return InfrastructureCaches.get('securityGroups').getStats().ageMax;
76
- };
77
-
78
- this.refreshSecurityGroups = function () {
79
- $scope.state.refreshingSecurityGroups = true;
80
- return cacheInitializer.refreshCache('securityGroups').then(function () {
81
- initializeSecurityGroups().then(function () {
82
- $scope.state.refreshingSecurityGroups = false;
83
- });
84
- });
85
- };
86
-
87
- function initializeSecurityGroups() {
88
- return securityGroupReader.getAllSecurityGroups().then(function (securityGroups) {
89
- const account = securityGroup.accountName;
90
- const region = securityGroup.region;
91
- const availableGroups = _.filter(securityGroups[account].azure[region], {
92
- /*vpcId: vpcId*/
93
- });
94
- $scope.availableSecurityGroups = _.map(availableGroups, 'name');
95
- });
96
- }
97
-
98
- this.addRule = function (ruleset) {
99
- ruleset.push({
100
- name: $scope.securityGroup.name + '-Rule' + ruleset.length,
101
- priority: ruleset.length === 0 ? 100 : 100 * (ruleset.length + 1),
102
- protocolUI: 'tcp',
103
- access: 'Allow',
104
- direction: 'InBound',
105
- sourceAddressPrefix: '*',
106
- sourceAddressPrefixes: [],
107
- sourcePortRange: '*',
108
- destinationAddressPrefix: '*',
109
- destinationPortRange: '*',
110
- destinationPortRanges: [],
111
- destPortRanges: '*',
112
- sourceIPCIDRRanges: '*',
113
- });
114
- };
115
-
116
- function onApplicationRefresh() {
117
- // If the user has already closed the modal, do not navigate to the new details view
118
- if ($scope.$$destroyed) {
119
- return;
120
- }
121
- $uibModalInstance.close();
122
- const newStateParams = {
123
- name: $scope.securityGroup.name,
124
- accountId: $scope.securityGroup.credentials || $scope.securityGroup.accountName,
125
- region: $scope.securityGroup.region,
126
- provider: 'azure',
127
- };
128
- if (!$state.includes('**.firewallDetails')) {
129
- $state.go('.firewallDetails', newStateParams);
130
- } else {
131
- $state.go('^.firewallDetails', newStateParams);
132
- }
133
- }
134
-
135
- function onTaskComplete() {
136
- application.securityGroups.refresh();
137
- application.securityGroups.onNextRefresh($scope, onApplicationRefresh);
138
- }
139
-
140
- this.portUpdated = function (ruleset, index) {
141
- if (!_.isEmpty(ruleset[index].sourceIPCIDRRanges)) {
142
- const ruleRanges = ruleset[index].destPortRanges.split(',');
143
- if (ruleRanges.length > 1) {
144
- ruleset[index].destinationPortRanges = [];
145
- ruleRanges.forEach((v) => ruleset[index].destinationPortRanges.push(v));
146
-
147
- // If there are multiple port ranges then set null to the single port parameter otherwise ARM template will fail in validation.
148
- ruleset[index].destinationPortRange = null;
149
- } else {
150
- ruleset[index].destinationPortRange = ruleset[index].destPortRanges;
151
-
152
- // If there is a single port range then set null to the port array otherwise ARM template will fail in validation.
153
- ruleset[index].destinationPortRanges = [];
154
- }
155
- }
156
- };
157
-
158
- this.sourceIPCIDRUpdated = function (ruleset, index) {
159
- if (!_.isEmpty(ruleset[index].sourceIPCIDRRanges)) {
160
- const ruleRanges = ruleset[index].sourceIPCIDRRanges.split(',');
161
- if (ruleRanges.length > 1) {
162
- ruleset[index].sourceAddressPrefixes = [];
163
- ruleRanges.forEach((v) => ruleset[index].sourceAddressPrefixes.push(v));
164
-
165
- // If there are multiple IP/CIDR ranges then set null to the single sourceAddressPrefix parameter otherwise ARM template will fail in validation
166
- ruleset[index].sourceAddressPrefix = null;
167
- } else {
168
- ruleset[index].sourceAddressPrefix = ruleset[index].sourceIPCIDRRanges;
169
-
170
- // If there is a single IP/CIDR then set null to the IP/CIDR array otherwise ARM template will fail in validation.
171
- ruleset[index].sourceAddressPrefixes = [];
172
- }
173
- }
174
- };
175
-
176
- this.removeRule = function (ruleset, index) {
177
- ruleset.splice(index, 1);
178
- };
179
-
180
- this.moveUp = function (ruleset, index) {
181
- if (index === 0) return;
182
- swapRules(ruleset, index, index - 1);
183
- };
184
- this.moveDown = function (ruleset, index) {
185
- if (index === ruleset.length - 1) return;
186
- swapRules(ruleset, index, index + 1);
187
- };
188
-
189
- function swapRules(ruleset, a, b) {
190
- const temp = ruleset[b];
191
- const priorityA = ruleset[a].priority;
192
- const priorityB = ruleset[b].priority;
193
- //swap elements
194
- ruleset[b] = ruleset[a];
195
- ruleset[a] = temp;
196
- //swap priorities
197
- ruleset[a].priority = priorityA;
198
- ruleset[b].priority = priorityB;
199
- }
200
-
201
- $scope.taskMonitor.onTaskComplete = $uibModalInstance.dismiss;
202
-
203
- this.upsert = function () {
204
- $scope.taskMonitor.submit(function () {
205
- const params = {
206
- cloudProvider: 'azure',
207
- appName: application.name,
208
- region: $scope.securityGroup.region,
209
- subnet: null,
210
- vpcId: 'null',
211
- };
212
- $scope.securityGroup.type = 'upsertSecurityGroup';
213
-
214
- return azureSecurityGroupWriter.upsertSecurityGroup($scope.securityGroup, application, 'Update', params);
215
- });
216
- };
217
-
218
- this.cancel = function () {
219
- $uibModalInstance.dismiss();
220
- };
221
- },
222
- ]);
@@ -1,262 +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 {
8
- AccountService,
9
- FirewallLabels,
10
- SECURITY_GROUP_READER,
11
- SecurityGroupWriter,
12
- TaskMonitor,
13
- } from '@spinnaker/core';
14
-
15
- export const AZURE_SECURITYGROUP_CONFIGURE_CONFIGSECURITYGROUP_MIXIN_CONTROLLER =
16
- 'spinnaker.azure.securityGroup.baseConfig.controller';
17
- export const name = AZURE_SECURITYGROUP_CONFIGURE_CONFIGSECURITYGROUP_MIXIN_CONTROLLER; // for backwards compatibility
18
- module(AZURE_SECURITYGROUP_CONFIGURE_CONFIGSECURITYGROUP_MIXIN_CONTROLLER, [
19
- UIROUTER_ANGULARJS,
20
- SECURITY_GROUP_READER,
21
- ]).controller('azureConfigSecurityGroupMixin', [
22
- '$scope',
23
- '$state',
24
- '$uibModalInstance',
25
- 'application',
26
- 'securityGroup',
27
- 'securityGroupReader',
28
- 'modalWizardService',
29
- 'cacheInitializer',
30
- function (
31
- $scope,
32
- $state,
33
- $uibModalInstance,
34
- application,
35
- securityGroup,
36
- securityGroupReader,
37
- modalWizardService,
38
- cacheInitializer,
39
- ) {
40
- let allSecurityGroups;
41
- const ctrl = this;
42
-
43
- $scope.isNew = true;
44
-
45
- $scope.state = {
46
- submitting: false,
47
- refreshingSecurityGroups: false,
48
- removedRules: [],
49
- infiniteScroll: {
50
- numToAdd: 20,
51
- currentItems: 20,
52
- },
53
- };
54
-
55
- ctrl.addMoreItems = function () {
56
- $scope.state.infiniteScroll.currentItems += $scope.state.infiniteScroll.numToAdd;
57
- };
58
-
59
- function onApplicationRefresh() {
60
- // If the user has already closed the modal, do not navigate to the new details view
61
- if ($scope.$$destroyed) {
62
- return;
63
- }
64
- $uibModalInstance.close();
65
- const newStateParams = {
66
- name: $scope.securityGroup.name,
67
- accountId: $scope.securityGroup.credentials || $scope.securityGroup.accountName,
68
- region: $scope.securityGroup.regions[0],
69
- vpcId: $scope.securityGroup.vpcId,
70
- provider: 'azure',
71
- };
72
- if (!$state.includes('**.firewallDetails')) {
73
- $state.go('.firewallDetails', newStateParams);
74
- } else {
75
- $state.go('^.firewallDetails', newStateParams);
76
- }
77
- }
78
-
79
- function onTaskComplete() {
80
- application.securityGroups.refresh();
81
- application.securityGroups.onNextRefresh($scope, onApplicationRefresh);
82
- }
83
-
84
- $scope.taskMonitor = new TaskMonitor({
85
- application: application,
86
- title: `Creating your ${FirewallLabels.get('firewall')}`,
87
- modalInstance: $uibModalInstance,
88
- onTaskComplete: onTaskComplete,
89
- });
90
-
91
- $scope.securityGroup = securityGroup;
92
-
93
- ctrl.upsert = function () {
94
- $scope.taskMonitor.submit(function () {
95
- return SecurityGroupWriter.upsertSecurityGroup($scope.securityGroup, application, 'Create');
96
- });
97
- };
98
-
99
- function clearSecurityGroups() {
100
- $scope.availableSecurityGroups = [];
101
- $scope.existingSecurityGroupNames = [];
102
- }
103
-
104
- ctrl.accountUpdated = function () {
105
- const account = $scope.securityGroup.credentials || $scope.securityGroup.accountName;
106
- AccountService.getRegionsForAccount(account).then(function (regions) {
107
- $scope.regions = _.map(regions, 'name');
108
- clearSecurityGroups();
109
- ctrl.regionUpdated();
110
- ctrl.updateName();
111
- });
112
- };
113
-
114
- //ctrl.ifVcsFoundInAllRegions = function() {
115
- // var foundInAllRegions = true;
116
- // _.forEach($scope.securityGroup.regions, function(region) {
117
- // if (!_.some(vpcsToTest, { region: region, account: $scope.securityGroup.credentials })) {
118
- // foundInAllRegions = false;
119
- // }
120
- // });
121
- // return foundInAllRegions;
122
- //};
123
-
124
- ctrl.regionUpdated = function () {};
125
-
126
- this.vpcUpdated = function () {
127
- const account = $scope.securityGroup.credentials || $scope.securityGroup.accountName;
128
- const regions = $scope.securityGroup.regions;
129
- if (account && regions && regions.length) {
130
- configureFilteredSecurityGroups();
131
- } else {
132
- clearSecurityGroups();
133
- }
134
- };
135
-
136
- function configureFilteredSecurityGroups() {
137
- const vpcId = $scope.securityGroup.vpcId || null;
138
- const account = $scope.securityGroup.credentials || $scope.securityGroup.accountName;
139
- const regions = $scope.securityGroup.regions || [];
140
- let existingSecurityGroupNames = [];
141
- let availableSecurityGroups = [];
142
-
143
- regions.forEach(function (region) {
144
- let regionalVpcId = null;
145
- if (vpcId) {
146
- const baseVpc = _.find($scope.allVpcs, { id: vpcId });
147
- regionalVpcId = _.find($scope.allVpcs, { account: account, region: region, name: baseVpc.name }).id;
148
- }
149
-
150
- const regionalSecurityGroups = _.filter(allSecurityGroups[account].azure[region], { vpcId: regionalVpcId });
151
- const regionalGroupNames = _.map(regionalSecurityGroups, 'name');
152
-
153
- existingSecurityGroupNames = _.uniq(existingSecurityGroupNames.concat(regionalGroupNames));
154
-
155
- if (!availableSecurityGroups.length) {
156
- availableSecurityGroups = existingSecurityGroupNames;
157
- } else {
158
- availableSecurityGroups = _.intersection(availableSecurityGroups, regionalGroupNames);
159
- }
160
- });
161
-
162
- $scope.availableSecurityGroups = availableSecurityGroups;
163
- $scope.existingSecurityGroupNames = existingSecurityGroupNames;
164
- clearInvalidSecurityGroups();
165
- }
166
-
167
- ctrl.mixinUpsert = function (descriptor) {
168
- $scope.taskMonitor.submit(function () {
169
- return SecurityGroupWriter.upsertSecurityGroup($scope.securityGroup, application, descriptor);
170
- });
171
- };
172
-
173
- function clearInvalidSecurityGroups() {
174
- const removed = $scope.state.removedRules;
175
- $scope.securityGroup.securityGroupIngress = $scope.securityGroup.securityGroupIngress.filter(function (rule) {
176
- if (rule.name && !$scope.availableSecurityGroups.includes(rule.name) && !removed.includes(rule.name)) {
177
- removed.push(rule.name);
178
- return false;
179
- }
180
- return true;
181
- });
182
- if (removed.length) {
183
- modalWizardService.getWizard().markDirty('Ingress');
184
- }
185
- }
186
-
187
- ctrl.refreshSecurityGroups = function () {
188
- $scope.state.refreshingSecurityGroups = true;
189
- return cacheInitializer.refreshCache('securityGroups').then(function () {
190
- return ctrl.initializeSecurityGroups().then(function () {
191
- ctrl.vpcUpdated();
192
- $scope.state.refreshingSecurityGroups = false;
193
- });
194
- });
195
- };
196
-
197
- allSecurityGroups = {};
198
-
199
- ctrl.initializeSecurityGroups = function () {
200
- return securityGroupReader.getAllSecurityGroups().then(function (securityGroups) {
201
- allSecurityGroups = securityGroups;
202
- const account = $scope.securityGroup.credentials || $scope.securityGroup.accountName;
203
- const region = $scope.securityGroup.regions[0];
204
- const vpcId = $scope.securityGroup.vpcId || null;
205
-
206
- let availableGroups;
207
- if (account && region) {
208
- availableGroups = _.filter(securityGroups[account].azure[region], { vpcId: vpcId });
209
- } else {
210
- availableGroups = securityGroups;
211
- }
212
-
213
- $scope.availableSecurityGroups = _.map(availableGroups, 'name');
214
- });
215
- };
216
-
217
- ctrl.cancel = function () {
218
- $uibModalInstance.dismiss();
219
- };
220
-
221
- const classicPattern = /^[\x20-\x7F]+$/;
222
- const vpcPattern = /^[a-zA-Z0-9\s._\-:/()#,@[\]+=&;{}!$*]+$/;
223
-
224
- ctrl.getCurrentNamePattern = function () {
225
- return $scope.securityGroup.vpcId ? vpcPattern : classicPattern;
226
- };
227
-
228
- ctrl.updateName = function () {
229
- const securityGroup = $scope.securityGroup;
230
- let name = application.name;
231
- if (securityGroup.detail) {
232
- name += '-' + securityGroup.detail;
233
- }
234
- securityGroup.name = name;
235
- $scope.namePreview = name;
236
- };
237
-
238
- ctrl.namePattern = {
239
- test: function (name) {
240
- return ctrl.getCurrentNamePattern().test(name);
241
- },
242
- };
243
-
244
- ctrl.addRule = function (ruleset) {
245
- ruleset.push({
246
- type: 'tcp',
247
- startPort: 7001,
248
- endPort: 7001,
249
- });
250
- };
251
-
252
- ctrl.removeRule = function (ruleset, index) {
253
- ruleset.splice(index, 1);
254
- };
255
-
256
- ctrl.dismissRemovedRules = function () {
257
- $scope.state.removedRules = [];
258
- modalWizardService.getWizard().markClean('Ingress');
259
- modalWizardService.getWizard().markComplete('Ingress');
260
- };
261
- },
262
- ]);
@@ -1,20 +0,0 @@
1
- <form name="form" class="form-horizontal" novalidate validate-on-submit>
2
- <v2-modal-wizard heading="Create New {{firewallLabel}}" 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="Ingress" label="Ingress" done="true">
7
- <ng-include src="pages.ingress"></ng-include>
8
- </v2-wizard-page>
9
- </v2-modal-wizard>
10
- <div class="modal-footer">
11
- <button class="btn btn-default" ng-click="ctrl.cancel()">Cancel</button>
12
- <submit-button
13
- is-disabled="state.submitting"
14
- submitting="state.submitting"
15
- on-click="form.$valid && ctrl.upsert()"
16
- is-new="isNew"
17
- >
18
- </submit-button>
19
- </div>
20
- </form>
@@ -1,75 +0,0 @@
1
- <div class="modal-body">
2
- <div class="row"></div>
3
- <div class="form-group">
4
- <div class="form-group">
5
- <div class="col-md-12">
6
- <table class="table table-condensed packed">
7
- <thead>
8
- <tr>
9
- <th style="width: 21%">Protocol</th>
10
- <th style="width: 32%">
11
- Source IP/CIDR ranges<help-field key="azure.securityGroup.ingress.sourceIPCIDRRanges"></help-field>
12
- </th>
13
- <th style="width: 32%">
14
- Destination port ranges<help-field key="azure.securityGroup.ingress.destPortRanges"></help-field>
15
- </th>
16
- <th style width="15%">Actions<help-field key="azure.securityGroup.ingress.actions"></help-field></th>
17
- </tr>
18
- </thead>
19
- <tbody>
20
- <tr ng-repeat="rule in securityGroup.securityRules">
21
- <td>
22
- <select class="form-control input-sm" ng-model="rule.protocolUI">
23
- <option value="tcp">TCP</option>
24
- <option value="udp">UDP</option>
25
- <option value="*">ANY</option>
26
- </select>
27
- </td>
28
- <td>
29
- <input
30
- class="form-control input-sm"
31
- type="text"
32
- value="*"
33
- pattern="^\*$|^((25[0-5]|2[0-4]\d|[01]?\d\d?)[.]){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]|[1-2]\d|3[0-2]))?(,((25[0-5]|2[0-4]\d|[01]?\d\d?)[.]){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]|[1-2]\d|3[0-2]))?)*$"
34
- ng-model="rule.sourceIPCIDRRanges"
35
- ng-change="ctrl.sourceIPCIDRUpdated(securityGroup.securityRules, $index)"
36
- required
37
- />
38
- </td>
39
- <td>
40
- <input
41
- class="form-control input-sm"
42
- type="text"
43
- value="80"
44
- pattern="^\*$|^((\d|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])|(\d|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])-(\d|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5]))(,((\d|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])|(\d|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])-(\d|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])))*$"
45
- ng-model="rule.destPortRanges"
46
- ng-change="ctrl.portUpdated(securityGroup.securityRules, $index)"
47
- required
48
- />
49
- </td>
50
- <td>
51
- <a class="btn-link sm-label" ng-click="ctrl.moveUp(securityGroup.securityRules, $index)"
52
- ><span class="glyphicon glyphicon-arrow-up"></span>
53
- </a>
54
- <a class="btn-link sm-label" ng-click="ctrl.moveDown(securityGroup.securityRules, $index)"
55
- ><span class="glyphicon glyphicon-arrow-down"></span>
56
- </a>
57
- <a class="btn-link sm-label" ng-click="ctrl.removeRule(securityGroup.securityRules, $index)"
58
- ><span class="glyphicon glyphicon-trash"></span>
59
- </a>
60
- </td>
61
- </tr>
62
- </tbody>
63
- </table>
64
- </div>
65
- </div>
66
- <div class="form-group small" style="margin-top: 20px">
67
- <div class="col-md-12">
68
- <button class="add-new col-md-12" ng-click="ctrl.addRule(securityGroup.securityRules)">
69
- <span class="glyphicon glyphicon-plus-sign"></span> Add new
70
- <firewall-label label="Firewall"></firewall-label> Rule
71
- </button>
72
- </div>
73
- </div>
74
- </div>
75
- </div>
@@ -1,88 +0,0 @@
1
- <div class="modal-body">
2
- <div class="form-group">
3
- <div
4
- class="col-md-12 well"
5
- ng-class="{'alert-danger': form.securityGroupName.$error.validateUnique, 'alert-info': !form.securityGroupName.$error.validateUnique}"
6
- >
7
- <strong>Your <firewall-label label="firewall"></firewall-label> will be named:</strong>
8
- <span ng-bind="namePreview"></span>
9
- </div>
10
- </div>
11
- <div class="form-group">
12
- <div class="col-md-4 sm-label-right">Detail</div>
13
- <div class="col-md-4">
14
- <input
15
- type="text"
16
- class="form-control input-sm"
17
- required
18
- ng-model="securityGroup.detail"
19
- ng-change="ctrl.updateName()"
20
- />
21
- </div>
22
- </div>
23
- <div class="form-group">
24
- <div class="col-md-4 sm-label-right">Description</div>
25
- <div class="col-md-8">
26
- <input type="text" class="form-control input-sm" ng-model="securityGroup.description" />
27
- </div>
28
- </div>
29
- <div class="form-group">
30
- <div class="col-md-4 sm-label-right">Account</div>
31
- <div class="col-md-8">
32
- <account-select-field
33
- required
34
- component="securityGroup"
35
- field="credentials"
36
- accounts="accounts"
37
- provider="'azure'"
38
- on-change="ctrl.accountUpdated()"
39
- ></account-select-field>
40
- </div>
41
- </div>
42
- <div class="form-group">
43
- <div class="col-md-12">
44
- <region-select-field
45
- label-columns="4"
46
- component="securityGroup"
47
- field="region"
48
- field-columns="8"
49
- account="securityGroup.credentials"
50
- provider="'azure'"
51
- on-change="ctrl.regionUpdated()"
52
- regions="regions"
53
- ></region-select-field>
54
- </div>
55
- </div>
56
-
57
- <div class="form-group">
58
- <div class="col-md-4 sm-label-right">Virtual Network</div>
59
- <div class="col-md-7">
60
- <ui-select
61
- class="form-control input-sm"
62
- ng-model="securityGroup.selectedVnet"
63
- on-select="ctrl.selectedVnetChanged($item)"
64
- >
65
- <ui-select-match placeholder="Select from existing virtual networks">{{$select.selected.name}}</ui-select-match>
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">
74
- <div class="col-md-4 sm-label-right">Subnet</div>
75
- <div class="col-md-7">
76
- <ui-select
77
- class="form-control input-sm"
78
- ng-model="securityGroup.selectedSubnet"
79
- on-select="ctrl.selectedSubnetChanged($item)"
80
- >
81
- <ui-select-match placeholder="Select from existing subnets">{{$select.selected.name}}</ui-select-match>
82
- <ui-select-choices repeat="selectSubnet in ctrl.selectedSubnets | filter: $select.search">
83
- <span ng-bind-html="selectSubnet.name | highlight: $select.search"></span>
84
- </ui-select-choices>
85
- </ui-select>
86
- </div>
87
- </div>
88
- </div>
@@ -1,19 +0,0 @@
1
- <form name="form" novalidate validate-on-submit>
2
- <v2-modal-wizard
3
- heading="Edit {{securityGroup.name}}: {{securityGroup.region}}: {{securityGroup.credentials}}"
4
- task-monitor="taskMonitor"
5
- dismiss="$dismiss()"
6
- >
7
- <v2-wizard-page key="Ingress" label="Ingress" done="true">
8
- <ng-include src="pages.ingress"></ng-include>
9
- </v2-wizard-page>
10
- </v2-modal-wizard>
11
- <div class="modal-footer">
12
- <button ng-disabled="taskMonitor.submitting" class="btn btn-default" ng-click="ctrl.cancel()">Cancel</button>
13
- <submit-button
14
- is-disabled="taskMonitor.submitting"
15
- submitting="taskMonitor.submitting"
16
- on-click="form.$valid && ctrl.upsert()"
17
- ></submit-button>
18
- </div>
19
- </form>