@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.
Files changed (173) hide show
  1. package/CHANGELOG.md +1186 -0
  2. package/LICENSE.txt +203 -0
  3. package/dist/common/common.module.d.ts +1 -0
  4. package/dist/common/footer.component.d.ts +1 -0
  5. package/dist/domain/IEcsLoadBalancer.d.ts +119 -0
  6. package/dist/ecs.help.d.ts +1 -0
  7. package/dist/ecs.module.d.ts +4 -0
  8. package/dist/ecs.settings.d.ts +9 -0
  9. package/dist/ecsCluster/IEcsCapacityProviderDetails.d.ts +10 -0
  10. package/dist/ecsCluster/IEcsCluster.d.ts +5 -0
  11. package/dist/ecsCluster/ecsCluster.read.service.d.ts +7 -0
  12. package/dist/iamRoles/IRole.d.ts +6 -0
  13. package/dist/iamRoles/iamRole.read.service.d.ts +5 -0
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.js +6010 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/instance/details/instance.details.controller.d.ts +2 -0
  18. package/dist/loadBalancer/EcsLoadBalancerClusterContainer.d.ts +6 -0
  19. package/dist/loadBalancer/TargetGroup.d.ts +11 -0
  20. package/dist/loadBalancer/details/loadBalancerDetails.d.ts +27 -0
  21. package/dist/loadBalancer/details/targetGroupDetails.d.ts +30 -0
  22. package/dist/loadBalancer/listener.d.ts +10 -0
  23. package/dist/loadBalancer/loadBalancer.transformer.d.ts +8 -0
  24. package/dist/loadBalancer/targetGroup.states.d.ts +1 -0
  25. package/dist/metricAlarm/MetricAlarm.d.ts +6 -0
  26. package/dist/metricAlarm/metricAlarm.read.service.d.ts +5 -0
  27. package/dist/pipeline/stages/destroyAsg/ecsDestroyAsgStage.d.ts +2 -0
  28. package/dist/pipeline/stages/disableAsg/ecsDisableAsgStage.d.ts +2 -0
  29. package/dist/pipeline/stages/disableCluster/ecsDisableClusterStage.d.ts +2 -0
  30. package/dist/pipeline/stages/enableAsg/ecsEnableAsgStage.d.ts +2 -0
  31. package/dist/pipeline/stages/findImageFromTags/ecsFindImageFromTagStage.d.ts +2 -0
  32. package/dist/pipeline/stages/resizeAsg/ecsResizeAsgStage.d.ts +2 -0
  33. package/dist/pipeline/stages/scaleDownCluster/ecsScaleDownClusterStage.d.ts +2 -0
  34. package/dist/pipeline/stages/shrinkCluster/ecsShrinkClusterStage.d.ts +2 -0
  35. package/dist/placementStrategy/IPlacementStrategy.d.ts +4 -0
  36. package/dist/placementStrategy/placementStrategy.service.d.ts +11 -0
  37. package/dist/secrets/ISecret.d.ts +5 -0
  38. package/dist/secrets/secret.read.service.d.ts +5 -0
  39. package/dist/securityGroup/details/securityGroupDetail.controller.d.ts +2 -0
  40. package/dist/securityGroup/securityGroup.module.d.ts +1 -0
  41. package/dist/securityGroup/securityGroup.reader.d.ts +5 -0
  42. package/dist/securityGroup/securityGroup.transformer.d.ts +2 -0
  43. package/dist/serverGroup/configure/serverGroupCommandBuilder.service.d.ts +2 -0
  44. package/dist/serverGroup/configure/serverGroupConfiguration.service.d.ts +165 -0
  45. package/dist/serverGroup/configure/wizard/CloneServerGroup.ecs.controller.d.ts +2 -0
  46. package/dist/serverGroup/configure/wizard/advancedSettings/advancedSettings.component.d.ts +2 -0
  47. package/dist/serverGroup/configure/wizard/capacityProvider/CapacityProvider.d.ts +7 -0
  48. package/dist/serverGroup/configure/wizard/container/Container.d.ts +32 -0
  49. package/dist/serverGroup/configure/wizard/horizontalScaling/horizontalScaling.component.d.ts +2 -0
  50. package/dist/serverGroup/configure/wizard/location/ServerGroupBasicSettings.controller.d.ts +2 -0
  51. package/dist/serverGroup/configure/wizard/logging/logging.component.d.ts +1 -0
  52. package/dist/serverGroup/configure/wizard/networking/Networking.d.ts +28 -0
  53. package/dist/serverGroup/configure/wizard/serviceDiscovery/ServiceDiscovery.d.ts +34 -0
  54. package/dist/serverGroup/configure/wizard/taskDefinition/TaskDefinition.d.ts +39 -0
  55. package/dist/serverGroup/details/resize/resizeCapacity.component.d.ts +1 -0
  56. package/dist/serverGroup/details/resize/resizeServerGroup.controller.d.ts +2 -0
  57. package/dist/serverGroup/details/rollback/rollbackServerGroup.controller.d.ts +2 -0
  58. package/dist/serverGroup/details/serverGroupDetails.ecs.controller.d.ts +2 -0
  59. package/dist/serverGroup/details/serverGroupDetails.module.d.ts +1 -0
  60. package/dist/serverGroup/events/EventsLink.d.ts +4 -0
  61. package/dist/serverGroup/events/events.component.d.ts +3 -0
  62. package/dist/serverGroup/events/events.controller.d.ts +19 -0
  63. package/dist/serverGroup/events/serverGroupEventsReader.service.d.ts +10 -0
  64. package/dist/serverGroup/serverGroup.module.d.ts +1 -0
  65. package/dist/serverGroup/serverGroup.transformer.d.ts +11 -0
  66. package/dist/serviceDiscovery/IServiceDiscovery.d.ts +12 -0
  67. package/dist/serviceDiscovery/serviceDiscovery.read.service.d.ts +4 -0
  68. package/package.json +47 -0
  69. package/src/common/common.module.ts +6 -0
  70. package/src/common/footer.component.ts +29 -0
  71. package/src/domain/IEcsLoadBalancer.ts +129 -0
  72. package/src/ecs.help.ts +91 -0
  73. package/src/ecs.module.ts +116 -0
  74. package/src/ecs.settings.ts +17 -0
  75. package/src/ecsCluster/IEcsCapacityProviderDetails.ts +11 -0
  76. package/src/ecsCluster/IEcsCluster.ts +5 -0
  77. package/src/ecsCluster/ecsCluster.read.service.ts +23 -0
  78. package/src/iamRoles/IRole.ts +6 -0
  79. package/src/iamRoles/iamRole.read.service.ts +14 -0
  80. package/src/index.ts +1 -0
  81. package/src/instance/details/instance.details.controller.js +356 -0
  82. package/src/instance/details/instanceDetails.html +204 -0
  83. package/src/loadBalancer/EcsLoadBalancerClusterContainer.tsx +48 -0
  84. package/src/loadBalancer/TargetGroup.tsx +74 -0
  85. package/src/loadBalancer/details/loadBalancerDetails.tsx +235 -0
  86. package/src/loadBalancer/details/targetGroupDetails.tsx +251 -0
  87. package/src/loadBalancer/listener.tsx +65 -0
  88. package/src/loadBalancer/loadBalancer.transformer.ts +21 -0
  89. package/src/loadBalancer/targetGroup.states.ts +59 -0
  90. package/src/logo/ecs.icon.svg +27 -0
  91. package/src/logo/ecs.logo.less +5 -0
  92. package/src/logo/ecs.logo.svg +27 -0
  93. package/src/metricAlarm/MetricAlarm.ts +6 -0
  94. package/src/metricAlarm/metricAlarm.read.service.ts +14 -0
  95. package/src/pipeline/stages/cloneServerGroup/cloneServerGroupStage.html +101 -0
  96. package/src/pipeline/stages/cloneServerGroup/cloneServerGroupStepLabel.html +1 -0
  97. package/src/pipeline/stages/cloneServerGroup/ecsCloneServerGroupStage.js +94 -0
  98. package/src/pipeline/stages/destroyAsg/destroyAsgStage.html +9 -0
  99. package/src/pipeline/stages/destroyAsg/destroyAsgStepLabel.html +1 -0
  100. package/src/pipeline/stages/destroyAsg/ecsDestroyAsgStage.js +65 -0
  101. package/src/pipeline/stages/disableAsg/disableAsgStage.html +11 -0
  102. package/src/pipeline/stages/disableAsg/disableAsgStepLabel.html +1 -0
  103. package/src/pipeline/stages/disableAsg/ecsDisableAsgStage.js +70 -0
  104. package/src/pipeline/stages/disableCluster/disableClusterStage.html +26 -0
  105. package/src/pipeline/stages/disableCluster/ecsDisableClusterStage.js +84 -0
  106. package/src/pipeline/stages/enableAsg/ecsEnableAsgStage.js +73 -0
  107. package/src/pipeline/stages/enableAsg/enableAsgStage.html +11 -0
  108. package/src/pipeline/stages/enableAsg/enableAsgStepLabel.html +1 -0
  109. package/src/pipeline/stages/findImageFromTags/ecsFindImageFromTagStage.js +26 -0
  110. package/src/pipeline/stages/findImageFromTags/findImageFromTagsExecutionDetails.html +36 -0
  111. package/src/pipeline/stages/findImageFromTags/findImageFromTagsStage.html +9 -0
  112. package/src/pipeline/stages/resizeAsg/ecsResizeAsgStage.js +128 -0
  113. package/src/pipeline/stages/resizeAsg/resizeAsgStage.html +87 -0
  114. package/src/pipeline/stages/resizeAsg/resizeAsgStepLabel.html +1 -0
  115. package/src/pipeline/stages/scaleDownCluster/ecsScaleDownClusterStage.js +78 -0
  116. package/src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.html +35 -0
  117. package/src/pipeline/stages/shrinkCluster/ecsShrinkClusterStage.js +73 -0
  118. package/src/pipeline/stages/shrinkCluster/shrinkClusterStage.html +34 -0
  119. package/src/placementStrategy/IPlacementStrategy.ts +4 -0
  120. package/src/placementStrategy/placementStrategy.service.ts +63 -0
  121. package/src/secrets/ISecret.ts +5 -0
  122. package/src/secrets/secret.read.service.ts +14 -0
  123. package/src/securityGroup/details/securityGroupDetail.controller.js +147 -0
  124. package/src/securityGroup/details/securityGroupDetail.html +104 -0
  125. package/src/securityGroup/securityGroup.module.ts +12 -0
  126. package/src/securityGroup/securityGroup.reader.ts +16 -0
  127. package/src/securityGroup/securityGroup.transformer.js +13 -0
  128. package/src/serverGroup/configure/serverGroupCommandBuilder.service.js +281 -0
  129. package/src/serverGroup/configure/serverGroupConfiguration.service.ts +747 -0
  130. package/src/serverGroup/configure/wizard/CloneServerGroup.ecs.controller.js +259 -0
  131. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.component.html +194 -0
  132. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.component.js +17 -0
  133. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.html +10 -0
  134. package/src/serverGroup/configure/wizard/capacityProvider/CapacityProvider.tsx +381 -0
  135. package/src/serverGroup/configure/wizard/capacityProvider/capacityProvider.html +11 -0
  136. package/src/serverGroup/configure/wizard/container/Container.tsx +347 -0
  137. package/src/serverGroup/configure/wizard/container/container.html +9 -0
  138. package/src/serverGroup/configure/wizard/horizontalScaling/horizontalScaling.component.html +118 -0
  139. package/src/serverGroup/configure/wizard/horizontalScaling/horizontalScaling.component.js +20 -0
  140. package/src/serverGroup/configure/wizard/horizontalScaling/horizontalScaling.html +13 -0
  141. package/src/serverGroup/configure/wizard/location/ServerGroupBasicSettings.controller.js +41 -0
  142. package/src/serverGroup/configure/wizard/location/basicSettings.html +137 -0
  143. package/src/serverGroup/configure/wizard/logging/logging.component.html +29 -0
  144. package/src/serverGroup/configure/wizard/logging/logging.component.ts +12 -0
  145. package/src/serverGroup/configure/wizard/logging/logging.html +7 -0
  146. package/src/serverGroup/configure/wizard/networking/Networking.tsx +261 -0
  147. package/src/serverGroup/configure/wizard/networking/networking.html +9 -0
  148. package/src/serverGroup/configure/wizard/serverGroupWizard.html +55 -0
  149. package/src/serverGroup/configure/wizard/serviceDiscovery/ServiceDiscovery.tsx +250 -0
  150. package/src/serverGroup/configure/wizard/serviceDiscovery/serviceDiscovery.html +11 -0
  151. package/src/serverGroup/configure/wizard/taskDefinition/TaskDefinition.tsx +460 -0
  152. package/src/serverGroup/configure/wizard/taskDefinition/taskDefinition.html +51 -0
  153. package/src/serverGroup/configure/wizard/templateSelection/templateSelection.html +9 -0
  154. package/src/serverGroup/configure/wizard/verticalScaling/verticalScaling.html +10 -0
  155. package/src/serverGroup/details/resize/resizeCapacity.component.html +94 -0
  156. package/src/serverGroup/details/resize/resizeCapacity.component.ts +14 -0
  157. package/src/serverGroup/details/resize/resizeServerGroup.controller.js +85 -0
  158. package/src/serverGroup/details/resize/resizeServerGroup.html +28 -0
  159. package/src/serverGroup/details/rollback/rollbackServerGroup.controller.js +97 -0
  160. package/src/serverGroup/details/rollback/rollbackServerGroup.html +67 -0
  161. package/src/serverGroup/details/serverGroupDetails.ecs.controller.js +366 -0
  162. package/src/serverGroup/details/serverGroupDetails.html +216 -0
  163. package/src/serverGroup/details/serverGroupDetails.module.ts +5 -0
  164. package/src/serverGroup/events/EventsLink.tsx +5 -0
  165. package/src/serverGroup/events/events.component.ts +35 -0
  166. package/src/serverGroup/events/events.controller.ts +45 -0
  167. package/src/serverGroup/events/events.html +36 -0
  168. package/src/serverGroup/events/serverGroupEventsReader.service.ts +27 -0
  169. package/src/serverGroup/serverGroup.module.ts +6 -0
  170. package/src/serverGroup/serverGroup.transformer.spec.ts +184 -0
  171. package/src/serverGroup/serverGroup.transformer.ts +117 -0
  172. package/src/serviceDiscovery/IServiceDiscovery.ts +13 -0
  173. package/src/serviceDiscovery/serviceDiscovery.read.service.ts +8 -0
