@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,43 @@
1
+ 'use strict';
2
+
3
+ import * as angular from 'angular';
4
+
5
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_ADVANCEDSETTINGS_ADVANCEDSETTINGSSELECTOR_DIRECTIVE =
6
+ 'spinnaker.azure.serverGroup.configure.wizard.advancedSettings.selector.directive';
7
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_ADVANCEDSETTINGS_ADVANCEDSETTINGSSELECTOR_DIRECTIVE; // for backwards compatibility
8
+ angular
9
+ .module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_ADVANCEDSETTINGS_ADVANCEDSETTINGSSELECTOR_DIRECTIVE, [])
10
+ .directive('azureServerGroupAdvancedSettingsSelector', function () {
11
+ return {
12
+ restrict: 'E',
13
+ templateUrl: require('./advancedSettingsSelector.directive.html'),
14
+ scope: {},
15
+ bindToController: {
16
+ command: '=',
17
+ },
18
+ controllerAs: 'adv',
19
+ controller: 'azureServerGroupAdvancedSettingsSelectorCtrl',
20
+ };
21
+ })
22
+ .controller('azureServerGroupAdvancedSettingsSelectorCtrl', function () {
23
+ this.addDataDisk = () => {
24
+ const newDataDisks = angular.copy(this.command.dataDisks);
25
+ this.command.dataDisks = newDataDisks.concat([
26
+ {
27
+ lun: 0,
28
+ managedDisk: {
29
+ storageAccountType: 'Standard_LRS',
30
+ },
31
+ diskSizeGB: 1,
32
+ caching: 'None',
33
+ createOption: 'Empty',
34
+ },
35
+ ]);
36
+ };
37
+
38
+ this.removeDataDisk = (index) => {
39
+ const newDataDisks = angular.copy(this.command.dataDisks);
40
+ newDataDisks.splice(index, 1);
41
+ this.command.dataDisks = newDataDisks;
42
+ };
43
+ });
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ import UIROUTER_ANGULARJS from '@uirouter/angularjs';
4
+ import * as angular from 'angular';
5
+ import ANGULAR_UI_BOOTSTRAP from 'angular-ui-bootstrap';
6
+
7
+ import { IMAGE_READER, ModalWizard } from '@spinnaker/core';
8
+
9
+ import { AZURE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_IMAGE_REGIONAL_FILTER } from './image.regional.filter';
10
+
11
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_SERVERGROUPBASICSETTINGS_CONTROLLER =
12
+ 'spinnaker.azure.serverGroup.configure.basicSettings';
13
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_SERVERGROUPBASICSETTINGS_CONTROLLER; // for backwards compatibility
14
+ angular
15
+ .module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_SERVERGROUPBASICSETTINGS_CONTROLLER, [
16
+ UIROUTER_ANGULARJS,
17
+ ANGULAR_UI_BOOTSTRAP,
18
+ AZURE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_IMAGE_REGIONAL_FILTER,
19
+ IMAGE_READER,
20
+ ])
21
+ .controller('azureServerGroupBasicSettingsCtrl', [
22
+ '$scope',
23
+ '$controller',
24
+ '$uibModalStack',
25
+ '$state',
26
+ 'imageReader',
27
+ function ($scope, $controller, $uibModalStack, $state, imageReader) {
28
+ $scope.$watch('form.$valid', function (newVal) {
29
+ if (newVal) {
30
+ ModalWizard.markClean('basic-settings');
31
+ ModalWizard.markComplete('basic-settings');
32
+ } else {
33
+ ModalWizard.markIncomplete('basic-settings');
34
+ }
35
+ });
36
+
37
+ this.imageChanged = (image) => {
38
+ $scope.command.imageName = image.imageName;
39
+ $scope.command.selectedImage = image;
40
+ ModalWizard.markClean('basic-settings');
41
+ };
42
+
43
+ angular.extend(
44
+ this,
45
+ $controller('BasicSettingsMixin', {
46
+ $scope: $scope,
47
+ imageReader: imageReader,
48
+ $uibModalStack: $uibModalStack,
49
+ $state: $state,
50
+ }),
51
+ );
52
+
53
+ this.stackPattern = {
54
+ test: function (stack) {
55
+ const pattern = $scope.command.viewState.templatingEnabled ? /^([a-zA-Z0-9]*(\${.+})*)*$/ : /^[a-zA-Z0-9]*$/;
56
+
57
+ return pattern.test(stack);
58
+ },
59
+ };
60
+
61
+ this.detailPattern = {
62
+ test: function (detail) {
63
+ const pattern = $scope.command.viewState.templatingEnabled
64
+ ? /^([a-zA-Z0-9-]*(\${.+})*)*$/
65
+ : /^[a-zA-Z0-9-]*$/;
66
+
67
+ return pattern.test(detail);
68
+ },
69
+ };
70
+ },
71
+ ]);
@@ -0,0 +1,131 @@
1
+ <div class="container-fluid form-horizontal" ng-controller="azureServerGroupBasicSettingsCtrl as basicSettingsCtrl">
2
+ <div class="modal-body">
3
+ <ng-form name="basicSettings">
4
+ <div class="form-group">
5
+ <div class="col-md-3 sm-label-right">Account</div>
6
+ <div class="col-md-7">
7
+ <account-select-field
8
+ required
9
+ read-only="command.viewState.readOnlyFields.credentials"
10
+ component="command"
11
+ field="credentials"
12
+ accounts="command.backingData.accounts"
13
+ provider="'azure'"
14
+ ></account-select-field>
15
+ </div>
16
+ </div>
17
+ <region-select-field
18
+ required
19
+ read-only="command.viewState.readOnlyFields.region"
20
+ label-columns="3"
21
+ component="command"
22
+ field="region"
23
+ account="command.credentials"
24
+ provider="'azure'"
25
+ regions="command.backingData.filtered.regions"
26
+ ></region-select-field>
27
+ <div class="form-group">
28
+ <div class="col-md-3 sm-label-right">
29
+ Stack
30
+ <help-field key="azure.serverGroup.stack"></help-field>
31
+ </div>
32
+ <div class="col-md-7">
33
+ <input
34
+ required
35
+ type="text"
36
+ class="form-control input-sm"
37
+ ng-pattern="basicSettingsCtrl.stackPattern"
38
+ name="stack"
39
+ ng-model="command.stack"
40
+ />
41
+ </div>
42
+ </div>
43
+ <div class="form-group row slide-in" ng-if="basicSettings.stack.$error.pattern">
44
+ <div class="col-sm-9 col-sm-offset-2 error-message">
45
+ <span>Stack can only contain letters and numbers.</span>
46
+ </div>
47
+ </div>
48
+ <div class="form-group">
49
+ <div class="col-md-3 sm-label-right">
50
+ Detail
51
+ <help-field key="azure.serverGroup.detail"></help-field>
52
+ </div>
53
+ <div class="col-md-7">
54
+ <input
55
+ required
56
+ type="text"
57
+ class="form-control input-sm"
58
+ ng-pattern="basicSettingsCtrl.detailPattern"
59
+ name="details"
60
+ ng-model="command.freeFormDetails"
61
+ />
62
+ </div>
63
+ </div>
64
+ <div class="form-group row slide-in" ng-if="basicSettings.details.$error.pattern">
65
+ <div class="col-sm-9 col-sm-offset-2 error-message">
66
+ <span>Detail can only contain letters, numbers, and dashes(-).</span>
67
+ </div>
68
+ </div>
69
+ <div class="form-group" ng-if="!command.viewState.disableImageSelection">
70
+ <div class="col-md-3 sm-label-right">
71
+ Image
72
+ <help-field key="azure.serverGroup.imageName"></help-field>
73
+ </div>
74
+ <div class="col-md-9">
75
+ <ui-select
76
+ class="form-control input-sm"
77
+ required
78
+ ng-model="command.selectedImage"
79
+ on-select="basicSettingsCtrl.imageChanged($item)"
80
+ >
81
+ <ui-select-match placeholder="Pick an image">{{$select.selected.imageName}}</ui-select-match>
82
+ <ui-select-choices repeat="image in command.images | regional:command.region | filter:$select.search">
83
+ <span ng-bind-html="image.imageName"></span>
84
+ </ui-select-choices>
85
+ </ui-select>
86
+ </div>
87
+ </div>
88
+ <deployment-strategy-selector
89
+ ng-if="!command.viewState.disableStrategySelection && command.selectedProvider"
90
+ command="command"
91
+ ></deployment-strategy-selector>
92
+ <div class="form-group" ng-if="!command.viewState.hideClusterNamePreview">
93
+ <div class="col-md-12">
94
+ <div
95
+ class="well-compact"
96
+ ng-class="basicSettingsCtrl.showPreviewAsWarning() ? 'alert alert-warning' : 'well'"
97
+ >
98
+ <h5 class="text-center">
99
+ <p>Your server group will be in the cluster:</p>
100
+ <p>
101
+ <strong>
102
+ {{basicSettingsCtrl.getNamePreview()}}
103
+ <span ng-if="basicSettingsCtrl.createsNewCluster()"> (new cluster)</span>
104
+ </strong>
105
+ </p>
106
+ <div
107
+ class="text-left"
108
+ ng-if="!basicSettingsCtrl.createsNewCluster() && command.viewState.mode === 'create' && latestServerGroup"
109
+ >
110
+ <p>There is already a server group in this cluster. Do you want to clone it?</p>
111
+ <p>
112
+ Cloning copies the entire configuration from the selected server group, allowing you to modify
113
+ whichever fields (e.g. image) you need to change in the new server group.
114
+ </p>
115
+ <p>
116
+ To clone a server group, select "Clone" from the "Server Group Actions" menu in the details view of
117
+ the server group.
118
+ </p>
119
+ <p>
120
+ <a href ng-click="basicSettingsCtrl.navigateToLatestServerGroup()">
121
+ Go to details for {{latestServerGroup.name}}
122
+ </a>
123
+ </p>
124
+ </div>
125
+ </h5>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </ng-form>
130
+ </div>
131
+ </div>
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+ import _ from 'lodash';
5
+
6
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_IMAGE_REGIONAL_FILTER =
7
+ 'spinnaker.azure.serverGroup.configure.basicSettings.image.filter';
8
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_IMAGE_REGIONAL_FILTER; // for backwards compatibility
9
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_IMAGE_REGIONAL_FILTER, []).filter('regional', function () {
10
+ return function (input, selectedRegion) {
11
+ return _.filter(input, function (image) {
12
+ return image.region === selectedRegion || image.region === null;
13
+ });
14
+ };
15
+ });
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ describe('Filter: regional', function () {
4
+ beforeEach(window.module(require('./image.regional.filter').name));
5
+
6
+ beforeEach(
7
+ window.inject(function (_regionalFilter_) {
8
+ this.regionalFilter = _regionalFilter_;
9
+ this._ = _;
10
+
11
+ this.images = [
12
+ {
13
+ name: 'null',
14
+ region: null,
15
+ },
16
+ {
17
+ name: 'west',
18
+ region: 'west',
19
+ },
20
+ {
21
+ name: 'east',
22
+ region: 'east',
23
+ },
24
+ ];
25
+ }),
26
+ );
27
+
28
+ it('filters the images based on the selected region and null', function () {
29
+ var noEast = [
30
+ {
31
+ name: 'null',
32
+ region: null,
33
+ },
34
+ {
35
+ name: 'west',
36
+ region: 'west',
37
+ },
38
+ ];
39
+
40
+ expect(this.regionalFilter(this.images, 'west')).toEqual(noEast);
41
+ });
42
+ });
@@ -0,0 +1,5 @@
1
+ <div class="clear-fix">
2
+ <div class="col-md-12">
3
+ <azure-server-group-capacity-selector command="command"></azure-server-group-capacity-selector>
4
+ </div>
5
+ </div>
@@ -0,0 +1,20 @@
1
+ <div>
2
+ <div class="form-group">
3
+ <div class="col-md-12">
4
+ <p>Sets desired instance count.</p>
5
+ </div>
6
+ </div>
7
+ <div class="form-group">
8
+ <div class="col-md-3 sm-label-right">Number of Instances</div>
9
+ <div class="col-md-2">
10
+ <input
11
+ type="number"
12
+ class="form-control input-sm"
13
+ ng-model="cap.command.sku.capacity"
14
+ min="0"
15
+ max="100"
16
+ required
17
+ />
18
+ </div>
19
+ </div>
20
+ </div>
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_CAPACITY_CAPACITYSELECTOR_DIRECTIVE =
6
+ 'spinnaker.azure.serverGroup.configure.wizard.capacity.selector.directive';
7
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_CAPACITY_CAPACITYSELECTOR_DIRECTIVE; // for backwards compatibility
8
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_CAPACITY_CAPACITYSELECTOR_DIRECTIVE, [])
9
+ .directive('azureServerGroupCapacitySelector', function () {
10
+ return {
11
+ restrict: 'E',
12
+ templateUrl: require('./capacitySelector.directive.html'),
13
+ scope: {},
14
+ bindToController: {
15
+ command: '=',
16
+ },
17
+ controllerAs: 'cap',
18
+ controller: 'azureServerGroupCapacitySelectorCtrl',
19
+ };
20
+ })
21
+ .controller('azureServerGroupCapacitySelectorCtrl', function () {});
@@ -0,0 +1,5 @@
1
+ <ng-form name="zonesSubForm">
2
+ <div class="container-fluid form-horizontal">
3
+ <azure-zone-selector command="command"></azure-zone-selector>
4
+ </div>
5
+ </ng-form>
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_HEALTHSETTINGS_SERVERGROUPHEALTHSETTINGS_CONTROLLER =
6
+ 'spinnaker.azure.serverGroup.configure.healthSetting.controller';
7
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_HEALTHSETTINGS_SERVERGROUPHEALTHSETTINGS_CONTROLLER; // for backwards compatibility
8
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_HEALTHSETTINGS_SERVERGROUPHEALTHSETTINGS_CONTROLLER, []).controller(
9
+ 'azureServerGroupHealthSettingsCtrl',
10
+ [
11
+ '$scope',
12
+ function ($scope) {
13
+ if (typeof $scope.command.healthSettings === 'undefined') {
14
+ $scope.command.healthSettings = {};
15
+ }
16
+
17
+ this.healthCheckProtocols = [
18
+ { displayName: 'N/A', name: null },
19
+ { displayName: 'HTTP', name: 'http' },
20
+ { displayName: 'TCP', name: 'tcp' },
21
+ ];
22
+
23
+ this.requiresHealthCheckPath = function () {
24
+ return $scope.command.healthSettings.protocol === 'http';
25
+ };
26
+
27
+ this.changeHealthCheckProtocol = function (newProtocol) {
28
+ if (newProtocol == null) {
29
+ $scope.command.healthSettings.protocol = null;
30
+ $scope.command.healthSettings.port = null;
31
+ $scope.command.healthSettings.requestPath = null;
32
+ } else if (!this.requiresHealthCheckPath()) {
33
+ $scope.command.healthSettings.requestPath = null;
34
+ }
35
+ };
36
+ },
37
+ ],
38
+ );
@@ -0,0 +1,5 @@
1
+ <div class="row">
2
+ <div class="col-md-12">
3
+ <azure-server-group-health-settings-selector command="command"></azure-server-group-health-settings-selector>
4
+ </div>
5
+ </div>
@@ -0,0 +1,32 @@
1
+ <div class="container-fluid form-horizontal" ng-controller="azureServerGroupHealthSettingsCtrl as healthCtrl">
2
+ <div class="form-group">
3
+ <div class="form-group">
4
+ <div class="col-md-3 sm-label-right">Protocol</div>
5
+ <div class="col-md-7">
6
+ <select
7
+ class="form-control input-sm"
8
+ ng-model="command.healthSettings.protocol"
9
+ ng-options="protocol.name as protocol.displayName for protocol in healthCtrl.healthCheckProtocols"
10
+ ng-change="healthCtrl.changeHealthCheckProtocol(command.healthSettings.protocol)"
11
+ ></select>
12
+ </div>
13
+ </div>
14
+ <div class="form-group" ng-if="command.healthSettings.protocol">
15
+ <div class="col-md-3 sm-label-right">Port</div>
16
+ <div class="col-md-7">
17
+ <input class="form-control input-sm" type="text" ng-model="command.healthSettings.port" required />
18
+ </div>
19
+ </div>
20
+ <div class="form-group" ng-if="healthCtrl.requiresHealthCheckPath()">
21
+ <div class="col-md-3 sm-label-right">Path</div>
22
+ <div class="col-md-7">
23
+ <input class="form-control input-sm" type="text" ng-model="command.healthSettings.requestPath" required />
24
+ </div>
25
+ </div>
26
+ </div>
27
+ <div class="form-group small" style="margin-top: 20px">
28
+ <div class="col-md-9 col-md-offset-3">
29
+ <p>Health settings here will be applied directly to the VM Scale Set.</p>
30
+ </div>
31
+ </div>
32
+ </div>
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_HEALTHSETTINGS_HEALTHSETTINGSSELECTOR_DIRECTIVE =
6
+ 'spinnaker.azure.serverGroup.configure.wizard.healthSettings.selector.directive';
7
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_HEALTHSETTINGS_HEALTHSETTINGSSELECTOR_DIRECTIVE; // for backwards compatibility
8
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_HEALTHSETTINGS_HEALTHSETTINGSSELECTOR_DIRECTIVE, []).directive(
9
+ 'azureServerGroupHealthSettingsSelector',
10
+ [
11
+ 'azureServerGroupConfigurationService',
12
+ function () {
13
+ return {
14
+ restrict: 'E',
15
+ templateUrl: require('./healthSettingsSelector.directive.html'),
16
+ scope: {
17
+ command: '=',
18
+ },
19
+ };
20
+ },
21
+ ],
22
+ );
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ import { ModalWizard } from '@spinnaker/core';
6
+
7
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_IMAGESETTINGS_SERVERGROUPIMAGESETTINGS_CONTROLLER =
8
+ 'spinnaker.azure.serverGroup.configure.imageSettings.controller';
9
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_IMAGESETTINGS_SERVERGROUPIMAGESETTINGS_CONTROLLER; // for backwards compatibility
10
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_IMAGESETTINGS_SERVERGROUPIMAGESETTINGS_CONTROLLER, []).controller(
11
+ 'azureServerGroupImageSettingsCtrl',
12
+ [
13
+ '$scope',
14
+ function ($scope) {
15
+ this.clearImage = function () {
16
+ if ($scope.command.image.isCustom == false) {
17
+ $scope.command.image = { isCustom: false };
18
+ } else {
19
+ $scope.command.image.region = $scope.command.region;
20
+ }
21
+ };
22
+
23
+ ModalWizard.markComplete('image-settings');
24
+
25
+ $scope.$watch('form.$valid', function (newVal) {
26
+ if (newVal) {
27
+ ModalWizard.markClean('image-settings');
28
+ } else {
29
+ ModalWizard.markDirty('image-settings');
30
+ }
31
+ });
32
+ },
33
+ ],
34
+ );
@@ -0,0 +1,5 @@
1
+ <div class="row">
2
+ <div class="col-md-12">
3
+ <azure-server-group-image-settings-selector command="command"></azure-server-group-image-settings-selector>
4
+ </div>
5
+ </div>
@@ -0,0 +1,33 @@
1
+ <div class="container-fluid form-horizontal" ng-controller="azureServerGroupImageSettingsCtrl as imageCtrl">
2
+ <div class="form-group">
3
+ <div class="col-md-3 sm-label-right">Use custom image?</div>
4
+ <input type="checkbox" ng-model="command.image.isCustom" ng-change="imageCtrl.clearImage()" />
5
+ </div>
6
+
7
+ <div class="form-group" ng-if="command.image.isCustom === true">
8
+ <div class="form-group">
9
+ <div class="col-md-3 sm-label-right">Region</div>
10
+ <div class="col-md-6">
11
+ <span>{{command.image.region}}</span>
12
+ </div>
13
+ </div>
14
+ <div class="form-group">
15
+ <div class="col-md-3 sm-label-right">Image Name</div>
16
+ <div class="col-md-6">
17
+ <input type="text" class="input-sm" ng-model="command.image.imageName" required />
18
+ </div>
19
+ </div>
20
+ <div class="form-group">
21
+ <div class="col-md-3 sm-label-right">OS Type</div>
22
+ <div class="col-md-6">
23
+ <input type="text" class="input-sm" ng-model="command.image.ostype" required />
24
+ </div>
25
+ </div>
26
+ <div class="form-group">
27
+ <div class="col-md-3 sm-label-right">URI</div>
28
+ <div class="col-md-6">
29
+ <input type="text" class="input-sm" ng-model="command.image.uri" required />
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </div>
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ export const AZURE_SERVERGROUP_CONFIGURE_WIZARD_IMAGESETTINGS_IMAGESETTINGS_DIRECTIVE =
6
+ 'spinnaker.azure.serverGroup.configure.wizard.imageSettingsSelector.directive';
7
+ export const name = AZURE_SERVERGROUP_CONFIGURE_WIZARD_IMAGESETTINGS_IMAGESETTINGS_DIRECTIVE; // for backwards compatibility
8
+ module(AZURE_SERVERGROUP_CONFIGURE_WIZARD_IMAGESETTINGS_IMAGESETTINGS_DIRECTIVE, []).directive(
9
+ 'azureServerGroupImageSettingsSelector',
10
+ [
11
+ 'azureServerGroupConfigurationService',
12
+ function () {
13
+ return {
14
+ restrict: 'E',
15
+ templateUrl: require('./imageSettingsSelector.directive.html'),
16
+ scope: {
17
+ command: '=',
18
+ },
19
+ };
20
+ },
21
+ ],
22
+ );
@@ -0,0 +1,33 @@
1
+ <form
2
+ ng-controller="azureInstanceArchetypeCtrl as instanceArchetypeCtrl"
3
+ class="container-fluid form-horizontal"
4
+ name="form"
5
+ novalidate
6
+ >
7
+ <div class="modal-body">
8
+ <instance-archetype-selector command="command"></instance-archetype-selector>
9
+ </div>
10
+ <div class="modal-footer">
11
+ <button class="btn btn-default pull-left" ng-click="wizard.previousPage(form.$valid)">
12
+ <span class="glyphicon glyphicon-chevron-left"></span> Back
13
+ </button>
14
+ <button ng-disabled="taskMonitor.submitting" class="btn btn-default btn-cancel" ng-click="ctrl.cancel()">
15
+ Cancel
16
+ </button>
17
+ <submit-button
18
+ ng-if="ctrl.showSubmitButton()"
19
+ is-disabled="form.$invalid || !ctrl.isValid() || taskMonitor.submitting"
20
+ label="command.viewState.submitButtonLabel"
21
+ submitting="taskMonitor.submitting"
22
+ on-click="ctrl.submit()"
23
+ is-new="true"
24
+ ></submit-button>
25
+ <button
26
+ class="btn btn-primary"
27
+ ng-disabled="!command.viewState.instanceProfile || form.$invalid"
28
+ ng-click="wizard.nextPage(form.$valid)"
29
+ >
30
+ Next <span class="glyphicon glyphicon-chevron-right"></span>
31
+ </button>
32
+ </div>
33
+ </form>
@@ -0,0 +1,10 @@
1
+ <div ng-show="!!(command.region)">
2
+ <v2-instance-archetype-selector ng-if="command.region" command="command"></v2-instance-archetype-selector>
3
+ <div style="padding: 0 15px">
4
+ <v2-instance-type-selector
5
+ ng-if="command.viewState.instanceProfile && !(command.viewState.instanceProfile === 'custom' || command.viewState.instanceProfile === 'buildCustom' )"
6
+ command="command"
7
+ ></v2-instance-type-selector>
8
+ </div>
9
+ </div>
10
+ <h5 class="text-center" ng-if="!command.region">Please select a region.</h5>
@@ -0,0 +1,33 @@
1
+ <form
2
+ ng-controller="azureInstanceTypeCtrl as instanceTypeCtrl"
3
+ class="container-fluid form-horizontal"
4
+ name="form"
5
+ novalidate
6
+ >
7
+ <div class="modal-body">
8
+ <instance-type-selector command="command"></instance-type-selector>
9
+ </div>
10
+ <div class="modal-footer">
11
+ <button class="btn btn-default pull-left" ng-click="wizard.previousPage(form.$valid)">
12
+ <span class="glyphicon glyphicon-chevron-left"></span> Back
13
+ </button>
14
+ <button ng-disabled="taskMonitor.submitting" class="btn btn-default btn-cancel" ng-click="ctrl.cancel()">
15
+ Cancel
16
+ </button>
17
+ <submit-button
18
+ ng-if="ctrl.showSubmitButton()"
19
+ is-disabled="form.$invalid || !ctrl.isValid() || taskMonitor.submitting"
20
+ label="command.viewState.submitButtonLabel"
21
+ submitting="taskMonitor.submitting"
22
+ on-click="ctrl.submit()"
23
+ is-new="true"
24
+ ></submit-button>
25
+ <button
26
+ class="btn btn-primary"
27
+ ng-disabled="!command.viewState.instanceProfile || form.$invalid"
28
+ ng-click="wizard.nextPage(form.$valid)"
29
+ >
30
+ Next <span class="glyphicon glyphicon-chevron-right"></span>
31
+ </button>
32
+ </div>
33
+ </form>