@spinnaker/ecs 2026.2.4 → 2026.3.1

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 (209) hide show
  1. package/dist/ecs.module.d.ts +3 -1
  2. package/dist/ecsCluster/ecsCluster.read.service.d.ts +2 -3
  3. package/dist/iamRoles/iamRole.read.service.d.ts +1 -2
  4. package/dist/index.d.ts +5 -0
  5. package/dist/index.js +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/instance/details/EcsInstanceDetails.d.ts +50 -0
  8. package/dist/loadBalancer/loadBalancer.transformer.d.ts +1 -5
  9. package/dist/loadBalancer/targetGroup.states.d.ts +2 -1
  10. package/dist/metricAlarm/metricAlarm.read.service.d.ts +1 -2
  11. package/dist/pipeline/stages/cloneServerGroup/ecsCloneServerGroupStage.d.ts +1 -0
  12. package/dist/pipeline/stages/common/EcsServerGroupStepLabel.d.ts +7 -0
  13. package/dist/pipeline/stages/common/EcsStageConfigs.d.ts +11 -0
  14. package/dist/pipeline/stages/destroyAsg/ecsDestroyAsgStage.d.ts +1 -2
  15. package/dist/pipeline/stages/disableAsg/ecsDisableAsgStage.d.ts +1 -2
  16. package/dist/pipeline/stages/disableCluster/ecsDisableClusterStage.d.ts +1 -2
  17. package/dist/pipeline/stages/enableAsg/ecsEnableAsgStage.d.ts +1 -2
  18. package/dist/pipeline/stages/findImageFromTags/EcsFindImageFromTagsExecutionDetails.d.ts +5 -0
  19. package/dist/pipeline/stages/findImageFromTags/ecsFindImageFromTagStage.d.ts +1 -2
  20. package/dist/pipeline/stages/resizeAsg/ecsResizeAsgStage.d.ts +1 -2
  21. package/dist/pipeline/stages/scaleDownCluster/ecsScaleDownClusterStage.d.ts +1 -2
  22. package/dist/pipeline/stages/shrinkCluster/ecsShrinkClusterStage.d.ts +1 -2
  23. package/dist/placementStrategy/placementStrategy.service.d.ts +0 -1
  24. package/dist/secrets/secret.read.service.d.ts +1 -2
  25. package/dist/securityGroup/details/EcsSecurityGroupDetails.d.ts +45 -0
  26. package/dist/securityGroup/securityGroup.reader.d.ts +0 -1
  27. package/dist/securityGroup/securityGroup.transformer.d.ts +3 -2
  28. package/dist/serverGroup/configure/dockerImage.util.d.ts +3 -0
  29. package/dist/serverGroup/configure/serverGroupCommandBuilder.service.d.ts +111 -2
  30. package/dist/serverGroup/configure/serverGroupConfiguration.service.d.ts +13 -63
  31. package/dist/serverGroup/configure/wizard/EcsCloneServerGroupModal.d.ts +64 -0
  32. package/dist/serverGroup/configure/wizard/capacityProvider/CapacityProvider.d.ts +29 -4
  33. package/dist/serverGroup/configure/wizard/container/Container.d.ts +3 -3
  34. package/dist/serverGroup/configure/wizard/networking/Networking.d.ts +3 -3
  35. package/dist/serverGroup/configure/wizard/pages/AdvancedSettings.d.ts +3 -0
  36. package/dist/serverGroup/configure/wizard/pages/BasicSettings.d.ts +3 -0
  37. package/dist/serverGroup/configure/wizard/pages/ContainerSettings.d.ts +3 -0
  38. package/dist/serverGroup/configure/wizard/pages/HorizontalScalingSettings.d.ts +3 -0
  39. package/dist/serverGroup/configure/wizard/pages/LoggingSettings.d.ts +3 -0
  40. package/dist/serverGroup/configure/wizard/pages/NetworkingSettings.d.ts +3 -0
  41. package/dist/serverGroup/configure/wizard/pages/ServiceDiscoverySettings.d.ts +3 -0
  42. package/dist/serverGroup/configure/wizard/pages/TaskDefinitionSettings.d.ts +3 -0
  43. package/dist/serverGroup/configure/wizard/pages/common.d.ts +8 -0
  44. package/dist/serverGroup/configure/wizard/pages/validation.d.ts +22 -0
  45. package/dist/serverGroup/configure/wizard/serviceDiscovery/ServiceDiscovery.d.ts +5 -3
  46. package/dist/serverGroup/configure/wizard/taskDefinition/TaskDefinition.d.ts +3 -3
  47. package/dist/serverGroup/details/EcsServerGroupActions.d.ts +6 -0
  48. package/dist/serverGroup/details/ecsServerGroupDetailsGetter.d.ts +3 -0
  49. package/dist/serverGroup/details/resize/EcsResizeServerGroupModal.d.ts +43 -0
  50. package/dist/serverGroup/details/resize/index.d.ts +1 -0
  51. package/dist/serverGroup/details/rollback/EcsRollbackServerGroupModal.d.ts +46 -0
  52. package/dist/serverGroup/details/rollback/index.d.ts +1 -0
  53. package/dist/serverGroup/details/sections/EcsServerGroupDetailsSections.d.ts +9 -0
  54. package/dist/serverGroup/details/sections/EcsServerGroupEventsSection.d.ts +3 -0
  55. package/dist/serverGroup/details/sections/EcsServerGroupInformationSection.d.ts +3 -0
  56. package/dist/serverGroup/events/EcsServerGroupEventsModal.d.ts +22 -0
  57. package/dist/serverGroup/events/EventsLink.d.ts +2 -0
  58. package/dist/serverGroup/events/serverGroupEventsReader.service.d.ts +1 -1
  59. package/dist/serverGroup/serverGroup.transformer.d.ts +1 -2
  60. package/dist/serviceDiscovery/serviceDiscovery.read.service.d.ts +1 -1
  61. package/package.json +3 -9
  62. package/src/ecs.module.spec.ts +86 -0
  63. package/src/ecs.module.ts +68 -84
  64. package/src/ecsCluster/ecsCluster.read.service.ts +3 -9
  65. package/src/iamRoles/iamRole.read.service.ts +1 -7
  66. package/src/index.ts +6 -0
  67. package/src/instance/details/EcsInstanceDetails.spec.tsx +426 -0
  68. package/src/instance/details/EcsInstanceDetails.tsx +474 -0
  69. package/src/loadBalancer/details/loadBalancerDetails.tsx +1 -1
  70. package/src/loadBalancer/details/targetGroupDetails.tsx +1 -1
  71. package/src/loadBalancer/loadBalancer.transformer.ts +2 -7
  72. package/src/loadBalancer/targetGroup.states.ts +55 -53
  73. package/src/metricAlarm/metricAlarm.read.service.ts +1 -7
  74. package/src/pipeline/stages/cloneServerGroup/ecsCloneServerGroupStage.js +22 -94
  75. package/src/pipeline/stages/common/EcsServerGroupStepLabel.tsx +16 -0
  76. package/src/pipeline/stages/common/EcsStageConfigs.tsx +587 -0
  77. package/src/pipeline/stages/destroyAsg/ecsDestroyAsgStage.js +29 -65
  78. package/src/pipeline/stages/disableAsg/ecsDisableAsgStage.js +27 -70
  79. package/src/pipeline/stages/disableCluster/ecsDisableClusterStage.js +21 -84
  80. package/src/pipeline/stages/enableAsg/ecsEnableAsgStage.js +22 -73
  81. package/src/pipeline/stages/findImageFromTags/EcsFindImageFromTagsExecutionDetails.tsx +40 -0
  82. package/src/pipeline/stages/findImageFromTags/ecsFindImageFromTagStage.js +12 -24
  83. package/src/pipeline/stages/resizeAsg/ecsResizeAsgStage.js +30 -128
  84. package/src/pipeline/stages/scaleDownCluster/ecsScaleDownClusterStage.js +24 -78
  85. package/src/pipeline/stages/shrinkCluster/ecsShrinkClusterStage.js +19 -73
  86. package/src/placementStrategy/placementStrategy.service.ts +0 -6
  87. package/src/secrets/secret.read.service.ts +1 -7
  88. package/src/securityGroup/details/EcsSecurityGroupDetails.spec.tsx +245 -0
  89. package/src/securityGroup/details/EcsSecurityGroupDetails.tsx +285 -0
  90. package/src/securityGroup/securityGroup.reader.ts +0 -5
  91. package/src/securityGroup/securityGroup.transformer.js +5 -13
  92. package/src/serverGroup/configure/dockerImage.util.ts +29 -0
  93. package/src/serverGroup/configure/serverGroupCommandBuilder.service.js +215 -278
  94. package/src/serverGroup/configure/serverGroupCommandBuilder.service.spec.ts +83 -0
  95. package/src/serverGroup/configure/serverGroupConfiguration.service.ts +16 -633
  96. package/src/serverGroup/configure/wizard/EcsCloneServerGroupModal.spec.tsx +2078 -0
  97. package/src/serverGroup/configure/wizard/EcsCloneServerGroupModal.tsx +712 -0
  98. package/src/serverGroup/configure/wizard/capacityProvider/CapacityProvider.tsx +98 -49
  99. package/src/serverGroup/configure/wizard/container/Container.spec.tsx +20 -8
  100. package/src/serverGroup/configure/wizard/container/Container.tsx +53 -24
  101. package/src/serverGroup/configure/wizard/networking/Networking.tsx +60 -38
  102. package/src/serverGroup/configure/wizard/pages/AdvancedSettings.tsx +290 -0
  103. package/src/serverGroup/configure/wizard/pages/BasicSettings.tsx +101 -0
  104. package/src/serverGroup/configure/wizard/pages/ContainerSettings.tsx +10 -0
  105. package/src/serverGroup/configure/wizard/pages/HorizontalScalingSettings.tsx +137 -0
  106. package/src/serverGroup/configure/wizard/pages/LoggingSettings.tsx +60 -0
  107. package/src/serverGroup/configure/wizard/pages/NetworkingSettings.tsx +10 -0
  108. package/src/serverGroup/configure/wizard/pages/ServiceDiscoverySettings.tsx +10 -0
  109. package/src/serverGroup/configure/wizard/pages/TaskDefinitionSettings.tsx +59 -0
  110. package/src/serverGroup/configure/wizard/pages/common.ts +10 -0
  111. package/src/serverGroup/configure/wizard/pages/validation.tsx +190 -0
  112. package/src/serverGroup/configure/wizard/serviceDiscovery/ServiceDiscovery.tsx +83 -34
  113. package/src/serverGroup/configure/wizard/taskDefinition/TaskDefinition.spec.tsx +21 -8
  114. package/src/serverGroup/configure/wizard/taskDefinition/TaskDefinition.tsx +63 -33
  115. package/src/serverGroup/details/EcsServerGroupActions.spec.tsx +244 -0
  116. package/src/serverGroup/details/EcsServerGroupActions.tsx +152 -0
  117. package/src/serverGroup/details/ecsServerGroupDetailsGetter.spec.ts +110 -0
  118. package/src/serverGroup/details/ecsServerGroupDetailsGetter.ts +73 -0
  119. package/src/serverGroup/details/resize/EcsResizeServerGroupModal.spec.tsx +130 -0
  120. package/src/serverGroup/details/resize/EcsResizeServerGroupModal.tsx +263 -0
  121. package/src/serverGroup/details/resize/index.ts +1 -0
  122. package/src/serverGroup/details/rollback/EcsRollbackServerGroupModal.spec.tsx +173 -0
  123. package/src/serverGroup/details/rollback/EcsRollbackServerGroupModal.tsx +285 -0
  124. package/src/serverGroup/details/rollback/index.ts +1 -0
  125. package/src/serverGroup/details/sections/EcsServerGroupDetailsSections.spec.tsx +130 -0
  126. package/src/serverGroup/details/sections/EcsServerGroupDetailsSections.tsx +172 -0
  127. package/src/serverGroup/details/sections/EcsServerGroupEventsSection.tsx +14 -0
  128. package/src/serverGroup/details/sections/EcsServerGroupInformationSection.tsx +25 -0
  129. package/src/serverGroup/events/EcsServerGroupEventsModal.spec.tsx +109 -0
  130. package/src/serverGroup/events/EcsServerGroupEventsModal.tsx +112 -0
  131. package/src/serverGroup/events/EventsLink.tsx +18 -0
  132. package/src/serverGroup/events/serverGroupEventsReader.service.spec.ts +41 -0
  133. package/src/serverGroup/events/serverGroupEventsReader.service.ts +2 -8
  134. package/src/serverGroup/serverGroup.transformer.spec.ts +10 -24
  135. package/src/serverGroup/serverGroup.transformer.ts +1 -5
  136. package/src/serviceDiscovery/serviceDiscovery.read.service.ts +1 -1
  137. package/dist/common/common.module.d.ts +0 -1
  138. package/dist/common/footer.component.d.ts +0 -1
  139. package/dist/instance/details/instance.details.controller.d.ts +0 -2
  140. package/dist/securityGroup/details/securityGroupDetail.controller.d.ts +0 -2
  141. package/dist/securityGroup/securityGroup.module.d.ts +0 -1
  142. package/dist/serverGroup/configure/wizard/CloneServerGroup.ecs.controller.d.ts +0 -2
  143. package/dist/serverGroup/configure/wizard/advancedSettings/advancedSettings.component.d.ts +0 -2
  144. package/dist/serverGroup/configure/wizard/horizontalScaling/horizontalScaling.component.d.ts +0 -2
  145. package/dist/serverGroup/configure/wizard/location/ServerGroupBasicSettings.controller.d.ts +0 -2
  146. package/dist/serverGroup/configure/wizard/logging/logging.component.d.ts +0 -1
  147. package/dist/serverGroup/details/resize/resizeCapacity.component.d.ts +0 -1
  148. package/dist/serverGroup/details/resize/resizeServerGroup.controller.d.ts +0 -2
  149. package/dist/serverGroup/details/rollback/rollbackServerGroup.controller.d.ts +0 -2
  150. package/dist/serverGroup/details/serverGroupDetails.ecs.controller.d.ts +0 -2
  151. package/dist/serverGroup/details/serverGroupDetails.module.d.ts +0 -1
  152. package/dist/serverGroup/events/events.component.d.ts +0 -3
  153. package/dist/serverGroup/events/events.controller.d.ts +0 -19
  154. package/dist/serverGroup/serverGroup.module.d.ts +0 -1
  155. package/src/common/common.module.ts +0 -6
  156. package/src/common/footer.component.ts +0 -29
  157. package/src/instance/details/instance.details.controller.js +0 -356
  158. package/src/instance/details/instanceDetails.html +0 -204
  159. package/src/pipeline/stages/cloneServerGroup/cloneServerGroupStage.html +0 -101
  160. package/src/pipeline/stages/cloneServerGroup/cloneServerGroupStepLabel.html +0 -1
  161. package/src/pipeline/stages/destroyAsg/destroyAsgStage.html +0 -9
  162. package/src/pipeline/stages/destroyAsg/destroyAsgStepLabel.html +0 -1
  163. package/src/pipeline/stages/disableAsg/disableAsgStage.html +0 -11
  164. package/src/pipeline/stages/disableAsg/disableAsgStepLabel.html +0 -1
  165. package/src/pipeline/stages/disableCluster/disableClusterStage.html +0 -26
  166. package/src/pipeline/stages/enableAsg/enableAsgStage.html +0 -11
  167. package/src/pipeline/stages/enableAsg/enableAsgStepLabel.html +0 -1
  168. package/src/pipeline/stages/findImageFromTags/findImageFromTagsExecutionDetails.html +0 -36
  169. package/src/pipeline/stages/findImageFromTags/findImageFromTagsStage.html +0 -9
  170. package/src/pipeline/stages/resizeAsg/resizeAsgStage.html +0 -87
  171. package/src/pipeline/stages/resizeAsg/resizeAsgStepLabel.html +0 -1
  172. package/src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.html +0 -35
  173. package/src/pipeline/stages/shrinkCluster/shrinkClusterStage.html +0 -34
  174. package/src/securityGroup/details/securityGroupDetail.controller.js +0 -147
  175. package/src/securityGroup/details/securityGroupDetail.html +0 -104
  176. package/src/securityGroup/securityGroup.module.ts +0 -12
  177. package/src/serverGroup/configure/wizard/CloneServerGroup.ecs.controller.js +0 -259
  178. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.component.html +0 -194
  179. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.component.js +0 -17
  180. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.html +0 -10
  181. package/src/serverGroup/configure/wizard/capacityProvider/capacityProvider.html +0 -11
  182. package/src/serverGroup/configure/wizard/container/container.html +0 -9
  183. package/src/serverGroup/configure/wizard/horizontalScaling/horizontalScaling.component.html +0 -118
  184. package/src/serverGroup/configure/wizard/horizontalScaling/horizontalScaling.component.js +0 -20
  185. package/src/serverGroup/configure/wizard/horizontalScaling/horizontalScaling.html +0 -13
  186. package/src/serverGroup/configure/wizard/location/ServerGroupBasicSettings.controller.js +0 -41
  187. package/src/serverGroup/configure/wizard/location/basicSettings.html +0 -137
  188. package/src/serverGroup/configure/wizard/logging/logging.component.html +0 -29
  189. package/src/serverGroup/configure/wizard/logging/logging.component.ts +0 -12
  190. package/src/serverGroup/configure/wizard/logging/logging.html +0 -7
  191. package/src/serverGroup/configure/wizard/networking/networking.html +0 -9
  192. package/src/serverGroup/configure/wizard/serverGroupWizard.html +0 -55
  193. package/src/serverGroup/configure/wizard/serviceDiscovery/serviceDiscovery.html +0 -11
  194. package/src/serverGroup/configure/wizard/taskDefinition/taskDefinition.html +0 -51
  195. package/src/serverGroup/configure/wizard/templateSelection/templateSelection.html +0 -9
  196. package/src/serverGroup/configure/wizard/verticalScaling/verticalScaling.html +0 -10
  197. package/src/serverGroup/details/resize/resizeCapacity.component.html +0 -94
  198. package/src/serverGroup/details/resize/resizeCapacity.component.ts +0 -14
  199. package/src/serverGroup/details/resize/resizeServerGroup.controller.js +0 -85
  200. package/src/serverGroup/details/resize/resizeServerGroup.html +0 -28
  201. package/src/serverGroup/details/rollback/rollbackServerGroup.controller.js +0 -97
  202. package/src/serverGroup/details/rollback/rollbackServerGroup.html +0 -67
  203. package/src/serverGroup/details/serverGroupDetails.ecs.controller.js +0 -366
  204. package/src/serverGroup/details/serverGroupDetails.html +0 -216
  205. package/src/serverGroup/details/serverGroupDetails.module.ts +0 -5
  206. package/src/serverGroup/events/events.component.ts +0 -35
  207. package/src/serverGroup/events/events.controller.ts +0 -45
  208. package/src/serverGroup/events/events.html +0 -36
  209. package/src/serverGroup/serverGroup.module.ts +0 -6
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { IEcsWizardPageProps } from './common';
3
+ export declare const LoggingSettings: ({ command, onFieldChange }: IEcsWizardPageProps) => JSX.Element;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { IEcsWizardPageProps } from './common';
3
+ export declare const NetworkingSettings: ({ command, configureCommand, onFieldChange }: IEcsWizardPageProps) => JSX.Element;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { IEcsWizardPageProps } from './common';
3
+ export declare const ServiceDiscoverySettings: ({ command, configureCommand, onFieldChange }: IEcsWizardPageProps) => JSX.Element;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { IEcsWizardPageProps } from './common';
3
+ export declare const TaskDefinitionSettings: ({ command, configureCommand, onFieldChange }: IEcsWizardPageProps) => JSX.Element;
@@ -0,0 +1,8 @@
1
+ import type { Application } from '@spinnaker/core';
2
+ import type { IEcsServerGroupCommand } from '../../serverGroupConfiguration.service';
3
+ export interface IEcsWizardPageProps {
4
+ application: Application;
5
+ command: IEcsServerGroupCommand;
6
+ configureCommand: (query?: string) => Promise<void>;
7
+ onFieldChange: (field: string, value: any) => void;
8
+ }
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import type { IWizardPageComponent } from '@spinnaker/core';
3
+ import type { IEcsServerGroupCommand } from '../../serverGroupConfiguration.service';
4
+ type ValidationErrors = {
5
+ [key: string]: any;
6
+ };
7
+ type Validator = (values: IEcsServerGroupCommand) => ValidationErrors;
8
+ export declare const validateEcsBasicSettings: Validator;
9
+ export declare const validateEcsTaskDefinition: Validator;
10
+ export declare const validateEcsContainer: Validator;
11
+ export declare const validateEcsServiceDiscovery: Validator;
12
+ export declare const validateEcsCapacity: Validator;
13
+ export declare const validateEcsServerGroup: Validator;
14
+ interface IEcsWizardPageValidationProps {
15
+ children: React.ReactElement;
16
+ validator: Validator;
17
+ }
18
+ export declare class EcsWizardPageValidation extends React.Component<IEcsWizardPageValidationProps> implements IWizardPageComponent<IEcsServerGroupCommand> {
19
+ validate: (values: IEcsServerGroupCommand) => ValidationErrors;
20
+ render(): React.ReactElement<any, string | React.JSXElementConstructor<any>> | (React.ReactElement<any, string | React.JSXElementConstructor<any>> & string) | (React.ReactElement<any, string | React.JSXElementConstructor<any>> & number) | (React.ReactElement<any, string | React.JSXElementConstructor<any>> & false) | (React.ReactElement<any, string | React.JSXElementConstructor<any>> & true) | (React.ReactElement<any, string | React.JSXElementConstructor<any>> & React.ReactElement<any, string | React.JSXElementConstructor<any>>) | (React.ReactElement<any, string | React.JSXElementConstructor<any>> & React.ReactPortal);
21
+ }
22
+ export {};
@@ -2,8 +2,8 @@ import React from 'react';
2
2
  import type { IEcsServerGroupCommand, IEcsServiceDiscoveryRegistryAssociation } from '../../serverGroupConfiguration.service';