@@ -0,0 +1,250 @@
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 {
10
+ IEcsServerGroupCommand,
11
+ IEcsServiceDiscoveryRegistryAssociation,
12
+ } from '../../serverGroupConfiguration.service';
13
+
14
+ export interface IServiceDiscoveryProps {
15
+ command: IEcsServerGroupCommand;
16
+ notifyAngular: (key: string, value: any) => void;
17
+ configureCommand: (query: string) => PromiseLike<void>;
18
+ }
19
+
20
+ export interface IEcsServiceDiscoveryRegistry {
21
+ account: string;
22
+ region: string;
23
+ name: string;
24
+ id: string;
25
+ arn: string;
26
+ displayName: string;
27
+ }
28
+
29
+ interface IServiceDiscoveryState {
30
+ serviceDiscoveryAssociations: IEcsServiceDiscoveryRegistryAssociation[];
31
+ serviceDiscoveryRegistriesAvailable: IEcsServiceDiscoveryRegistry[];
32
+ useTaskDefinitionArtifact: boolean;
33
+ }
34
+
35
+ export class ServiceDiscovery extends React.Component<IServiceDiscoveryProps, IServiceDiscoveryState> {
36
+ constructor(props: IServiceDiscoveryProps) {
37
+ super(props);
38
+ const cmd = this.props.command;
39
+
40
+ this.state = {
41
+ serviceDiscoveryAssociations: cmd.serviceDiscoveryAssociations,
42
+ serviceDiscoveryRegistriesAvailable:
43
+ cmd.backingData && cmd.backingData.filtered ? cmd.backingData.filtered.serviceDiscoveryRegistries : [],
44
+ useTaskDefinitionArtifact: cmd.useTaskDefinitionArtifact,
45
+ };
46
+
47
+ if (!this.state.useTaskDefinitionArtifact) {
48
+ this.state.serviceDiscoveryAssociations.forEach((serviceDiscoveryRegistryAssociation) => {
49
+ serviceDiscoveryRegistryAssociation.containerName = null;
50
+ });
51
+ }
52
+ }
53
+
54
+ public componentDidMount() {
55
+ this.props.configureCommand('1').then(() => {
56
+ this.setState({
57
+ serviceDiscoveryRegistriesAvailable: this.props.command.backingData.filtered.serviceDiscoveryRegistries,
58
+ });
59
+ });
60
+ }
61
+
62
+ private getNameToRegistryMap = (): Map<string, IEcsServiceDiscoveryRegistry> => {
63
+ const displayNameToRegistry = new Map<string, IEcsServiceDiscoveryRegistry>();
64
+ this.props.command.backingData.filtered.serviceDiscoveryRegistries.forEach((e) => {
65
+ displayNameToRegistry.set(e.displayName, e);
66
+ });
67
+
68
+ return displayNameToRegistry;
69
+ };
70
+
71
+ private getEmptyRegistry = (): IEcsServiceDiscoveryRegistry => {
72
+ return {
73
+ account: '',
74
+ region: '',
75
+ name: '',
76
+ id: '',
77
+ arn: '',
78
+ displayName: '',
79
+ };
80
+ };
81
+
82
+ private updateServiceDiscoveryRegistry = (index: number, newRegistry: Option<string>) => {
83
+ const registryMap = this.getNameToRegistryMap();
84
+ let newServiceDiscoveryRegistry = registryMap.get(newRegistry.value);
85
+
86
+ if (!newServiceDiscoveryRegistry) {
87
+ newServiceDiscoveryRegistry = this.getEmptyRegistry();
88
+ }
89
+
90
+ const currentAssociations = this.state.serviceDiscoveryAssociations;
91
+ const targetAssociation = currentAssociations[index];
92
+ targetAssociation.registry = newServiceDiscoveryRegistry;
93
+ this.props.notifyAngular('serviceDiscoveryAssociations', currentAssociations);
94
+ this.setState({ serviceDiscoveryAssociations: currentAssociations });
95
+ };
96
+
97
+ private updateServiceDiscoveryPort = (index: number, targetPort: number) => {
98
+ const currentAssociations = this.state.serviceDiscoveryAssociations;
99
+ const targetAssociations = currentAssociations[index];
100
+ targetAssociations.containerPort = targetPort;
101
+ this.props.notifyAngular('serviceDiscoveryAssociations', currentAssociations);
102
+ this.setState({ serviceDiscoveryAssociations: currentAssociations });
103
+ };
104
+
105
+ private updateServiceDiscoveryContainerName = (index: number, targetContainerName: string) => {
106
+ const currentAssociations = this.state.serviceDiscoveryAssociations;
107
+ const targetAssociations = currentAssociations[index];
108
+ targetAssociations.containerName = targetContainerName;
109
+ this.props.notifyAngular('serviceDiscoveryAssociations', currentAssociations);
110
+ this.setState({ serviceDiscoveryAssociations: currentAssociations });
111
+ };
112
+
113
+ private pushServiceDiscoveryAssociation = () => {
114
+ const registryAssociations = this.state.serviceDiscoveryAssociations;
115
+ registryAssociations.push({ registry: this.getEmptyRegistry(), containerPort: 80, containerName: '' });
116
+ this.setState({ serviceDiscoveryAssociations: registryAssociations });
117
+ };
118
+
119
+ private removeServiceDiscoveryAssociations = (index: number) => {
120
+ const currentAssociations = this.state.serviceDiscoveryAssociations;
121
+ currentAssociations.splice(index, 1);
122
+ this.props.notifyAngular('serviceDiscoveryAssociations', currentAssociations);
123
+ this.setState({ serviceDiscoveryAssociations: currentAssociations });
124
+ };
125
+
126
+ public render(): React.ReactElement<ServiceDiscovery> {
127
+ const removeServiceDiscoveryAssociation = this.removeServiceDiscoveryAssociations;
128
+ const updateServiceDiscoveryRegistry = this.updateServiceDiscoveryRegistry;
129
+ const updateServiceDiscoveryPort = this.updateServiceDiscoveryPort;
130
+ const updateServiceDiscoveryContainerName = this.updateServiceDiscoveryContainerName;
131
+
132
+ const registriesAvailable = this.state.serviceDiscoveryRegistriesAvailable.map(function (registry) {
133
+ return { label: `${registry.displayName}`, value: registry.displayName };
134
+ });
135
+
136
+ const useTaskDefinitionArtifact = this.state.useTaskDefinitionArtifact;
137
+ const serviceDiscoveryInputs = this.state.serviceDiscoveryAssociations.map(function (mapping, index) {
138
+ return (
139
+ <tr key={index}>
140
+ {useTaskDefinitionArtifact && (
141
+ <td>
142
+ <input
143
+ className="form-control input-sm"
144
+ placeholder="Enter a container name ..."
145
+ required={true}
146
+ value={mapping.containerName}
147
+ onChange={(e) => updateServiceDiscoveryContainerName(index, e.target.value)}
148
+ />
149
+ </td>
150
+ )}
151
+ <td>
152
+ <TetheredSelect
153
+ placeholder="Select a registry..."
154
+ options={registriesAvailable}
155
+ value={mapping.registry.displayName.toString()}
156
+ onChange={(e: Option) => updateServiceDiscoveryRegistry(index, e as Option<string>)}
157
+ clearable={false}
158
+ required={true}
159
+ />
160
+ </td>
161
+ <td>
162
+ <input
163
+ type="number"
164
+ className="form-control input-sm no-spel"
165
+ required={true}
166
+ value={mapping.containerPort}
167
+ onChange={(e) => updateServiceDiscoveryPort(index, e.target.valueAsNumber)}
168
+ />
169
+ </td>
170
+ <td>
171
+ <div className="form-control-static">
172
+ <a className="btn-link sm-label" onClick={() => removeServiceDiscoveryAssociation(index)}>
173
+ <span className="glyphicon glyphicon-trash" />
174
+ <span className="sr-only">Remove</span>
175
+ </a>
176
+ </div>
177
+ </td>
178
+ </tr>
179
+ );
180
+ });
181
+
182
+ const newServiceDiscoveryAssociation = this.state.serviceDiscoveryRegistriesAvailable.length ? (
183
+ <button className="btn btn-block btn-sm add-new" onClick={this.pushServiceDiscoveryAssociation}>
184
+ <span className="glyphicon glyphicon-plus-sign" />
185
+ Add New Service Registry
186
+ </button>
187
+ ) : (
188
+ <div className="sm-label-left">
189
+ <Alert color="warning">No registries found in the selected account/region/VPC</Alert>
190
+ </div>
191
+ );
192
+
193
+ return (
194
+ <div className="container-fluid form-horizontal">
195
+ <div className="form-group">
196
+ <div className="sm-label-left">
197
+ <b>Service Registries (optional)</b>
198
+ <HelpField id="ecs.serviceDiscovery" />
199
+ </div>
200
+ <form name="ecsServiceDiscoveryRegistryMappings">
201
+ <table className="table table-condensed packed tags">
202
+ <thead>
203
+ <tr>
204
+ {useTaskDefinitionArtifact && (
205
+ <th style={{ width: '30%' }}>
206
+ Container name
207
+ <HelpField id="ecs.serviceDiscoveryContainerName" />
208
+ </th>
209
+ )}
210
+ {useTaskDefinitionArtifact ? (
211
+ <th style={{ width: '55%' }}>
212
+ Registry
213
+ <HelpField id="ecs.serviceDiscoveryRegistry" />
214
+ </th>
215
+ ) : (
216
+ <th style={{ width: '80%' }}>
217
+ Registry
218
+ <HelpField id="ecs.serviceDiscoveryRegistry" />
219
+ </th>
220
+ )}
221
+ <th style={{ width: '15%' }}>
222
+ Port
223
+ <HelpField id="ecs.serviceDiscoveryContainerPort" />
224
+ </th>
225
+ <th />
226
+ </tr>
227
+ </thead>
228
+ <tbody>{serviceDiscoveryInputs}</tbody>
229
+ <tfoot>
230
+ <tr>
231
+ <td colSpan={4}>{newServiceDiscoveryAssociation}</td>
232
+ </tr>
233
+ </tfoot>
234
+ </table>
235
+ </form>
236
+ </div>
237
+ </div>
238
+ );
239
+ }
240
+ }
241
+
242
+ export const SERVICE_DISCOVERY_REACT = 'spinnaker.ecs.serverGroup.configure.wizard.serviceDiscovery.react';
243
+ module(SERVICE_DISCOVERY_REACT, []).component(
244
+ 'serviceDiscoveryReact',
245
+ react2angular(withErrorBoundary(ServiceDiscovery, 'serviceDiscoveryReact'), [
246
+ 'command',
247
+ 'notifyAngular',
248
+ 'configureCommand',
249
+ ]),
250
+ );
@@ -0,0 +1,11 @@
1
+ <div class="clearfix">
2
+ <div class="row">
3
+ <div class="col-md-12">
4
+ <service-discovery-react
5
+ command="command"
6
+ notify-angular="notifyAngular"
7
+ configure-command="configureCommand"
8
+ ></service-discovery-react>
9
+ </div>
10
+ </div>
11
+ </div>