@spinnaker/azure 0.0.0-main-2

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 (174) hide show
  1. package/CHANGELOG.md +873 -0
  2. package/LICENSE.txt +203 -0
  3. package/dist/azure.module.d.ts +3 -0
  4. package/dist/azure.settings.d.ts +8 -0
  5. package/dist/common/AzureModalFooter.d.ts +18 -0
  6. package/dist/help/azure.help.d.ts +1 -0
  7. package/dist/image/image.reader.d.ts +2 -0
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.js +6778 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/instance/azureInstanceType.service.d.ts +2 -0
  12. package/dist/instance/details/instance.details.controller.d.ts +2 -0
  13. package/dist/loadBalancer/configure/AzureLoadBalancerChoiceModal.d.ts +16 -0
  14. package/dist/loadBalancer/configure/createLoadBalancer.controller.d.ts +2 -0
  15. package/dist/loadBalancer/details/loadBalancerDetail.controller.d.ts +2 -0
  16. package/dist/loadBalancer/loadBalancer.transformer.d.ts +2 -0
  17. package/dist/pipeline/stages/bake/azureBakeStage.d.ts +2 -0
  18. package/dist/pipeline/stages/bake/bakeExecutionDetails.controller.d.ts +2 -0
  19. package/dist/pipeline/stages/destroyAsg/azureDestroyAsgStage.d.ts +2 -0
  20. package/dist/pipeline/stages/disableAsg/azureDisableAsgStage.d.ts +2 -0
  21. package/dist/pipeline/stages/enableAsg/azureEnableAsgStage.d.ts +2 -0
  22. package/dist/securityGroup/clone/cloneSecurityGroup.controller.d.ts +2 -0
  23. package/dist/securityGroup/configure/CreateSecurityGroupCtrl.d.ts +2 -0
  24. package/dist/securityGroup/configure/EditSecurityGroupCtrl.d.ts +2 -0
  25. package/dist/securityGroup/details/securityGroupDetail.controller.d.ts +2 -0
  26. package/dist/securityGroup/securityGroup.reader.d.ts +2 -0
  27. package/dist/securityGroup/securityGroup.transformer.d.ts +2 -0
  28. package/dist/securityGroup/securityGroup.write.service.d.ts +2 -0
  29. package/dist/serverGroup/configure/serverGroup.configure.azure.module.d.ts +2 -0
  30. package/dist/serverGroup/configure/serverGroupCommandBuilder.service.d.ts +2 -0
  31. package/dist/serverGroup/configure/serverGroupConfiguration.service.d.ts +2 -0
  32. package/dist/serverGroup/configure/wizard/CloneServerGroup.azure.controller.d.ts +2 -0
  33. package/dist/serverGroup/configure/wizard/ServerGroupInstanceArchetype.controller.d.ts +2 -0
  34. package/dist/serverGroup/configure/wizard/ServerGroupInstanceType.controller.d.ts +2 -0
  35. package/dist/serverGroup/configure/wizard/advancedSettings/ServerGroupAdvancedSettings.controller.d.ts +2 -0
  36. package/dist/serverGroup/configure/wizard/advancedSettings/advancedSettingsSelector.directive.d.ts +2 -0
  37. package/dist/serverGroup/configure/wizard/basicSettings/ServerGroupBasicSettings.controller.d.ts +2 -0
  38. package/dist/serverGroup/configure/wizard/basicSettings/image.regional.filter.d.ts +2 -0
  39. package/dist/serverGroup/configure/wizard/capacity/capacitySelector.directive.d.ts +2 -0
  40. package/dist/serverGroup/configure/wizard/healthSettings/ServerGroupHealthSettings.controller.d.ts +2 -0
  41. package/dist/serverGroup/configure/wizard/healthSettings/healthSettingsSelector.directive.d.ts +2 -0
  42. package/dist/serverGroup/configure/wizard/image/ServerGroupImageSettings.controller.d.ts +2 -0
  43. package/dist/serverGroup/configure/wizard/image/imageSettingsSelector.directive.d.ts +2 -0
  44. package/dist/serverGroup/configure/wizard/loadBalancers/ServerGroupLoadBalancers.controller.d.ts +2 -0
  45. package/dist/serverGroup/configure/wizard/loadBalancers/serverGroupLoadBalancersSelector.directive.d.ts +2 -0
  46. package/dist/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettings.controller.d.ts +2 -0
  47. package/dist/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettingsSelector.directive.d.ts +2 -0
  48. package/dist/serverGroup/configure/wizard/securityGroup/ServerGroupSecurityGroups.controller.d.ts +2 -0
  49. package/dist/serverGroup/configure/wizard/securityGroup/serverGroupSecurityGroupsSelector.directive.d.ts +2 -0
  50. package/dist/serverGroup/configure/wizard/tags/tagsSelector.directive.d.ts +2 -0
  51. package/dist/serverGroup/configure/wizard/zones/zoneSelector.directive.d.ts +2 -0
  52. package/dist/serverGroup/details/rollback/RollbackServerGroupModal.d.ts +25 -0
  53. package/dist/serverGroup/details/serverGroup.details.module.d.ts +2 -0
  54. package/dist/serverGroup/details/serverGroupDetails.azure.controller.d.ts +2 -0
  55. package/dist/serverGroup/serverGroup.transformer.d.ts +2 -0
  56. package/dist/utility.d.ts +28 -0
  57. package/dist/validation/applicationName.validator.d.ts +2 -0
  58. package/package.json +43 -0
  59. package/src/azure.module.ts +95 -0
  60. package/src/azure.settings.ts +16 -0
  61. package/src/common/AzureModalFooter.tsx +43 -0
  62. package/src/help/azure.help.ts +60 -0
  63. package/src/image/image.reader.js +43 -0
  64. package/src/image/image.reader.spec.js +108 -0
  65. package/src/index.ts +1 -0
  66. package/src/instance/azureInstanceType.service.js +831 -0
  67. package/src/instance/azureInstanceType.service.spec.js +17 -0
  68. package/src/instance/details/instance.details.controller.js +371 -0
  69. package/src/instance/details/instance.details.controller.spec.js +129 -0
  70. package/src/instance/details/instanceDetails.html +43 -0
  71. package/src/loadBalancer/configure/AzureLoadBalancerChoiceModal.tsx +101 -0
  72. package/src/loadBalancer/configure/advancedSettings.html +95 -0
  73. package/src/loadBalancer/configure/createLoadBalancer.controller.js +275 -0
  74. package/src/loadBalancer/configure/createLoadBalancer.controller.spec.js +39 -0
  75. package/src/loadBalancer/configure/createLoadBalancer.html +25 -0
  76. package/src/loadBalancer/configure/createLoadBalancerProperties.html +128 -0
  77. package/src/loadBalancer/configure/editLoadBalancer.html +26 -0
  78. package/src/loadBalancer/configure/healthCheck.html +74 -0
  79. package/src/loadBalancer/configure/listeners.html +50 -0
  80. package/src/loadBalancer/details/loadBalancerDetail.controller.js +181 -0
  81. package/src/loadBalancer/details/loadBalancerDetail.controller.spec.js +39 -0
  82. package/src/loadBalancer/details/loadBalancerDetail.html +128 -0
  83. package/src/loadBalancer/loadBalancer.transformer.js +109 -0
  84. package/src/logo/azure.icon.svg +196 -0
  85. package/src/logo/azure.logo.less +6 -0
  86. package/src/logo/logo_azure.png +0 -0
  87. package/src/pipeline/stages/bake/azureBakeStage.js +276 -0
  88. package/src/pipeline/stages/bake/bakeExecutionDetails.controller.js +40 -0
  89. package/src/pipeline/stages/bake/bakeExecutionDetails.html +50 -0
  90. package/src/pipeline/stages/bake/bakeStage.html +187 -0
  91. package/src/pipeline/stages/destroyAsg/azureDestroyAsgStage.js +73 -0
  92. package/src/pipeline/stages/destroyAsg/destroyAsgStage.html +9 -0
  93. package/src/pipeline/stages/destroyAsg/destroyAsgStepLabel.html +1 -0
  94. package/src/pipeline/stages/disableAsg/azureDisableAsgStage.js +65 -0
  95. package/src/pipeline/stages/disableAsg/disableAsgStage.html +11 -0
  96. package/src/pipeline/stages/disableAsg/disableAsgStepLabel.html +1 -0
  97. package/src/pipeline/stages/enableAsg/azureEnableAsgStage.js +70 -0
  98. package/src/pipeline/stages/enableAsg/enableAsgStage.html +11 -0
  99. package/src/pipeline/stages/enableAsg/enableAsgStepLabel.html +1 -0
  100. package/src/securityGroup/clone/cloneSecurityGroup.controller.js +162 -0
  101. package/src/securityGroup/clone/cloneSecurityGroup.html +8 -0
  102. package/src/securityGroup/configure/CreateSecurityGroup.controller.spec.js +78 -0
  103. package/src/securityGroup/configure/CreateSecurityGroupCtrl.js +265 -0
  104. package/src/securityGroup/configure/EditSecurityGroupCtrl.js +222 -0
  105. package/src/securityGroup/configure/configSecurityGroup.mixin.controller.js +262 -0
  106. package/src/securityGroup/configure/createSecurityGroup.html +20 -0
  107. package/src/securityGroup/configure/createSecurityGroupIngress.html +75 -0
  108. package/src/securityGroup/configure/createSecurityGroupProperties.html +88 -0
  109. package/src/securityGroup/configure/editSecurityGroup.html +19 -0
  110. package/src/securityGroup/details/securityGroupDetail.controller.js +142 -0
  111. package/src/securityGroup/details/securityGroupDetail.html +78 -0
  112. package/src/securityGroup/securityGroup.reader.js +17 -0
  113. package/src/securityGroup/securityGroup.transformer.js +13 -0
  114. package/src/securityGroup/securityGroup.write.service.js +57 -0
  115. package/src/serverGroup/configure/serverGroup.configure.azure.module.js +47 -0
  116. package/src/serverGroup/configure/serverGroupCommandBuilder.service.js +175 -0
  117. package/src/serverGroup/configure/serverGroupConfiguration.service.js +357 -0
  118. package/src/serverGroup/configure/serverGroupConfiguration.service.spec.js +209 -0
  119. package/src/serverGroup/configure/wizard/CloneServerGroup.azure.controller.js +247 -0
  120. package/src/serverGroup/configure/wizard/ServerGroupInstanceArchetype.controller.js +35 -0
  121. package/src/serverGroup/configure/wizard/ServerGroupInstanceType.controller.js +15 -0
  122. package/src/serverGroup/configure/wizard/advancedSettings/ServerGroupAdvancedSettings.controller.js +25 -0
  123. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.html +5 -0
  124. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettingsSelector.directive.html +138 -0
  125. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettingsSelector.directive.js +43 -0
  126. package/src/serverGroup/configure/wizard/basicSettings/ServerGroupBasicSettings.controller.js +71 -0
  127. package/src/serverGroup/configure/wizard/basicSettings/basicSettings.html +131 -0
  128. package/src/serverGroup/configure/wizard/basicSettings/image.regional.filter.js +15 -0
  129. package/src/serverGroup/configure/wizard/basicSettings/image.regional.filter.spec.js +42 -0
  130. package/src/serverGroup/configure/wizard/capacity/capacity.html +5 -0
  131. package/src/serverGroup/configure/wizard/capacity/capacitySelector.directive.html +20 -0
  132. package/src/serverGroup/configure/wizard/capacity/capacitySelector.directive.js +21 -0
  133. package/src/serverGroup/configure/wizard/capacity/zones.html +5 -0
  134. package/src/serverGroup/configure/wizard/healthSettings/ServerGroupHealthSettings.controller.js +38 -0
  135. package/src/serverGroup/configure/wizard/healthSettings/healthSettings.html +5 -0
  136. package/src/serverGroup/configure/wizard/healthSettings/healthSettingsSelector.directive.html +32 -0
  137. package/src/serverGroup/configure/wizard/healthSettings/healthSettingsSelector.directive.js +22 -0
  138. package/src/serverGroup/configure/wizard/image/ServerGroupImageSettings.controller.js +34 -0
  139. package/src/serverGroup/configure/wizard/image/imageSettings.html +5 -0
  140. package/src/serverGroup/configure/wizard/image/imageSettingsSelector.directive.html +33 -0
  141. package/src/serverGroup/configure/wizard/image/imageSettingsSelector.directive.js +22 -0
  142. package/src/serverGroup/configure/wizard/instanceArchetype.html +33 -0
  143. package/src/serverGroup/configure/wizard/instanceType/instanceType.html +10 -0
  144. package/src/serverGroup/configure/wizard/instanceType.html +33 -0
  145. package/src/serverGroup/configure/wizard/loadBalancers/ServerGroupLoadBalancers.controller.js +137 -0
  146. package/src/serverGroup/configure/wizard/loadBalancers/loadBalancers.html +3 -0
  147. package/src/serverGroup/configure/wizard/loadBalancers/serverGroupLoadBalancersSelector.directive.html +41 -0
  148. package/src/serverGroup/configure/wizard/loadBalancers/serverGroupLoadBalancersSelector.directive.js +22 -0
  149. package/src/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettings.controller.js +44 -0
  150. package/src/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettingsSelector.directive.html +54 -0
  151. package/src/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettingsSelector.directive.js +19 -0
  152. package/src/serverGroup/configure/wizard/networkSettings/networkSettings.html +3 -0
  153. package/src/serverGroup/configure/wizard/securityGroup/ServerGroupSecurityGroups.controller.js +28 -0
  154. package/src/serverGroup/configure/wizard/securityGroup/securityGroups.html +3 -0
  155. package/src/serverGroup/configure/wizard/securityGroup/serverGroupSecurityGroupsSelector.directive.html +40 -0
  156. package/src/serverGroup/configure/wizard/securityGroup/serverGroupSecurityGroupsSelector.directive.js +38 -0
  157. package/src/serverGroup/configure/wizard/serverGroupWizard.html +61 -0
  158. package/src/serverGroup/configure/wizard/tags/tags.html +5 -0
  159. package/src/serverGroup/configure/wizard/tags/tagsSelector.directive.html +16 -0
  160. package/src/serverGroup/configure/wizard/tags/tagsSelector.directive.js +30 -0
  161. package/src/serverGroup/configure/wizard/templateSelection.html +9 -0
  162. package/src/serverGroup/configure/wizard/zones/zoneSelector.directive.html +21 -0
  163. package/src/serverGroup/configure/wizard/zones/zoneSelector.directive.js +28 -0
  164. package/src/serverGroup/details/rollback/RollbackServerGroupModal.tsx +158 -0
  165. package/src/serverGroup/details/serverGroup.details.module.js +11 -0
  166. package/src/serverGroup/details/serverGroupDetails.azure.controller.js +260 -0
  167. package/src/serverGroup/details/serverGroupDetails.html +98 -0
  168. package/src/serverGroup/serverGroup.transformer.js +150 -0
  169. package/src/serverGroup/serverGroup.transformer.spec.js +256 -0
  170. package/src/subnet/subnetSelectField.directive.html +28 -0
  171. package/src/subnet/subnetSelectField.directive.js +35 -0
  172. package/src/utility.spec.ts +61 -0
  173. package/src/utility.ts +95 -0
  174. package/src/validation/applicationName.validator.js +44 -0
