@spinnaker/google 2026.3.2 → 2026.4.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 (108) hide show
  1. package/dist/autoscalingPolicy/GceAutoScalingFieldLayout.d.ts +2 -2
  2. package/dist/domain/loadBalancer.d.ts +6 -3
  3. package/dist/image/ImageSelect.d.ts +1 -1
  4. package/dist/index.js +159 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/loadBalancer/configure/common/gceLoadBalancerModels.d.ts +13 -2
  7. package/dist/loadBalancer/configure/http/GceHttpLoadBalancerEditor.d.ts +3 -0
  8. package/dist/loadBalancer/configure/http/GceHttpLoadBalancerModal.d.ts +1 -1
  9. package/dist/loadBalancer/configure/network/GceRegionalExternalNetworkLoadBalancerEditor.d.ts +30 -0
  10. package/dist/loadBalancer/configure/network/GceRegionalExternalNetworkLoadBalancerModal.d.ts +53 -0
  11. package/dist/loadBalancer/httpLoadBalancerUtils.service.d.ts +3 -1
  12. package/dist/serverGroup/configure/wizard/GceCloneServerGroupModal.d.ts +3 -0
  13. package/dist/serverGroup/configure/wizard/GceServerGroupWizard.types.d.ts +1 -0
  14. package/dist/serverGroup/configure/wizard/customInstance/CustomInstanceConfigurer.d.ts +1 -1
  15. package/dist/serverGroup/configure/wizard/customInstance/GceCustomInstanceBuilder.d.ts +2 -2
  16. package/dist/serverGroup/configure/wizard/pages/AdvancedSettings.d.ts +3 -0
  17. package/dist/serverGroup/configure/wizard/pages/GceServerGroupLoadBalancers.d.ts +1 -0
  18. package/dist/serverGroup/configure/wizard/pages/Policies.d.ts +21 -3
  19. package/dist/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.d.ts +1 -0
  20. package/dist/serverGroup/configure/wizard/pages/ServerGroupCapacity.d.ts +1 -0
  21. package/dist/serverGroup/configure/wizard/pages/ServerGroupImageSettings.d.ts +1 -0
  22. package/dist/serverGroup/configure/wizard/pages/ServerGroupInstanceType.d.ts +1 -0
  23. package/dist/serverGroup/configure/wizard/zones/GceInstanceFlexibilityConfigurer.d.ts +2 -2
  24. package/dist/serverGroup/details/GceInstanceFlexibilityPolicyDetails.d.ts +2 -2
  25. package/dist/serverGroup/details/stateful/MarkDiskStatefulButton.d.ts +2 -2
  26. package/dist/serverGroup/details/stateful/UpdateBootImageButton.d.ts +2 -2
  27. package/package.json +5 -5
  28. package/src/autoHealingPolicy/GceAutoHealingPolicyEditor.spec.tsx +68 -52
  29. package/src/autoscalingPolicy/GceAutoscalingPolicyEditor.spec.tsx +43 -50
  30. package/src/autoscalingPolicy/GceAutoscalingPolicyEditor.tsx +1 -1
  31. package/src/autoscalingPolicy/GceAutoscalingPolicyWriter.spec.ts +1 -1
  32. package/src/domain/loadBalancer.ts +6 -3
  33. package/src/gce.module.spec.ts +132 -153
  34. package/src/instance/details/GceInstanceDetails.spec.tsx +86 -83
  35. package/src/loadBalancer/configure/choice/GceLoadBalancerChoiceModal.spec.tsx +162 -121
  36. package/src/loadBalancer/configure/choice/GceLoadBalancerChoiceModal.tsx +13 -1
  37. package/src/loadBalancer/configure/common/GceProxyLoadBalancerEditor.spec.tsx +47 -30
  38. package/src/loadBalancer/configure/common/GceProxyLoadBalancerEditor.tsx +2 -1
  39. package/src/loadBalancer/configure/common/GceProxyLoadBalancerModal.spec.tsx +85 -57
  40. package/src/loadBalancer/configure/common/gceLoadBalancerData.spec.ts +17 -16
  41. package/src/loadBalancer/configure/common/gceLoadBalancerModels.spec.ts +230 -5
  42. package/src/loadBalancer/configure/common/gceLoadBalancerModels.ts +186 -22
  43. package/src/loadBalancer/configure/common/gceLoadBalancerSubmission.spec.ts +298 -2
  44. package/src/loadBalancer/configure/common/gceLoadBalancerSubmission.ts +35 -5
  45. package/src/loadBalancer/configure/common/useGceLoadBalancerData.spec.tsx +37 -46
  46. package/src/loadBalancer/configure/http/GceHttpLoadBalancerEditor.spec.tsx +399 -58
  47. package/src/loadBalancer/configure/http/GceHttpLoadBalancerEditor.tsx +148 -41
  48. package/src/loadBalancer/configure/http/GceHttpLoadBalancerListenerEditor.spec.tsx +169 -36
  49. package/src/loadBalancer/configure/http/GceHttpLoadBalancerListenerEditor.tsx +80 -12
  50. package/src/loadBalancer/configure/http/GceHttpLoadBalancerModal.spec.tsx +224 -124
  51. package/src/loadBalancer/configure/http/GceHttpLoadBalancerModal.tsx +8 -2
  52. package/src/loadBalancer/configure/http/GceHttpLoadBalancerResourceEditors.spec.tsx +57 -22
  53. package/src/loadBalancer/configure/http/GceHttpLoadBalancerResourceEditors.tsx +21 -0
  54. package/src/loadBalancer/configure/http/GceHttpLoadBalancerRoutingEditor.spec.tsx +24 -20
  55. package/src/loadBalancer/configure/network/GceNetworkLoadBalancerEditor.spec.tsx +41 -32
  56. package/src/loadBalancer/configure/network/GceNetworkLoadBalancerModal.spec.tsx +35 -30
  57. package/src/loadBalancer/configure/network/GceRegionalExternalNetworkLoadBalancerEditor.spec.tsx +443 -0
  58. package/src/loadBalancer/configure/network/GceRegionalExternalNetworkLoadBalancerEditor.tsx +401 -0
  59. package/src/loadBalancer/configure/network/GceRegionalExternalNetworkLoadBalancerModal.spec.tsx +330 -0
  60. package/src/loadBalancer/configure/network/GceRegionalExternalNetworkLoadBalancerModal.tsx +348 -0
  61. package/src/loadBalancer/details/gceLoadBalancerDetails.spec.tsx +439 -35
  62. package/src/loadBalancer/details/gceLoadBalancerDetails.tsx +104 -21
  63. package/src/loadBalancer/httpLoadBalancerUtils.service.spec.ts +126 -0
  64. package/src/loadBalancer/httpLoadBalancerUtils.service.ts +27 -11
  65. package/src/loadBalancer/loadBalancer.setTransformer.spec.ts +165 -0
  66. package/src/loadBalancer/loadBalancer.setTransformer.ts +15 -2
  67. package/src/pipeline/stages/googleStageConfig.spec.js +22 -16
  68. package/src/securityGroup/configure/GceSecurityGroupModal.spec.tsx +177 -193
  69. package/src/securityGroup/configure/GceSecurityGroupModal.tsx +14 -2
  70. package/src/securityGroup/details/GceSecurityGroupDetails.spec.tsx +69 -78
  71. package/src/serverGroup/configure/serverGroupCommandBuilder.service.spec.js +35 -15
  72. package/src/serverGroup/configure/serverGroupConfiguration.service.js +7 -1
  73. package/src/serverGroup/configure/serverGroupConfiguration.service.spec.js +74 -4
  74. package/src/serverGroup/configure/wizard/GceCloneServerGroupModal.spec.tsx +593 -855
  75. package/src/serverGroup/configure/wizard/GceCloneServerGroupModal.tsx +120 -38
  76. package/src/serverGroup/configure/wizard/GceServerGroupWizard.types.ts +1 -0
  77. package/src/serverGroup/configure/wizard/GceServerGroupWizardPage.spec.tsx +53 -50
  78. package/src/serverGroup/configure/wizard/customInstance/GceCustomInstanceBuilder.spec.tsx +65 -49
  79. package/src/serverGroup/configure/wizard/hiddenMetadataKeys.value.js +1 -0
  80. package/src/serverGroup/configure/wizard/pages/AdvancedSettings.spec.tsx +101 -108
  81. package/src/serverGroup/configure/wizard/pages/AdvancedSettings.tsx +32 -28
  82. package/src/serverGroup/configure/wizard/pages/GceServerGroupFirewalls.spec.tsx +60 -59
  83. package/src/serverGroup/configure/wizard/pages/GceServerGroupLoadBalancers.spec.tsx +240 -114
  84. package/src/serverGroup/configure/wizard/pages/GceServerGroupLoadBalancers.tsx +152 -63
  85. package/src/serverGroup/configure/wizard/pages/Policies.spec.tsx +93 -48
  86. package/src/serverGroup/configure/wizard/pages/Policies.tsx +80 -55
  87. package/src/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.spec.tsx +123 -94
  88. package/src/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.tsx +24 -18
  89. package/src/serverGroup/configure/wizard/pages/ServerGroupCapacity.spec.tsx +152 -133
  90. package/src/serverGroup/configure/wizard/pages/ServerGroupCapacity.tsx +40 -37
  91. package/src/serverGroup/configure/wizard/pages/ServerGroupImageSettings.spec.tsx +66 -60
  92. package/src/serverGroup/configure/wizard/pages/ServerGroupImageSettings.tsx +8 -2
  93. package/src/serverGroup/configure/wizard/pages/ServerGroupInstanceType.spec.tsx +131 -101
  94. package/src/serverGroup/configure/wizard/pages/ServerGroupInstanceType.tsx +29 -28
  95. package/src/serverGroup/configure/wizard/zones/GceInstanceFlexibilityConfigurer.spec.tsx +104 -81
  96. package/src/serverGroup/details/GceInstanceFlexibilityPolicyDetails.spec.tsx +10 -11
  97. package/src/serverGroup/details/autoHealingPolicy/GceAutoHealingPolicyDetails.spec.tsx +51 -59
  98. package/src/serverGroup/details/autoHealingPolicy/modal/GceUpsertAutoHealingPolicyModal.spec.tsx +3 -3
  99. package/src/serverGroup/details/autoscalingPolicy/GceAutoscalingPolicyDetails.spec.tsx +49 -58
  100. package/src/serverGroup/details/autoscalingPolicy/modal/GceUpsertAutoscalingPolicyModal.spec.tsx +3 -3
  101. package/src/serverGroup/details/gceServerGroupDetails.spec.tsx +162 -141
  102. package/src/serverGroup/details/resize/GceResizeServerGroupModal.spec.tsx +102 -86
  103. package/src/serverGroup/details/resize/GceResizeServerGroupModal.tsx +4 -0
  104. package/src/serverGroup/details/rollback/GceRollbackServerGroupModal.spec.tsx +40 -31
  105. package/src/serverGroup/serverGroup.transformer.js +1 -0
  106. package/src/serverGroup/serverGroup.transformer.spec.js +48 -0
  107. package/src/validation/ApplicationNameValidator.spec.ts +1 -1
  108. /package/dist/{gce.logo2ae85d8704b1d6b8.png → gce.logoChI3w_A5.png} +0 -0
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
- import { shallow } from 'enzyme';
2
+ import { fireEvent, render, screen } from '@testing-library/react';
3
3
 