3
3
  export interface IServiceDiscoveryProps {
4
4
  command: IEcsServerGroupCommand;
5
- notifyAngular: (key: string, value: any) => void;
6
- configureCommand: (query: string) => PromiseLike<void>;
5
+ onFieldChange: (key: string, value: any) => void;
6
+ configureCommand: (query: string) => Promise<void>;
7
7
  }
8
8
  export interface IEcsServiceDiscoveryRegistry {
9
9
  account: string;
@@ -21,7 +21,10 @@ interface IServiceDiscoveryState {
21
21
  export declare class ServiceDiscovery extends React.Component<IServiceDiscoveryProps, IServiceDiscoveryState> {
22
22
  constructor(props: IServiceDiscoveryProps);
23
23
  componentDidMount(): void;
24
+ componentDidUpdate(): void;
25
+ private normalizeContainerNames;
24
26
  private getNameToRegistryMap;
27
+ private mergeRegistries;
25
28
  private getEmptyRegistry;
26
29
  private updateServiceDiscoveryRegistry;
27
30
  private updateServiceDiscoveryPort;
@@ -30,5 +33,4 @@ export declare class ServiceDiscovery extends React.Component<IServiceDiscoveryP
30
33
  private removeServiceDiscoveryAssociations;
31
34
  render(): React.ReactElement<ServiceDiscovery>;
32
35
  }
33
- export declare const SERVICE_DISCOVERY_REACT = "spinnaker.ecs.serverGroup.configure.wizard.serviceDiscovery.react";
34
36
  export {};
@@ -3,8 +3,8 @@ import type { IAccountDetails } from '@spinnaker/core';
3
3
  import type { IEcsContainerMapping, IEcsDockerImage, IEcsServerGroupCommand, IEcsTargetGroupMapping, IEcsTaskDefinitionArtifact } from '../../serverGroupConfiguration.service';
4
4
  export interface ITaskDefinitionProps {
5
5
  command: IEcsServerGroupCommand;
6
- notifyAngular: (key: string, value: any) => void;
7
- configureCommand: (query: string) => PromiseLike<void>;
6
+ onFieldChange: (key: string, value: any) => void;
7
+ configureCommand: (query: string) => Promise<void>;
8
8
  }
9
9
  interface ITaskDefinitionState {
10
10
  taskDefArtifact: IEcsTaskDefinitionArtifact;
@@ -22,6 +22,7 @@ export declare class TaskDefinition extends React.Component<ITaskDefinitionProps
22
22
  constructor(props: ITaskDefinitionProps);
23
23
  componentDidMount(): void;
24
24
  private updateDockerRegistryAccount;
25
+ componentDidUpdate(): void;
25
26
  private getIdToImageMap;
26
27
  private getEmptyImageDescription;
27
28
  private excludedArtifactTypePatterns;
@@ -39,5 +40,4 @@ export declare class TaskDefinition extends React.Component<ITaskDefinitionProps
39
40
  private updateEvaluateTaskDefArtifactFlag;
40
41
  render(): React.ReactElement<TaskDefinition>;
41
42
  }
42
- export declare const TASK_DEFINITION_REACT = "spinnaker.ecs.serverGroup.configure.wizard.taskDefinition.react";
43
43
  export {};
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import type { IRouterInjectedProps, IServerGroupActionsProps } from '@spinnaker/core';
3
+ export declare function EcsServerGroupActionsComponent({ app, serverGroup, stateService, }: IServerGroupActionsProps & IRouterInjectedProps): JSX.Element;
4
+ export declare const EcsServerGroupActions: React.ForwardRefExoticComponent<Omit<IServerGroupActionsProps & IRouterInjectedProps, keyof IRouterInjectedProps> & {
5
+ children?: React.ReactNode;
6
+ } & React.RefAttributes<any>>;
@@ -0,0 +1,3 @@
1
+ import { Observable } from 'rxjs';
2
+ import type { IServerGroup, IServerGroupDetailsProps } from '@spinnaker/core';
3
+ export declare function ecsServerGroupDetailsGetter(props: IServerGroupDetailsProps, autoClose: () => void): Observable<IServerGroup>;
@@ -0,0 +1,43 @@
1
+ import React from 'react';
2
+ import type { Application, DeckRuntimeServices, IModalComponentProps, IServerGroup, IServerGroupJob } from '@spinnaker/core';
3
+ import { DeckRuntimeContext, TaskMonitor } from '@spinnaker/core';
4
+ export interface IEcsResizeServerGroupModalProps extends IModalComponentProps {
5
+ application: Application;
6
+ serverGroup: IServerGroup;
7
+ }
8
+ export interface IEcsResizeCapacity {
9
+ desired: number;
10
+ max: number;
11
+ min: number;
12
+ }
13
+ export interface IEcsResizeServerGroupValues {
14
+ capacity: IEcsResizeCapacity;
15
+ interestingHealthProviderNames?: string[];
16
+ reason?: string;
17
+ }
18
+ export interface IEcsResizeServerGroupJob extends IServerGroupJob {
19
+ capacity: IEcsResizeCapacity;
20
+ interestingHealthProviderNames?: string[];
21
+ reason?: string;
22
+ }
23
+ export interface IEcsResizeServerGroupErrors {
24
+ capacity?: Partial<Record<keyof IEcsResizeCapacity, string>>;
25
+ }
26
+ interface IEcsResizeServerGroupModalState {
27
+ initialValues: IEcsResizeServerGroupValues;
28
+ taskMonitor: TaskMonitor;
29
+ verified: boolean;
30
+ }
31
+ export declare function validateEcsResizeValues(values: IEcsResizeServerGroupValues): IEcsResizeServerGroupErrors;
32
+ export declare class EcsResizeServerGroupModal extends React.Component<IEcsResizeServerGroupModalProps, IEcsResizeServerGroupModalState> {
33
+ static contextType: React.Context<import("@spinnaker/core").DeckRuntimeContextValue>;
34
+ context: React.ContextType<typeof DeckRuntimeContext>;
35
+ static defaultProps: Partial<IEcsResizeServerGroupModalProps>;
36
+ static show(props: IEcsResizeServerGroupModalProps, runtimeServices: DeckRuntimeServices): Promise<IEcsResizeServerGroupJob>;
37
+ constructor(props: IEcsResizeServerGroupModalProps);
38
+ private close;
39
+ private submit;
40
+ private capacityError;
41
+ render(): JSX.Element;
42
+ }
43
+ export {};
@@ -0,0 +1 @@
1
+ export * from './EcsResizeServerGroupModal';
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import type { Application, DeckRuntimeServices, IModalComponentProps, IServerGroup, IServerGroupJob } from '@spinnaker/core';
3
+ import { DeckRuntimeContext, TaskMonitor } from '@spinnaker/core';
4
+ export interface IEcsRollbackServerGroupModalProps extends IModalComponentProps {
5
+ application: Application;
6
+ serverGroup: IServerGroup;
7
+ }
8
+ export interface IEcsRollbackServerGroupValues {
9
+ interestingHealthProviderNames?: string[];
10
+ reason?: string;
11
+ restoreServerGroupName?: string;
12
+ targetHealthyRollbackPercentage: number;
13
+ }
14
+ export interface IEcsRollbackServerGroupJob extends IServerGroupJob {
15
+ interestingHealthProviderNames?: string[];
16
+ platformHealthOnlyShowOverride?: boolean;
17
+ reason?: string;
18
+ rollbackContext: {
19
+ restoreServerGroupName: string;
20
+ rollbackServerGroupName: string;
21
+ targetHealthyRollbackPercentage: number;
22
+ };
23
+ rollbackType: 'EXPLICIT';
24
+ }
25
+ export interface IEcsRollbackServerGroupErrors {
26
+ restoreServerGroupName?: string;
27
+ targetHealthyRollbackPercentage?: string;
28
+ }
29
+ interface IEcsRollbackServerGroupModalState {
30
+ initialValues: IEcsRollbackServerGroupValues;
31
+ taskMonitor: TaskMonitor;
32
+ verified: boolean;
33
+ }
34
+ export declare function getEcsRollbackTargets(application: Application, serverGroup: IServerGroup): IServerGroup[];
35
+ export declare function validateEcsRollbackValues(values: IEcsRollbackServerGroupValues, eligibleTargetNames?: string[]): IEcsRollbackServerGroupErrors;
36
+ export declare class EcsRollbackServerGroupModal extends React.Component<IEcsRollbackServerGroupModalProps, IEcsRollbackServerGroupModalState> {
37
+ static contextType: React.Context<import("@spinnaker/core").DeckRuntimeContextValue>;
38
+ context: React.ContextType<typeof DeckRuntimeContext>;
39
+ static defaultProps: Partial<IEcsRollbackServerGroupModalProps>;
40
+ static show(props: IEcsRollbackServerGroupModalProps, runtimeServices: DeckRuntimeServices): Promise<IEcsRollbackServerGroupJob>;
41
+ constructor(props: IEcsRollbackServerGroupModalProps);
42
+ private close;
43
+ private submit;
44
+ render(): JSX.Element;
45
+ }
46
+ export {};
@@ -0,0 +1 @@
1
+ export * from './EcsRollbackServerGroupModal';
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import type { IServerGroupDetailsSectionProps } from '@spinnaker/core';
3
+ export declare function EcsTaskDefinitionSection({ serverGroup }: IServerGroupDetailsSectionProps): JSX.Element;
4
+ export declare function EcsEnvironmentVariablesSection({ serverGroup }: IServerGroupDetailsSectionProps): JSX.Element;
5
+ export declare function EcsHealthSection({ serverGroup }: IServerGroupDetailsSectionProps): JSX.Element;
6
+ export declare function EcsFirewallsSection({ serverGroup }: IServerGroupDetailsSectionProps): JSX.Element;
7
+ export declare function EcsCapacitySection({ serverGroup }: IServerGroupDetailsSectionProps): JSX.Element;
8
+ export declare function EcsScalingPoliciesSection({ serverGroup }: IServerGroupDetailsSectionProps): JSX.Element;
9
+ export declare function EcsBuildInfoSection({ serverGroup }: IServerGroupDetailsSectionProps): JSX.Element;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { IServerGroupDetailsSectionProps } from '@spinnaker/core';
3
+ export declare function EcsServerGroupEventsSection({ serverGroup }: IServerGroupDetailsSectionProps): JSX.Element;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { IServerGroupDetailsSectionProps } from '@spinnaker/core';
3
+ export declare function EcsServerGroupInformationSection({ serverGroup }: IServerGroupDetailsSectionProps): JSX.Element;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import type { IModalComponentProps, IServerGroup } from '@spinnaker/core';
3
+ import type { IEventDescription } from './serverGroupEventsReader.service';
4
+ export interface IEcsServerGroupEventsModalProps extends IModalComponentProps {
5
+ serverGroup: IServerGroup;
6
+ }
7
+ interface IEcsServerGroupEventsModalState {
8
+ loading: boolean;
9
+ error: boolean;
10
+ events: IEventDescription[];
11
+ }
12
+ export declare class EcsServerGroupEventsModal extends React.Component<IEcsServerGroupEventsModalProps, IEcsServerGroupEventsModalState> {
13
+ state: IEcsServerGroupEventsModalState;
14
+ private mounted;
15
+ private requestId;
16
+ componentDidMount(): void;
17
+ componentDidUpdate(previousProps: IEcsServerGroupEventsModalProps): void;
18
+ componentWillUnmount(): void;
19
+ private loadEvents;
20
+ render(): JSX.Element;
21
+ }
22
+ export {};
@@ -1,4 +1,6 @@
1
+ /// <reference types="react" />
1
2
  import type { IServerGroup } from '@spinnaker/core';
2
3
  export interface IViewScalingActivitiesLinkProps {
3
4
  serverGroup: IServerGroup;
4
5
  }
6
+ export declare function EventsLink({ serverGroup }: IViewScalingActivitiesLinkProps): JSX.Element;
@@ -6,5 +6,5 @@ export interface IEventDescription {
6
6
  status: string;
7
7
  }
8
8
  export declare class ServerGroupEventsReader {
9
- static getEvents(serverGroup: IServerGroup): PromiseLike<IEventDescription[]>;
9
+ static getEvents(serverGroup: IServerGroup): Promise<IEventDescription[]>;
10
10
  }
@@ -4,8 +4,7 @@ export declare class EcsServerGroupTransformer {
4
4
  private addAdjustmentAttributes;
5
5
  private transformScalingPolicy;
6
6
  normalizeServerGroupDetails(serverGroup: IAmazonServerGroup): IAmazonServerGroupView;
7
- normalizeServerGroup(serverGroup: IAmazonServerGroup): PromiseLike<IAmazonServerGroup>;
7
+ normalizeServerGroup(serverGroup: IAmazonServerGroup): Promise<IAmazonServerGroup>;
8
8
  private addVpcNameToServerGroup;
9
9
  convertServerGroupCommandToDeployConfiguration(base: any): any;
10
10
  }
11
- export declare const ECS_SERVER_GROUP_TRANSFORMER = "spinnaker.ecs.serverGroup.transformer";
@@ -1,4 +1,4 @@
1
1
  import type { IServiceDiscoveryRegistryDescriptor } from './IServiceDiscovery';
2
2
  export declare class ServiceDiscoveryReader {
3
- static listServiceDiscoveryRegistries(): PromiseLike<IServiceDiscoveryRegistryDescriptor[]>;
3
+ static listServiceDiscoveryRegistries(): Promise<IServiceDiscoveryRegistryDescriptor[]>;
4
4
  }
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "url": "https://github.com/spinnaker/spinnaker.git"
6
6
  },
7
7
  "license": "Apache-2.0",
8
- "version": "2026.2.4",
8
+ "version": "2026.3.1",
9
9
  "module": "dist/index.js",
10
10
  "typings": "dist/index.d.ts",
11
11
  "publishConfig": {
@@ -24,22 +24,16 @@
24
24
  "@spinnaker/amazon": "^0.14.5",
25
25
  "@spinnaker/core": "^0.29.1",
26
26
  "@spinnaker/docker": "^0.0.147",
27
- "@uirouter/angularjs": "1.0.26",
28
27
  "@uirouter/react": "1.0.7",
29
- "angular": "1.8.3",
30
- "angular-ui-bootstrap": "2.5.0",
31
28
  "lodash": "4.18.1",
32
- "ngimport": "0.6.1",
33
29
  "react": "16.14.0",
34
30
  "react-bootstrap": "0.32.1",
35
31
  "react-select": "1.2.1",
36
- "react2angular": "3.2.1"
32
+ "rxjs": "6.6.7"
37
33
  },
38
34
  "devDependencies": {
39
35
  "@spinnaker/eslint-plugin": "^3.0.2",
40
36
  "@spinnaker/scripts": "^0.4.0",
41
- "@types/angular": "1.6.26",
42
- "@types/angular-ui-bootstrap": "0.13.41",
43
37
  "@types/lodash": "4.14.64",
44
38
  "@types/react": "16.14.10",
45
39
  "@types/react-bootstrap": "0.32.5",
@@ -47,5 +41,5 @@
47
41
  "shx": "0.3.3",
48
42
  "typescript": "5.0.4"
49
43
  },
50
- "gitHead": "f71c76e3c4b7791db81f01212e2487f1b637484c"
44
+ "gitHead": "edb1aa9de446184eadee134ea51110609278929f"
51
45
  }