@@ -0,0 +1,137 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ import { InfrastructureCaches, LOAD_BALANCER_READ_SERVICE, ModalWizard, NetworkReader } from '@spinnaker/core';
6
+
7
+ import Utility from '../../../../utility';
8
+
9
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_LOADBALANCERS_SERVERGROUPLOADBALANCERS_CONTROLLER =
10
+ 'spinnaker.azure.serverGroup.configure.loadBalancer.controller';
11
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_LOADBALANCERS_SERVERGROUPLOADBALANCERS_CONTROLLER; // for backwards compatibility
12
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_LOADBALANCERS_SERVERGROUPLOADBALANCERS_CONTROLLER, [
13
+ LOAD_BALANCER_READ_SERVICE,
14
+ ]).controller('azureServerGroupLoadBalancersCtrl', [
15
+ '$scope',
16
+ 'loadBalancerReader',
17
+ function ($scope, loadBalancerReader) {
18
+ ModalWizard.markClean('load-balancers');
19
+
20
+ function loadVnetSubnets(item, type) {
21
+ loadBalancerReader
22
+ .getLoadBalancerDetails('azure', $scope.command.credentials, $scope.command.region, item)
23
+ .then(function (LBs) {
24
+ if (!LBs || LBs.length === 0) {
25
+ // load the subnet and vnets without a load balancer
26
+ const attachedVnet = $scope.command.selectedVnet;
27
+ const attachedSubnet = $scope.command.selectedSubnet;
28
+ $scope.command.selectedVnetSubnets = [];
29
+ $scope.command.allVnets = [];
30
+ NetworkReader.listNetworks().then(function (vnets) {
31
+ if (vnets.azure) {
32
+ vnets.azure.forEach((selectedVnet) => {
33
+ if (
34
+ selectedVnet.account === $scope.command.credentials &&
35
+ selectedVnet.region === $scope.command.region
36
+ ) {
37
+ $scope.command.allVnets.push(selectedVnet);
38
+
39
+ selectedVnet.subnets.map(function (subnet) {
40
+ let addSubnet = true;
41
+ if (subnet.devices) {
42
+ subnet.devices.map(function (device) {
43
+ // only add subnets that are not assigned to an ApplicationGateway
44
+ if (device && device.type === 'applicationGateways') {
45
+ addSubnet = false;
46
+ }
47
+ });
48
+ }
49
+ if (addSubnet) {
50
+ $scope.command.selectedVnetSubnets.push(subnet.name);
51
+ if (subnet.name === attachedSubnet) {
52
+ $scope.command.selectedSubnet = attachedSubnet;
53
+ }
54
+ }
55
+ });
56
+ }
57
+ });
58
+ }
59
+ });
60
+ } else if (LBs && LBs.length === 1) {
61
+ const selectedLoadBalancer = LBs[0];
62
+ const attachedVnet = $scope.command.selectedVnet;
63
+ $scope.command.selectedVnet = null;
64
+ $scope.command.selectedVnetSubnets = [];
65
+ $scope.command.allVnets = [];
66
+ NetworkReader.listNetworks().then(function (vnets) {
67
+ if (vnets.azure) {
68
+ vnets.azure.forEach((selectedVnet) => {
69
+ if (
70
+ selectedVnet.account === $scope.command.credentials &&
71
+ selectedVnet.region === $scope.command.region
72
+ ) {
73
+ $scope.command.allVnets.push(selectedVnet);
74
+ }
75
+ if (
76
+ selectedVnet.account === $scope.command.credentials &&
77
+ selectedVnet.region === $scope.command.region &&
78
+ ((type === 'Azure Application Gateway' && selectedVnet.name == selectedLoadBalancer.vnet) ||
79
+ (type === 'Azure Load Balancer' && selectedVnet.name === attachedVnet.name))
80
+ ) {
81
+ $scope.command.selectedVnet = selectedVnet;
82
+ selectedVnet.subnets.map(function (subnet) {
83
+ let addSubnet = true;
84
+ if (subnet.devices) {
85
+ subnet.devices.map(function (device) {
86
+ // only add subnets that are not assigned to an ApplicationGateway
87
+ if (device && device.type === 'applicationGateways') {
88
+ addSubnet = false;
89
+ }
90
+ });
91
+ }
92
+ if (addSubnet) {
93
+ $scope.command.selectedVnetSubnets.push(subnet.name);
94
+ }
95
+ });
96
+ }
97
+ });
98
+ }
99
+ });
100
+ }
101
+ });
102
+ }
103
+
104
+ if ($scope.command.credentials && $scope.command.region) {
105
+ $scope.command.viewState.networkSettingsConfigured = true;
106
+ $scope.command.selectedVnetSubnets = [];
107
+ if ($scope.command.loadBalancerName !== null && typeof $scope.command.loadBalancerName !== 'undefined') {
108
+ $scope.useLoadBalancer = true;
109
+ }
110
+ loadVnetSubnets($scope.command.loadBalancerName, $scope.command.loadBalancerType);
111
+ }
112
+
113
+ this.loadBalancerChanged = function (item) {
114
+ $scope.command.viewState.networkSettingsConfigured = true;
115
+ ModalWizard.markComplete('load-balancers');
116
+
117
+ const loadBalancers = $scope.command.backingData.loadBalancers;
118
+ let loadBalancerType = null;
119
+
120
+ if (loadBalancers) {
121
+ const loadBalancerToFind = loadBalancers.find((lb) => lb.name === item);
122
+ if (loadBalancerToFind) {
123
+ loadBalancerType = Utility.getLoadBalancerType(loadBalancerToFind.loadBalancerType).type;
124
+ }
125
+ }
126
+
127
+ if (item === null) {
128
+ $scope.command.loadBalancerName = null;
129
+ }
130
+
131
+ $scope.command.selectedVnetSubnets = [];
132
+ $scope.command.loadBalancerType = loadBalancerType;
133
+ InfrastructureCaches.clearCache('networks');
134
+ loadVnetSubnets(item, loadBalancerType);
135
+ };
136
+ },
137
+ ]);
@@ -0,0 +1,3 @@
1
+ <div class="row">
2
+ <azure-server-group-load-balancers-selector command="command"></azure-server-group-load-balancers-selector>
3
+ </div>
@@ -0,0 +1,41 @@
1
+ <h5 class="text-center" ng-if="!command.viewState.loadBalancersConfigured">Please select an account and region.</h5>
2
+ <div
3
+ ng-if="command.viewState.loadBalancersConfigured"
4
+ ng-controller="azureServerGroupLoadBalancersCtrl as loadBalancerCtrl"
5
+ >
6
+ <div class="form-group">
7
+ <div class="col-md-3 sm-label-right"><b>Load Balancers</b></div>
8
+ <div class="col-md-7">
9
+ <label for="useLoadBalancerCheckbox">
10
+ <input
11
+ type="checkbox"
12
+ ng-model="useLoadBalancer"
13
+ id="useLoadBalancerCheckbox"
14
+ ng-change="loadBalancerCtrl.loadBalancerChanged(null)"
15
+ />
16
+ Use load balancer
17
+ </label>
18
+ <ui-select
19
+ ng-model="command.loadBalancerName"
20
+ class="form-control input-sm"
21
+ ng-change="loadBalancerCtrl.loadBalancerChanged($select.selected)"
22
+ ng-show="useLoadBalancer"
23
+ >
24
+ <ui-select-match placeholder="select a loadBalancer">{{$select.selected}}</ui-select-match>
25
+ <ui-select-choices repeat="loadBalancer in command.loadBalancers | filter: $select.search">
26
+ <span ng-bind-html="loadBalancer | highlight: $select.search"></span>
27
+ </ui-select-choices>
28
+ </ui-select>
29
+ </div>
30
+ </div>
31
+
32
+ <div class="form-group" ng-show="command.loadBalancerName">
33
+ <div class="col-md-12">
34
+ <div class="well-compact" ng-class="well">
35
+ <h5 class="text-center">
36
+ <p>The load balancer {{command.loadBalancerName}} is an {{command.loadBalancerType}}</p>
37
+ </h5>
38
+ </div>
39
+ </div>
40
+ </div>
41
+ </div>
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_LOADBALANCERS_SERVERGROUPLOADBALANCERSSELECTOR_DIRECTIVE =
6
+ 'spinnaker.azure.serverGroup.configure.loadBalancer.directive';
7
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_LOADBALANCERS_SERVERGROUPLOADBALANCERSSELECTOR_DIRECTIVE; // for backwards compatibility
8
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_LOADBALANCERS_SERVERGROUPLOADBALANCERSSELECTOR_DIRECTIVE, []).directive(
9
+ 'azureServerGroupLoadBalancersSelector',
10
+ [
11
+ 'azureServerGroupConfigurationService',
12
+ function () {
13
+ return {
14
+ restrict: 'E',
15
+ scope: {
16
+ command: '=',
17
+ },
18
+ templateUrl: require('./serverGroupLoadBalancersSelector.directive.html'),
19
+ };
20
+ },
21
+ ],
22
+ );
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ import { ModalWizard } from '@spinnaker/core';
6
+
7
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_NETWORKSETTINGS_SERVERGROUPNETWORKSETTINGS_CONTROLLER =
8
+ 'spinnaker.azure.serverGroup.configure.networkSettings.controller';
9
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_NETWORKSETTINGS_SERVERGROUPNETWORKSETTINGS_CONTROLLER; // for backwards compatibility
10
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_NETWORKSETTINGS_SERVERGROUPNETWORKSETTINGS_CONTROLLER, []).controller(
11
+ 'azureServerGroupNetworkSettingsCtrl',
12
+ [
13
+ '$scope',
14
+ function ($scope) {
15
+ ModalWizard.markClean('network-settings');
16
+
17
+ $scope.command.selectedVnet = {
18
+ name: $scope.command.vnet,
19
+ };
20
+
21
+ $scope.command.selectedSubnet = $scope.command.subnet;
22
+
23
+ this.vnetChanged = function (item) {
24
+ $scope.command.vnet = item;
25
+ $scope.command.subnet = $scope.command.selectedSubnet = null;
26
+ $scope.command.selectedVnetSubnets = item.subnets.map((s) => s.name);
27
+ };
28
+
29
+ this.networkSettingsChanged = function (item) {
30
+ $scope.command.vnet = $scope.command.selectedVnet.name;
31
+ $scope.command.subnet = item;
32
+ ModalWizard.markComplete('network-settings');
33
+ };
34
+
35
+ this.getVnetName = function () {
36
+ if ($scope.command.selectedVnet) {
37
+ return $scope.command.selectedVnet.name;
38
+ } else {
39
+ return 'Virtual network was not selected';
40
+ }
41
+ };
42
+ },
43
+ ],
44
+ );
@@ -0,0 +1,54 @@
1
+ <h5 class="text-center" ng-if="!command.viewState.networkSettingsConfigured">
2
+ Please select an account, a region and a load balancer first.
3
+ </h5>
4
+ <div
5
+ ng-if="command.viewState.networkSettingsConfigured"
6
+ ng-controller="azureServerGroupNetworkSettingsCtrl as networkSettingCtrl"
7
+ >
8
+ <div class="form-group" ng-if="command.loadBalancerType === 'Azure Load Balancer' || !command.loadBalancerType">
9
+ <div class="col-md-3 sm-label-right">Virtual Network</div>
10
+ <div class="col-md-7">
11
+ <ui-select
12
+ required
13
+ class="form-control input-sm"
14
+ ng-model="command.selectedVnet"
15
+ on-select="networkSettingCtrl.vnetChanged($item)"
16
+ >
17
+ <ui-select-match placeholder="Select from existing virtual networks">{{$select.selected.name}}</ui-select-match>
18
+ <ui-select-choices repeat="selectVnet in command.allVnets">
19
+ <span ng-bind-html="selectVnet.name"></span>
20
+ </ui-select-choices>
21
+ </ui-select>
22
+ </div>
23
+ </div>
24
+
25
+ <div class="form-group">
26
+ <div class="col-md-3 sm-label-right"><b>Subnets</b></div>
27
+ <div class="col-md-7">
28
+ <ui-select
29
+ required
30
+ ng-model="command.selectedSubnet"
31
+ class="form-control input-sm"
32
+ on-select="networkSettingCtrl.networkSettingsChanged($item)"
33
+ >
34
+ <ui-select-match placeholder="Select from an existing subnet">{{$select.selected}}</ui-select-match>
35
+ <ui-select-choices repeat="subnet in command.selectedVnetSubnets | filter: $select.search">
36
+ <span ng-bind-html="subnet | highlight: $select.search"></span>
37
+ </ui-select-choices>
38
+ </ui-select>
39
+ </div>
40
+ </div>
41
+
42
+ <div class="form-group" ng-if="!command.viewState.hideClusterNamePreview">
43
+ <div class="col-md-12">
44
+ <div class="well-compact" ng-class="well">
45
+ <h5 class="text-center">
46
+ <p>Your server group will be using a subnet in virtual network:</p>
47
+ <p>
48
+ <strong> {{networkSettingCtrl.getVnetName()}} </strong>
49
+ </p>
50
+ </h5>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ </div>
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_NETWORKSETTINGS_SERVERGROUPNETWORKSETTINGSSELECTOR_DIRECTIVE =
6
+ 'spinnaker.azure.serverGroup.configure.networkSettings.directive';
7
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_NETWORKSETTINGS_SERVERGROUPNETWORKSETTINGSSELECTOR_DIRECTIVE; // for backwards compatibility
8
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_NETWORKSETTINGS_SERVERGROUPNETWORKSETTINGSSELECTOR_DIRECTIVE, []).directive(
9
+ 'azureServerGroupNetworkSettingsSelector',
10
+ function () {
11
+ return {
12
+ restrict: 'E',
13
+ scope: {
14
+ command: '=',
15
+ },
16
+ templateUrl: require('./ServerGroupNetworkSettingsSelector.directive.html'),
17
+ };
18
+ },
19
+ );
@@ -0,0 +1,3 @@
1
+ <div class="row">
2
+ <azure-server-group-network-settings-selector command="command"></azure-server-group-network-settings-selector>
3
+ </div>
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ import { ModalWizard } from '@spinnaker/core';
6
+
7
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_SECURITYGROUP_SERVERGROUPSECURITYGROUPS_CONTROLLER =
8
+ 'spinnaker.azure.serverGroup.configure.securityGroups.controller';
9
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_SECURITYGROUP_SERVERGROUPSECURITYGROUPS_CONTROLLER; // for backwards compatibility
10
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_SECURITYGROUP_SERVERGROUPSECURITYGROUPS_CONTROLLER, []).controller(
11
+ 'azureServerGroupSecurityGroupsCtrl',
12
+ [
13
+ '$scope',
14
+ function ($scope) {
15
+ ModalWizard.markClean('security-groups');
16
+ ModalWizard.markComplete('security-groups');
17
+
18
+ $scope.command.selectedSecurityGroup = {
19
+ id: $scope.command.securityGroupName,
20
+ };
21
+
22
+ this.securityGroupChanged = function (securityGroup) {
23
+ $scope.command.securityGroupName = securityGroup.id;
24
+ ModalWizard.markComplete('security-groups');
25
+ };
26
+ },
27
+ ],
28
+ );
@@ -0,0 +1,3 @@
1
+ <div class="row">
2
+ <azure-server-group-security-groups-selector command="command"></azure-server-group-security-groups-selector>
3
+ </div>
@@ -0,0 +1,40 @@
1
+ <h5 class="text-center" ng-if="!command.viewState.securityGroupsConfigured">Please select an account and region.</h5>
2
+ <div
3
+ ng-if="command.viewState.securityGroupsConfigured"
4
+ ng-controller="azureServerGroupSecurityGroupsCtrl as securityGroupCtrl"
5
+ >
6
+ <div class="form-group">
7
+ <div class="col-md-3 sm-label-right">
8
+ <b><firewall-label label="Firewalls"></firewall-label></b>
9
+ </div>
10
+ <div class="col-md-7">
11
+ <ui-select
12
+ ng-model="command.selectedSecurityGroup"
13
+ class="form-control input-sm"
14
+ on-select="securityGroupCtrl.securityGroupChanged($item)"
15
+ >
16
+ <ui-select-match placeholder="select a {{firewallLabel}}">{{$select.selected.id}}</ui-select-match>
17
+ <ui-select-choices
18
+ repeat="securityGroup in command.backingData.filtered.securityGroups | anyFieldFilter: {name: $select.search, id: $select.search}"
19
+ >
20
+ <span ng-bind-html="securityGroup.id | highlight: $select.search"></span>
21
+ </ui-select-choices>
22
+ </ui-select>
23
+ </div>
24
+ </div>
25
+
26
+ <div class="form-group small" style="margin-top: 20px">
27
+ <div class="col-md-9 col-md-offset-3">
28
+ <p>
29
+ <span ng-if="refreshing"><span class="fa fa-sync-alt fa-spin"></span></span>
30
+ <firewall-label label="Firewalls"></firewall-label>
31
+ <span ng-if="!refreshing">last refreshed {{ getSecurityGroupRefreshTime() | timestamp }}</span>
32
+ <span ng-if="refreshing"> refreshing...</span>
33
+ </p>
34
+ <p>
35
+ If you're not finding a <firewall-label label="firewall"></firewall-label> that was recently added,
36
+ <a href ng-click="refreshSecurityGroups()">click here</a> to refresh the list.
37
+ </p>
38
+ </div>
39
+ </div>
40
+ </div>
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ import { FirewallLabels, InfrastructureCaches } from '@spinnaker/core';
6
+
7
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_SECURITYGROUP_SERVERGROUPSECURITYGROUPSSELECTOR_DIRECTIVE =
8
+ 'spinnaker.azure.serverGroup.configure.securityGroupSelector.directive';
9
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_SECURITYGROUP_SERVERGROUPSECURITYGROUPSSELECTOR_DIRECTIVE; // for backwards compatibility
10
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_SECURITYGROUP_SERVERGROUPSECURITYGROUPSSELECTOR_DIRECTIVE, []).directive(
11
+ 'azureServerGroupSecurityGroupsSelector',
12
+ [
13
+ 'azureServerGroupConfigurationService',
14
+ function (azureServerGroupConfigurationService) {
15
+ return {
16
+ restrict: 'E',
17
+ scope: {
18
+ command: '=',
19
+ },
20
+ templateUrl: require('./serverGroupSecurityGroupsSelector.directive.html'),
21
+ link: function (scope) {
22
+ scope.firewallLabel = FirewallLabels.get('firewall');
23
+
24
+ scope.getSecurityGroupRefreshTime = function () {
25
+ return InfrastructureCaches.get('securityGroups').getStats().ageMax;
26
+ };
27
+
28
+ scope.refreshSecurityGroups = function () {
29
+ scope.refreshing = true;
30
+ azureServerGroupConfigurationService.refreshSecurityGroups(scope.command).then(function () {
31
+ scope.refreshing = false;
32
+ });
33
+ };
34
+ },
35
+ };
36
+ },
37
+ ],
38
+ );
@@ -0,0 +1,61 @@
1
+ <div>
2
+ <div ng-if="state.requiresTemplateSelection">
3
+ <ng-include src="pages.templateSelection"></ng-include>
4
+ </div>
5
+ <div ng-if="!state.loaded" style="height: 200px" class="horizontal center middle">
6
+ <loading-spinner size="'small'"></loading-spinner>
7
+ </div>
8
+ <div>
9
+ <form name="serverGroupWizardForm" class="form-horizontal" novalidate validate-on-submit>
10
+ <v2-modal-wizard
11
+ ng-show="state.loaded && !state.requiresTemplateSelection"
12
+ heading="{{title}}"
13
+ task-monitor="taskMonitor"
14
+ dismiss="$dismiss()"
15
+ >
16
+ <v2-wizard-page key="basic-settings" label="Basic Settings" hide-subheading="true">
17
+ <ng-include src="pages.basicSettings"></ng-include>
18
+ </v2-wizard-page>
19
+ <v2-wizard-page key="image-settings" label="Image">
20
+ <ng-include src="pages.imageSettings"></ng-include>
21
+ </v2-wizard-page>
22
+ <v2-wizard-page key="load-balancers" label="Load Balancers" mark-complete-on-view="false">
23
+ <ng-include src="pages.loadBalancers"></ng-include>
24
+ </v2-wizard-page>
25
+ <v2-wizard-page key="network-settings" label="Network Settings" mark-complete-on-view="false">
26
+ <ng-include src="pages.networkSettings"></ng-include>
27
+ </v2-wizard-page>
28
+ <v2-wizard-page key="health-settings" label="Health" mark-complete-on-view="false">
29
+ <ng-include src="pages.healthSettings"></ng-include>
30
+ </v2-wizard-page>
31
+ <v2-wizard-page key="security-groups" label="{{firewallsLabel}}" mark-complete-on-view="false" done="true">
32
+ <ng-include src="pages.securityGroups"></ng-include>
33
+ </v2-wizard-page>
34
+ <v2-wizard-page key="instance-type" label="Instance Type" mark-complete-on-view="false" done="false">
35
+ <ng-include src="pages.instanceType"></ng-include>
36
+ </v2-wizard-page>
37
+ <v2-wizard-page key="zones" label="Zones" mark-complete-on-view="false" done="false">
38
+ <ng-include src="pages.zones"></ng-include>
39
+ </v2-wizard-page>
40
+ <v2-wizard-page key="tags" label="Tags" mark-complete-on-view="false" done="true">
41
+ <ng-include src="pages.tags"></ng-include>
42
+ </v2-wizard-page>
43
+ <v2-wizard-page key="advanced-settings" label="Advanced Settings" mark-complete-on-view="false" done="true">
44
+ <ng-include src="pages.advancedSettings"></ng-include>
45
+ </v2-wizard-page>
46
+ </v2-modal-wizard>
47
+ <div class="modal-footer" ng-if="state.loaded">
48
+ <button ng-disabled="taskMonitor.submitting" class="btn btn-default btn-cancel" ng-click="ctrl.cancel()">
49
+ Cancel
50
+ </button>
51
+ <submit-button
52
+ is-disabled="taskMonitor.submitting || !ctrl.isValid()"
53
+ label="command.viewState.submitButtonLabel"
54
+ submitting="taskMonitor.submitting"
55
+ on-click="serverGroupWizardForm.$valid && ctrl.submit()"
56
+ is-new="true"
57
+ ></submit-button>
58
+ </div>
59
+ </form>
60
+ </div>
61
+ </div>
@@ -0,0 +1,5 @@
1
+ <ng-form name="zonesSubForm">
2
+ <div class="container-fluid form-horizontal">
3
+ <azure-tags-selector command="command"></azure-tags-selector>
4
+ </div>
5
+ </ng-form>
@@ -0,0 +1,16 @@
1
+ <div class="form-group">
2
+ <div class="col-md-12" style="color: red" ng-if="!tagsSelectorCtrl.getTagResult().isValid">
3
+ {{ tagsSelectorCtrl.getTagResult().errorMessage }}
4
+ </div>
5
+ <div class="col-md-4 sm-label-left">
6
+ <b>Custom Tags</b>
7
+ <help-field key="azure.serverGroup.customTags"></help-field>
8
+ </div>
9
+ <div class="col-md-12">
10
+ <map-editor
11
+ model="tagsSelectorCtrl.command.instanceTags"
12
+ add-button-label="Add New Tags"
13
+ allow-empty="true"
14
+ ></map-editor>
15
+ </div>
16
+ </div>
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ import Utility from '../../../../utility';
6
+
7
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_TAGS_TAGSSELECTOR_DIRECTIVE =
8
+ 'spinnaker.azure.serverGroup.configure.wizard.tags.directive';
9
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_TAGS_TAGSSELECTOR_DIRECTIVE; // for backwards compatibility
10
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_TAGS_TAGSSELECTOR_DIRECTIVE, [])
11
+ .directive('azureTagsSelector', function () {
12
+ return {
13
+ restrict: 'E',
14
+ templateUrl: require('./tagsSelector.directive.html'),
15
+ scope: {},
16
+ bindToController: {
17
+ command: '=',
18
+ },
19
+ controllerAs: 'tagsSelectorCtrl',
20
+ controller: 'TagsSelectorCtrl',
21
+ };
22
+ })
23
+ .controller('TagsSelectorCtrl', [
24
+ '$scope',
25
+ function () {
26
+ this.getTagResult = function () {
27
+ return Utility.checkTags(this.command.instanceTags);
28
+ };
29
+ },
30
+ ]);
@@ -0,0 +1,9 @@
1
+ <deploy-initializer
2
+ cloud-provider="azure"
3
+ command="command"
4
+ application="application"
5
+ parent-state="state"
6
+ dismiss="ctrl.cancel()"
7
+ template-selection-text="ctrl.templateSelectionText"
8
+ on-template-selected="ctrl.templateSelected()"
9
+ ></deploy-initializer>
@@ -0,0 +1,21 @@
1
+ <div class="form-group" ng-if="vm.command.region">
2
+ <div class="col-md-10">
3
+ <label ng-if="vm.command.backingData.filtered.zones && vm.command.backingData.filtered.zones.length !== 0">
4
+ <input type="checkbox" ng-model="vm.command.zonesEnabled" ng-change="vm.updateEnableInboundNAT()" />
5
+ Set availability zones
6
+ </label>
7
+ <ui-select multiple ng-if="vm.command.zonesEnabled" ng-model="vm.command.zones" class="form-control input-sm">
8
+ <ui-select-match>{{ $item }}</ui-select-match>
9
+ <ui-select-choices repeat="zone as zone in vm.command.backingData.filtered.zones">
10
+ <span>{{ zone }}</span>
11
+ </ui-select-choices>
12
+ </ui-select>
13
+ </div>
14
+ </div>
15
+ <h5 class="text-center" ng-if="!vm.command.region">Please select a region.</h5>
16
+ <h5
17
+ class="text-center"
18
+ ng-if="vm.command.region && !(vm.command.backingData.filtered.zones && vm.command.backingData.filtered.zones.length !== 0)"
19
+ >
20
+ Current region does not support availability zones
21
+ </h5>
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_ZONES_ZONESELECTOR_DIRECTIVE =
6
+ 'spinnaker.azure.serverGroup.configure.wizard.capacity.zone.directive';
7
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_ZONES_ZONESELECTOR_DIRECTIVE; // for backwards compatibility
8
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_ZONES_ZONESELECTOR_DIRECTIVE, []).directive('azureZoneSelector', function () {
9
+ return {
10
+ restrict: 'E',
11
+ templateUrl: require('./zoneSelector.directive.html'),
12
+ scope: {},
13
+ bindToController: {
14
+ command: '=',
15
+ },
16
+ controllerAs: 'vm',
17
+ controller: [
18
+ '$scope',
19
+ function ($scope) {
20
+ this.updateEnableInboundNAT = () => {
21
+ if ($scope.vm.command.zonesEnabled) {
22
+ $scope.vm.command.enableInboundNAT = false;
23
+ }
24
+ };
25
+ },
26
+ ],
27
+ };
28
+ });