4
4
  import { GcePredictiveMethod } from './IGceAutoscalingPolicy';
5
5
  import { GceAutoscalingPolicyEditor } from './GceAutoscalingPolicyEditor';
6
6
 
7
7
  describe('GceAutoscalingPolicyEditor', () => {
8
8
  it('renders zero values without replacing them with blanks', () => {
9
- const wrapper = shallow(
9
+ render(
10
10
  <GceAutoscalingPolicyEditor
11
11
  policy={{
12
12
  minNumReplicas: 0,
@@ -18,26 +18,27 @@ describe('GceAutoscalingPolicyEditor', () => {
18
18
  />,
19
19
  );
20
20
 
21
- expect(wrapper.find('[data-testid="minimum-replicas"]').prop('value')).toBe(0);
22
- expect(wrapper.find('[data-testid="cpu-target"]').prop('value')).toBe(0);
23
- expect(wrapper.find('[data-testid="scale-in-maximum"]').prop('value')).toBe(0);
24
- expect(wrapper.find('[data-testid="predictive-autoscaling"]').prop('checked')).toBe(false);
21
+ expect(screen.getByTestId('minimum-replicas')).toHaveValue(0);
22
+ expect(screen.getByTestId('cpu-target')).toHaveValue(0);
23
+ expect(screen.getByTestId('scale-in-maximum')).toHaveValue(0);
24
+ expect(screen.getByTestId('predictive-autoscaling')).not.toBeChecked();
25
25
  });
26
26
 
27
27
  it('keeps the predictive setting behind its feature gate and writes NONE when disabled', () => {
28
- const onChange = jasmine.createSpy('onChange');
28
+ const onChange = vi.fn();
29
29
  const policy = {
30
30
  cpuUtilization: { utilizationTarget: 0.5, predictiveMethod: GcePredictiveMethod.STANDARD },
31
31
  };
32
- const hidden = shallow(
32
+ const hidden = render(
33
33
  <GceAutoscalingPolicyEditor policy={policy} onChange={onChange} predictiveAutoscalingEnabled={false} />,
34
34
  );
35
- expect(hidden.find('[data-testid="predictive-autoscaling"]').exists()).toBe(false);
35
+ expect(hidden.queryByTestId('predictive-autoscaling')).not.toBeInTheDocument();
36
+ hidden.unmount();
36
37
 
37
- const visible = shallow(
38
+ const visible = render(
38
39
  <GceAutoscalingPolicyEditor policy={policy} onChange={onChange} predictiveAutoscalingEnabled={true} />,
39
40
  );
40
- visible.find('[data-testid="predictive-autoscaling"]').simulate('change', { target: { checked: false } });
41
+ fireEvent.click(visible.getByTestId('predictive-autoscaling'));
41
42
 
42
43
  expect(onChange).toHaveBeenCalledWith({
43
44
  cpuUtilization: { utilizationTarget: 0.5, predictiveMethod: GcePredictiveMethod.NONE },
@@ -45,21 +46,21 @@ describe('GceAutoscalingPolicyEditor', () => {
45
46
  });
46
47
 
47
48
  it('edits CPU, HTTP load-balancing, and custom metrics as controlled values', () => {
48
- const onChange = jasmine.createSpy('onChange');
49
+ const onChange = vi.fn();
49
50
  const policy = {
50
51
  cpuUtilization: { utilizationTarget: 0.5 },
51
52
  loadBalancingUtilization: { utilizationTarget: 0.6 },
52
53
  customMetricUtilizations: [{ metric: 'custom.googleapis.com/queue', utilizationTarget: 3 }],
53
54
  };
54
- const wrapper = shallow(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
55
+ render(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
55
56
 
56
- wrapper.find('[data-testid="cpu-target"]').simulate('change', { target: { value: '0' } });
57
+ fireEvent.change(screen.getByTestId('cpu-target'), { target: { value: '0' } });
57
58
  expect(onChange).toHaveBeenCalledWith({ ...policy, cpuUtilization: { utilizationTarget: 0 } });
58
59
 
59
- wrapper.find('[data-testid="http-lb-target"]').simulate('change', { target: { value: '75' } });
60
+ fireEvent.change(screen.getByTestId('http-lb-target'), { target: { value: '75' } });
60
61
  expect(onChange).toHaveBeenCalledWith({ ...policy, loadBalancingUtilization: { utilizationTarget: 0.75 } });
61
62
 
62
- wrapper.find('[data-testid="custom-metric-target-0"]').simulate('change', { target: { value: '0' } });
63
+ fireEvent.change(screen.getByTestId('custom-metric-target-0'), { target: { value: '0' } });
63
64
  expect(onChange).toHaveBeenCalledWith({
64
65
  ...policy,
65
66
  customMetricUtilizations: [{ metric: 'custom.googleapis.com/queue', utilizationTarget: 0 }],
@@ -67,7 +68,7 @@ describe('GceAutoscalingPolicyEditor', () => {
67
68
  });
68
69
 
69
70
  it('clears group-only scaling fields when a custom metric changes to per-instance scope', () => {
70
- const onChange = jasmine.createSpy('onChange');
71
+ const onChange = vi.fn();
71
72
  const policy = {
72
73
  customMetricUtilizations: [
73
74
  {
@@ -78,9 +79,9 @@ describe('GceAutoscalingPolicyEditor', () => {
78
79
  },
79
80
  ],
80
81
  };
81
- const wrapper = shallow(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
82
+ render(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
82
83
 
83
- wrapper.find('[aria-label="Metric export scope"]').simulate('change', {
84
+ fireEvent.change(screen.getByLabelText('Metric export scope'), {
84
85
  target: { value: 'TIME_SERIES_PER_INSTANCE' },
85
86
  });
86
87
 
@@ -95,7 +96,7 @@ describe('GceAutoscalingPolicyEditor', () => {
95
96
  });
96
97
 
97
98
  it('defaults to utilization target when a custom metric changes to group scope', () => {
98
- const onChange = jasmine.createSpy('onChange');
99
+ const onChange = vi.fn();
99
100
  const policy = {
100
101
  customMetricUtilizations: [
101
102
  {
@@ -106,9 +107,9 @@ describe('GceAutoscalingPolicyEditor', () => {
106
107
  },
107
108
  ],
108
109
  };
109
- const wrapper = shallow(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
110
+ render(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
110
111
 
111
- wrapper.find('[aria-label="Metric export scope"]').simulate('change', {
112
+ fireEvent.change(screen.getByLabelText('Metric export scope'), {
112
113
  target: { value: 'SINGLE_TIME_SERIES_PER_GROUP' },
113
114
  });
114
115
 
@@ -126,7 +127,7 @@ describe('GceAutoscalingPolicyEditor', () => {
126
127
  });
127
128
 
128
129
  it('clears single-instance assignment when group scaling switches to utilization target', () => {
129
- const onChange = jasmine.createSpy('onChange');
130
+ const onChange = vi.fn();
130
131
  const policy = {
131
132
  customMetricUtilizations: [
132
133
  {
@@ -137,9 +138,9 @@ describe('GceAutoscalingPolicyEditor', () => {
137
138
  },
138
139
  ],
139
140
  };
140
- const wrapper = shallow(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
141
+ render(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
141
142
 
142
- wrapper.find('[aria-label="Scaling policy"]').simulate('change', { target: { value: 'UTILIZATION_TARGET' } });
143
+ fireEvent.change(screen.getByLabelText('Scaling policy'), { target: { value: 'UTILIZATION_TARGET' } });
143
144
 
144
145
  expect(onChange).toHaveBeenCalledWith({
145
146
  customMetricUtilizations: [
@@ -153,7 +154,7 @@ describe('GceAutoscalingPolicyEditor', () => {
153
154
  });
154
155
 
155
156
  it('clears utilization fields when group scaling switches to single-instance assignment', () => {
156
- const onChange = jasmine.createSpy('onChange');
157
+ const onChange = vi.fn();
157
158
  const policy = {
158
159
  customMetricUtilizations: [
159
160
  {
@@ -165,9 +166,9 @@ describe('GceAutoscalingPolicyEditor', () => {
165
166
  },
166
167
  ],
167
168
  };
168
- const wrapper = shallow(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
169
+ render(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
169
170
 
170
- wrapper.find('[aria-label="Scaling policy"]').simulate('change', {
171
+ fireEvent.change(screen.getByLabelText('Scaling policy'), {
171
172
  target: { value: 'SINGLE_INSTANCE_ASSIGNMENT' },
172
173
  });
173
174
 
@@ -183,33 +184,25 @@ describe('GceAutoscalingPolicyEditor', () => {
183
184
  });
184
185
 
185
186
  it('returns to the add action after a CPU metric is marked for deletion', () => {
186
- const onChange = jasmine.createSpy('onChange');
187
- const wrapper = shallow(
187
+ const onChange = vi.fn();
188
+ const rendered = render(
188
189
  <GceAutoscalingPolicyEditor policy={{ cpuUtilization: { utilizationTarget: 0.5 } }} onChange={onChange} />,
189
190
  );
190
191
 
191
- wrapper
192
- .find('button')
193
- .filterWhere((button) => button.text() === 'Delete CPU metric')
194
- .simulate('click');
192
+ fireEvent.click(screen.getByRole('button', { name: 'Delete CPU metric' }));
195
193
  expect(onChange).toHaveBeenCalledWith({ cpuUtilization: {} });
196
194
 
197
- wrapper.setProps({ policy: { cpuUtilization: {} } });
198
- expect(wrapper.find('[data-testid="cpu-target"]').exists()).toBe(false);
199
- expect(
200
- wrapper
201
- .find('button')
202
- .filterWhere((button) => button.text() === 'Add CPU utilization metric')
203
- .exists(),
204
- ).toBe(true);
195
+ rendered.rerender(<GceAutoscalingPolicyEditor policy={{ cpuUtilization: {} }} onChange={onChange} />);
196
+ expect(screen.queryByTestId('cpu-target')).not.toBeInTheDocument();
197
+ expect(screen.getByRole('button', { name: 'Add CPU utilization metric' })).toBeInTheDocument();
205
198
  });
206
199
 
207
200
  it('switches scale-in units without losing a zero maximum', () => {
208
- const onChange = jasmine.createSpy('onChange');
201
+ const onChange = vi.fn();
209
202
  const policy = { scaleInControl: { maxScaledInReplicas: { percent: 0 }, timeWindowSec: 60 } };
210
- const wrapper = shallow(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
203
+ render(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
211
204
 
212
- wrapper.find('[data-testid="scale-in-unit"]').simulate('change', { target: { value: 'fixed' } });
205
+ fireEvent.change(screen.getByTestId('scale-in-unit'), { target: { value: 'fixed' } });
213
206
 
214
207
  expect(onChange).toHaveBeenCalledWith({
215
208
  scaleInControl: { maxScaledInReplicas: { fixed: 0 }, timeWindowSec: 60 },
@@ -217,7 +210,7 @@ describe('GceAutoscalingPolicyEditor', () => {
217
210
  });
218
211
 
219
212
  it('edits scaling schedules including timezone and preserves disabled schedules', () => {
220
- const onChange = jasmine.createSpy('onChange');
213
+ const onChange = vi.fn();
221
214
  const policy = {
222
215
  scalingSchedules: [
223
216
  {
@@ -228,11 +221,11 @@ describe('GceAutoscalingPolicyEditor', () => {
228
221
  },
229
222
  ],
230
223
  };
231
- const wrapper = shallow(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
224
+ render(<GceAutoscalingPolicyEditor policy={policy} onChange={onChange} />);
232
225
 
233
- expect(wrapper.find('[data-testid="schedule-enabled-0"]').prop('checked')).toBe(false);
234
- expect(wrapper.find('[data-testid="schedule-minimum-0"]').prop('value')).toBe(0);
235
- wrapper.find('[data-testid="schedule-timezone-0"]').simulate('change', { target: { value: 'Europe/Tallinn' } });
226
+ expect(screen.getByTestId('schedule-enabled-0')).not.toBeChecked();
227
+ expect(screen.getByTestId('schedule-minimum-0')).toHaveValue(0);
228
+ fireEvent.change(screen.getByTestId('schedule-timezone-0'), { target: { value: 'Europe/Tallinn' } });
236
229
 
237
230
  expect(onChange).toHaveBeenCalledWith({
238
231
  scalingSchedules: [{ ...policy.scalingSchedules[0], timezone: 'Europe/Tallinn' }],
@@ -9,7 +9,7 @@ import type {
9
9
  IGceScalingSchedule,
10
10
  } from './IGceAutoscalingPolicy';
11
11
  import { GcePredictiveMethod } from './IGceAutoscalingPolicy';
12
- // @ts-ignore JSON imports are bundled by Rollup's JSON plugin.
12
+ // @ts-ignore JSON imports are bundled by Vite.
13
13
  import timezoneData from './components/scalingSchedules/standardTimezone.json';
14
14
  import { GCEProviderSettings } from '../gce.settings';
15
15
 
@@ -13,7 +13,7 @@ describe('GceAutoscalingPolicyWriter', () => {
13
13
  const policy = { minNumReplicas: 0, maxNumReplicas: 5 } as any;
14
14
 
15
15
  beforeEach(() => {
16
- spyOn(TaskExecutor, 'executeTask').and.returnValue(Promise.resolve({}) as any);
16
+ vi.spyOn(TaskExecutor, 'executeTask').mockReturnValue(Promise.resolve({}) as any);
17
17
  });
18
18
 
19
19
  it('upserts an autoscaling policy with the GCE operation contract', () => {
@@ -18,15 +18,16 @@ export interface IGceHttpLoadBalancer extends IGceLoadBalancer {
18
18
  certificateMap?: string;
19
19
  defaultService: IGceBackendService;
20
20
  detail: string;
21
- hostRules: IGceHostRule;
21
+ hostRules: IGceHostRule[];
22
22
  ipAddress: string;
23
23
  listeners: IGceListener[];
24
- loadBalancerType: 'HTTP';
24
+ loadBalancerType: 'HTTP' | 'INTERNAL_MANAGED' | 'EXTERNAL_MANAGED';
25
25
  provider: 'gce';
26
- region: 'global';
26
+ region: string;
27
27
  stack: string;
28
28
  urlMapName: string;
29
29
  subnet?: string;
30
+ networkTier?: string;
30
31
  }
31
32
 
32
33
  export interface IGceHostRule {
@@ -48,4 +49,6 @@ export interface IGceListener {
48
49
  name: string;
49
50
  port: string;
50
51
  ipAddress: string;
52
+ networkTier?: string;
53
+ subnet?: string;
51
54
  }