@spinnaker/cloudfoundry 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 (46) hide show
  1. package/dist/image/image.reader.cf.d.ts +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/instance/details/CloudFoundryInstanceActions.d.ts +5 -2
  5. package/dist/loadBalancer/configure/CloudFoundryMapLoadBalancerModal.d.ts +5 -4
  6. package/dist/loadBalancer/details/CloudFoundryLoadBalancerActions.d.ts +5 -2
  7. package/dist/loadBalancer/loadBalancer.transformer.d.ts +2 -5
  8. package/dist/pipeline/stages/cloneServerGroup/CloudFoundryCloneServerGroupStageConfig.d.ts +3 -0
  9. package/dist/serverGroup/configure/serverGroupCommandBuilderShim.service.cf.d.ts +5 -9
  10. package/dist/serverGroup/configure/wizard/CreateServerGroupModal.d.ts +5 -3
  11. package/dist/serverGroup/details/cloudFoundryServerGroupActions.d.ts +8 -2
  12. package/dist/serverGroup/details/mapLoadBalancers/CloudFoundryMapLoadBalancersModal.d.ts +5 -3
  13. package/dist/serverGroup/details/mapLoadBalancers/CloudFoundryUnmapLoadBalancersModal.d.ts +5 -3
  14. package/dist/serverGroup/details/resize/CloudFoundryResizeServerGroupModal.d.ts +5 -3
  15. package/dist/serverGroup/details/rollback/CloudFoundryRollbackServerGroupModal.d.ts +5 -3
  16. package/dist/serverGroup/serverGroup.transformer.d.ts +1 -4
  17. package/package.json +3 -9
  18. package/src/image/image.reader.cf.ts +1 -1
  19. package/src/instance/details/CloudFoundryInstanceActions.tsx +11 -6
  20. package/src/instance/details/CloudFoundryInstanceDetails.tsx +0 -2
  21. package/src/loadBalancer/configure/CloudFoundryMapLoadBalancerModal.tsx +10 -16
  22. package/src/loadBalancer/details/CloudFoundryLoadBalancerActions.tsx +10 -7
  23. package/src/loadBalancer/details/CloudFoundryLoadBalancerDetails.tsx +1 -3
  24. package/src/loadBalancer/loadBalancer.transformer.ts +3 -6
  25. package/src/pipeline/stages/cloneServerGroup/CloudFoundryCloneServerGroupStageConfig.tsx +13 -7
  26. package/src/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsStageConfigForm.tsx +1 -2
  27. package/src/pipeline/stages/createServiceBindings/cloudFoundryCreateServiceBindingsStageForm.spec.tsx +25 -21
  28. package/src/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsStageConfigForm.tsx +1 -2
  29. package/src/pipeline/stages/deleteServiceBindings/cloudFoundryDeleteServiceBindingsStageForm.spec.tsx +23 -18
  30. package/src/pipeline/stages/resizeAsg/CloudFoundryResizeAsgStageConfig.tsx +1 -2
  31. package/src/pipeline/stages/rollbackCluster/cloudFoundryRollbackClusterStage.module.ts +0 -1
  32. package/src/pipeline/stages/runJob/CloudFoundryRunJobStageConfig.tsx +1 -2
  33. package/src/pipeline/stages/unshareService/cloudFoundryUnshareServiceStage.module.ts +0 -1
  34. package/src/presentation/pipeline/stages/CloudFoundryAsgStageConfig.tsx +1 -2
  35. package/src/presentation/pipeline/stages/CloudFoundryLoadBalancersStageConfig.tsx +1 -2
  36. package/src/presentation/widgets/accountRegionClusterSelector/AccountRegionClusterSelector.spec.tsx +41 -43
  37. package/src/routerActions.spec.tsx +76 -0
  38. package/src/serverGroup/configure/serverGroupCommandBuilderShim.service.cf.ts +12 -18
  39. package/src/serverGroup/configure/wizard/CreateServerGroupModal.tsx +13 -7
  40. package/src/serverGroup/details/cfServerGroupDetailsGetter.ts +1 -1
  41. package/src/serverGroup/details/cloudFoundryServerGroupActions.tsx +39 -25
  42. package/src/serverGroup/details/mapLoadBalancers/CloudFoundryMapLoadBalancersModal.tsx +19 -6
  43. package/src/serverGroup/details/mapLoadBalancers/CloudFoundryUnmapLoadBalancersModal.tsx +19 -6
  44. package/src/serverGroup/details/resize/CloudFoundryResizeServerGroupModal.tsx +19 -6
  45. package/src/serverGroup/details/rollback/CloudFoundryRollbackServerGroupModal.tsx +13 -6
  46. package/src/serverGroup/serverGroup.transformer.ts +2 -5