@@ -0,0 +1,86 @@
1
+ import { CloudProviderRegistry, Registry } from '@spinnaker/core';
2
+
3
+ import { registerEcsPipelineStages } from './ecs.module';
4
+ import { EcsSecurityGroupReader } from './securityGroup/securityGroup.reader';
5
+ import { EcsSecurityGroupTransformer } from './securityGroup/securityGroup.transformer';
6
+ import { EcsServerGroupCommandBuilder } from './serverGroup/configure/serverGroupCommandBuilder.service';
7
+ import { EcsServerGroupActions } from './serverGroup/details/EcsServerGroupActions';
8
+ import { EcsServerGroupTransformer } from './serverGroup/serverGroup.transformer';
9
+
10
+ describe('ECS package registration', () => {
11
+ it('registers ECS through React components', () => {
12
+ expect(CloudProviderRegistry.getValue('ecs', 'serverGroup.transformer')).toBe(EcsServerGroupTransformer);
13
+ expect(CloudProviderRegistry.getValue('ecs', 'serverGroup.commandBuilder')).toBe(EcsServerGroupCommandBuilder);
14
+ expect(CloudProviderRegistry.getValue('ecs', 'serverGroup.detailsActions').displayName).toBe(
15
+ EcsServerGroupActions.displayName,
16
+ );
17
+ expect(CloudProviderRegistry.getValue('ecs', 'adHocInfrastructureWritesEnabled')).toBeTrue();
18
+ const detailsSections = CloudProviderRegistry.getValue('ecs', 'serverGroup.detailsSections');
19
+ expect(detailsSections.length).toBe(9);
20
+ expect(detailsSections.every((section: unknown) => typeof section === 'function')).toBeTrue();
21
+ expect(CloudProviderRegistry.getValue('ecs', 'securityGroup.reader')).toBe(EcsSecurityGroupReader);
22
+ expect(CloudProviderRegistry.getValue('ecs', 'securityGroup.transformer')).toBe(EcsSecurityGroupTransformer);
23
+ expect(
24
+ new (CloudProviderRegistry.getValue('ecs', 'serverGroup.commandBuilder') as any)().buildNewServerGroupCommand,
25
+ ).toEqual(jasmine.any(Function));
26
+ expect(
27
+ new (CloudProviderRegistry.getValue('ecs', 'securityGroup.transformer') as any)().normalizeSecurityGroup,
28
+ ).toEqual(jasmine.any(Function));
29
+ const controllerKey = 'Cont' + 'roller';
30
+ const templateUrlKey = 'Template' + 'Url';
31
+ expect(CloudProviderRegistry.getValue('ecs', `serverGroup.details${controllerKey}`)).toBeNull();
32
+ expect(CloudProviderRegistry.getValue('ecs', `serverGroup.details${templateUrlKey}`)).toBeNull();
33
+ expect(CloudProviderRegistry.getValue('ecs', `instance.details${controllerKey}`)).toBeNull();
34
+ expect(CloudProviderRegistry.getValue('ecs', `securityGroup.details${controllerKey}`)).toBeNull();
35
+ });
36
+
37
+ it('registers ECS pipeline stages directly', () => {
38
+ Registry.reinitialize();
39
+ registerEcsPipelineStages();
40
+ const stages = Registry.pipeline.getStageTypes();
41
+ expect(stages.find((stage) => stage.cloudProvider === 'ecs' && stage.provides === 'destroyServerGroup')).toEqual(
42
+ jasmine.objectContaining({ cloudProvider: 'ecs', provides: 'destroyServerGroup' }),
43
+ );
44
+ expect(stages.find((stage) => stage.cloudProvider === 'ecs' && stage.provides === 'resizeServerGroup')).toEqual(
45
+ jasmine.objectContaining({ cloudProvider: 'ecs', provides: 'resizeServerGroup' }),
46
+ );
47
+ });
48
+
49
+ it('ECS stage configs expose React components without legacy templates', () => {
50
+ Registry.reinitialize();
51
+ registerEcsPipelineStages();
52
+ const ecsStages = Registry.pipeline
53
+ .getStageTypes()
54
+ .filter((stage) => stage.cloudProvider === 'ecs' && stage.provides);
55
+
56
+ expect(ecsStages.map((stage) => stage.provides).sort()).toEqual([
57
+ 'cloneServerGroup',
58
+ 'destroyServerGroup',
59
+ 'disableCluster',
60
+ 'disableServerGroup',
61
+ 'enableServerGroup',
62
+ 'findImageFromTags',
63
+ 'resizeServerGroup',
64
+ 'scaleDownCluster',
65
+ 'shrinkCluster',
66
+ ]);
67
+ ecsStages.forEach((stage) => {
68
+ expect(stage.component).toEqual(jasmine.any(Function));
69
+ expect(stage.templateUrl).toBeUndefined();
70
+ });
71
+ });
72
+
73
+ it('does not bundle ECS HTML templates', () => {
74
+ const ecsTemplates = require.context('./', true, /\.html$/).keys();
75
+
76
+ expect(ecsTemplates).toEqual([]);
77
+ });
78
+
79
+ it('normalizes ECS security groups as resolved values', async () => {
80
+ const securityGroup = { name: 'sg-web' };
81
+
82
+ const normalized = await new EcsSecurityGroupTransformer().normalizeSecurityGroup(securityGroup);
83
+
84
+ expect(normalized).toBe(securityGroup);
85
+ });
86
+ });
package/src/ecs.module.ts CHANGED
@@ -1,96 +1,68 @@
1
- 'use strict';
2
-
3
- import { module } from 'angular';
4
-
1
+ import { AWSProviderSettings } from '@spinnaker/amazon';
5
2
  import { CloudProviderRegistry, DeploymentStrategyRegistry } from '@spinnaker/core';
