@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,381 @@
|
|
|
1
|
+
import { module } from 'angular';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Alert } from 'react-bootstrap';
|
|
4
|
+
import type { Option } from 'react-select';
|
|
5
|
+
import { react2angular } from 'react2angular';
|
|
6
|
+
|
|
7
|
+
import { HelpField, TetheredSelect, withErrorBoundary } from '@spinnaker/core';
|
|
8
|
+
|
|
9
|
+
import type { IEcsCapacityProviderStrategyItem, IEcsServerGroupCommand } from '../../serverGroupConfiguration.service';
|
|
10
|
+
|
|
11
|
+
export interface IEcsCapacityProviderProps {
|
|
12
|
+
command: IEcsServerGroupCommand;
|
|
13
|
+
notifyAngular: (key: string, value: any) => void;
|
|
14
|
+
configureCommand: (query: string) => PromiseLike<void>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface IEcsCapacityProviderState {
|
|
18
|
+
capacityProviderStrategy: IEcsCapacityProviderStrategyItem[];
|
|
19
|
+
defaultCapacityProviderStrategy: IEcsCapacityProviderStrategyItem[];
|
|
20
|
+
availableCapacityProviders: string[];
|
|
21
|
+
ecsClusterName: string;
|
|
22
|
+
useDefaultCapacityProviders: boolean;
|
|
23
|
+
capacityProviderLoadedFlag: boolean;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
class EcsCapacityProvider extends React.Component<IEcsCapacityProviderProps, IEcsCapacityProviderState> {
|
|
27
|
+
constructor(props: IEcsCapacityProviderProps) {
|
|
28
|
+
super(props);
|
|
29
|
+
const cmd = this.props.command;
|
|
30
|
+
|
|
31
|
+
this.state = {
|
|
32
|
+
availableCapacityProviders: this.getAvailableCapacityProviders(cmd),
|
|
33
|
+
defaultCapacityProviderStrategy: this.getDefaultCapacityProviderStrategy(cmd),
|
|
34
|
+
ecsClusterName: cmd.ecsClusterName,
|
|
35
|
+
useDefaultCapacityProviders:
|
|
36
|
+
cmd.useDefaultCapacityProviders || (cmd.capacityProviderStrategy && cmd.capacityProviderStrategy.length == 0),
|
|
37
|
+
capacityProviderStrategy:
|
|
38
|
+
cmd.capacityProviderStrategy && cmd.capacityProviderStrategy.length > 0 ? cmd.capacityProviderStrategy : [],
|
|
39
|
+
capacityProviderLoadedFlag: false,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public componentDidMount() {
|
|
44
|
+
this.props.configureCommand('1').then(() => {
|
|
45
|
+
const cmd = this.props.command;
|
|
46
|
+
const useDefaultCapacityProviders = this.state.useDefaultCapacityProviders;
|
|
47
|
+
this.setState({
|
|
48
|
+
availableCapacityProviders: this.getAvailableCapacityProviders(cmd),
|
|
49
|
+
defaultCapacityProviderStrategy: this.getDefaultCapacityProviderStrategy(cmd),
|
|
50
|
+
capacityProviderStrategy: this.getCapacityProviderStrategy(useDefaultCapacityProviders, cmd),
|
|
51
|
+
capacityProviderLoadedFlag: true,
|
|
52
|
+
});
|
|
53
|
+
this.props.notifyAngular('useDefaultCapacityProviders', this.state.useDefaultCapacityProviders);
|
|
54
|
+
this.props.notifyAngular('capacityProviderStrategy', this.state.capacityProviderStrategy);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
private getAvailableCapacityProviders = (cmd: IEcsServerGroupCommand) => {
|
|
59
|
+
return cmd.backingData && cmd.backingData.filtered && cmd.backingData.filtered.availableCapacityProviders
|
|
60
|
+
? cmd.backingData.filtered.availableCapacityProviders
|
|
61
|
+
: [];
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
private getDefaultCapacityProviderStrategy = (cmd: IEcsServerGroupCommand) => {
|
|
65
|
+
return cmd.backingData && cmd.backingData.filtered && cmd.backingData.filtered.defaultCapacityProviderStrategy
|
|
66
|
+
? cmd.backingData.filtered.defaultCapacityProviderStrategy
|
|
67
|
+
: [];
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
private getCapacityProviderStrategy = (useDefaultCapacityProviders: boolean, cmd: IEcsServerGroupCommand) => {
|
|
71
|
+
return useDefaultCapacityProviders &&
|
|
72
|
+
cmd.backingData &&
|
|
73
|
+
cmd.backingData.filtered &&
|
|
74
|
+
cmd.backingData.filtered.defaultCapacityProviderStrategy
|
|
75
|
+
? cmd.backingData.filtered.defaultCapacityProviderStrategy
|
|
76
|
+
: this.state.capacityProviderStrategy;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
private addCapacityProviderStrategy = () => {
|
|
80
|
+
const capacityProviderStrategy = this.state.capacityProviderStrategy;
|
|
81
|
+
capacityProviderStrategy.push({ capacityProvider: '', base: null, weight: null });
|
|
82
|
+
this.props.notifyAngular('capacityProviderStrategy', capacityProviderStrategy);
|
|
83
|
+
this.setState({ capacityProviderStrategy: capacityProviderStrategy });
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
private removeCapacityProviderStrategy = (index: number) => {
|
|
87
|
+
const capacityProviderStrategy = this.state.capacityProviderStrategy;
|
|
88
|
+
capacityProviderStrategy.splice(index, 1);
|
|
89
|
+
this.props.notifyAngular('capacityProviderStrategy', capacityProviderStrategy);
|
|
90
|
+
this.setState({ capacityProviderStrategy: capacityProviderStrategy });
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
private updateCapacityProviderName = (index: number, targetCapacityProviderName: string) => {
|
|
94
|
+
const capacityProviderStrategy = this.state.capacityProviderStrategy;
|
|
95
|
+
const targetCapacityProviderStrategy = capacityProviderStrategy[index];
|
|
96
|
+
targetCapacityProviderStrategy.capacityProvider = targetCapacityProviderName;
|
|
97
|
+
this.props.notifyAngular('capacityProviderStrategy', capacityProviderStrategy);
|
|
98
|
+
this.setState({ capacityProviderStrategy: capacityProviderStrategy });
|
|
99
|
+
this.props.command.viewState.dirty.customCapacityProviders = [];
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
private updateCapacityProviderBase = (index: number, targetCapacityProviderBase: number) => {
|
|
103
|
+
const capacityProviderStrategy = this.state.capacityProviderStrategy;
|
|
104
|
+
const targetCapacityProviderStrategy = capacityProviderStrategy[index];
|
|
105
|
+
targetCapacityProviderStrategy.base = targetCapacityProviderBase;
|
|
106
|
+
this.props.notifyAngular('capacityProviderStrategy', capacityProviderStrategy);
|
|
107
|
+
this.setState({ capacityProviderStrategy: capacityProviderStrategy });
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
private updateCapacityProviderWeight = (index: number, targetCapacityProviderWeight: number) => {
|
|
111
|
+
const capacityProviderStrategy = this.state.capacityProviderStrategy;
|
|
112
|
+
const targetCapacityProviderStrategy = capacityProviderStrategy[index];
|
|
113
|
+
targetCapacityProviderStrategy.weight = targetCapacityProviderWeight;
|
|
114
|
+
this.props.notifyAngular('capacityProviderStrategy', capacityProviderStrategy);
|
|
115
|
+
this.setState({ capacityProviderStrategy: capacityProviderStrategy });
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
private updateCapacityProviderType = (targetCapacityProviderType: boolean) => {
|
|
119
|
+
this.setState({ useDefaultCapacityProviders: targetCapacityProviderType });
|
|
120
|
+
this.props.notifyAngular('useDefaultCapacityProviders', targetCapacityProviderType);
|
|
121
|
+
this.props.command.viewState.dirty.customCapacityProviders = [];
|
|
122
|
+
|
|
123
|
+
const capacityProviderStrategy =
|
|
124
|
+
targetCapacityProviderType && this.state.defaultCapacityProviderStrategy.length > 0
|
|
125
|
+
? this.state.defaultCapacityProviderStrategy
|
|
126
|
+
: [];
|
|
127
|
+
this.setState({ capacityProviderStrategy: capacityProviderStrategy });
|
|
128
|
+
this.props.notifyAngular('capacityProviderStrategy', capacityProviderStrategy);
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
render(): React.ReactElement<EcsCapacityProvider> {
|
|
132
|
+
const updateCapacityProviderName = this.updateCapacityProviderName;
|
|
133
|
+
const updateCapacityProviderBase = this.updateCapacityProviderBase;
|
|
134
|
+
const updateCapacityProviderWeight = this.updateCapacityProviderWeight;
|
|
135
|
+
const addCapacityProviderStrategy = this.addCapacityProviderStrategy;
|
|
136
|
+
const removeCapacityProviderStrategy = this.removeCapacityProviderStrategy;
|
|
137
|
+
const updateCapacityProviderType = this.updateCapacityProviderType;
|
|
138
|
+
const capacityProviderStrategy = this.state.capacityProviderStrategy;
|
|
139
|
+
const useDefaultCapacityProviders = this.state.useDefaultCapacityProviders;
|
|
140
|
+
const capacityProviderLoadedFlag = this.state.capacityProviderLoadedFlag;
|
|
141
|
+
const customDirtyCapacityProviders =
|
|
142
|
+
this.props.command.viewState.dirty && this.props.command.viewState.dirty.customCapacityProviders
|
|
143
|
+
? this.props.command.viewState.dirty.customCapacityProviders
|
|
144
|
+
: [];
|
|
145
|
+
const defaultDirtyCapacityProviders =
|
|
146
|
+
this.props.command.viewState.dirty && this.props.command.viewState.dirty.defaulCapacityProviders
|
|
147
|
+
? this.props.command.viewState.dirty.defaulCapacityProviders
|
|
148
|
+
: [];
|
|
149
|
+
|
|
150
|
+
const capacityProviderNames =
|
|
151
|
+
this.state.availableCapacityProviders && this.state.availableCapacityProviders.length > 0
|
|
152
|
+
? this.state.availableCapacityProviders.map((capacityProviderNames) => {
|
|
153
|
+
return { label: `${capacityProviderNames}`, value: capacityProviderNames };
|
|
154
|
+
})
|
|
155
|
+
: [];
|
|
156
|
+
|
|
157
|
+
const defaultCPError =
|
|
158
|
+
useDefaultCapacityProviders && defaultDirtyCapacityProviders ? (
|
|
159
|
+
<div className="alert alert-warning">
|
|
160
|
+
<p className="text-left">
|
|
161
|
+
<i className="fa fa-exclamation-triangle"></i>
|
|
162
|
+
Invalid capacity providers are a part of default capacity provider strategy.
|
|
163
|
+
<br />
|
|
164
|
+
Please click 'Done' to use current default capacity provider strategy (shown below) or switch to using a
|
|
165
|
+
custom strategy.
|
|
166
|
+
</p>
|
|
167
|
+
</div>
|
|
168
|
+
) : (
|
|
169
|
+
''
|
|
170
|
+
);
|
|
171
|
+
|
|
172
|
+
const dirtyCapacityProviderList = customDirtyCapacityProviders
|
|
173
|
+
? customDirtyCapacityProviders.map(function (capacityProvider, index) {
|
|
174
|
+
return <li key={index}>{capacityProvider}</li>;
|
|
175
|
+
})
|
|
176
|
+
: '';
|
|
177
|
+
|
|
178
|
+
const dirtyCapacityProviderSection =
|
|
179
|
+
useDefaultCapacityProviders && defaultDirtyCapacityProviders.length > 0 ? (
|
|
180
|
+
defaultCPError
|
|
181
|
+
) : customDirtyCapacityProviders.length > 0 && !useDefaultCapacityProviders ? (
|
|
182
|
+
<div className="alert alert-warning">
|
|
183
|
+
<p>
|
|
184
|
+
<i className="fa fa-exclamation-triangle"></i>
|
|
185
|
+
The following capacity providers could not be found in the selected account/region/cluster and were removed:
|
|
186
|
+
</p>
|
|
187
|
+
<ul>{dirtyCapacityProviderList}</ul>
|
|
188
|
+
<br />
|
|
189
|
+
<p className="text-left">Please select the capacity provider(s) from the dropdown to resolve this error.</p>
|
|
190
|
+
</div>
|
|
191
|
+
) : (
|
|
192
|
+
''
|
|
193
|
+
);
|
|
194
|
+
|
|
195
|
+
const capacityProviderInputs =
|
|
196
|
+
capacityProviderStrategy.length > 0 ? (
|
|
197
|
+
capacityProviderStrategy.map(function (mapping, index) {
|
|
198
|
+
return (
|
|
199
|
+
<tr key={index}>
|
|
200
|
+
{useDefaultCapacityProviders ? (
|
|
201
|
+
<td>
|
|
202
|
+
<input
|
|
203
|
+
data-test-id={'ServerGroup.defaultCapacityProvider.name.' + index}
|
|
204
|
+
type="string"
|
|
205
|
+
className="form-control input-sm no-spel"
|
|
206
|
+
required={true}
|
|
207
|
+
value={mapping.capacityProvider}
|
|
208
|
+
disabled={true}
|
|
209
|
+
/>
|
|
210
|
+
</td>
|
|
211
|
+
) : (
|
|
212
|
+
<td data-test-id={'ServerGroup.customCapacityProvider.name.' + index}>
|
|
213
|
+
<TetheredSelect
|
|
214
|
+
placeholder="Select capacity provider"
|
|
215
|
+
options={capacityProviderNames}
|
|
216
|
+
value={mapping.capacityProvider}
|
|
217
|
+
onChange={(e: Option) => {
|
|
218
|
+
updateCapacityProviderName(index, e.label as string);
|
|
219
|
+
}}
|
|
220
|
+
clearable={false}
|
|
221
|
+
/>
|
|
222
|
+
</td>
|
|
223
|
+
)}
|
|
224
|
+
<td>
|
|
225
|
+
<input
|
|
226
|
+
data-test-id={'ServerGroup.capacityProvider.base.' + index}
|
|
227
|
+
disabled={useDefaultCapacityProviders}
|
|
228
|
+
type="number"
|
|
229
|
+
className="form-control input-sm no-spel"
|
|
230
|
+
value={mapping.base}
|
|
231
|
+
onChange={(e) => updateCapacityProviderBase(index, e.target.valueAsNumber)}
|
|
232
|
+
/>
|
|
233
|
+
</td>
|
|
234
|
+
<td>
|
|
235
|
+
<input
|
|
236
|
+
data-test-id={'ServerGroup.capacityProvider.weight.' + index}
|
|
237
|
+
disabled={useDefaultCapacityProviders}
|
|
238
|
+
type="number"
|
|
239
|
+
className="form-control input-sm no-spel"
|
|
240
|
+
required={true}
|
|
241
|
+
value={mapping.weight}
|
|
242
|
+
onChange={(e) => updateCapacityProviderWeight(index, e.target.valueAsNumber)}
|
|
243
|
+
/>
|
|
244
|
+
</td>
|
|
245
|
+
{!useDefaultCapacityProviders ? (
|
|
246
|
+
<td>
|
|
247
|
+
<div className="form-control-static">
|
|
248
|
+
<a className="btn-link sm-label" onClick={() => removeCapacityProviderStrategy(index)}>
|
|
249
|
+
<span className="glyphicon glyphicon-trash" />
|
|
250
|
+
<span className="sr-only">Remove</span>
|
|
251
|
+
</a>
|
|
252
|
+
</div>
|
|
253
|
+
</td>
|
|
254
|
+
) : (
|
|
255
|
+
''
|
|
256
|
+
)}
|
|
257
|
+
</tr>
|
|
258
|
+
);
|
|
259
|
+
})
|
|
260
|
+
) : useDefaultCapacityProviders && this.state.capacityProviderStrategy.length == 0 ? (
|
|
261
|
+
<tr>
|
|
262
|
+
<div className="sm-label-left" style={{ width: '200%' }}>
|
|
263
|
+
<Alert color="warning">
|
|
264
|
+
{' '}
|
|
265
|
+
The cluster does not have a default capacity provider strategy defined. Set a default capacity provider
|
|
266
|
+
strategy or use a custom strategy.
|
|
267
|
+
</Alert>
|
|
268
|
+
</div>
|
|
269
|
+
</tr>
|
|
270
|
+
) : (
|
|
271
|
+
''
|
|
272
|
+
);
|
|
273
|
+
|
|
274
|
+
const newCapacityProviderStrategy =
|
|
275
|
+
this.state.ecsClusterName &&
|
|
276
|
+
this.props.command.credentials &&
|
|
277
|
+
this.props.command.region &&
|
|
278
|
+
!useDefaultCapacityProviders &&
|
|
279
|
+
capacityProviderNames.length > 0 ? (
|
|
280
|
+
<button
|
|
281
|
+
data-test-id="ServerGroup.addCapacityProvider"
|
|
282
|
+
className="btn btn-block btn-sm add-new"
|
|
283
|
+
onClick={addCapacityProviderStrategy}
|
|
284
|
+
>
|
|
285
|
+
<span className="glyphicon glyphicon-plus-sign" />
|
|
286
|
+
Add New Capacity Provider
|
|
287
|
+
</button>
|
|
288
|
+
) : !useDefaultCapacityProviders && capacityProviderLoadedFlag && capacityProviderNames.length == 0 ? (
|
|
289
|
+
<div className="sm-label-left" style={{ width: '200%' }}>
|
|
290
|
+
<Alert color="warning"> The cluster does not have capacity providers defined. </Alert>
|
|
291
|
+
</div>
|
|
292
|
+
) : (
|
|
293
|
+
''
|
|
294
|
+
);
|
|
295
|
+
|
|
296
|
+
return (
|
|
297
|
+
<div>
|
|
298
|
+
{(customDirtyCapacityProviders.length > 0 || defaultDirtyCapacityProviders.length > 0) &&
|
|
299
|
+
capacityProviderLoadedFlag ? (
|
|
300
|
+
<div>{dirtyCapacityProviderSection}</div>
|
|
301
|
+
) : (
|
|
302
|
+
''
|
|
303
|
+
)}
|
|
304
|
+
<div className="sm-label-left">
|
|
305
|
+
<b>Capacity Provider Strategy</b>
|
|
306
|
+
<HelpField id="ecs.capacityProviderStrategy" /> <br />
|
|
307
|
+
<span>({this.state.ecsClusterName})</span>
|
|
308
|
+
</div>
|
|
309
|
+
<div className="radio">
|
|
310
|
+
<label>
|
|
311
|
+
<input
|
|
312
|
+
data-test-id="ServerGroup.capacityProviders.default"
|
|
313
|
+
type="radio"
|
|
314
|
+
checked={useDefaultCapacityProviders}
|
|
315
|
+
onClick={() => updateCapacityProviderType(true)}
|
|
316
|
+
id="computeOptionsLaunchType1"
|
|
317
|
+
/>
|
|
318
|
+
Use cluster default
|
|
319
|
+
</label>
|
|
320
|
+
</div>
|
|
321
|
+
<div className="radio">
|
|
322
|
+
<label>
|
|
323
|
+
<input
|
|
324
|
+
data-test-id="ServerGroup.capacityProviders.custom"
|
|
325
|
+
type="radio"
|
|
326
|
+
checked={!useDefaultCapacityProviders}
|
|
327
|
+
onClick={() => updateCapacityProviderType(false)}
|
|
328
|
+
id="computeOptionsCapacityProviders2"
|
|
329
|
+
/>
|
|
330
|
+
Use custom (Advanced)
|
|
331
|
+
</label>
|
|
332
|
+
</div>
|
|
333
|
+
{capacityProviderLoadedFlag ? (
|
|
334
|
+
<table className="table table-condensed packed tags">
|
|
335
|
+
<thead>
|
|
336
|
+
<tr>
|
|
337
|
+
<th style={{ width: '50%' }}>
|
|
338
|
+
Provider name
|
|
339
|
+
<HelpField id="ecs.capacityProviderName" />
|
|
340
|
+
</th>
|
|
341
|
+
<th style={{ width: '25%' }}>
|
|
342
|
+
Base
|
|
343
|
+
<HelpField id="ecs.capacityProviderBase" />
|
|
344
|
+
</th>
|
|
345
|
+
<th style={{ width: '25%' }}>
|
|
346
|
+
Weight
|
|
347
|
+
<HelpField id="ecs.capacityProviderWeight" />
|
|
348
|
+
</th>
|
|
349
|
+
</tr>
|
|
350
|
+
</thead>
|
|
351
|
+
<tbody>{capacityProviderInputs}</tbody>
|
|
352
|
+
<tfoot>
|
|
353
|
+
<tr>
|
|
354
|
+
<td colSpan={4}>{newCapacityProviderStrategy}</td>
|
|
355
|
+
</tr>
|
|
356
|
+
</tfoot>
|
|
357
|
+
</table>
|
|
358
|
+
) : (
|
|
359
|
+
<div className="load medium">
|
|
360
|
+
<div className="message">Loading capacity providers...</div>
|
|
361
|
+
<div className="bars">
|
|
362
|
+
<div className="bar"></div>
|
|
363
|
+
<div className="bar"></div>
|
|
364
|
+
<div className="bar"></div>
|
|
365
|
+
</div>
|
|
366
|
+
</div>
|
|
367
|
+
)}
|
|
368
|
+
</div>
|
|
369
|
+
);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
export const ECS_CAPACITY_PROVIDER_REACT = 'spinnaker.ecs.serverGroup.configure.wizard.capacityProvider.react';
|
|
374
|
+
module(ECS_CAPACITY_PROVIDER_REACT, []).component(
|
|
375
|
+
'ecsCapacityProviderReact',
|
|
376
|
+
react2angular(withErrorBoundary(EcsCapacityProvider, 'ecsCapacityProviderReact'), [
|
|
377
|
+
'command',
|
|
378
|
+
'notifyAngular',
|
|
379
|
+
'configureCommand',
|
|
380
|
+
]),
|
|
381
|
+
);
|