@spinnaker/ecs 2026.2.3 → 2026.3.0

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
@@ -1,356 +0,0 @@
1
- 'use strict';
2
-
3
- import UIROUTER_ANGULARJS from '@uirouter/angularjs';
4
- import { module } from 'angular';
5
- import ANGULAR_UI_BOOTSTRAP from 'angular-ui-bootstrap';
6
- import _ from 'lodash';
7
-
8
- import { applyHealthCheckInfoToTargetGroups, getAllTargetGroups } from '@spinnaker/amazon';
9
- import {
10
- CloudProviderRegistry,
11
- ConfirmationModalService,
12
- InstanceReader,
13
- InstanceWriter,
14
- RecentHistoryService,
15
- SETTINGS,
16
- } from '@spinnaker/core';
17
-
18
- export const ECS_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER = 'spinnaker.ecs.instance.details.controller';
19
- export const name = ECS_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER; // for backwards compatibility
20
- module(ECS_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER, [UIROUTER_ANGULARJS, ANGULAR_UI_BOOTSTRAP]).controller(
21
- 'ecsInstanceDetailsCtrl',
22
- [
23
- '$scope',
24
- '$state',
25
- '$uibModal',
26
- 'instance',
27
- 'app',
28
- 'moniker',
29
- 'environment',
30
- '$q',
31
- 'overrides',
32
- function ($scope, $state, $uibModal, instance, app, moniker, environment, $q, overrides) {
33
- // needed for standalone instances
34
- $scope.detailsTemplateUrl = CloudProviderRegistry.getValue('ecs', 'instance.detailsTemplateUrl');
35
-
36
- $scope.state = {
37
- loading: true,
38
- standalone: app.isStandalone,
39
- instancePort: _.get(app, 'attributes.instancePort') || SETTINGS.defaultInstancePort || 80,
40
- };
41
-
42
- $scope.application = app;
43
- $scope.moniker = moniker;
44
- $scope.environment = environment;
45
-
46
- const cloudProvider = 'ecs';
47
- const defaultRequestParams = { cloudProvider: cloudProvider };
48
-
49
- function extractHealthMetrics(instance, latest) {
50
- // do not backfill on standalone instances
51
- if (app.isStandalone) {
52
- instance.health = latest.health;
53
- }
54
-
55
- instance.health = instance.health || [];
56
- const displayableMetrics = instance.health.filter(function (metric) {
57
- return metric.type !== 'Ecs' || metric.state !== 'Unknown';
58
- });
59
-
60
- // augment with target group healthcheck data
61
- const targetGroups = getAllTargetGroups(app.loadBalancers.data);
62
- applyHealthCheckInfoToTargetGroups(displayableMetrics, targetGroups, instance.account);
63
-
64
- // backfill details where applicable
65
- if (latest.health) {
66
- displayableMetrics.forEach(function (metric) {
67
- const detailsMatch = latest.health.filter(function (latestHealth) {
68
- return latestHealth.type === metric.type;
69
- });
70
- if (detailsMatch.length) {
71
- _.defaults(metric, detailsMatch[0]);
72
- }
73
- });
74
- }
75
- $scope.healthMetrics = displayableMetrics;
76
- }
77
-
78
- function retrieveInstance() {
79
- const extraData = {};
80
- let instanceSummary, loadBalancers, targetGroup, account, region, vpcId;
81
- if (!app.serverGroups) {
82
- // standalone instance
83
- instanceSummary = {};
84
- loadBalancers = [];
85
- targetGroup = [];
86
- account = instance.account;
87
- region = instance.region;
88
- } else {
89
- app.serverGroups.data.some(function (serverGroup) {
90
- return serverGroup.instances.some(function (possibleInstance) {
91
- if (possibleInstance.id === instance.instanceId) {
92
- instanceSummary = possibleInstance;
93
- loadBalancers = serverGroup.loadBalancers;
94
- targetGroup = serverGroup.targetGroup;
95
- account = serverGroup.account;
96
- region = serverGroup.region;
97
- vpcId = serverGroup.vpcId;
98
- extraData.serverGroup = serverGroup.name;
99
- extraData.vpcId = serverGroup.vpcId;
100
- return true;
101
- }
102
- });
103
- });
104
- if (!instanceSummary) {
105
- // perhaps it is in a server group that is part of another app
106
- app.loadBalancers.data.some(function (loadBalancer) {
107
- return (
108
- loadBalancer.instances.some(function (possibleInstance) {
109
- if (possibleInstance.id === instance.instanceId) {
110
- instanceSummary = possibleInstance;
111
- loadBalancers = [loadBalancer.name];
112
- account = loadBalancer.account;
113
- region = loadBalancer.region;
114
- vpcId = loadBalancer.vpcId;
115
- return true;
116
- }
117
- }) ||
118
- loadBalancer.targetGroup.some(function (targetGroup) {
119
- return targetGroup.instances.some(function (possibleInstance) {
120
- if (possibleInstance.id === instance.instanceId) {
121
- instanceSummary = possibleInstance;
122
- targetGroup = targetGroup.name;
123
- account = loadBalancer.account;
124
- region = loadBalancer.region;
125
- vpcId = loadBalancer.vpcId;
126
- return true;
127
- }
128
- });
129
- })
130
- );
131
- });
132
- if (!instanceSummary) {
133
- // perhaps it is in a disabled server group via a load balancer
134
- app.loadBalancers.data.some(function (loadBalancer) {
135
- return (
136
- loadBalancer.serverGroups.some(function (serverGroup) {
137
- if (!serverGroup.isDisabled) {
138
- return false;
139
- }
140
- return serverGroup.instances.some(function (possibleInstance) {
141
- if (possibleInstance.id === instance.instanceId) {
142
- instanceSummary = possibleInstance;
143
- loadBalancers = [loadBalancer.name];
144
- account = loadBalancer.account;
145
- region = loadBalancer.region;
146
- vpcId = loadBalancer.vpcId;
147
- return true;
148
- }
149
- });
150
- }) ||
151
- loadBalancer.targetGroup.some(function (targetGroup) {
152
- targetGroup.serverGroups.some(function (serverGroup) {
153
- if (!serverGroup.isDisabled) {
154
- return false;
155
- }
156
- return serverGroup.instances.some(function (possibleInstance) {
157
- if (possibleInstance.id === instance.instanceId) {
158
- instanceSummary = possibleInstance;
159
- loadBalancers = [loadBalancer.name];
160
- account = loadBalancer.account;
161
- region = loadBalancer.region;
162
- vpcId = loadBalancer.vpcId;
163
- return true;
164
- }
165
- });
166
- });
167
- })
168
- );
169
- });
170
- }
171
- }
172
- }
173
-
174
- if (instanceSummary && account && region) {
175
- instanceSummary.account = account;
176
- extraData.account = account;
177
- extraData.region = region;
178
- RecentHistoryService.addExtraDataToLatest('instances', extraData);
179
- return InstanceReader.getInstanceDetails(account, region, instance.instanceId).then((details) => {
180
- if ($scope.$$destroyed) {
181
- return;
182
- }
183
- $scope.state.loading = false;
184
- extractHealthMetrics(instanceSummary, details);
185
- $scope.instance = _.defaults(details, instanceSummary);
186
- $scope.instance.account = account;
187
- $scope.instance.region = region;
188
- $scope.instance.vpcId = vpcId;
189
- $scope.instance.loadBalancers = loadBalancers;
190
- $scope.instance.targetGroup = targetGroup;
191
- if ($scope.instance.networkInterfaces) {
192
- const permanentNetworkInterfaces = $scope.instance.networkInterfaces.filter(
193
- (f) => f.attachment.deleteOnTermination === false,
194
- );
195
- if (permanentNetworkInterfaces.length) {
196
- $scope.instance.permanentIps = permanentNetworkInterfaces.map((f) => f.privateIpAddress);
197
- }
198
- }
199
- $scope.baseIpAddress = details.publicDnsName || details.privateIpAddress;
200
- if (overrides.instanceDetailsLoaded) {
201
- overrides.instanceDetailsLoaded();
202
- }
203
- }, autoClose);
204
- }
205
-
206
- if (!instanceSummary) {
207
- $scope.instanceIdNotFound = instance.instanceId;
208
- $scope.state.loading = false;
209
- }
210
-
211
- return $q.when(null);
212
- }
213
-
214
- function autoClose() {
215
- if ($scope.$$destroyed) {
216
- return;
217
- }
218
- if (app.isStandalone) {
219
- $scope.state.loading = false;
220
- $scope.instanceIdNotFound = instance.instanceId;
221
- $scope.state.notFoundStandalone = true;
222
- RecentHistoryService.removeLastItem('instances');
223
- } else {
224
- $state.go('^', { allowModalToStayOpen: true }, { location: 'replace' });
225
- }
226
- }
227
-
228
- this.canRegisterWithDiscovery = function () {
229
- const instance = $scope.instance;
230
- const healthMetrics = instance.health || [];
231
- const discoveryHealth = healthMetrics.filter(function (health) {
232
- return health.type === 'Discovery';
233
- });
234
- return discoveryHealth.length ? discoveryHealth[0].state === 'OutOfService' : false;
235
- };
236
-
237
- this.terminateInstance = function terminateInstance() {
238
- const instance = $scope.instance;
239
-
240
- const taskMonitor = {
241
- application: app,
242
- title: 'Terminating ' + instance.instanceId,
243
- onTaskComplete: function () {
244
- if ($state.includes('**.instanceDetails', { instanceId: instance.instanceId })) {
245
- $state.go('^');
246
- }
247
- },
248
- };
249
-
250
- const submitMethod = function () {
251
- return InstanceWriter.terminateInstance(instance, app, defaultRequestParams);
252
- };
253
-
254
- ConfirmationModalService.confirm({
255
- header: 'Really terminate ' + instance.instanceId + '?',
256
- buttonText: 'Terminate ' + instance.instanceId,
257
- account: instance.account,
258
- taskMonitorConfig: taskMonitor,
259
- submitMethod: submitMethod,
260
- });
261
- };
262
-
263
- this.terminateInstanceAndShrinkServerGroup = function terminateInstanceAndShrinkServerGroup() {
264
- const instance = $scope.instance;
265
-
266
- const taskMonitor = {
267
- application: app,
268
- title: 'Terminating ' + instance.instanceId + ' and shrinking server group',
269
- onTaskComplete: function () {
270
- if ($state.includes('**.instanceDetails', { instanceId: instance.instanceId })) {
271
- $state.go('^');
272
- }
273
- },
274
- };
275
-
276
- const submitMethod = function () {
277
- return InstanceWriter.terminateInstanceAndShrinkServerGroup(instance, app, defaultRequestParams);
278
- };
279
-
280
- ConfirmationModalService.confirm({
281
- header: 'Really terminate ' + instance.instanceId + ' and shrink ' + instance.serverGroup + '?',
282
- buttonText: 'Terminate ' + instance.instanceId + ' and shrink ' + instance.serverGroup,
283
- account: instance.account,
284
- taskMonitorConfig: taskMonitor,
285
- submitMethod: submitMethod,
286
- });
287
- };
288
-
289
- this.enableInstanceInDiscovery = function enableInstanceInDiscovery() {
290
- const instance = $scope.instance;
291
-
292
- const taskMonitor = {
293
- application: app,
294
- title: 'Enabling ' + instance.instanceId + ' in discovery',
295
- };
296
-
297
- const submitMethod = function () {
298
- return InstanceWriter.enableInstanceInDiscovery(instance, app, defaultRequestParams);
299
- };
300
-
301
- ConfirmationModalService.confirm({
302
- header: 'Really enable ' + instance.instanceId + ' in discovery?',
303
- buttonText: 'Enable ' + instance.instanceId,
304
- account: instance.account,
305
- taskMonitorConfig: taskMonitor,
306
- submitMethod: submitMethod,
307
- });
308
- };
309
-
310
- this.disableInstanceInDiscovery = function disableInstanceInDiscovery() {
311
- const instance = $scope.instance;
312
-
313
- const taskMonitor = {
314
- application: app,
315
- title: 'Disabling ' + instance.instanceId + ' in discovery',
316
- };
317
-
318
- const submitMethod = function () {
319
- return InstanceWriter.disableInstanceInDiscovery(instance, app, defaultRequestParams);
320
- };
321
-
322
- ConfirmationModalService.confirm({
323
- header: 'Really disable ' + instance.instanceId + ' in discovery?',
324
- buttonText: 'Disable ' + instance.instanceId,
325
- account: instance.account,
326
- taskMonitorConfig: taskMonitor,
327
- submitMethod: submitMethod,
328
- });
329
- };
330
-
331
- this.hasHealthState = function hasHealthState(healthProviderType, state) {
332
- const instance = $scope.instance;
333
- const healthMetrics = instance.health || [];
334
- return healthMetrics.some(function (health) {
335
- return health.type === healthProviderType && health.state === state;
336
- });
337
- };
338
-
339
- const initialize = app.isStandalone
340
- ? retrieveInstance()
341
- : $q.all([app.serverGroups.ready(), app.loadBalancers.ready()]).then(retrieveInstance);
342
-
343
- initialize.then(() => {
344
- // Two things to look out for here:
345
- // 1. If the retrieveInstance call completes *after* the user has navigated away from the view, there
346
- // is no point in subscribing to the refresh
347
- // 2. If this is a standalone instance, there is no application that will refresh
348
- if (!$scope.$$destroyed && !app.isStandalone) {
349
- app.serverGroups.onRefresh($scope, retrieveInstance);
350
- }
351
- });
352
-
353
- $scope.account = instance.account;
354
- },
355
- ],
356
- );
@@ -1,204 +0,0 @@
1
- <div class="text-center" ng-if="state.notFoundStandalone">
2
- <h3>Could not find instance {{instanceIdNotFound}}.</h3>
3
- <a ui-sref="home.infrastructure">Back to search results</a>
4
- </div>
5
- <div class="details-panel" ng-if="!state.notFoundStandalone">
6
- <div class="header">
7
- <instance-details-header
8
- health-state="instance.healthState"
9
- instance-id="instance ? instance.name : instanceIdNotFound"
10
- loading="state.loading"
11
- standalone="state.standalone"
12
- ></instance-details-header>
13
- <div ng-if="!state.loading">
14
- <div class="actions" ng-class="{ insights: instance.insightActions.length > 0 }">
15
- <!-- TODO - find out what I should do with ng-if="instance.placement" -->
16
- <div class="dropdown" uib-dropdown dropdown-append-to-body>
17
- <button
18
- type="button"
19
- class="btn btn-sm btn-primary dropdown-toggle"
20
- ng-disabled="disabled"
21
- uib-dropdown-toggle
22
- >
23
- Instance Actions <span class="caret"></span>
24
- </button>
25
- <ul class="dropdown-menu" uib-dropdown-menu role="menu">
26
- <li>
27
- <a href ng-click="ctrl.enableInstanceInDiscovery()" ng-if="ctrl.canRegisterWithDiscovery()"
28
- >Enable in Discovery</a
29
- >
30
- </li>
31
- <li>
32
- <a
33
- href
34
- ng-click="ctrl.disableInstanceInDiscovery()"
35
- ng-if="ctrl.hasHealthState('Discovery', 'Up') || ctrl.hasHealthState('Discovery', 'Down')"
36
- >Disable in Discovery</a
37
- >
38
- </li>
39
- <li>
40
- <a href ng-click="ctrl.registerInstanceWithLoadBalancer()" ng-if="ctrl.canRegisterWithLoadBalancer()"
41
- >Register with Load Balancer</a
42
- >
43
- </li>
44
- <li>
45
- <a href ng-click="ctrl.deregisterInstanceFromLoadBalancer()" ng-if="ctrl.canDeregisterFromLoadBalancer()"
46
- >Deregister from Load Balancer</a
47
- >
48
- </li>
49
- <li>
50
- <a href ng-click="ctrl.registerInstanceWithTargetGroup()" ng-if="ctrl.canRegisterWithTargetGroup()"
51
- >Register with Target Group</a
52
- >
53
- </li>
54
- <li>
55
- <a href ng-click="ctrl.deregisterInstanceFromTargetGroup()" ng-if="ctrl.canDeregisterFromTargetGroup()"
56
- >Deregister from Target Group</a
57
- >
58
- </li>
59
- <!--<li role="presentation" class="divider" ng-if="instance.health.length > 0"></li>-->
60
- </ul>
61
- </div>
62
- <div class="dropdown" ng-if="instance.insightActions.length > 0" uib-dropdown dropdown-append-to-body>
63
- <button type="button" class="btn btn-sm btn-default dropdown-toggle" uib-dropdown-toggle>
64
- Insight <span class="caret"></span>
65
- </button>
66
- <ul class="dropdown-menu" uib-dropdown-menu role="menu">
67
- <li ng-repeat="action in instance.insightActions">
68
- <a target="_blank" href="{{action.url}}">{{action.label}}</a>
69
- </li>
70
- </ul>
71
- </div>
72
- </div>
73
- </div>
74
- </div>
75
- <div class="content" data-test-id="instanceDetails.content" ng-if="!state.loading && instance">
76
- <collapsible-section heading="Instance Information" expanded="true">
77
- <dl class="dl-horizontal dl-narrow">
78
- <dt>Launched</dt>
79
- <dd ng-if="instance.launchTime">{{instance.launchTime | timestamp}}</dd>
80
- <dd ng-if="!instance.launchTime">(Unknown)</dd>
81
- <dt ng-if="instance.serverGroup">Server Group</dt>
82
- <dd ng-if="instance.serverGroup">
83
- <a
84
- ui-sref="^.serverGroup({region: instance.region,
85
- accountId: instance.account,
86
- serverGroup: instance.serverGroup,
87
- provider: instance.provider})"
88
- >{{instance.serverGroup}}</a
89
- >
90
- </dd>
91
- <dt ng-if="instance.imageId">Image ID</dt>
92
- <dd ng-if="instance.imageId">{{instance.imageId}}</dd>
93
- </dl>
94
- </collapsible-section>
95
- <collapsible-section heading="Status" expanded="true">
96
- <p ng-if="instance.healthState !== 'Starting' && !healthMetrics.length">
97
- No health metrics found for this instance
98
- </p>
99
- <p ng-if="instance.healthState === 'Starting' && !healthMetrics.length">
100
- <span class="glyphicon glyphicon-Starting-triangle"></span> <strong>Starting</strong>
101
- </p>
102
-
103
- <dl class="horizontal-when-filters-collapsed">
104
- <dt ng-repeat-start="metric in healthMetrics | orderBy: 'type'">{{metric.type | robotToHuman}}</dt>
105
- <dd ng-repeat-end>
106
- <div ng-if="metric.type !== 'LoadBalancer' && metric.type !== 'TargetGroup'">
107
- <span
108
- uib-tooltip="{{metric.state.toLowerCase() === 'down' ? metric.description : ''}}"
109
- tooltip-placement="left"
110
- >
111
- <span class="glyphicon glyphicon-{{metric.state}}-triangle"></span>
112
- {{metric.state | robotToHuman}}
113
- </span>
114
- <span class="pad-left small">
115
- <a ng-if="metric.healthCheckUrl" target="_blank" href="{{metric.healthCheckUrl}}">Health Check</a>
116
- <span ng-if="metric.healthCheckUrl && metric.statusPageUrl"> | </span>
117
- <a ng-if="metric.statusPageUrl" target="_blank" href="{{metric.statusPageUrl}}">Status</a>
118
- </span>
119
- </div>
120
- <div
121
- ng-if="metric.type === 'LoadBalancer' && metric.loadBalancers.length"
122
- ng-repeat="loadBalancer in metric.loadBalancers"
123
- >
124
- <instance-load-balancer-health load-balancer="loadBalancer"></instance-load-balancer-health>
125
- </div>
126
- <div
127
- ng-if="metric.type === 'TargetGroup' && metric.targetGroups.length"
128
- ng-repeat="targetGroup in metric.targetGroups"
129
- >
130
- <instance-load-balancer-health
131
- load-balancer="targetGroup"
132
- ip-address="baseIpAddress"
133
- ></instance-load-balancer-health>
134
- </div>
135
- </dd>
136
- </dl>
137
- </collapsible-section>
138
- <collapsible-section heading="Networking">
139
- <dl class="horizontal-when-filters-collapsed">
140
- <dt ng-if="instance.vpcId">VPC</dt>
141
- <dd ng-if="instance.vpcId"><vpc-tag vpc-id="instance.vpcId"></vpc-tag></dd>
142
- <dt ng-if="instance.subnetId">Subnet</dt>
143
- <dd ng-if="instance.subnetId"><subnet-tag subnet-id="instance.subnetId"></subnet-tag></dd>
144
-
145
- <dt ng-if="instance.privateAddress || instance.networkInterface">IP</dt>
146
- <dd ng-if="instance.networkInterface.privateIpv4Address">
147
- Private address (ENI):
148
- <a href="http://{{instance.networkInterface.privateIpv4Address}}" target="_blank"
149
- >{{instance.networkInterface.privateIpv4Address}}</a
150
- >
151
- <copy-to-clipboard
152
- class="copy-to-clipboard copy-to-clipboard-sm"
153
- text="instance.networkInterface.privateIpv4Address"
154
- tool-tip="'Copy to clipboard'"
155
- >
156
- </copy-to-clipboard>
157
- </dd>
158
- <dd ng-if="instance.networkInterface.ipv6Address">
159
- Private address (ENI):
160
- <a href="http://{{instance.networkInterface.ipv6Address}}" target="_blank"
161
- >{{instance.networkInterface.ipv6Address}}</a
162
- >
163
- <copy-to-clipboard
164
- class="copy-to-clipboard copy-to-clipboard-sm"
165
- text="instance.networkInterface.ipv6Address"
166
- tool-tip="'Copy to clipboard'"
167
- >
168
- </copy-to-clipboard>
169
- </dd>
170
- <dd ng-if="instance.privateAddress">
171
- Private address (Bridge):
172
- <a href="http://{{instance.privateAddress}}" target="_blank">{{instance.privateAddress}}</a>
173
- <copy-to-clipboard
174
- class="copy-to-clipboard copy-to-clipboard-sm"
175
- text="instance.privateAddress"
176
- tool-tip="'Copy to clipboard'"
177
- >
178
- </copy-to-clipboard>
179
- </dd>
180
- </dl>
181
- </collapsible-section>
182
- <collapsible-section heading="Console Output" ng-if="baseIpAddress">
183
- <ul>
184
- <li>
185
- <console-output-link instance="instance"></console-output-link>
186
- </li>
187
- </ul>
188
- </collapsible-section>
189
- <instance-links
190
- address="baseIpAddress"
191
- application="application"
192
- instance="instance"
193
- moniker="moniker"
194
- environment="environment"
195
- ></instance-links>
196
- </div>
197
- <div class="content" ng-if="!state.loading && !instance">
198
- <div class="content-section">
199
- <div class="content-body text-center">
200
- <h3>Instance not found.</h3>
201
- </div>
202
- </div>
203
- </div>
204
- </div>
@@ -1,101 +0,0 @@
1
- <div ng-controller="ecsCloneServerGroupStageCtrl as cloneServerGroupStageCtrl">
2
- <div ng-if="!pipeline.strategy">
3
- <div ng-if="viewState.loading">
4
- <h4 class="text-center">
5
- <span us-spinner="{radius:20, width:6, length: 12}"></span>
6
- </h4>
7
- </div>
8
- <div ng-if="!viewState.loading">
9
- <account-region-cluster-selector
10
- application="application"
11
- component="stage"
12
- accounts="accounts"
13
- single-region="true"
14
- cluster-field="targetCluster"
15
- >
16
- </account-region-cluster-selector>
17
- </div>
18
- </div>
19
- <stage-config-field label="Target">
20
- <target-select model="stage" options="cloneServerGroupStageCtrl.cloneTargets"></target-select>
21
- </stage-config-field>
22
- <div>
23
- <div class="form-group">
24
- <div class="col-md-3 sm-label-right">Capacity</div>
25
- <div class="col-md-9 radio">
26
- <label>
27
- <input
28
- type="radio"
29
- ng-model="stage.useSourceCapacity"
30
- ng-value="true"
31
- ng-click="cloneServerGroupStageCtrl.removeCapacity()"
32
- id="useSourceCapacityTrue"
33
- />
34
- Copy the capacity from the current server group
35
- <help-field key="serverGroupCapacity.useSourceCapacityTrue"></help-field>
36
- </label>
37
- </div>
38
- <div class="col-md-9 col-md-offset-3 radio">
39
- <label>
40
- <input type="radio" ng-model="stage.useSourceCapacity" ng-value="false" id="useSourceCapacityFalse" />
41
- Let me specify the capacity
42
- <help-field key="serverGroupCapacity.useSourceCapacityFalse"></help-field>
43
- </label>
44
- </div>
45
- </div>
46
- <div class="form-group">
47
- <div class="col-md-2 col-md-offset-3">Min</div>
48
- <div class="col-md-2">Max</div>
49
- <div class="col-md-2">Desired</div>
50
- </div>
51
- <div class="form-group">
52
- <div class="col-md-2 col-md-offset-3">
53
- <input
54
- type="number"
55
- ng-disabled="stage.useSourceCapacity"
56
- class="form-control input-sm"
57
- ng-model="stage.capacity.min"
58
- min="0"
59
- max="{{stage.capacity.max}}"
60
- required
61
- />
62
- </div>
63
- <div class="col-md-2">
64
- <input
65
- type="number"
66
- ng-disabled="stage.useSourceCapacity"
67
- class="form-control input-sm"
68
- ng-model="stage.capacity.max"
69
- min="{{stage.capacity.min}}"
70
- required
71
- />
72
- </div>
73
- <div class="col-md-2">
74
- <input
75
- type="number"
76
- ng-disabled="stage.useSourceCapacity"
77
- class="form-control input-sm"
78
- ng-model="stage.capacity.desired"
79
- min="{{stage.capacity.min}}"
80
- max="{{stage.capacity.max}}"
81
- required
82
- />
83
- </div>
84
- </div>
85
- </div>
86
- <stage-config-field label="Traffic">
87
- <div class="checkbox">
88
- <label>
89
- <input
90
- type="checkbox"
91
- ng-click="cloneServerGroupStageCtrl.toggleSuspendedProcess('AddToLoadBalancer')"
92
- ng-checked="!cloneServerGroupStageCtrl.processIsSuspended('AddToLoadBalancer')"
93
- />
94
- Send client requests to new instances
95
- </label>
96
- </div>
97
- </stage-config-field>
98
- <stage-platform-health-override application="application" stage="stage" platform-health-type="'Ecs'">
99
- </stage-platform-health-override>
100
- <deployment-strategy-selector field-columns="6" command="stage"></deployment-strategy-selector>
101
- </div>
@@ -1 +0,0 @@
1
- <span class="task-label"> Clone Server Group: {{step.context.source.serverGroupName}} ({{step.context.region}}) </span>
@@ -1,9 +0,0 @@
1
- <div ng-controller="ecsDestroyAsgStageCtrl as destroyAsgStageCtrl" class="form-horizontal">
2
- <div ng-if="!pipeline.strategy">
3
- <account-region-cluster-selector application="application" component="stage" accounts="accounts">
4
- </account-region-cluster-selector>
5
- </div>
6
- <stage-config-field label="Target">
7
- <target-select model="stage" options="targets"></target-select>
8
- </stage-config-field>
9
- </div>
@@ -1 +0,0 @@
1
- <span class="task-label"> Destroy Server Group: {{step.context.serverGroupName}} ({{step.context.region}}) </span>