6
3
 
7
- import { COMMON_MODULE } from './common/common.module';
8
4
  import './ecs.help';
9
5
  import './ecs.settings';
10
- import { ECS_CLUSTER_READ_SERVICE } from './ecsCluster/ecsCluster.read.service';
11
- import { IAM_ROLE_READ_SERVICE } from './iamRoles/iamRole.read.service';
12
- import { ECS_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER } from './instance/details/instance.details.controller';
6
+ import { EcsInstanceDetails } from './instance/details/EcsInstanceDetails';
13
7
  import { EcsLoadBalancerClusterContainer } from './loadBalancer/EcsLoadBalancerClusterContainer';
14
8
  import { EcsLoadBalancerDetails } from './loadBalancer/details/loadBalancerDetails';
15
9
  import { EcsTargetGroupDetails } from './loadBalancer/details/targetGroupDetails';
16
10
  import { EcsLoadBalancerTransformer } from './loadBalancer/loadBalancer.transformer';
17
- import { ECS_TARGET_GROUP_STATES } from './loadBalancer/targetGroup.states';
11
+ import './loadBalancer/targetGroup.states';
18
12
  import ecsLogo from './logo/ecs.logo.svg';
19
- import { METRIC_ALARM_READ_SERVICE } from './metricAlarm/metricAlarm.read.service';
20
- import { ECS_PIPELINE_STAGES_DESTROYASG_ECSDESTROYASGSTAGE } from './pipeline/stages/destroyAsg/ecsDestroyAsgStage';
21
- import { ECS_PIPELINE_STAGES_DISABLEASG_ECSDISABLEASGSTAGE } from './pipeline/stages/disableAsg/ecsDisableAsgStage';
22
- import { ECS_PIPELINE_STAGES_DISABLECLUSTER_ECSDISABLECLUSTERSTAGE } from './pipeline/stages/disableCluster/ecsDisableClusterStage';
23
- import { ECS_PIPELINE_STAGES_ENABLEASG_ECSENABLEASGSTAGE } from './pipeline/stages/enableAsg/ecsEnableAsgStage';
24
- import { ECS_PIPELINE_STAGES_FINDIMAGEFROMTAGS_ECSFINDIMAGEFROMTAGSTAGE } from './pipeline/stages/findImageFromTags/ecsFindImageFromTagStage';
25
- import { ECS_PIPELINE_STAGES_RESIZEASG_ECSRESIZEASGSTAGE } from './pipeline/stages/resizeAsg/ecsResizeAsgStage';
26
- import { ECS_PIPELINE_STAGES_SCALEDOWNCLUSTER_ECSSCALEDOWNCLUSTERSTAGE } from './pipeline/stages/scaleDownCluster/ecsScaleDownClusterStage';
27
- import { ECS_PIPELINE_STAGES_SHRINKCLUSTER_ECSSHRINKCLUSTERSTAGE } from './pipeline/stages/shrinkCluster/ecsShrinkClusterStage';
28
- import { PLACEMENT_STRATEGY_SERVICE } from './placementStrategy/placementStrategy.service';
29
- import { ECS_SECRET_READ_SERVICE } from './secrets/secret.read.service';
30
- import { ECS_SECURITY_GROUP_MODULE } from './securityGroup/securityGroup.module';
31
- import { ECS_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE } from './serverGroup/configure/serverGroupCommandBuilder.service';
32
- import { ECS_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_ECS_CONTROLLER } from './serverGroup/configure/wizard/CloneServerGroup.ecs.controller';
33
- import { ECS_SERVERGROUP_CONFIGURE_WIZARD_ADVANCEDSETTINGS_ADVANCEDSETTINGS_COMPONENT } from './serverGroup/configure/wizard/advancedSettings/advancedSettings.component';
34
- import { ECS_CAPACITY_PROVIDER_REACT } from './serverGroup/configure/wizard/capacityProvider/CapacityProvider';
35
- import { CONTAINER_REACT } from './serverGroup/configure/wizard/container/Container';
36
- import { ECS_SERVERGROUP_CONFIGURE_WIZARD_HORIZONTALSCALING_HORIZONTALSCALING_COMPONENT } from './serverGroup/configure/wizard/horizontalScaling/horizontalScaling.component';
37
- import { ECS_SERVERGROUP_CONFIGURE_WIZARD_LOCATION_SERVERGROUPBASICSETTINGS_CONTROLLER } from './serverGroup/configure/wizard/location/ServerGroupBasicSettings.controller';
38
- import { ECS_SERVER_GROUP_LOGGING } from './serverGroup/configure/wizard/logging/logging.component';
39
- import { ECS_NETWORKING_REACT } from './serverGroup/configure/wizard/networking/Networking';
40
- import { SERVICE_DISCOVERY_REACT } from './serverGroup/configure/wizard/serviceDiscovery/ServiceDiscovery';
41
- import { TASK_DEFINITION_REACT } from './serverGroup/configure/wizard/taskDefinition/TaskDefinition';
42
- import { SERVER_GROUP_DETAILS_MODULE } from './serverGroup/details/serverGroupDetails.module';
43
- import { ECS_SERVERGROUP_MODULE } from './serverGroup/serverGroup.module';
44
- import { ECS_SERVER_GROUP_TRANSFORMER } from './serverGroup/serverGroup.transformer';
13
+ import { registerEcsCloneServerGroupStage } from './pipeline/stages/cloneServerGroup/ecsCloneServerGroupStage';
14
+ import { registerEcsDestroyServerGroupStage } from './pipeline/stages/destroyAsg/ecsDestroyAsgStage';
15
+ import { registerEcsDisableServerGroupStage } from './pipeline/stages/disableAsg/ecsDisableAsgStage';
16
+ import { registerEcsDisableClusterStage } from './pipeline/stages/disableCluster/ecsDisableClusterStage';
17
+ import { registerEcsEnableServerGroupStage } from './pipeline/stages/enableAsg/ecsEnableAsgStage';
18
+ import { registerEcsFindImageFromTagsStage } from './pipeline/stages/findImageFromTags/ecsFindImageFromTagStage';
19
+ import { registerEcsResizeServerGroupStage } from './pipeline/stages/resizeAsg/ecsResizeAsgStage';
20
+ import { registerEcsScaleDownClusterStage } from './pipeline/stages/scaleDownCluster/ecsScaleDownClusterStage';
21
+ import { registerEcsShrinkClusterStage } from './pipeline/stages/shrinkCluster/ecsShrinkClusterStage';
22
+ import { EcsSecurityGroupDetails } from './securityGroup/details/EcsSecurityGroupDetails';
23
+ import { EcsSecurityGroupReader } from './securityGroup/securityGroup.reader';
24
+ import { EcsSecurityGroupTransformer } from './securityGroup/securityGroup.transformer';
25
+ import { EcsServerGroupCommandBuilder } from './serverGroup/configure/serverGroupCommandBuilder.service';
26
+ import { EcsCloneServerGroupModal } from './serverGroup/configure/wizard/EcsCloneServerGroupModal';
27
+ import { EcsServerGroupActions } from './serverGroup/details/EcsServerGroupActions';
28
+ import { ecsServerGroupDetailsGetter } from './serverGroup/details/ecsServerGroupDetailsGetter';
29
+ import {
30
+ EcsBuildInfoSection,
31
+ EcsCapacitySection,
32
+ EcsEnvironmentVariablesSection,
33
+ EcsFirewallsSection,
34
+ EcsHealthSection,
35
+ EcsScalingPoliciesSection,
36
+ EcsTaskDefinitionSection,
37
+ } from './serverGroup/details/sections/EcsServerGroupDetailsSections';
38
+ import { EcsServerGroupEventsSection } from './serverGroup/details/sections/EcsServerGroupEventsSection';
39
+ import { EcsServerGroupInformationSection } from './serverGroup/details/sections/EcsServerGroupInformationSection';
40
+ import { EcsServerGroupTransformer } from './serverGroup/serverGroup.transformer';
45
41
 
