@spinnaker/google 2026.3.2 → 2026.4.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.
- package/dist/autoscalingPolicy/GceAutoScalingFieldLayout.d.ts +2 -2
- package/dist/domain/loadBalancer.d.ts +6 -3
- package/dist/image/ImageSelect.d.ts +1 -1
- package/dist/index.js +159 -1
- package/dist/index.js.map +1 -1
- package/dist/loadBalancer/configure/common/gceLoadBalancerModels.d.ts +13 -2
- package/dist/loadBalancer/configure/http/GceHttpLoadBalancerEditor.d.ts +3 -0
- package/dist/loadBalancer/configure/http/GceHttpLoadBalancerModal.d.ts +1 -1
- package/dist/loadBalancer/configure/network/GceRegionalExternalNetworkLoadBalancerEditor.d.ts +30 -0
- package/dist/loadBalancer/configure/network/GceRegionalExternalNetworkLoadBalancerModal.d.ts +53 -0
- package/dist/loadBalancer/httpLoadBalancerUtils.service.d.ts +3 -1
- package/dist/serverGroup/configure/wizard/GceCloneServerGroupModal.d.ts +3 -0
- package/dist/serverGroup/configure/wizard/GceServerGroupWizard.types.d.ts +1 -0
- package/dist/serverGroup/configure/wizard/customInstance/CustomInstanceConfigurer.d.ts +1 -1
- package/dist/serverGroup/configure/wizard/customInstance/GceCustomInstanceBuilder.d.ts +2 -2
- package/dist/serverGroup/configure/wizard/pages/AdvancedSettings.d.ts +3 -0
- package/dist/serverGroup/configure/wizard/pages/GceServerGroupLoadBalancers.d.ts +1 -0
- package/dist/serverGroup/configure/wizard/pages/Policies.d.ts +21 -3
- package/dist/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.d.ts +1 -0
- package/dist/serverGroup/configure/wizard/pages/ServerGroupCapacity.d.ts +1 -0
- package/dist/serverGroup/configure/wizard/pages/ServerGroupImageSettings.d.ts +1 -0
- package/dist/serverGroup/configure/wizard/pages/ServerGroupInstanceType.d.ts +1 -0
- package/dist/serverGroup/configure/wizard/zones/GceInstanceFlexibilityConfigurer.d.ts +2 -2
- package/dist/serverGroup/details/GceInstanceFlexibilityPolicyDetails.d.ts +2 -2
- package/dist/serverGroup/details/stateful/MarkDiskStatefulButton.d.ts +2 -2
- package/dist/serverGroup/details/stateful/UpdateBootImageButton.d.ts +2 -2
- package/package.json +5 -5
- package/src/autoHealingPolicy/GceAutoHealingPolicyEditor.spec.tsx +68 -52
- package/src/autoscalingPolicy/GceAutoscalingPolicyEditor.spec.tsx +43 -50
- package/src/autoscalingPolicy/GceAutoscalingPolicyEditor.tsx +1 -1
- package/src/autoscalingPolicy/GceAutoscalingPolicyWriter.spec.ts +1 -1
- package/src/domain/loadBalancer.ts +6 -3
- package/src/gce.module.spec.ts +132 -153
- package/src/instance/details/GceInstanceDetails.spec.tsx +86 -83
- package/src/loadBalancer/configure/choice/GceLoadBalancerChoiceModal.spec.tsx +162 -121
- package/src/loadBalancer/configure/choice/GceLoadBalancerChoiceModal.tsx +13 -1
- package/src/loadBalancer/configure/common/GceProxyLoadBalancerEditor.spec.tsx +47 -30
- package/src/loadBalancer/configure/common/GceProxyLoadBalancerEditor.tsx +2 -1
- package/src/loadBalancer/configure/common/GceProxyLoadBalancerModal.spec.tsx +85 -57
- package/src/loadBalancer/configure/common/gceLoadBalancerData.spec.ts +17 -16
- package/src/loadBalancer/configure/common/gceLoadBalancerModels.spec.ts +230 -5
- package/src/loadBalancer/configure/common/gceLoadBalancerModels.ts +186 -22
- package/src/loadBalancer/configure/common/gceLoadBalancerSubmission.spec.ts +298 -2
- package/src/loadBalancer/configure/common/gceLoadBalancerSubmission.ts +35 -5
- package/src/loadBalancer/configure/common/useGceLoadBalancerData.spec.tsx +37 -46
- package/src/loadBalancer/configure/http/GceHttpLoadBalancerEditor.spec.tsx +399 -58
- package/src/loadBalancer/configure/http/GceHttpLoadBalancerEditor.tsx +148 -41
- package/src/loadBalancer/configure/http/GceHttpLoadBalancerListenerEditor.spec.tsx +169 -36
- package/src/loadBalancer/configure/http/GceHttpLoadBalancerListenerEditor.tsx +80 -12
- package/src/loadBalancer/configure/http/GceHttpLoadBalancerModal.spec.tsx +224 -124
- package/src/loadBalancer/configure/http/GceHttpLoadBalancerModal.tsx +8 -2
- package/src/loadBalancer/configure/http/GceHttpLoadBalancerResourceEditors.spec.tsx +57 -22
- package/src/loadBalancer/configure/http/GceHttpLoadBalancerResourceEditors.tsx +21 -0
- package/src/loadBalancer/configure/http/GceHttpLoadBalancerRoutingEditor.spec.tsx +24 -20
- package/src/loadBalancer/configure/network/GceNetworkLoadBalancerEditor.spec.tsx +41 -32
- package/src/loadBalancer/configure/network/GceNetworkLoadBalancerModal.spec.tsx +35 -30
- package/src/loadBalancer/configure/network/GceRegionalExternalNetworkLoadBalancerEditor.spec.tsx +443 -0
- package/src/loadBalancer/configure/network/GceRegionalExternalNetworkLoadBalancerEditor.tsx +401 -0
- package/src/loadBalancer/configure/network/GceRegionalExternalNetworkLoadBalancerModal.spec.tsx +330 -0
- package/src/loadBalancer/configure/network/GceRegionalExternalNetworkLoadBalancerModal.tsx +348 -0
- package/src/loadBalancer/details/gceLoadBalancerDetails.spec.tsx +439 -35
- package/src/loadBalancer/details/gceLoadBalancerDetails.tsx +104 -21
- package/src/loadBalancer/httpLoadBalancerUtils.service.spec.ts +126 -0
- package/src/loadBalancer/httpLoadBalancerUtils.service.ts +27 -11
- package/src/loadBalancer/loadBalancer.setTransformer.spec.ts +165 -0
- package/src/loadBalancer/loadBalancer.setTransformer.ts +15 -2
- package/src/pipeline/stages/googleStageConfig.spec.js +22 -16
- package/src/securityGroup/configure/GceSecurityGroupModal.spec.tsx +177 -193
- package/src/securityGroup/configure/GceSecurityGroupModal.tsx +14 -2
- package/src/securityGroup/details/GceSecurityGroupDetails.spec.tsx +69 -78
- package/src/serverGroup/configure/serverGroupCommandBuilder.service.spec.js +35 -15
- package/src/serverGroup/configure/serverGroupConfiguration.service.js +7 -1
- package/src/serverGroup/configure/serverGroupConfiguration.service.spec.js +74 -4
- package/src/serverGroup/configure/wizard/GceCloneServerGroupModal.spec.tsx +593 -855
- package/src/serverGroup/configure/wizard/GceCloneServerGroupModal.tsx +120 -38
- package/src/serverGroup/configure/wizard/GceServerGroupWizard.types.ts +1 -0
- package/src/serverGroup/configure/wizard/GceServerGroupWizardPage.spec.tsx +53 -50
- package/src/serverGroup/configure/wizard/customInstance/GceCustomInstanceBuilder.spec.tsx +65 -49
- package/src/serverGroup/configure/wizard/hiddenMetadataKeys.value.js +1 -0
- package/src/serverGroup/configure/wizard/pages/AdvancedSettings.spec.tsx +101 -108
- package/src/serverGroup/configure/wizard/pages/AdvancedSettings.tsx +32 -28
- package/src/serverGroup/configure/wizard/pages/GceServerGroupFirewalls.spec.tsx +60 -59
- package/src/serverGroup/configure/wizard/pages/GceServerGroupLoadBalancers.spec.tsx +240 -114
- package/src/serverGroup/configure/wizard/pages/GceServerGroupLoadBalancers.tsx +152 -63
- package/src/serverGroup/configure/wizard/pages/Policies.spec.tsx +93 -48
- package/src/serverGroup/configure/wizard/pages/Policies.tsx +80 -55
- package/src/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.spec.tsx +123 -94
- package/src/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.tsx +24 -18
- package/src/serverGroup/configure/wizard/pages/ServerGroupCapacity.spec.tsx +152 -133
- package/src/serverGroup/configure/wizard/pages/ServerGroupCapacity.tsx +40 -37
- package/src/serverGroup/configure/wizard/pages/ServerGroupImageSettings.spec.tsx +66 -60
- package/src/serverGroup/configure/wizard/pages/ServerGroupImageSettings.tsx +8 -2
- package/src/serverGroup/configure/wizard/pages/ServerGroupInstanceType.spec.tsx +131 -101
- package/src/serverGroup/configure/wizard/pages/ServerGroupInstanceType.tsx +29 -28
- package/src/serverGroup/configure/wizard/zones/GceInstanceFlexibilityConfigurer.spec.tsx +104 -81
- package/src/serverGroup/details/GceInstanceFlexibilityPolicyDetails.spec.tsx +10 -11
- package/src/serverGroup/details/autoHealingPolicy/GceAutoHealingPolicyDetails.spec.tsx +51 -59
- package/src/serverGroup/details/autoHealingPolicy/modal/GceUpsertAutoHealingPolicyModal.spec.tsx +3 -3
- package/src/serverGroup/details/autoscalingPolicy/GceAutoscalingPolicyDetails.spec.tsx +49 -58
- package/src/serverGroup/details/autoscalingPolicy/modal/GceUpsertAutoscalingPolicyModal.spec.tsx +3 -3
- package/src/serverGroup/details/gceServerGroupDetails.spec.tsx +162 -141
- package/src/serverGroup/details/resize/GceResizeServerGroupModal.spec.tsx +102 -86
- package/src/serverGroup/details/resize/GceResizeServerGroupModal.tsx +4 -0
- package/src/serverGroup/details/rollback/GceRollbackServerGroupModal.spec.tsx +40 -31
- package/src/serverGroup/serverGroup.transformer.js +1 -0
- package/src/serverGroup/serverGroup.transformer.spec.js +48 -0
- package/src/validation/ApplicationNameValidator.spec.ts +1 -1
- /package/dist/{gce.logo2ae85d8704b1d6b8.png → gce.logoChI3w_A5.png} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const GCE_LOAD_BALANCER_TYPES: readonly ["NETWORK", "INTERNAL", "TCP", "SSL", "HTTP", "INTERNAL_MANAGED"];
|
|
1
|
+
export declare const GCE_LOAD_BALANCER_TYPES: readonly ["NETWORK", "INTERNAL", "TCP", "SSL", "HTTP", "INTERNAL_MANAGED", "EXTERNAL_MANAGED", "REGIONAL_EXTERNAL_NETWORK"];
|
|
2
2
|
export type GceLoadBalancerType = typeof GCE_LOAD_BALANCER_TYPES[number];
|
|
3
3
|
export type GceLoadBalancerEditorMode = 'create' | 'edit' | 'pipeline';
|
|
4
4
|
export type GceLoadBalancerProtocol = 'TCP' | 'UDP' | 'HTTP' | 'HTTPS' | 'HTTP2' | 'GRPC' | 'SSL';
|
|
@@ -24,6 +24,7 @@ export interface IGceLoadBalancerListener {
|
|
|
24
24
|
address?: IGceResourceReference;
|
|
25
25
|
certificate?: IGceResourceReference;
|
|
26
26
|
certificateMap?: string;
|
|
27
|
+
networkTier?: string;
|
|
27
28
|
subnet?: IGceResourceReference;
|
|
28
29
|
}
|
|
29
30
|
export interface IGceLoadBalancerHealthCheck {
|
|
@@ -33,7 +34,7 @@ export interface IGceLoadBalancerHealthCheck {
|
|
|
33
34
|
healthyThreshold?: number;
|
|
34
35
|
host?: string;
|
|
35
36
|
name?: string;
|
|
36
|
-
port?: number;
|
|
37
|
+
port?: number | string;
|
|
37
38
|
proxyHeader?: string;
|
|
38
39
|
requestPath?: string;
|
|
39
40
|
timeoutSec?: number;
|
|
@@ -42,8 +43,15 @@ export interface IGceLoadBalancerHealthCheck {
|
|
|
42
43
|
[key: string]: unknown;
|
|
43
44
|
}
|
|
44
45
|
export interface IGceLoadBalancerBackendService {
|
|
46
|
+
affinityCookieTtlSec?: number;
|
|
47
|
+
backends?: unknown[];
|
|
48
|
+
connectionDrainingTimeoutSec?: number;
|
|
49
|
+
enableCDN?: boolean;
|
|
45
50
|
name: string;
|
|
46
51
|
healthCheck?: IGceResourceReference;
|
|
52
|
+
portName?: string;
|
|
53
|
+
protocol?: GceLoadBalancerProtocol;
|
|
54
|
+
sessionAffinity?: string;
|
|
47
55
|
[key: string]: unknown;
|
|
48
56
|
}
|
|
49
57
|
export interface IGceLoadBalancerPathRule {
|
|
@@ -76,6 +84,7 @@ interface IGceLoadBalancerCommandBase {
|
|
|
76
84
|
defaultService?: IGceResourceReference;
|
|
77
85
|
network?: IGceResourceReference;
|
|
78
86
|
original?: IGceLoadBalancerOriginalState;
|
|
87
|
+
networkTier?: string;
|
|
79
88
|
subnet?: IGceResourceReference;
|
|
80
89
|
}
|
|
81
90
|
export interface IGceCreateLoadBalancerCommand extends IGceLoadBalancerCommandBase {
|
|
@@ -103,4 +112,6 @@ type UnknownRecord = Record<string, unknown>;
|
|
|
103
112
|
export declare function normalizeGceLoadBalancerCommand(persisted: UnknownRecord, mode: GceLoadBalancerEditorMode): IGceLoadBalancerCommand;
|
|
104
113
|
export declare function serializeGceLoadBalancerCommand(command: IGceLoadBalancerCommand): IGceSerializedLoadBalancerCommand;
|
|
105
114
|
export declare function normalizeGceHealthCheck(value: unknown): IGceLoadBalancerHealthCheck;
|
|
115
|
+
export declare function serializeGceBackendService(service: IGceLoadBalancerBackendService): UnknownRecord;
|
|
116
|
+
export declare function serializeGceHealthCheck(healthCheck: IGceLoadBalancerHealthCheck): UnknownRecord;
|
|
106
117
|
export {};
|
|
@@ -8,8 +8,11 @@ export interface IGceHttpLoadBalancerEditorProps {
|
|
|
8
8
|
}
|
|
9
9
|
interface IGceHttpLoadBalancerDataItem extends IGceLoadBalancerDataItem {
|
|
10
10
|
account?: string;
|
|
11
|
+
address?: string;
|
|
12
|
+
addressType?: string;
|
|
11
13
|
id?: string;
|
|
12
14
|
network?: string;
|
|
15
|
+
purpose?: string;
|
|
13
16
|
region?: string;
|
|
14
17
|
}
|
|
15
18
|
export declare function FormRow({ children, label }: {
|
|
@@ -12,7 +12,7 @@ export interface IGceHttpLoadBalancerModalProps extends IModalComponentProps {
|
|
|
12
12
|
forPipelineConfig?: boolean;
|
|
13
13
|
isNew?: boolean;
|
|
14
14
|
loadBalancer?: Record<string, unknown>;
|
|
15
|
-
loadBalancerType?: Extract<GceLoadBalancerType, 'HTTP' | 'INTERNAL_MANAGED'>;
|
|
15
|
+
loadBalancerType?: Extract<GceLoadBalancerType, 'HTTP' | 'INTERNAL_MANAGED' | 'EXTERNAL_MANAGED'>;
|
|
16
16
|
mode?: GceLoadBalancerEditorMode;
|
|
17
17
|
}
|
|
18
18
|
interface IGceHttpLoadBalancerModalState extends IGceLoadBalancerDataState {
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { IGceLoadBalancerCommand, IGceLoadBalancerData, IGceLoadBalancerDataItem, IGceLoadBalancerHealthCheck } from '../common';
|
|
3
|
+
export type GceRegionalExternalNetworkSessionAffinity = 'NONE' | 'CLIENT_IP' | 'CLIENT_IP_PROTO' | 'CLIENT_IP_PORT_PROTO';
|
|
4
|
+
export type IGceRegionalExternalNetworkLoadBalancerCommand = IGceLoadBalancerCommand & {
|
|
5
|
+
loadBalancerType: 'REGIONAL_EXTERNAL_NETWORK';
|
|
6
|
+
ports: string[];
|
|
7
|
+
};
|
|
8
|
+
interface IGceRegionalExternalNetworkDataItem extends IGceLoadBalancerDataItem {
|
|
9
|
+
account?: string;
|
|
10
|
+
address?: string;
|
|
11
|
+
addressType?: string;
|
|
12
|
+
credentials?: string;
|
|
13
|
+
networkTier?: string;
|
|
14
|
+
region?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface IGceRegionalExternalNetworkLoadBalancerOptions {
|
|
17
|
+
accounts: IGceRegionalExternalNetworkDataItem[];
|
|
18
|
+
addresses: IGceRegionalExternalNetworkDataItem[];
|
|
19
|
+
regions: IGceRegionalExternalNetworkDataItem[];
|
|
20
|
+
}
|
|
21
|
+
export interface IGceRegionalExternalNetworkLoadBalancerEditorProps {
|
|
22
|
+
command: IGceRegionalExternalNetworkLoadBalancerCommand;
|
|
23
|
+
data: IGceLoadBalancerData;
|
|
24
|
+
onChange: (command: IGceRegionalExternalNetworkLoadBalancerCommand) => void;
|
|
25
|
+
}
|
|
26
|
+
export declare function createGceRegionalExternalNetworkHealthCheck(name: string): IGceLoadBalancerHealthCheck;
|
|
27
|
+
export declare function buildGceRegionalExternalNetworkLoadBalancerOptions(command: IGceRegionalExternalNetworkLoadBalancerCommand, data: IGceLoadBalancerData): IGceRegionalExternalNetworkLoadBalancerOptions;
|
|
28
|
+
export declare function validateGceRegionalExternalNetworkLoadBalancerCommand(command: IGceRegionalExternalNetworkLoadBalancerCommand): string[];
|
|
29
|
+
export declare function GceRegionalExternalNetworkLoadBalancerEditor({ command, data, onChange, }: IGceRegionalExternalNetworkLoadBalancerEditorProps): JSX.Element;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Application, IModalComponentProps, ITask, ITaskCommand } from '@spinnaker/core';
|
|
3
|
+
import { TaskMonitor } from '@spinnaker/core';
|
|
4
|
+
import type { IGceRegionalExternalNetworkLoadBalancerCommand } from './GceRegionalExternalNetworkLoadBalancerEditor';
|
|
5
|
+
import type { GceLoadBalancerEditorMode, IGceLoadBalancerData, IGceLoadBalancerDataReaders, IGceLoadBalancerDataState, IGceSerializedLoadBalancerCommand } from '../common';
|
|
6
|
+
type UnknownRecord = Record<string, any>;
|
|
7
|
+
export interface IGceRegionalExternalNetworkLoadBalancerPayload extends IGceSerializedLoadBalancerCommand {
|
|
8
|
+
backendService: UnknownRecord;
|
|
9
|
+
ipAddress?: string;
|
|
10
|
+
ipProtocol: string;
|
|
11
|
+
networkTier?: string;
|
|
12
|
+
ports: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface IGceRegionalExternalNetworkLoadBalancerModalProps extends IModalComponentProps {
|
|
15
|
+
app?: Application;
|
|
16
|
+
application?: Application;
|
|
17
|
+
credentials?: string;
|
|
18
|
+
data?: IGceLoadBalancerData;
|
|
19
|
+
dataReaders?: IGceLoadBalancerDataReaders;
|
|
20
|
+
executeTask?: (taskCommand: ITaskCommand) => PromiseLike<ITask>;
|
|
21
|
+
forPipelineConfig?: boolean;
|
|
22
|
+
isNew?: boolean;
|
|
23
|
+
loadBalancer?: UnknownRecord;
|
|
24
|
+
mode?: GceLoadBalancerEditorMode;
|
|
25
|
+
}
|
|
26
|
+
interface IGceRegionalExternalNetworkLoadBalancerModalState extends IGceLoadBalancerDataState {
|
|
27
|
+
command: IGceRegionalExternalNetworkLoadBalancerCommand;
|
|
28
|
+
taskMonitor: TaskMonitor;
|
|
29
|
+
}
|
|
30
|
+
interface IGceRegionalExternalNetworkSubmissionDependencies {
|
|
31
|
+
application: Application;
|
|
32
|
+
executeTask?: (taskCommand: ITaskCommand) => PromiseLike<ITask>;
|
|
33
|
+
}
|
|
34
|
+
export declare function normalizeGceRegionalExternalNetworkLoadBalancerCommand(persisted: UnknownRecord | null | undefined, mode: GceLoadBalancerEditorMode, applicationName?: string, defaults?: Partial<Record<'credentials' | 'region', unknown>>): IGceRegionalExternalNetworkLoadBalancerCommand;
|
|
35
|
+
export declare function serializeGceRegionalExternalNetworkLoadBalancerCommand(command: IGceRegionalExternalNetworkLoadBalancerCommand): IGceRegionalExternalNetworkLoadBalancerPayload;
|
|
36
|
+
export declare function submitGceRegionalExternalNetworkLoadBalancerCommand(command: IGceRegionalExternalNetworkLoadBalancerCommand, { application, executeTask }: IGceRegionalExternalNetworkSubmissionDependencies): IGceRegionalExternalNetworkLoadBalancerPayload | Promise<ITask>;
|
|
37
|
+
declare class GceRegionalExternalNetworkLoadBalancerModalComponent extends React.Component<IGceRegionalExternalNetworkLoadBalancerModalProps, IGceRegionalExternalNetworkLoadBalancerModalState> {
|
|
38
|
+
private dataController?;
|
|
39
|
+
private unsubscribe?;
|
|
40
|
+
constructor(props: IGceRegionalExternalNetworkLoadBalancerModalProps);
|
|
41
|
+
componentDidMount(): void;
|
|
42
|
+
componentWillUnmount(): void;
|
|
43
|
+
render(): JSX.Element;
|
|
44
|
+
private application;
|
|
45
|
+
private mode;
|
|
46
|
+
private updateCommand;
|
|
47
|
+
private submit;
|
|
48
|
+
}
|
|
49
|
+
export declare const GceRegionalExternalNetworkLoadBalancerModal: typeof GceRegionalExternalNetworkLoadBalancerModalComponent & {
|
|
50
|
+
show: (props: IGceRegionalExternalNetworkLoadBalancerModalProps) => Promise<any>;
|
|
51
|
+
supportsPipelineConfig: boolean;
|
|
52
|
+
};
|
|
53
|
+
export {};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { IGceHttpLoadBalancer, IGceLoadBalancer } from '../domain/loadBalancer';
|
|
2
2
|
export declare class GceHttpLoadBalancerUtils {
|
|
3
3
|
static REGION: string;
|
|
4
|
+
static HTTP_LOAD_BALANCER_TYPES: string[];
|
|
4
5
|
isHttpLoadBalancer(lb: IGceLoadBalancer): lb is IGceHttpLoadBalancer;
|
|
5
|
-
|
|
6
|
+
isRegionalHttpLoadBalancer(lb: IGceLoadBalancer): lb is IGceHttpLoadBalancer;
|
|
7
|
+
normalizeLoadBalancerNamesForAccount(loadBalancerNames: string[], account: string, loadBalancers: IGceLoadBalancer[], region?: string): string[];
|
|
6
8
|
}
|
|
@@ -31,6 +31,7 @@ export declare class GceCloneServerGroupModalComponent extends React.Component<I
|
|
|
31
31
|
static show(props: IGceCloneServerGroupModalProps, runtimeServices: DeckRuntimeServices): Promise<any>;
|
|
32
32
|
constructor(props: IGceCloneServerGroupModalProps & IRouterInjectedProps, context: React.ContextType<typeof DeckRuntimeContext>);
|
|
33
33
|
componentDidMount(): void;
|
|
34
|
+
componentDidUpdate(previousProps: IGceCloneServerGroupModalProps & IRouterInjectedProps): void;
|
|
34
35
|
componentWillUnmount(): void;
|
|
35
36
|
private configureCommand;
|
|
36
37
|
private retryConfiguration;
|
|
@@ -46,4 +47,6 @@ export declare const GceCloneServerGroupModal: React.ForwardRefExoticComponent<O
|
|
|
46
47
|
} & React.RefAttributes<any>> & {
|
|
47
48
|
show: typeof GceCloneServerGroupModalComponent.show;
|
|
48
49
|
};
|
|
50
|
+
export declare function reconcileGceServerGroupCommand(persistedCommand: IGceServerGroupCommand, configuredCommand: IGceServerGroupCommand): IGceServerGroupCommand;
|
|
51
|
+
export declare function initializePipelineCreateCommand(baseCommand: IGceServerGroupCommand, placeholder: IGceServerGroupCommand): IGceServerGroupCommand;
|
|
49
52
|
export {};
|
|
@@ -17,7 +17,7 @@ export interface ICustomInstanceConfigurerProps {
|
|
|
17
17
|
onChange: (config: ICustomInstanceConfig) => void;
|
|
18
18
|
}
|
|
19
19
|
export declare class CustomInstanceConfigurer extends React.Component<ICustomInstanceConfigurerProps> {
|
|
20
|
-
render(): JSX.Element;
|
|
20
|
+
render(): React.JSX.Element;
|
|
21
21
|
private handleVCpuChange;
|
|
22
22
|
private handleMemoryChange;
|
|
23
23
|
private handleInstanceFamilyChange;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import type { ICustomInstanceBuilderProps } from '@spinnaker/core';
|
|
3
|
-
export declare function GceCustomInstanceBuilder({ command, onTypeChanged }: ICustomInstanceBuilderProps): JSX.Element;
|
|
3
|
+
export declare function GceCustomInstanceBuilder({ command, onTypeChanged }: ICustomInstanceBuilderProps): React.JSX.Element;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { IGceServerGroupCommand, IGceServerGroupCommandValidationErrors, IGceServerGroupWizardPageProps } from '../GceServerGroupWizard.types';
|
|
3
3
|
import { GceServerGroupWizardPage } from '../GceServerGroupWizardPage';
|
|
4
|
+
export declare function validateGceServerGroupLoadBalancers(values: IGceServerGroupCommand): IGceServerGroupCommandValidationErrors;
|
|
4
5
|
export declare class GceServerGroupLoadBalancers extends GceServerGroupWizardPage<IGceServerGroupWizardPageProps> {
|
|
5
6
|
validate(values: IGceServerGroupCommand): IGceServerGroupCommandValidationErrors;
|
|
6
7
|
render(): React.ReactElement;
|
|
@@ -1,10 +1,26 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { IGceServerGroupCommand } from '../GceServerGroupWizard.types';
|
|
3
3
|
import { GceServerGroupWizardPage } from '../GceServerGroupWizardPage';
|
|
4
|
+
interface IAutoscalingPolicyValidationErrors {
|
|
5
|
+
coolDownPeriodSec?: string;
|
|
6
|
+
maxNumReplicas?: string;
|
|
7
|
+
metric?: string;
|
|
8
|
+
minNumReplicas?: string;
|
|
9
|
+
predictiveAutoscaling?: string;
|
|
10
|
+
scaleInControl?: string;
|
|
11
|
+
scalingSchedules?: string;
|
|
12
|
+
}
|
|
13
|
+
interface IAutoHealingPolicyValidationErrors {
|
|
14
|
+
healthCheck?: string;
|
|
15
|
+
healthCheckKind?: string;
|
|
16
|
+
initialDelaySec?: string;
|
|
17
|
+
}
|
|
18
|
+
interface IPoliciesValidationErrors {
|
|
19
|
+
autoHealingPolicy?: IAutoHealingPolicyValidationErrors;
|
|
20
|
+
autoscalingPolicy?: IAutoscalingPolicyValidationErrors;
|
|
21
|
+
}
|
|
4
22
|
export declare class Policies extends GceServerGroupWizardPage {
|
|
5
|
-
validate(values: IGceServerGroupCommand):
|
|
6
|
-
[key: string]: any;
|
|
7
|
-
};
|
|
23
|
+
validate(values: IGceServerGroupCommand): IPoliciesValidationErrors;
|
|
8
24
|
private setField;
|
|
9
25
|
private toggleAutoscaling;
|
|
10
26
|
private setAutoscalingPolicy;
|
|
@@ -12,3 +28,5 @@ export declare class Policies extends GceServerGroupWizardPage {
|
|
|
12
28
|
private filteredHealthCheckReader;
|
|
13
29
|
render(): JSX.Element;
|
|
14
30
|
}
|
|
31
|
+
export declare function validateGceServerGroupPolicies(values: IGceServerGroupCommand): IPoliciesValidationErrors;
|
|
32
|
+
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { IGceServerGroupCommand, IGceServerGroupCommandValidationErrors } from '../GceServerGroupWizard.types';
|
|
3
3
|
import { GceServerGroupWizardPage } from '../GceServerGroupWizardPage';
|
|
4
|
+
export declare function validateGceServerGroupBasicSettings(values: IGceServerGroupCommand): IGceServerGroupCommandValidationErrors;
|
|
4
5
|
export declare class ServerGroupBasicSettings extends GceServerGroupWizardPage {
|
|
5
6
|
validate(values: IGceServerGroupCommand): IGceServerGroupCommandValidationErrors;
|
|
6
7
|
private parentChanged;
|
|
@@ -16,6 +16,7 @@ interface ICapacityValidationErrors {
|
|
|
16
16
|
instanceFlexibilityPolicy?: string;
|
|
17
17
|
zone?: string;
|
|
18
18
|
}
|
|
19
|
+
export declare function validateGceServerGroupCapacity(values: IGceServerGroupCommand): ICapacityValidationErrors;
|
|
19
20
|
export declare class ServerGroupCapacity extends GceServerGroupWizardPage {
|
|
20
21
|
validate(values: IGceServerGroupCommand): ICapacityValidationErrors;
|
|
21
22
|
private commandChanged;
|
|
@@ -9,3 +9,4 @@ export declare class ServerGroupImageSettings extends GceServerGroupWizardPage {
|
|
|
9
9
|
private renderImageSelect;
|
|
10
10
|
render(): JSX.Element;
|
|
11
11
|
}
|
|
12
|
+
export declare function validateGceServerGroupImageSettings(values: IGceServerGroupCommand): IGceServerGroupCommandValidationErrors;
|
|
@@ -7,6 +7,7 @@ interface IGceInstanceTypeValidationErrors {
|
|
|
7
7
|
disks?: string;
|
|
8
8
|
instanceType?: string;
|
|
9
9
|
}
|
|
10
|
+
export declare function validateGceServerGroupInstanceType(values: IGceServerGroupCommand): IGceInstanceTypeValidationErrors;
|
|
10
11
|
export declare class ServerGroupInstanceType extends GceServerGroupWizardPage {
|
|
11
12
|
static contextType: React.Context<import("@spinnaker/core").DeckRuntimeContextValue>;
|
|
12
13
|
context: React.ContextType<typeof DeckRuntimeContext>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import type { IGceInstanceFlexibilityPolicy } from '../../../../domain/serverGroup';
|
|
3
3
|
export interface IGceInstanceFlexibilityConfigurerProps {
|
|
4
4
|
instanceFlexibilityPolicy?: IGceInstanceFlexibilityPolicy;
|
|
@@ -9,7 +9,7 @@ export interface IGceInstanceFlexibilityConfigurerProps {
|
|
|
9
9
|
}
|
|
10
10
|
/** First unused selection-N name so rename/remove cannot overwrite an existing entry. */
|
|
11
11
|
export declare function nextSelectionName(existingNames: string[]): string;
|
|
12
|
-
export declare function GceInstanceFlexibilityConfigurer({ instanceFlexibilityPolicy, regional, targetShape: targetShapeProp, validationError, setInstanceFlexibilityPolicy, }: IGceInstanceFlexibilityConfigurerProps): JSX.Element;
|
|
12
|
+
export declare function GceInstanceFlexibilityConfigurer({ instanceFlexibilityPolicy, regional, targetShape: targetShapeProp, validationError, setInstanceFlexibilityPolicy, }: IGceInstanceFlexibilityConfigurerProps): React.JSX.Element;
|
|
13
13
|
export declare function hasValidFlexibilityPolicy(command: {
|
|
14
14
|
regional?: boolean;
|
|
15
15
|
distributionPolicy?: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import type { IGceInstanceFlexibilityPolicy } from '../../domain/serverGroup';
|
|
3
3
|
export interface IGceInstanceFlexibilityPolicyDetailsProps {
|
|
4
4
|
instanceFlexibilityPolicy?: IGceInstanceFlexibilityPolicy;
|
|
5
5
|
}
|
|
6
|
-
export declare function GceInstanceFlexibilityPolicyDetails({ instanceFlexibilityPolicy, }: IGceInstanceFlexibilityPolicyDetailsProps): JSX.Element;
|
|
6
|
+
export declare function GceInstanceFlexibilityPolicyDetails({ instanceFlexibilityPolicy, }: IGceInstanceFlexibilityPolicyDetailsProps): React.JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import type { Application } from '@spinnaker/core';
|
|
3
3
|
import type { IGceServerGroup } from '../../../domain';
|
|
4
4
|
interface IMarkDiskStatefulButtonProps {
|
|
@@ -6,5 +6,5 @@ interface IMarkDiskStatefulButtonProps {
|
|
|
6
6
|
deviceName: string;
|
|
7
7
|
serverGroup: IGceServerGroup;
|
|
8
8
|
}
|
|
9
|
-
export declare function MarkDiskStatefulButton({ application, deviceName, serverGroup }: IMarkDiskStatefulButtonProps): JSX.Element;
|
|
9
|
+
export declare function MarkDiskStatefulButton({ application, deviceName, serverGroup }: IMarkDiskStatefulButtonProps): React.JSX.Element;
|
|
10
10
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import type { Application } from '@spinnaker/core';
|
|
3
3
|
import type { IGceServerGroup } from '../../../domain';
|
|
4
4
|
interface IUpdateBootImageButtonProps {
|
|
@@ -6,5 +6,5 @@ interface IUpdateBootImageButtonProps {
|
|
|
6
6
|
bootImage: string;
|
|
7
7
|
serverGroup: IGceServerGroup;
|
|
8
8
|
}
|
|
9
|
-
export declare function UpdateBootImageButton(props: IUpdateBootImageButtonProps): JSX.Element;
|
|
9
|
+
export declare function UpdateBootImageButton(props: IUpdateBootImageButtonProps): React.JSX.Element;
|
|
10
10
|
export {};
|
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.
|
|
8
|
+
"version": "2026.4.1",
|
|
9
9
|
"module": "dist/index.js",
|
|
10
10
|
"typings": "dist/index.d.ts",
|
|
11
11
|
"publishConfig": {
|
|
@@ -23,18 +23,18 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@spinnaker/core": "^0.29.1",
|
|
25
25
|
"lodash": "4.18.1",
|
|
26
|
-
"react": "
|
|
26
|
+
"react": "17.0.2",
|
|
27
27
|
"react-select": "1.2.1",
|
|
28
|
-
"rxjs": "
|
|
28
|
+
"rxjs": "7.8.2"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@spinnaker/eslint-plugin": "^3.0.2",
|
|
32
32
|
"@spinnaker/scripts": "^0.4.0",
|
|
33
33
|
"@types/lodash": "4.14.64",
|
|
34
|
-
"@types/react": "
|
|
34
|
+
"@types/react": "17.0.93",
|
|
35
35
|
"@types/react-select": "1.3.4",
|
|
36
36
|
"shx": "0.3.3",
|
|
37
37
|
"typescript": "5.0.4"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "547cf142b118e5458193055e6186d945e08d9ada"
|
|
40
40
|
}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
|
+
import { fireEvent, render, screen, waitFor, within } from '@testing-library/react';
|
|
1
2
|
import React from 'react';
|
|
2
|
-
import { shallow } from 'enzyme';
|
|
3
3
|
|
|
4
|
-
import { IGceHealthCheckKind } from '../domain';
|
|
5
4
|
import { GceAutoHealingPolicyEditor } from './GceAutoHealingPolicyEditor';
|
|
5
|
+
import { IGceHealthCheckKind } from '../domain';
|
|
6
6
|
|
|
7
7
|
describe('GceAutoHealingPolicyEditor', () => {
|
|
8
|
-
async function flush(): Promise<void> {
|
|
9
|
-
await Promise.resolve();
|
|
10
|
-
await Promise.resolve();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
8
|
it('loads only health checks from the selected account', async () => {
|
|
14
9
|
const reader = {
|
|
15
|
-
listHealthChecks:
|
|
10
|
+
listHealthChecks: vi.fn().mockReturnValue(
|
|
16
11
|
Promise.resolve([
|
|
17
12
|
{
|
|
18
13
|
account: 'my-account',
|
|
@@ -29,26 +24,40 @@ describe('GceAutoHealingPolicyEditor', () => {
|
|
|
29
24
|
]),
|
|
30
25
|
),
|
|
31
26
|
};
|
|
32
|
-
|
|
27
|
+
render(
|
|
33
28
|
<GceAutoHealingPolicyEditor account="my-account" policy={{}} onChange={() => undefined} reader={reader as any} />,
|
|
34
29
|
);
|
|
35
30
|
|
|
36
|
-
await
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
expect(
|
|
40
|
-
expect(
|
|
41
|
-
expect(wrapper.find('[data-testid="health-check"]').text()).not.toContain('other');
|
|
31
|
+
const select = await screen.findByTestId('health-check');
|
|
32
|
+
await waitFor(() => expect(reader.listHealthChecks).toHaveBeenCalled());
|
|
33
|
+
expect(within(select).getAllByRole('option')).toHaveLength(2);
|
|
34
|
+
expect(select).toHaveTextContent('web');
|
|
35
|
+
expect(select).not.toHaveTextContent('other');
|
|
42
36
|
});
|
|
43
37
|
|
|
44
|
-
it('writes the selected health check name and kind from its URL', () => {
|
|
45
|
-
const onChange =
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
38
|
+
it('writes the selected health check name and kind from its URL', async () => {
|
|
39
|
+
const onChange = vi.fn();
|
|
40
|
+
const reader = {
|
|
41
|
+
listHealthChecks: vi.fn().mockResolvedValue([
|
|
42
|
+
{
|
|
43
|
+
account: 'my-account',
|
|
44
|
+
kind: IGceHealthCheckKind.httpHealthCheck,
|
|
45
|
+
name: 'web',
|
|
46
|
+
selfLink: 'https://compute/httpHealthChecks/web',
|
|
47
|
+
},
|
|
48
|
+
]),
|
|
49
|
+
};
|
|
50
|
+
render(
|
|
51
|
+
<GceAutoHealingPolicyEditor
|
|
52
|
+
account="my-account"
|
|
53
|
+
policy={{ initialDelaySec: 0 }}
|
|
54
|
+
onChange={onChange}
|
|
55
|
+
reader={reader as any}
|
|
56
|
+
/>,
|
|
49
57
|
);
|
|
50
58
|
|
|
51
|
-
|
|
59
|
+
await waitFor(() => expect(screen.getByTestId('health-check')).toBeEnabled());
|
|
60
|
+
fireEvent.change(screen.getByTestId('health-check'), {
|
|
52
61
|
target: { value: 'https://compute/httpHealthChecks/web' },
|
|
53
62
|
});
|
|
54
63
|
|
|
@@ -61,11 +70,11 @@ describe('GceAutoHealingPolicyEditor', () => {
|
|
|
61
70
|
});
|
|
62
71
|
|
|
63
72
|
it('normalizes an existing healthCheck URL into its URL, name, and kind fields', async () => {
|
|
64
|
-
const onChange =
|
|
73
|
+
const onChange = vi.fn();
|
|
65
74
|
const reader = {
|
|
66
|
-
listHealthChecks:
|
|
75
|
+
listHealthChecks: vi.fn().mockReturnValue(Promise.resolve([])),
|
|
67
76
|
};
|
|
68
|
-
|
|
77
|
+
render(
|
|
69
78
|
<GceAutoHealingPolicyEditor
|
|
70
79
|
account="my-account"
|
|
71
80
|
policy={{ healthCheck: 'https://compute/httpHealthChecks/web', initialDelaySec: 0 }}
|
|
@@ -74,20 +83,20 @@ describe('GceAutoHealingPolicyEditor', () => {
|
|
|
74
83
|
/>,
|
|
75
84
|
);
|
|
76
85
|
|
|
77
|
-
await
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
86
|
+
await waitFor(() =>
|
|
87
|
+
expect(onChange).toHaveBeenCalledWith({
|
|
88
|
+
healthCheckUrl: 'https://compute/httpHealthChecks/web',
|
|
89
|
+
healthCheck: 'web',
|
|
90
|
+
healthCheckKind: IGceHealthCheckKind.httpHealthCheck,
|
|
91
|
+
initialDelaySec: 0,
|
|
92
|
+
}),
|
|
93
|
+
);
|
|
85
94
|
});
|
|
86
95
|
|
|
87
96
|
it('resolves an existing healthCheck name to the matching URL and kind', async () => {
|
|
88
|
-
const onChange =
|
|
97
|
+
const onChange = vi.fn();
|
|
89
98
|
const reader = {
|
|
90
|
-
listHealthChecks:
|
|
99
|
+
listHealthChecks: vi.fn().mockReturnValue(
|
|
91
100
|
Promise.resolve([
|
|
92
101
|
{
|
|
93
102
|
account: 'my-account',
|
|
@@ -98,7 +107,7 @@ describe('GceAutoHealingPolicyEditor', () => {
|
|
|
98
107
|
]),
|
|
99
108
|
),
|
|
100
109
|
};
|
|
101
|
-
|
|
110
|
+
render(
|
|
102
111
|
<GceAutoHealingPolicyEditor
|
|
103
112
|
account="my-account"
|
|
104
113
|
policy={{ healthCheck: 'web', initialDelaySec: 0 }}
|
|
@@ -107,27 +116,34 @@ describe('GceAutoHealingPolicyEditor', () => {
|
|
|
107
116
|
/>,
|
|
108
117
|
);
|
|
109
118
|
|
|
110
|
-
await
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
119
|
+
await waitFor(() =>
|
|
120
|
+
expect(onChange).toHaveBeenCalledWith({
|
|
121
|
+
healthCheckUrl: 'https://compute/healthChecks/web',
|
|
122
|
+
healthCheck: 'web',
|
|
123
|
+
healthCheckKind: IGceHealthCheckKind.healthCheck,
|
|
124
|
+
initialDelaySec: 0,
|
|
125
|
+
}),
|
|
126
|
+
);
|
|
118
127
|
});
|
|
119
128
|
|
|
120
|
-
it('preserves zero for initial delay without rendering legacy max unavailable controls', () => {
|
|
121
|
-
const onChange =
|
|
129
|
+
it('preserves zero for initial delay without rendering legacy max unavailable controls', async () => {
|
|
130
|
+
const onChange = vi.fn();
|
|
131
|
+
const reader = { listHealthChecks: vi.fn().mockResolvedValue([]) };
|
|
122
132
|
const legacyPolicy = { initialDelaySec: 0, maxUnavailable: { percent: 0 } };
|
|
123
|
-
const
|
|
124
|
-
<GceAutoHealingPolicyEditor
|
|
125
|
-
|
|
133
|
+
const { container } = render(
|
|
134
|
+
<GceAutoHealingPolicyEditor
|
|
135
|
+
account="my-account"
|
|
136
|
+
policy={legacyPolicy as any}
|
|
137
|
+
onChange={onChange}
|
|
138
|
+
reader={reader as any}
|
|
139
|
+
/>,
|
|
126
140
|
);
|
|
127
141
|
|
|
128
|
-
expect(
|
|
129
|
-
expect(
|
|
130
|
-
expect(
|
|
131
|
-
expect(
|
|
142
|
+
await waitFor(() => expect(screen.getByTestId('health-check')).toBeEnabled());
|
|
143
|
+
expect(reader.listHealthChecks).toHaveBeenCalled();
|
|
144
|
+
expect(screen.getByTestId('initial-delay')).toHaveValue(0);
|
|
145
|
+
expect(screen.queryByTestId('max-unavailable')).not.toBeInTheDocument();
|
|
146
|
+
expect(screen.queryByTestId('max-unavailable-unit')).not.toBeInTheDocument();
|
|
147
|
+
expect(container).not.toHaveTextContent('Max unavailable');
|
|
132
148
|
});
|
|
133
149
|
});
|