@@ -5,7 +5,7 @@ import type { IServerGroupDetailsProps } from '@spinnaker/core';
5
5
  import { ServerGroupReader } from '@spinnaker/core';
6
6
  import type { ICloudFoundryLoadBalancer, ICloudFoundryServerGroup } from '../../domain';
7
7
 
8
- function extractServerGroupSummary(props: IServerGroupDetailsProps): PromiseLike<ICloudFoundryServerGroup> {
8
+ function extractServerGroupSummary(props: IServerGroupDetailsProps): Promise<ICloudFoundryServerGroup> {
9
9
  const { app, serverGroup } = props;
10
10
  return app.ready().then(() => {
11
11
  let summary: ICloudFoundryServerGroup = app.serverGroups.data.find((toCheck: ICloudFoundryServerGroup) => {
@@ -2,14 +2,15 @@ import { filter, find, get, orderBy } from 'lodash';
2
2
  import React from 'react';
3
3
  import { Dropdown, Tooltip } from 'react-bootstrap';
4
4
 
5
- import type { IOwnerOption, IServerGroupActionsProps, IServerGroupJob } from '@spinnaker/core';
5
+ import type { IOwnerOption, IRouterInjectedProps, IServerGroupActionsProps, IServerGroupJob } from '@spinnaker/core';
6
6
  import {
7
7
  AddEntityTagLinks,
8
8
  ClusterTargetBuilder,
9
9
  ConfirmationModalService,
10
- ReactInjector,
10
+ DeckRuntimeContext,
11
11
  ServerGroupWarningMessageService,
12
12
  SETTINGS,
13
+ withRouter,
13
14
  } from '@spinnaker/core';
14
15
 
15
16
  import { CloudFoundryServerGroupCommandBuilder } from '../configure';
@@ -28,7 +29,12 @@ export interface ICloudFoundryServerGroupJob extends IServerGroupJob {
28
29
  serverGroupId: string;
29
30
  }
30
31
 
31
- export class CloudFoundryServerGroupActions extends React.Component<ICloudFoundryServerGroupActionsProps> {
32
+ export class CloudFoundryServerGroupActionsComponent extends React.Component<
33
+ ICloudFoundryServerGroupActionsProps & IRouterInjectedProps
34
+ > {
35
+ public static contextType = DeckRuntimeContext;
36
+ public declare context: React.ContextType<typeof DeckRuntimeContext>;
37
+
32
38
  private isEnableLocked(): boolean {
33
39
  if (this.props.serverGroup.isDisabled) {
34
40
  const resizeTasks = (this.props.serverGroup.runningTasks || []).filter((task) =>
@@ -79,15 +85,15 @@ export class CloudFoundryServerGroupActions extends React.Component<ICloudFoundr
79
85
  application: app,
80
86
  title: 'Destroying ' + serverGroup.name,
81
87
  onTaskComplete: () => {
82
- if (ReactInjector.$state.includes('**.serverGroup', stateParams)) {
83
- ReactInjector.$state.go('^');
88
+ if (this.props.stateService.includes('**.serverGroup', stateParams)) {
89
+ this.props.stateService.go('^');
84
90
  }
85
91
  },
86
92
  };
87
93
 
88
94
  const submitMethod = (params: ICloudFoundryServerGroupJob) => {
89
95
  params.serverGroupName = serverGroup.name;
90
- return ReactInjector.serverGroupWriter.destroyServerGroup(serverGroup, app, params);
96
+ return this.context.services.serverGroupWriter.destroyServerGroup(serverGroup, app, params);
91
97
  };
92
98
 
93
99
  const confirmationModalParams = {
@@ -120,7 +126,7 @@ export class CloudFoundryServerGroupActions extends React.Component<ICloudFoundr
120
126
 
121
127
  const submitMethod = (params: ICloudFoundryServerGroupJob) => {
122
128
  params.serverGroupName = serverGroup.name;
123
- return ReactInjector.serverGroupWriter.disableServerGroup(serverGroup, app.name, params);
129
+ return this.context.services.serverGroupWriter.disableServerGroup(serverGroup, app.name, params);
124
130
  };
125
131
 
126
132
  const confirmationModalParams = {
@@ -178,7 +184,7 @@ export class CloudFoundryServerGroupActions extends React.Component<ICloudFoundr
178
184
 
179
185
  const submitMethod = (params: ICloudFoundryServerGroupJob) => {
180
186
  params.serverGroupName = serverGroup.name;
181
- return ReactInjector.serverGroupWriter.enableServerGroup(serverGroup, app, params);
187
+ return this.context.services.serverGroupWriter.enableServerGroup(serverGroup, app, params);
182
188
  };
183
189
 
184
190
  const confirmationModalParams = {
@@ -242,41 +248,47 @@ export class CloudFoundryServerGroupActions extends React.Component<ICloudFoundr
242
248
  region: serverGroup.region,
243
249
  }) as ICloudFoundryServerGroup[];
244
250
 
245
- CloudFoundryRollbackServerGroupModal.show({
246
- serverGroup,
247
- previousServerGroup,
248
- disabledServerGroups: disabledServerGroups.sort((a, b) => b.name.localeCompare(a.name)),
249
- allServerGroups: allServerGroups.sort((a, b) => b.name.localeCompare(a.name)),
250
- application: app,
251
- });
251
+ CloudFoundryRollbackServerGroupModal.show(
252
+ {
253
+ serverGroup,
254
+ previousServerGroup,
255
+ disabledServerGroups: disabledServerGroups.sort((a, b) => b.name.localeCompare(a.name)),
256
+ allServerGroups: allServerGroups.sort((a, b) => b.name.localeCompare(a.name)),
257
+ application: app,
258
+ },
259
+ this.context.services,
260
+ );
252
261
  };
253
262
 
254
263
  private resizeServerGroup = (): void => {
255
264
  const { app, serverGroup } = this.props;
256
- CloudFoundryResizeServerGroupModal.show({ application: app, serverGroup });
265
+ CloudFoundryResizeServerGroupModal.show({ application: app, serverGroup }, this.context.services);
257
266
  };
258
267
 
259
268
  private mapServerGroupToLoadBalancers = (): void => {
260
269
  const { app, serverGroup } = this.props;
261
- CloudFoundryMapLoadBalancersModal.show({ application: app, serverGroup });
270
+ CloudFoundryMapLoadBalancersModal.show({ application: app, serverGroup }, this.context.services);
262
271
  };
263
272
 
264
273
  private unmapServerGroupFromLoadBalancers = (): void => {
265
274
  const { app, serverGroup } = this.props;
266
- CloudFoundryUnmapLoadBalancersModal.show({ application: app, serverGroup });
275
+ CloudFoundryUnmapLoadBalancersModal.show({ application: app, serverGroup }, this.context.services);
267
276
  };
268
277
 
269
278
  private cloneServerGroup = (): void => {
270
279
  const { app, serverGroup } = this.props;
271
280
  const command = CloudFoundryServerGroupCommandBuilder.buildServerGroupCommandFromExisting(app, serverGroup);
272
281
  const title = `Clone ${serverGroup.name}`;
273
- CloudFoundryCreateServerGroupModal.show({
274
- application: app,
275
- command,
276
- isSourceConstant: true,
277
- serverGroup,
278
- title,
279
- });
282
+ CloudFoundryCreateServerGroupModal.show(
283
+ {
284
+ application: app,
285
+ command,
286
+ isSourceConstant: true,
287
+ serverGroup,
288
+ title,
289
+ },
290
+ this.context.services,
291
+ );
280
292
  };
281
293
 
282
294
  public render(): JSX.Element {
@@ -363,3 +375,5 @@ export class CloudFoundryServerGroupActions extends React.Component<ICloudFoundr
363
375
  );
364
376
  }
365
377
  }
378
+
379
+ export const CloudFoundryServerGroupActions = withRouter(CloudFoundryServerGroupActionsComponent);
@@ -3,16 +3,23 @@ import { Form } from 'formik';
3
3
  import React from 'react';
4
4
  import { Modal, ModalFooter } from 'react-bootstrap';
5
5
 
6
- import type { Application, IModalComponentProps, IServerGroup, IServerGroupJob } from '@spinnaker/core';
6
+ import type {
7
+ Application,
8
+ DeckRuntimeServices,
9
+ IModalComponentProps,
10
+ IServerGroup,
11
+ IServerGroupJob,
12
+ } from '@spinnaker/core';
7
13
  import {
14
+ DeckRuntimeContext,
8
15
  ModalClose,
9
16
  noop,
10
- ReactInjector,
11
17
  ReactModal,
12
18
  SpinFormik,
13
19
  TaskMonitor,
14
20
  TaskMonitorWrapper,
15
21
  } from '@spinnaker/core';
22
+
16
23
  import type { ICloudFoundryServerGroup } from '../../../domain';
17
24
  import { Routes } from '../../../presentation/forms/serverGroup';
18
25
 
@@ -39,6 +46,9 @@ export class CloudFoundryMapLoadBalancersModal extends React.Component<
39
46
  ICloudFoundryLoadBalancerLinksModalProps,
40
47
  ICloudFoundryLoadBalancerLinksModalState
41
48
  > {
49
+ public static contextType = DeckRuntimeContext;
50
+ public declare context: React.ContextType<typeof DeckRuntimeContext>;
51
+
42
52
  public static defaultProps: Partial<ICloudFoundryLoadBalancerLinksModalProps> = {
43
53
  closeModal: noop,
44
54
  dismissModal: noop,
@@ -46,8 +56,11 @@ export class CloudFoundryMapLoadBalancersModal extends React.Component<
46
56
 
47
57
  private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancerLinksModalValues>>();
48
58
 
49
- public static show(props: ICloudFoundryLoadBalancerLinksModalProps): Promise<ICloudFoundryLoadBalancerLinkJob> {
50
- return ReactModal.show(CloudFoundryMapLoadBalancersModal, props, {});
59
+ public static show(
60
+ props: ICloudFoundryLoadBalancerLinksModalProps,
61
+ runtimeServices: DeckRuntimeServices,
62
+ ): Promise<ICloudFoundryLoadBalancerLinkJob> {
63
+ return ReactModal.show(CloudFoundryMapLoadBalancersModal, props, {}, runtimeServices);
51
64
  }
52
65
 
53
66
  constructor(props: ICloudFoundryLoadBalancerLinksModalProps) {
@@ -60,7 +73,7 @@ export class CloudFoundryMapLoadBalancersModal extends React.Component<
60
73
  taskMonitor: new TaskMonitor({
61
74
  application: props.application,
62
75
  title: 'Mapping a route to your server group',
63
- modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),
76
+ onDismiss: () => this.props.dismissModal(),
64
77
  onTaskComplete: () => this.props.application.serverGroups.refresh(),
65
78
  }),
66
79
  };
@@ -86,7 +99,7 @@ export class CloudFoundryMapLoadBalancersModal extends React.Component<
86
99
  };
87
100
 
88
101
  this.state.taskMonitor.submit(() => {
89
- return ReactInjector.serverGroupWriter.mapLoadBalancers(coreServerGroup, this.props.application, {
102
+ return this.context.services.serverGroupWriter.mapLoadBalancers(coreServerGroup, this.props.application, {
90
103
  serverGroupName: serverGroup.name,
91
104
  });
92
105
  });
@@ -3,16 +3,23 @@ import { Form } from 'formik';
3
3
  import React from 'react';
4
4
  import { Modal, ModalFooter } from 'react-bootstrap';
5
5
 
6
- import type { Application, IModalComponentProps, IServerGroup, IServerGroupJob } from '@spinnaker/core';
6
+ import type {
7
+ Application,
8
+ DeckRuntimeServices,
9
+ IModalComponentProps,
10
+ IServerGroup,
11
+ IServerGroupJob,
12
+ } from '@spinnaker/core';
7
13
  import {
14
+ DeckRuntimeContext,
8
15
  ModalClose,
9
16
  noop,
10
- ReactInjector,
11
17
  ReactModal,
12
18
  SpinFormik,
13
19
  TaskMonitor,
14
20
  TaskMonitorWrapper,
15
21
  } from '@spinnaker/core';
22
+
16
23
  import type { ICloudFoundryServerGroup } from '../../../domain';
17
24
  import { Routes } from '../../../presentation/forms/serverGroup';
18
25
 
@@ -39,6 +46,9 @@ export class CloudFoundryUnmapLoadBalancersModal extends React.Component<
39
46
  ICloudFoundryLoadBalancerLinksModalProps,
40
47
  ICloudFoundryLoadBalancerLinksModalState
41
48
  > {
49
+ public static contextType = DeckRuntimeContext;
50
+ public declare context: React.ContextType<typeof DeckRuntimeContext>;
51
+
42
52
  public static defaultProps: Partial<ICloudFoundryLoadBalancerLinksModalProps> = {
43
53
  closeModal: noop,
44
54
  dismissModal: noop,
@@ -46,8 +56,11 @@ export class CloudFoundryUnmapLoadBalancersModal extends React.Component<
46
56
 
47
57
  private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancerLinksModalValues>>();
48
58
 
49
- public static show(props: ICloudFoundryLoadBalancerLinksModalProps): Promise<ICloudFoundryLoadBalancerLinkJob> {
50
- return ReactModal.show(CloudFoundryUnmapLoadBalancersModal, props, {});
59
+ public static show(
60
+ props: ICloudFoundryLoadBalancerLinksModalProps,
61
+ runtimeServices: DeckRuntimeServices,
62
+ ): Promise<ICloudFoundryLoadBalancerLinkJob> {
63
+ return ReactModal.show(CloudFoundryUnmapLoadBalancersModal, props, {}, runtimeServices);
51
64
  }
52
65
 
53
66
  constructor(props: ICloudFoundryLoadBalancerLinksModalProps) {
@@ -60,7 +73,7 @@ export class CloudFoundryUnmapLoadBalancersModal extends React.Component<
60
73
  taskMonitor: new TaskMonitor({
61
74
  application: props.application,
62
75
  title: 'Unmapping a route from your server group',
63
- modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),
76
+ onDismiss: () => this.props.dismissModal(),
64
77
  onTaskComplete: () => this.props.application.serverGroups.refresh(),
65
78
  }),
66
79
  };
@@ -86,7 +99,7 @@ export class CloudFoundryUnmapLoadBalancersModal extends React.Component<
86
99
  };
87
100
 
88
101
  this.state.taskMonitor.submit(() => {
89
- return ReactInjector.serverGroupWriter.unmapLoadBalancers(coreServerGroup, this.props.application, {
102
+ return this.context.services.serverGroupWriter.unmapLoadBalancers(coreServerGroup, this.props.application, {
90
103
  serverGroupName: serverGroup.name,
91
104
  });
92
105
  });
@@ -3,19 +3,26 @@ import { Form } from 'formik';
3
3
  import React from 'react';
4
4
  import { Modal, ModalFooter } from 'react-bootstrap';
5
5
 
6
- import type { Application, ICapacity, IModalComponentProps, IServerGroupJob } from '@spinnaker/core';
6
+ import type {
7
+ Application,
8
+ DeckRuntimeServices,
9
+ ICapacity,
10
+ IModalComponentProps,
11
+ IServerGroupJob,
12
+ } from '@spinnaker/core';
7
13
  import {
14
+ DeckRuntimeContext,
8
15
  FormikFormField,
9
16
  ModalClose,
10
17
  noop,
11
18
  NumberInput,
12
- ReactInjector,
13
19
  ReactModal,
14
20
  SpinFormik,
15
21
  TaskMonitor,
16
22
  TaskMonitorWrapper,
17
23
  TaskReason,
18
24
  } from '@spinnaker/core';
25
+
19
26
  import type { ICloudFoundryServerGroup } from '../../../domain';
20
27
 
21
28
  export interface ICloudFoundryResizeServerGroupModalProps extends IModalComponentProps {
@@ -48,6 +55,9 @@ export class CloudFoundryResizeServerGroupModal extends React.Component<
48
55
  ICloudFoundryResizeServerGroupModalProps,
49
56
  ICloudFoundryResizeServerGroupModalState
50
57
  > {
58
+ public static contextType = DeckRuntimeContext;
59
+ public declare context: React.ContextType<typeof DeckRuntimeContext>;
60
+
51
61
  public static defaultProps: Partial<ICloudFoundryResizeServerGroupModalProps> = {
52
62
  closeModal: noop,
53
63
  dismissModal: noop,
@@ -55,9 +65,12 @@ export class CloudFoundryResizeServerGroupModal extends React.Component<
55
65
 
56
66
  private formikRef = React.createRef<Formik<ICloudFoundryResizeServerGroupValues>>();
57
67
 
58
- public static show(props: ICloudFoundryResizeServerGroupModalProps): Promise<ICloudFoundryResizeJob> {
68
+ public static show(
69
+ props: ICloudFoundryResizeServerGroupModalProps,
70
+ runtimeServices: DeckRuntimeServices,
71
+ ): Promise<ICloudFoundryResizeJob> {
59
72
  const modalProps = {};
60
- return ReactModal.show(CloudFoundryResizeServerGroupModal, props, modalProps);
73
+ return ReactModal.show(CloudFoundryResizeServerGroupModal, props, modalProps, runtimeServices);
61
74
  }
62
75
 
63
76
  constructor(props: ICloudFoundryResizeServerGroupModalProps) {
@@ -74,7 +87,7 @@ export class CloudFoundryResizeServerGroupModal extends React.Component<
74
87
  taskMonitor: new TaskMonitor({
75
88
  application: props.application,
76
89
  title: 'Resizing your server group',
77
- modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),
90
+ onDismiss: () => this.props.dismissModal(),
78
91
  onTaskComplete: () => this.props.application.serverGroups.refresh(),
79
92
  }),
80
93
  };
@@ -102,7 +115,7 @@ export class CloudFoundryResizeServerGroupModal extends React.Component<
102
115
  };
103
116
 
104
117
  this.state.taskMonitor.submit(() => {
105
- return ReactInjector.serverGroupWriter.resizeServerGroup(serverGroup, application, command);
118
+ return this.context.services.serverGroupWriter.resizeServerGroup(serverGroup, application, command);
106
119
  });
107
120
  };
108
121
 
@@ -3,12 +3,12 @@ import { Form } from 'formik';
3
3
  import React from 'react';
4
4
  import { Modal, ModalFooter } from 'react-bootstrap';
5
5
 
6
- import type { Application, IModalComponentProps, IServerGroupJob } from '@spinnaker/core';
6
+ import type { Application, DeckRuntimeServices, IModalComponentProps, IServerGroupJob } from '@spinnaker/core';
7
7
  import {
8
+ DeckRuntimeContext,
8
9
  FormikFormField,
9
10
  ModalClose,
10
11
  noop,
11
- ReactInjector,
12
12
  ReactModal,
13
13
  ReactSelectInput,
14
14
  SpinFormik,
@@ -16,6 +16,7 @@ import {
16
16
  TaskMonitorWrapper,
17
17
  TaskReason,
18
18
  } from '@spinnaker/core';
19
+
19
20
  import type { ICloudFoundryServerGroup } from '../../../domain';
20
21
 
21
22
  export interface ICloudFoundryRollbackServerGroupModalProps extends IModalComponentProps {
@@ -49,6 +50,9 @@ export class CloudFoundryRollbackServerGroupModal extends React.Component<
49
50
  ICloudFoundryRollbackServerGroupModalProps,
50
51
  ICloudFoundryRollbackServerGroupModalState
51
52
  > {
53
+ public static contextType = DeckRuntimeContext;
54
+ public declare context: React.ContextType<typeof DeckRuntimeContext>;
55
+
52
56
  public static defaultProps: Partial<ICloudFoundryRollbackServerGroupModalProps> = {
53
57
  closeModal: noop,
54
58
  dismissModal: noop,
@@ -56,9 +60,12 @@ export class CloudFoundryRollbackServerGroupModal extends React.Component<
56
60
 
57
61
  private formikRef = React.createRef<Formik<ICloudFoundryRollbackServerGroupValues>>();
58
62
 
59
- public static show(props: ICloudFoundryRollbackServerGroupModalProps): Promise<ICloudFoundryRollbackJob> {
63
+ public static show(
64
+ props: ICloudFoundryRollbackServerGroupModalProps,
65
+ runtimeServices: DeckRuntimeServices,
66
+ ): Promise<ICloudFoundryRollbackJob> {
60
67
  const modalProps = {};
61
- return ReactModal.show(CloudFoundryRollbackServerGroupModal, props, modalProps);
68
+ return ReactModal.show(CloudFoundryRollbackServerGroupModal, props, modalProps, runtimeServices);
62
69
  }
63
70
 
64
71
  constructor(props: ICloudFoundryRollbackServerGroupModalProps) {
@@ -73,7 +80,7 @@ export class CloudFoundryRollbackServerGroupModal extends React.Component<
73
80
  taskMonitor: new TaskMonitor({
74
81
  application: props.application,
75
82
  title: 'Rollback ' + name,
76
- modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),
83
+ onDismiss: () => this.props.dismissModal(),
77
84
  onTaskComplete: () => this.props.application.serverGroups.refresh(),
78
85
  }),
79
86
  };
@@ -98,7 +105,7 @@ export class CloudFoundryRollbackServerGroupModal extends React.Component<
98
105
  };
99
106
 
100
107
  this.state.taskMonitor.submit(() => {
101
- return ReactInjector.serverGroupWriter.rollbackServerGroup(serverGroup, application, command);
108
+ return this.context.services.serverGroupWriter.rollbackServerGroup(serverGroup, application, command);
102
109
  });
103
110
  };
104
111
 
@@ -3,15 +3,12 @@ import { defaults } from 'lodash';
3
3
  import type { ICloudFoundryEnvVar, ICloudFoundryServerGroup } from '../domain';
4
4
 
5
5
  export class CloudFoundryServerGroupTransformer {
6
- public static $inject = ['$q'];
7
- public constructor(private $q: ng.IQService) {}
8
-
9
6
  public normalizeServerGroupDetails(serverGroup: ICloudFoundryServerGroup): ICloudFoundryServerGroup {
10
7
  return serverGroup;
11
8
  }
12
9
 
13
- public normalizeServerGroup(serverGroup: ICloudFoundryServerGroup): PromiseLike<ICloudFoundryServerGroup> {
14
- return this.$q.resolve(serverGroup);
10
+ public normalizeServerGroup(serverGroup: ICloudFoundryServerGroup): Promise<ICloudFoundryServerGroup> {
11
+ return Promise.resolve(serverGroup);
15
12
  }
16
13
 
17
14
  public convertServerGroupCommandToDeployConfiguration(base: any): any {