46
42
  import './logo/ecs.logo.less';
47
43
 
48
- export const ECS_MODULE = 'spinnaker.ecs';
49
- module(ECS_MODULE, [
50
- ECS_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_ECS_CONTROLLER,
51
- SERVER_GROUP_DETAILS_MODULE,
52
- IAM_ROLE_READ_SERVICE,
53
- ECS_SERVER_GROUP_TRANSFORMER,
54
- // require('./pipeline/stages/cloneServerGroup/ecsCloneServerGroupStage').name, // TODO(Bruno Carrier): We should enable this on Clouddriver before revealing this stage
55
- ECS_SERVERGROUP_CONFIGURE_WIZARD_ADVANCEDSETTINGS_ADVANCEDSETTINGS_COMPONENT,
56
- ECS_SERVERGROUP_CONFIGURE_WIZARD_HORIZONTALSCALING_HORIZONTALSCALING_COMPONENT,
57
- TASK_DEFINITION_REACT,
58
- CONTAINER_REACT,
59
- ECS_NETWORKING_REACT,
60
- SERVICE_DISCOVERY_REACT,
61
- ECS_CAPACITY_PROVIDER_REACT,
62
- ECS_SERVER_GROUP_LOGGING,
63
- ECS_CLUSTER_READ_SERVICE,
64
- ECS_SECRET_READ_SERVICE,
65
- METRIC_ALARM_READ_SERVICE,
66
- PLACEMENT_STRATEGY_SERVICE,
67
- COMMON_MODULE,
68
- ECS_SERVERGROUP_CONFIGURE_WIZARD_LOCATION_SERVERGROUPBASICSETTINGS_CONTROLLER,
69
- ECS_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE,
70
- ECS_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER,
71
- ECS_PIPELINE_STAGES_FINDIMAGEFROMTAGS_ECSFINDIMAGEFROMTAGSTAGE,
72
- ECS_PIPELINE_STAGES_DESTROYASG_ECSDESTROYASGSTAGE,
73
- ECS_PIPELINE_STAGES_DISABLEASG_ECSDISABLEASGSTAGE,
74
- ECS_PIPELINE_STAGES_DISABLECLUSTER_ECSDISABLECLUSTERSTAGE,
75
- ECS_PIPELINE_STAGES_ENABLEASG_ECSENABLEASGSTAGE,
76
- ECS_PIPELINE_STAGES_RESIZEASG_ECSRESIZEASGSTAGE,
77
- ECS_PIPELINE_STAGES_SCALEDOWNCLUSTER_ECSSCALEDOWNCLUSTERSTAGE,
78
- ECS_PIPELINE_STAGES_SHRINKCLUSTER_ECSSHRINKCLUSTERSTAGE,
79
- ECS_SECURITY_GROUP_MODULE,
80
- ECS_SERVERGROUP_MODULE,
81
- ECS_TARGET_GROUP_STATES,
82
- ]).config(function () {
44
+ export function registerEcsProvider(): void {
83
45
  CloudProviderRegistry.registerProvider('ecs', {
84
46
  name: 'EC2 Container Service',
47
+ adHocInfrastructureWritesEnabled: AWSProviderSettings.adHocInfraWritesEnabled,
85
48
  logo: { path: ecsLogo },
86
49
  serverGroup: {
87
- transformer: 'ecsServerGroupTransformer',
88
- detailsTemplateUrl: require('./serverGroup/details/serverGroupDetails.html'),
89
- detailsController: 'ecsServerGroupDetailsCtrl',
90
- cloneServerGroupTemplateUrl: require('./serverGroup/configure/wizard/serverGroupWizard.html'),
91
- cloneServerGroupController: 'ecsCloneServerGroupCtrl',
92
- commandBuilder: 'ecsServerGroupCommandBuilder',
93
- // configurationService: 'ecsServerGroupConfigurationService',
50
+ transformer: EcsServerGroupTransformer,
51
+ detailsActions: EcsServerGroupActions,
52
+ detailsGetter: ecsServerGroupDetailsGetter,
53
+ detailsSections: [
54
+ EcsServerGroupInformationSection,
55
+ EcsTaskDefinitionSection,
56
+ EcsEnvironmentVariablesSection,
57
+ EcsHealthSection,
58
+ EcsFirewallsSection,
59
+ EcsCapacitySection,
60
+ EcsScalingPoliciesSection,
61
+ EcsBuildInfoSection,
62
+ EcsServerGroupEventsSection,
63
+ ],
64
+ CloneServerGroupModal: EcsCloneServerGroupModal,
65
+ commandBuilder: EcsServerGroupCommandBuilder,
94
66
  scalingActivitiesEnabled: false,
95
67
  skipUpstreamStageCheck: true,
96
68
  },
@@ -101,16 +73,28 @@ module(ECS_MODULE, [
101
73
  details: EcsLoadBalancerDetails,
102
74
  },
103
75
  instance: {
104
- detailsTemplateUrl: require('./instance/details/instanceDetails.html'),
105
- detailsController: 'ecsInstanceDetailsCtrl',
76
+ details: EcsInstanceDetails,
106
77
  },
107
78
  securityGroup: {
108
- transformer: 'ecsSecurityGroupTransformer',
109
- reader: 'ecsSecurityGroupReader',
110
- detailsTemplateUrl: require('./securityGroup/details/securityGroupDetail.html'),
111
- detailsController: 'ecsSecurityGroupDetailsCtrl',
79
+ transformer: EcsSecurityGroupTransformer,
80
+ reader: EcsSecurityGroupReader,
81
+ details: EcsSecurityGroupDetails,
112
82
  },
113
83
  });
114
- });
84
+ }
85
+
86
+ export function registerEcsPipelineStages(): void {
87
+ registerEcsCloneServerGroupStage();
88
+ registerEcsDestroyServerGroupStage();
89
+ registerEcsDisableServerGroupStage();
90
+ registerEcsDisableClusterStage();
91
+ registerEcsEnableServerGroupStage();
92
+ registerEcsFindImageFromTagsStage();
93
+ registerEcsResizeServerGroupStage();
94
+ registerEcsScaleDownClusterStage();
95
+ registerEcsShrinkClusterStage();
96
+ }
115
97
 
98
+ registerEcsProvider();
99
+ registerEcsPipelineStages();
116
100
  DeploymentStrategyRegistry.registerProvider('ecs', ['redblack']);
@@ -1,23 +1,17 @@
1
- import { module } from 'angular';
2
-
3
1
  import { REST } from '@spinnaker/core';
4
2
 
5
3
  import type { IEcsCapacityProviderDetails } from './IEcsCapacityProviderDetails';
6
4
  import type { IEcsClusterDescriptor } from './IEcsCluster';
7
5
 
8
6
  export class EcsClusterReader {
9
- public listClusters(): PromiseLike<IEcsClusterDescriptor[]> {
7
+ public listClusters(): Promise<IEcsClusterDescriptor[]> {
10
8
  return REST('/ecs/ecsClusters').get();
11
9
  }
12
10
 
13
- public describeClusters(account: string, region: string): PromiseLike<IEcsCapacityProviderDetails[]> {
11
+ public describeClusters(account: string, region: string): Promise<IEcsCapacityProviderDetails[]> {
14
12
  if (account != null && region != null) {
15
13
  return REST('/ecs/ecsClusterDescriptions').path(account).path(region).get();
16
14
  }
17
- return {} as PromiseLike<IEcsCapacityProviderDetails[]>;
15
+ return Promise.resolve([]);
18
16
  }
19
17
  }
20
-
21
- export const ECS_CLUSTER_READ_SERVICE = 'spinnaker.ecs.ecsCluster.read.service';
22
-
23
- module(ECS_CLUSTER_READ_SERVICE, []).service('ecsClusterReader', EcsClusterReader);