@spinnaker/ecs 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.
- package/CHANGELOG.md +1186 -0
- package/LICENSE.txt +203 -0
- package/dist/common/common.module.d.ts +1 -0
- package/dist/common/footer.component.d.ts +1 -0
- package/dist/domain/IEcsLoadBalancer.d.ts +119 -0
- package/dist/ecs.help.d.ts +1 -0
- package/dist/ecs.module.d.ts +4 -0
- package/dist/ecs.settings.d.ts +9 -0
- package/dist/ecsCluster/IEcsCapacityProviderDetails.d.ts +10 -0
- package/dist/ecsCluster/IEcsCluster.d.ts +5 -0
- package/dist/ecsCluster/ecsCluster.read.service.d.ts +7 -0
- package/dist/iamRoles/IRole.d.ts +6 -0
- package/dist/iamRoles/iamRole.read.service.d.ts +5 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +6010 -0
- package/dist/index.js.map +1 -0
- package/dist/instance/details/instance.details.controller.d.ts +2 -0
- package/dist/loadBalancer/EcsLoadBalancerClusterContainer.d.ts +6 -0
- package/dist/loadBalancer/TargetGroup.d.ts +11 -0
- package/dist/loadBalancer/details/loadBalancerDetails.d.ts +27 -0
- package/dist/loadBalancer/details/targetGroupDetails.d.ts +30 -0
- package/dist/loadBalancer/listener.d.ts +10 -0
- package/dist/loadBalancer/loadBalancer.transformer.d.ts +8 -0
- package/dist/loadBalancer/targetGroup.states.d.ts +1 -0
- package/dist/metricAlarm/MetricAlarm.d.ts +6 -0
- package/dist/metricAlarm/metricAlarm.read.service.d.ts +5 -0
- package/dist/pipeline/stages/destroyAsg/ecsDestroyAsgStage.d.ts +2 -0
- package/dist/pipeline/stages/disableAsg/ecsDisableAsgStage.d.ts +2 -0
- package/dist/pipeline/stages/disableCluster/ecsDisableClusterStage.d.ts +2 -0
- package/dist/pipeline/stages/enableAsg/ecsEnableAsgStage.d.ts +2 -0
- package/dist/pipeline/stages/findImageFromTags/ecsFindImageFromTagStage.d.ts +2 -0
- package/dist/pipeline/stages/resizeAsg/ecsResizeAsgStage.d.ts +2 -0
- package/dist/pipeline/stages/scaleDownCluster/ecsScaleDownClusterStage.d.ts +2 -0
- package/dist/pipeline/stages/shrinkCluster/ecsShrinkClusterStage.d.ts +2 -0
- package/dist/placementStrategy/IPlacementStrategy.d.ts +4 -0
- package/dist/placementStrategy/placementStrategy.service.d.ts +11 -0
- package/dist/secrets/ISecret.d.ts +5 -0
- package/dist/secrets/secret.read.service.d.ts +5 -0
- package/dist/securityGroup/details/securityGroupDetail.controller.d.ts +2 -0
- package/dist/securityGroup/securityGroup.module.d.ts +1 -0
- package/dist/securityGroup/securityGroup.reader.d.ts +5 -0
- package/dist/securityGroup/securityGroup.transformer.d.ts +2 -0
- package/dist/serverGroup/configure/serverGroupCommandBuilder.service.d.ts +2 -0
- package/dist/serverGroup/configure/serverGroupConfiguration.service.d.ts +165 -0
- package/dist/serverGroup/configure/wizard/CloneServerGroup.ecs.controller.d.ts +2 -0
- package/dist/serverGroup/configure/wizard/advancedSettings/advancedSettings.component.d.ts +2 -0
- package/dist/serverGroup/configure/wizard/capacityProvider/CapacityProvider.d.ts +7 -0
- package/dist/serverGroup/configure/wizard/container/Container.d.ts +32 -0
- package/dist/serverGroup/configure/wizard/horizontalScaling/horizontalScaling.component.d.ts +2 -0
- package/dist/serverGroup/configure/wizard/location/ServerGroupBasicSettings.controller.d.ts +2 -0
- package/dist/serverGroup/configure/wizard/logging/logging.component.d.ts +1 -0
- package/dist/serverGroup/configure/wizard/networking/Networking.d.ts +28 -0
- package/dist/serverGroup/configure/wizard/serviceDiscovery/ServiceDiscovery.d.ts +34 -0
- package/dist/serverGroup/configure/wizard/taskDefinition/TaskDefinition.d.ts +39 -0
- package/dist/serverGroup/details/resize/resizeCapacity.component.d.ts +1 -0
- package/dist/serverGroup/details/resize/resizeServerGroup.controller.d.ts +2 -0
- package/dist/serverGroup/details/rollback/rollbackServerGroup.controller.d.ts +2 -0
- package/dist/serverGroup/details/serverGroupDetails.ecs.controller.d.ts +2 -0
- package/dist/serverGroup/details/serverGroupDetails.module.d.ts +1 -0
- package/dist/serverGroup/events/EventsLink.d.ts +4 -0
- package/dist/serverGroup/events/events.component.d.ts +3 -0
- package/dist/serverGroup/events/events.controller.d.ts +19 -0
- package/dist/serverGroup/events/serverGroupEventsReader.service.d.ts +10 -0
- package/dist/serverGroup/serverGroup.module.d.ts +1 -0
- package/dist/serverGroup/serverGroup.transformer.d.ts +11 -0
- package/dist/serviceDiscovery/IServiceDiscovery.d.ts +12 -0
- package/dist/serviceDiscovery/serviceDiscovery.read.service.d.ts +4 -0
- package/package.json +47 -0
- package/src/common/common.module.ts +6 -0
- package/src/common/footer.component.ts +29 -0
- package/src/domain/IEcsLoadBalancer.ts +129 -0
- package/src/ecs.help.ts +91 -0
- package/src/ecs.module.ts +116 -0
- package/src/ecs.settings.ts +17 -0
- package/src/ecsCluster/IEcsCapacityProviderDetails.ts +11 -0
- package/src/ecsCluster/IEcsCluster.ts +5 -0
- package/src/ecsCluster/ecsCluster.read.service.ts +23 -0
- package/src/iamRoles/IRole.ts +6 -0
- package/src/iamRoles/iamRole.read.service.ts +14 -0
- package/src/index.ts +1 -0
- package/src/instance/details/instance.details.controller.js +356 -0
- package/src/instance/details/instanceDetails.html +204 -0
- package/src/loadBalancer/EcsLoadBalancerClusterContainer.tsx +48 -0
- package/src/loadBalancer/TargetGroup.tsx +74 -0
- package/src/loadBalancer/details/loadBalancerDetails.tsx +235 -0
- package/src/loadBalancer/details/targetGroupDetails.tsx +251 -0
- package/src/loadBalancer/listener.tsx +65 -0
- package/src/loadBalancer/loadBalancer.transformer.ts +21 -0
- package/src/loadBalancer/targetGroup.states.ts +59 -0
- package/src/logo/ecs.icon.svg +27 -0
- package/src/logo/ecs.logo.less +5 -0
- package/src/logo/ecs.logo.svg +27 -0
- package/src/metricAlarm/MetricAlarm.ts +6 -0
- package/src/metricAlarm/metricAlarm.read.service.ts +14 -0
- package/src/pipeline/stages/cloneServerGroup/cloneServerGroupStage.html +101 -0
- package/src/pipeline/stages/cloneServerGroup/cloneServerGroupStepLabel.html +1 -0
- package/src/pipeline/stages/cloneServerGroup/ecsCloneServerGroupStage.js +94 -0
- package/src/pipeline/stages/destroyAsg/destroyAsgStage.html +9 -0
- package/src/pipeline/stages/destroyAsg/destroyAsgStepLabel.html +1 -0
- package/src/pipeline/stages/destroyAsg/ecsDestroyAsgStage.js +65 -0
- package/src/pipeline/stages/disableAsg/disableAsgStage.html +11 -0
- package/src/pipeline/stages/disableAsg/disableAsgStepLabel.html +1 -0
- package/src/pipeline/stages/disableAsg/ecsDisableAsgStage.js +70 -0
- package/src/pipeline/stages/disableCluster/disableClusterStage.html +26 -0
- package/src/pipeline/stages/disableCluster/ecsDisableClusterStage.js +84 -0
- package/src/pipeline/stages/enableAsg/ecsEnableAsgStage.js +73 -0
- package/src/pipeline/stages/enableAsg/enableAsgStage.html +11 -0
- package/src/pipeline/stages/enableAsg/enableAsgStepLabel.html +1 -0
- package/src/pipeline/stages/findImageFromTags/ecsFindImageFromTagStage.js +26 -0
- package/src/pipeline/stages/findImageFromTags/findImageFromTagsExecutionDetails.html +36 -0
- package/src/pipeline/stages/findImageFromTags/findImageFromTagsStage.html +9 -0
- package/src/pipeline/stages/resizeAsg/ecsResizeAsgStage.js +128 -0
- package/src/pipeline/stages/resizeAsg/resizeAsgStage.html +87 -0
- package/src/pipeline/stages/resizeAsg/resizeAsgStepLabel.html +1 -0
- package/src/pipeline/stages/scaleDownCluster/ecsScaleDownClusterStage.js +78 -0
- package/src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.html +35 -0
- package/src/pipeline/stages/shrinkCluster/ecsShrinkClusterStage.js +73 -0
- package/src/pipeline/stages/shrinkCluster/shrinkClusterStage.html +34 -0
- package/src/placementStrategy/IPlacementStrategy.ts +4 -0
- package/src/placementStrategy/placementStrategy.service.ts +63 -0
- package/src/secrets/ISecret.ts +5 -0
- package/src/secrets/secret.read.service.ts +14 -0
- package/src/securityGroup/details/securityGroupDetail.controller.js +147 -0
- package/src/securityGroup/details/securityGroupDetail.html +104 -0
- package/src/securityGroup/securityGroup.module.ts +12 -0
- package/src/securityGroup/securityGroup.reader.ts +16 -0
- package/src/securityGroup/securityGroup.transformer.js +13 -0
- package/src/serverGroup/configure/serverGroupCommandBuilder.service.js +281 -0
- package/src/serverGroup/configure/serverGroupConfiguration.service.ts +747 -0
- package/src/serverGroup/configure/wizard/CloneServerGroup.ecs.controller.js +259 -0
- package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.component.html +194 -0
- package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.component.js +17 -0
- package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.html +10 -0
- package/src/serverGroup/configure/wizard/capacityProvider/CapacityProvider.tsx +381 -0
- package/src/serverGroup/configure/wizard/capacityProvider/capacityProvider.html +11 -0
- package/src/serverGroup/configure/wizard/container/Container.tsx +347 -0
- package/src/serverGroup/configure/wizard/container/container.html +9 -0
- package/src/serverGroup/configure/wizard/horizontalScaling/horizontalScaling.component.html +118 -0
- package/src/serverGroup/configure/wizard/horizontalScaling/horizontalScaling.component.js +20 -0
- package/src/serverGroup/configure/wizard/horizontalScaling/horizontalScaling.html +13 -0
- package/src/serverGroup/configure/wizard/location/ServerGroupBasicSettings.controller.js +41 -0
- package/src/serverGroup/configure/wizard/location/basicSettings.html +137 -0
- package/src/serverGroup/configure/wizard/logging/logging.component.html +29 -0
- package/src/serverGroup/configure/wizard/logging/logging.component.ts +12 -0
- package/src/serverGroup/configure/wizard/logging/logging.html +7 -0
- package/src/serverGroup/configure/wizard/networking/Networking.tsx +261 -0
- package/src/serverGroup/configure/wizard/networking/networking.html +9 -0
- package/src/serverGroup/configure/wizard/serverGroupWizard.html +55 -0
- package/src/serverGroup/configure/wizard/serviceDiscovery/ServiceDiscovery.tsx +250 -0
- package/src/serverGroup/configure/wizard/serviceDiscovery/serviceDiscovery.html +11 -0
- package/src/serverGroup/configure/wizard/taskDefinition/TaskDefinition.tsx +460 -0
- package/src/serverGroup/configure/wizard/taskDefinition/taskDefinition.html +51 -0
- package/src/serverGroup/configure/wizard/templateSelection/templateSelection.html +9 -0
- package/src/serverGroup/configure/wizard/verticalScaling/verticalScaling.html +10 -0
- package/src/serverGroup/details/resize/resizeCapacity.component.html +94 -0
- package/src/serverGroup/details/resize/resizeCapacity.component.ts +14 -0
- package/src/serverGroup/details/resize/resizeServerGroup.controller.js +85 -0
- package/src/serverGroup/details/resize/resizeServerGroup.html +28 -0
- package/src/serverGroup/details/rollback/rollbackServerGroup.controller.js +97 -0
- package/src/serverGroup/details/rollback/rollbackServerGroup.html +67 -0
- package/src/serverGroup/details/serverGroupDetails.ecs.controller.js +366 -0
- package/src/serverGroup/details/serverGroupDetails.html +216 -0
- package/src/serverGroup/details/serverGroupDetails.module.ts +5 -0
- package/src/serverGroup/events/EventsLink.tsx +5 -0
- package/src/serverGroup/events/events.component.ts +35 -0
- package/src/serverGroup/events/events.controller.ts +45 -0
- package/src/serverGroup/events/events.html +36 -0
- package/src/serverGroup/events/serverGroupEventsReader.service.ts +27 -0
- package/src/serverGroup/serverGroup.module.ts +6 -0
- package/src/serverGroup/serverGroup.transformer.spec.ts +184 -0
- package/src/serverGroup/serverGroup.transformer.ts +117 -0
- package/src/serviceDiscovery/IServiceDiscovery.ts +13 -0
- package/src/serviceDiscovery/serviceDiscovery.read.service.ts +8 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import UIROUTER_ANGULARJS from '@uirouter/angularjs';
|
|
4
|
+
import { module } from 'angular';
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
ModalWizard,
|
|
8
|
+
OVERRIDE_REGISTRY,
|
|
9
|
+
SERVER_GROUP_COMMAND_REGISTRY_PROVIDER,
|
|
10
|
+
SERVER_GROUP_WRITER,
|
|
11
|
+
STAGE_ARTIFACT_SELECTOR_COMPONENT_REACT,
|
|
12
|
+
TaskMonitor,
|
|
13
|
+
} from '@spinnaker/core';
|
|
14
|
+
|
|
15
|
+
import { ECS_CLUSTER_READ_SERVICE } from '../../../ecsCluster/ecsCluster.read.service';
|
|
16
|
+
import { IAM_ROLE_READ_SERVICE } from '../../../iamRoles/iamRole.read.service';
|
|
17
|
+
import { ECS_SECRET_READ_SERVICE } from '../../../secrets/secret.read.service';
|
|
18
|
+
import { ECS_SERVER_GROUP_CONFIGURATION_SERVICE } from '../serverGroupConfiguration.service';
|
|
19
|
+
|
|
20
|
+
export const ECS_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_ECS_CONTROLLER =
|
|
21
|
+
'spinnaker.ecs.cloneServerGroup.controller';
|
|
22
|
+
export const name = ECS_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_ECS_CONTROLLER; // for backwards compatibility
|
|
23
|
+
module(ECS_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_ECS_CONTROLLER, [
|
|
24
|
+
UIROUTER_ANGULARJS,
|
|
25
|
+
ECS_SERVER_GROUP_CONFIGURATION_SERVICE,
|
|
26
|
+
SERVER_GROUP_WRITER,
|
|
27
|
+
OVERRIDE_REGISTRY,
|
|
28
|
+
SERVER_GROUP_COMMAND_REGISTRY_PROVIDER,
|
|
29
|
+
IAM_ROLE_READ_SERVICE,
|
|
30
|
+
ECS_CLUSTER_READ_SERVICE,
|
|
31
|
+
ECS_SECRET_READ_SERVICE,
|
|
32
|
+
STAGE_ARTIFACT_SELECTOR_COMPONENT_REACT,
|
|
33
|
+
]).controller('ecsCloneServerGroupCtrl', [
|
|
34
|
+
'$scope',
|
|
35
|
+
'$uibModalInstance',
|
|
36
|
+
'$q',
|
|
37
|
+
'$state',
|
|
38
|
+
'serverGroupWriter',
|
|
39
|
+
'overrideRegistry',
|
|
40
|
+
'ecsServerGroupConfigurationService',
|
|
41
|
+
'serverGroupCommandRegistry',
|
|
42
|
+
'serverGroupCommand',
|
|
43
|
+
'iamRoleReader',
|
|
44
|
+
'ecsClusterReader',
|
|
45
|
+
'secretReader',
|
|
46
|
+
'application',
|
|
47
|
+
'title',
|
|
48
|
+
function (
|
|
49
|
+
$scope,
|
|
50
|
+
$uibModalInstance,
|
|
51
|
+
$q,
|
|
52
|
+
$state,
|
|
53
|
+
serverGroupWriter,
|
|
54
|
+
overrideRegistry,
|
|
55
|
+
ecsServerGroupConfigurationService,
|
|
56
|
+
serverGroupCommandRegistry,
|
|
57
|
+
serverGroupCommand,
|
|
58
|
+
iamRoleReader,
|
|
59
|
+
ecsClusterReader,
|
|
60
|
+
secretReader,
|
|
61
|
+
application,
|
|
62
|
+
title,
|
|
63
|
+
) {
|
|
64
|
+
$scope.pages = {
|
|
65
|
+
templateSelection: overrideRegistry.getTemplate(
|
|
66
|
+
'ecs.serverGroup.templateSelection',
|
|
67
|
+
require('./templateSelection/templateSelection.html'),
|
|
68
|
+
),
|
|
69
|
+
basicSettings: overrideRegistry.getTemplate(
|
|
70
|
+
'ecs.serverGroup.basicSettings',
|
|
71
|
+
require('./location/basicSettings.html'),
|
|
72
|
+
),
|
|
73
|
+
container: overrideRegistry.getTemplate('ecs.serverGroup.container', require('./container/container.html')),
|
|
74
|
+
horizontalScaling: overrideRegistry.getTemplate(
|
|
75
|
+
'ecs.serverGroup.horizontalScaling',
|
|
76
|
+
require('./horizontalScaling/horizontalScaling.html'),
|
|
77
|
+
),
|
|
78
|
+
networking: overrideRegistry.getTemplate('ecs.serverGroup.networking', require('./networking/networking.html')),
|
|
79
|
+
logging: overrideRegistry.getTemplate('ecs.serverGroup.logging', require('./logging/logging.html')),
|
|
80
|
+
serviceDiscovery: overrideRegistry.getTemplate(
|
|
81
|
+
'ecs.serverGroup.serviceDiscovery',
|
|
82
|
+
require('./serviceDiscovery/serviceDiscovery.html'),
|
|
83
|
+
),
|
|
84
|
+
advancedSettings: overrideRegistry.getTemplate(
|
|
85
|
+
'ecs.serverGroup.advancedSettings',
|
|
86
|
+
require('./advancedSettings/advancedSettings.html'),
|
|
87
|
+
),
|
|
88
|
+
taskDefinition: overrideRegistry.getTemplate(
|
|
89
|
+
'ecs.taskDefinition',
|
|
90
|
+
require('./taskDefinition/taskDefinition.html'),
|
|
91
|
+
),
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
$scope.title = title;
|
|
95
|
+
|
|
96
|
+
$scope.applicationName = application.name;
|
|
97
|
+
$scope.application = application;
|
|
98
|
+
|
|
99
|
+
$scope.command = serverGroupCommand;
|
|
100
|
+
|
|
101
|
+
$scope.state = {
|
|
102
|
+
loaded: false,
|
|
103
|
+
requiresTemplateSelection: !!serverGroupCommand.viewState.requiresTemplateSelection,
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
this.templateSelectionText = {
|
|
107
|
+
copied: ['account, region, ecs cluster, stack', 'capacity'],
|
|
108
|
+
notCopied: ['launch type, target group, network mode'],
|
|
109
|
+
};
|
|
110
|
+
if (!$scope.command.viewState.disableStrategySelection) {
|
|
111
|
+
this.templateSelectionText.notCopied.push(
|
|
112
|
+
'the deployment strategy (if any) used to deploy the most recent server group',
|
|
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
|
+
const cloneStage = $scope.taskMonitor.task.execution.stages.find((stage) => stage.type === 'cloneServerGroup');
|
|
122
|
+
if (cloneStage && cloneStage.context['deploy.server.groups']) {
|
|
123
|
+
const newServerGroupName = cloneStage.context['deploy.server.groups'][$scope.command.region];
|
|
124
|
+
if (newServerGroupName) {
|
|
125
|
+
const newStateParams = {
|
|
126
|
+
serverGroup: newServerGroupName,
|
|
127
|
+
accountId: $scope.command.credentials,
|
|
128
|
+
region: $scope.command.region,
|
|
129
|
+
provider: 'ecs',
|
|
130
|
+
};
|
|
131
|
+
let transitionTo = '^.^.^.clusters.serverGroup';
|
|
132
|
+
if ($state.includes('**.clusters.serverGroup')) {
|
|
133
|
+
// clone via details, all view
|
|
134
|
+
transitionTo = '^.serverGroup';
|
|
135
|
+
}
|
|
136
|
+
if ($state.includes('**.clusters.cluster.serverGroup')) {
|
|
137
|
+
// clone or create with details open
|
|
138
|
+
transitionTo = '^.^.serverGroup';
|
|
139
|
+
}
|
|
140
|
+
if ($state.includes('**.clusters')) {
|
|
141
|
+
// create new, no details open
|
|
142
|
+
transitionTo = '.serverGroup';
|
|
143
|
+
}
|
|
144
|
+
$state.go(transitionTo, newStateParams);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function onTaskComplete() {
|
|
150
|
+
application.serverGroups.refresh();
|
|
151
|
+
application.serverGroups.onNextRefresh($scope, onApplicationRefresh);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
$scope.taskMonitor = new TaskMonitor({
|
|
155
|
+
application: application,
|
|
156
|
+
title: 'Creating your server group',
|
|
157
|
+
modalInstance: $uibModalInstance,
|
|
158
|
+
onTaskComplete: onTaskComplete,
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
function configureCommand() {
|
|
162
|
+
ecsServerGroupConfigurationService.configureCommand($scope.command).then(function () {
|
|
163
|
+
$scope.state.loaded = true;
|
|
164
|
+
initializeCommand();
|
|
165
|
+
initializeSelectOptions();
|
|
166
|
+
initializeWatches();
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function initializeWatches() {
|
|
171
|
+
$scope.$watch('command.subnetType', createResultProcessor($scope.command.subnetTypeChanged));
|
|
172
|
+
$scope.$watch('command.credentials', createResultProcessor($scope.command.credentialsChanged));
|
|
173
|
+
$scope.$watch('command.region', createResultProcessor($scope.command.regionChanged));
|
|
174
|
+
$scope.$watch(
|
|
175
|
+
'command.placementStrategyName',
|
|
176
|
+
createResultProcessor($scope.command.placementStrategyNameChanged),
|
|
177
|
+
);
|
|
178
|
+
$scope.$watch('command.stack', () => $scope.command.clusterChanged($scope.command));
|
|
179
|
+
$scope.$watch('command.freeFormDetails', () => $scope.command.clusterChanged($scope.command));
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
function initializeSelectOptions() {
|
|
183
|
+
processCommandUpdateResult($scope.command.credentialsChanged(serverGroupCommand));
|
|
184
|
+
processCommandUpdateResult($scope.command.regionChanged(serverGroupCommand));
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
function createResultProcessor(method) {
|
|
188
|
+
return function () {
|
|
189
|
+
processCommandUpdateResult(method(serverGroupCommand));
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function processCommandUpdateResult() {
|
|
194
|
+
// TODO(Bruno Carrier) - Implement marking sections either dirty or complete
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
function initializeCommand() {}
|
|
198
|
+
|
|
199
|
+
this.isValid = function () {
|
|
200
|
+
return true; // TODO(Bruno Carrier) - Implement validation of the form
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
this.showSubmitButton = function () {
|
|
204
|
+
return ModalWizard.allPagesVisited();
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
this.submit = function () {
|
|
208
|
+
if ($scope.command.viewState.mode === 'editPipeline' || $scope.command.viewState.mode === 'createPipeline') {
|
|
209
|
+
return $uibModalInstance.close($scope.command);
|
|
210
|
+
}
|
|
211
|
+
$scope.taskMonitor.submit(function () {
|
|
212
|
+
return serverGroupWriter.cloneServerGroup($scope.command, application);
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
this.cancel = function () {
|
|
217
|
+
$uibModalInstance.dismiss();
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
if (!$scope.state.requiresTemplateSelection) {
|
|
221
|
+
configureCommand();
|
|
222
|
+
} else {
|
|
223
|
+
$scope.state.loaded = true;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
this.templateSelected = () => {
|
|
227
|
+
$scope.state.requiresTemplateSelection = false;
|
|
228
|
+
configureCommand();
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
// used by react components to update command fields in parent (angular) scope
|
|
232
|
+
$scope.notifyAngular = function (commandKey, value) {
|
|
233
|
+
if (commandKey == 'pipeline') {
|
|
234
|
+
$scope.command.viewState.pipeline = value;
|
|
235
|
+
} else {
|
|
236
|
+
$scope.command[commandKey] = value;
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
// used by react components to configure command for image queries
|
|
241
|
+
$scope.configureCommand = function (query) {
|
|
242
|
+
return ecsServerGroupConfigurationService.configureCommand($scope.command, query);
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
// TODO: Migrate horizontalScaling component to react and move this logic there
|
|
246
|
+
$scope.capacityProviderState = {
|
|
247
|
+
useCapacityProviders:
|
|
248
|
+
$scope.command.capacityProviderStrategy && $scope.command.capacityProviderStrategy.length > 0,
|
|
249
|
+
updateComputeOption: function (chosenOption) {
|
|
250
|
+
if (chosenOption == 'launchType') {
|
|
251
|
+
$scope.command.capacityProviderStrategy = [];
|
|
252
|
+
} else if (chosenOption == 'capacityProviders') {
|
|
253
|
+
$scope.command.launchType = '';
|
|
254
|
+
$scope.command.capacityProviderStrategy = $scope.command.capacityProviderStrategy || [];
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
};
|
|
258
|
+
},
|
|
259
|
+
]);
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
<div class="container-fluid form-horizontal">
|
|
2
|
+
<div class="form-group">
|
|
3
|
+
<div class="col-md-5 sm-label-right">
|
|
4
|
+
Health Check Grace Period
|
|
5
|
+
<help-field key="ecs.healthgraceperiod"></help-field>
|
|
6
|
+
</div>
|
|
7
|
+
<div class="col-md-2">
|
|
8
|
+
<input
|
|
9
|
+
type="number"
|
|
10
|
+
class="form-control input-sm no-spel"
|
|
11
|
+
ng-model="$ctrl.command.healthCheckGracePeriodSeconds"
|
|
12
|
+
/>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div class="form-group">
|
|
17
|
+
<div class="col-md-5 sm-label-right">
|
|
18
|
+
<b>ECS IAM Instance Profile</b> <help-field key="ecs.iamrole"></help-field>
|
|
19
|
+
</div>
|
|
20
|
+
<!-- TODO - Add a help box that explains that the container does not share profiles with the host -->
|
|
21
|
+
|
|
22
|
+
<div class="col-md-7" ng-if="!$ctrl.command.backingData.filtered.iamRoles.length">
|
|
23
|
+
No account was selected, or no IAM roles are available for ECS tasks in this account.
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class="col-md-7" ng-if="$ctrl.command.backingData.filtered.iamRoles.length">
|
|
27
|
+
<ui-select
|
|
28
|
+
ng-model="$ctrl.command.iamRole"
|
|
29
|
+
class="form-control input-sm"
|
|
30
|
+
required
|
|
31
|
+
on-select="$ctrl.fieldChanged()"
|
|
32
|
+
>
|
|
33
|
+
<ui-select-match>{{ $select.selected }}</ui-select-match>
|
|
34
|
+
<ui-select-choices repeat="iamRole in $ctrl.command.backingData.filtered.iamRoles | filter: $select.search">
|
|
35
|
+
<span ng-bind-html="iamRole"></span>
|
|
36
|
+
</ui-select-choices>
|
|
37
|
+
</ui-select>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<div ng-if="!$ctrl.command.useTaskDefinitionArtifact">
|
|
42
|
+
<div class="form-group">
|
|
43
|
+
<div class="col-md-5 sm-label-right">
|
|
44
|
+
<b>Docker Image Credentials</b> <help-field key="ecs.dockerimagecredentials"></help-field>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="col-md-7" ng-if="!$ctrl.command.backingData.filtered.secrets.length">
|
|
47
|
+
No account or region was selected, or no AWS Secrets Manager secrets are available in this account and region.
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<div class="col-md-7" ng-if="$ctrl.command.backingData.filtered.secrets.length">
|
|
51
|
+
<ui-select
|
|
52
|
+
ng-model="$ctrl.command.dockerImageCredentialsSecret"
|
|
53
|
+
class="form-control input-sm"
|
|
54
|
+
required
|
|
55
|
+
on-select="$ctrl.fieldChanged()"
|
|
56
|
+
>
|
|
57
|
+
<ui-select-match>{{ $select.selected }}</ui-select-match>
|
|
58
|
+
<ui-select-choices repeat="secret in $ctrl.command.backingData.filtered.secrets | filter: $select.search">
|
|
59
|
+
<span ng-bind-html="secret"></span>
|
|
60
|
+
</ui-select-choices>
|
|
61
|
+
</ui-select>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
<div class="form-group">
|
|
67
|
+
<div class="col-md-5 sm-label-right">
|
|
68
|
+
Fargate platform version
|
|
69
|
+
<help-field key="ecs.platformVersion"></help-field>
|
|
70
|
+
</div>
|
|
71
|
+
<div class="col-md-3">
|
|
72
|
+
<input
|
|
73
|
+
type="text"
|
|
74
|
+
class="form-control input-sm"
|
|
75
|
+
name="platformVersion"
|
|
76
|
+
ng-model="$ctrl.command.platformVersion"
|
|
77
|
+
/>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<div class="form-group">
|
|
82
|
+
<div class="col-md-5 sm-label-right">
|
|
83
|
+
Enable Deployment Circuit Breaker
|
|
84
|
+
<help-field key="ecs.enableDeploymentCircuitBreaker"></help-field>
|
|
85
|
+
</div>
|
|
86
|
+
<div class="col-md-3">
|
|
87
|
+
<input type="checkbox" ng-model="$ctrl.command.enableDeploymentCircuitBreaker" />
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
<div class="form-group">
|
|
92
|
+
<div class="col-md-5 sm-label-right">
|
|
93
|
+
<b>Placement Strategy</b> <help-field key="ecs.placementStrategy"></help-field>
|
|
94
|
+
</div>
|
|
95
|
+
<div class="col-md-7">
|
|
96
|
+
<ui-select ng-model="$ctrl.command.placementStrategyName" class="form-control input-sm">
|
|
97
|
+
<ui-select-match>{{ $select.selected }}</ui-select-match>
|
|
98
|
+
<ui-select-choices
|
|
99
|
+
repeat="item in ['AZ Balanced Spread', 'AZ Balanced BinPack CPU', 'AZ Balanced BinPack Memory', 'BinPack CPU', 'BinPack Memory', 'One Task Per Host', 'None'] | filter: $select.search"
|
|
100
|
+
>
|
|
101
|
+
<span ng-bind-html="item"></span>
|
|
102
|
+
</ui-select-choices>
|
|
103
|
+
</ui-select>
|
|
104
|
+
<!-- TODO - implement handling of custom placement strategies and constraints -->
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
|
|
108
|
+
<div class="form-group">
|
|
109
|
+
<div class="sm-label-left">
|
|
110
|
+
<b>Placement Constraints</b>
|
|
111
|
+
<help-field key="ecs.placementConstraints"></help-field>
|
|
112
|
+
</div>
|
|
113
|
+
<form name="ecsPlacementConstraints">
|
|
114
|
+
<table class="table table-condensed packed tags">
|
|
115
|
+
<thead>
|
|
116
|
+
<tr>
|
|
117
|
+
<th style="width: 25%">Type <help-field key="ecs.placementConstraintType"></help-field></th>
|
|
118
|
+
<th style="width: 68%">Expression <help-field key="ecs.placementConstraintExpression"></help-field></th>
|
|
119
|
+
<th></th>
|
|
120
|
+
</tr>
|
|
121
|
+
</thead>
|
|
122
|
+
<tbody>
|
|
123
|
+
<tr ng-repeat="constraint in $ctrl.command.placementConstraints">
|
|
124
|
+
<td>
|
|
125
|
+
<select
|
|
126
|
+
class="form-control input-sm"
|
|
127
|
+
ng-model="constraint.type"
|
|
128
|
+
ng-options="type for type in ['distinctInstance', 'memberOf']"
|
|
129
|
+
></select>
|
|
130
|
+
</td>
|
|
131
|
+
<td>
|
|
132
|
+
<input type="text" class="form-control input-sm no-spel" ng-model="constraint.expression" />
|
|
133
|
+
</td>
|
|
134
|
+
<td>
|
|
135
|
+
<div class="form-control-static">
|
|
136
|
+
<a class="btn-link sm-label" ng-click="$ctrl.command.placementConstraints.splice($index, 1)">
|
|
137
|
+
<span class="glyphicon glyphicon-trash"></span>
|
|
138
|
+
<span class="sr-only">Remove</span>
|
|
139
|
+
</a>
|
|
140
|
+
</div>
|
|
141
|
+
</td>
|
|
142
|
+
</tr>
|
|
143
|
+
</tbody>
|
|
144
|
+
<tfoot>
|
|
145
|
+
<tr>
|
|
146
|
+
<td colspan="3">
|
|
147
|
+
<button class="btn btn-block btn-sm add-new" ng-click="$ctrl.command.placementConstraints.push({})">
|
|
148
|
+
<span class="glyphicon glyphicon-plus-sign"></span>
|
|
149
|
+
Add New Placement Constraint
|
|
150
|
+
</button>
|
|
151
|
+
</td>
|
|
152
|
+
</tr>
|
|
153
|
+
</tfoot>
|
|
154
|
+
</table>
|
|
155
|
+
</form>
|
|
156
|
+
</div>
|
|
157
|
+
|
|
158
|
+
<div ng-if="!$ctrl.command.useTaskDefinitionArtifact">
|
|
159
|
+
<div class="form-group">
|
|
160
|
+
<div class="sm-label-left">
|
|
161
|
+
<b>Docker labels (optional)</b>
|
|
162
|
+
<help-field key="ecs.dockerLabels"></help-field>
|
|
163
|
+
</div>
|
|
164
|
+
<map-editor model="$ctrl.command.dockerLabels" allow-empty="true"></map-editor>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
<div class="form-group">
|
|
168
|
+
<div class="sm-label-left">
|
|
169
|
+
<b>Environment Variables (optional)</b>
|
|
170
|
+
<help-field key="ecs.environmentVariables"></help-field>
|
|
171
|
+
</div>
|
|
172
|
+
<map-editor model="$ctrl.command.environmentVariables" allow-empty="true"></map-editor>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
|
|
176
|
+
<div class="form-group">
|
|
177
|
+
<div class="sm-label-left">
|
|
178
|
+
<b>Tags (optional)</b>
|
|
179
|
+
<help-field key="ecs.tags"></help-field>
|
|
180
|
+
</div>
|
|
181
|
+
<map-editor model="$ctrl.command.tags" allow-empty="true"></map-editor>
|
|
182
|
+
</div>
|
|
183
|
+
|
|
184
|
+
<div ng-if="$ctrl.command.useTaskDefinitionArtifact" style="color: #666">
|
|
185
|
+
<hr />
|
|
186
|
+
<p>
|
|
187
|
+
<em
|
|
188
|
+
><strong>Docker Image Credentials, Docker labels</strong>, and <strong>Environment Variables</strong> cannot be
|
|
189
|
+
individually set when using a Task Definition artifact. Please include them in their respective container
|
|
190
|
+
definition in that file.
|
|
191
|
+
</em>
|
|
192
|
+
</p>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import { module } from 'angular';
|
|
4
|
+
|
|
5
|
+
export const ECS_SERVERGROUP_CONFIGURE_WIZARD_ADVANCEDSETTINGS_ADVANCEDSETTINGS_COMPONENT =
|
|
6
|
+
'spinnaker.ecs.serverGroup.configure.wizard.advancedSettings.component';
|
|
7
|
+
export const name = ECS_SERVERGROUP_CONFIGURE_WIZARD_ADVANCEDSETTINGS_ADVANCEDSETTINGS_COMPONENT; // for backwards compatibility
|
|
8
|
+
module(ECS_SERVERGROUP_CONFIGURE_WIZARD_ADVANCEDSETTINGS_ADVANCEDSETTINGS_COMPONENT, []).component(
|
|
9
|
+
'ecsServerGroupAdvancedSettings',
|
|
10
|
+
{
|
|
11
|
+
bindings: {
|
|
12
|
+
command: '=',
|
|
13
|
+
application: '=',
|
|
14
|
+
},
|
|
15
|
+
templateUrl: require('./advancedSettings.component.html'),
|
|
16
|
+
},
|
|
17
|
+
);
|