@openshift-migration-advisor/planner-sdk 0.13.5 → 0.13.6-b314a1e352c6
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/.openapi-generator/FILES +4 -0
- package/.openapi-generator/VERSION +1 -1
- package/README.md +5 -3
- package/dist/esm/models/ClusterRequirementsResponse.d.ts +20 -0
- package/dist/esm/models/ClusterRequirementsResponse.js +8 -0
- package/dist/esm/models/ClusterSizing.d.ts +18 -0
- package/dist/esm/models/ClusterSizing.js +6 -0
- package/dist/esm/models/OptimizationStatus.d.ts +48 -0
- package/dist/esm/models/OptimizationStatus.js +56 -0
- package/dist/esm/models/Savings.d.ts +44 -0
- package/dist/esm/models/Savings.js +51 -0
- package/dist/esm/models/index.d.ts +2 -0
- package/dist/esm/models/index.js +2 -0
- package/dist/esm/runtime.js +2 -1
- package/dist/models/ClusterRequirementsResponse.d.ts +20 -0
- package/dist/models/ClusterRequirementsResponse.js +8 -0
- package/dist/models/ClusterSizing.d.ts +18 -0
- package/dist/models/ClusterSizing.js +6 -0
- package/dist/models/OptimizationStatus.d.ts +48 -0
- package/dist/models/OptimizationStatus.js +64 -0
- package/dist/models/Savings.d.ts +44 -0
- package/dist/models/Savings.js +58 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/models/index.js +2 -0
- package/dist/runtime.js +2 -1
- package/docs/ClusterRequirementsResponse.md +6 -0
- package/docs/ClusterSizing.md +6 -0
- package/docs/OptimizationStatus.md +37 -0
- package/docs/Savings.md +39 -0
- package/package.json +1 -1
- package/src/models/ClusterRequirementsResponse.ts +38 -0
- package/src/models/ClusterSizing.ts +24 -0
- package/src/models/OptimizationStatus.ts +88 -0
- package/src/models/Savings.ts +84 -0
- package/src/models/index.ts +2 -0
- package/src/runtime.ts +1 -1
package/.openapi-generator/FILES
CHANGED
|
@@ -57,6 +57,7 @@ docs/MigrationEstimationResponse.md
|
|
|
57
57
|
docs/MigrationIssue.md
|
|
58
58
|
docs/ModelError.md
|
|
59
59
|
docs/Network.md
|
|
60
|
+
docs/OptimizationStatus.md
|
|
60
61
|
docs/OsDiskEstimationEntry.md
|
|
61
62
|
docs/OsInfo.md
|
|
62
63
|
docs/PartnerApi.md
|
|
@@ -66,6 +67,7 @@ docs/PartnerRequestStatus.md
|
|
|
66
67
|
docs/PartnerRequestUpdate.md
|
|
67
68
|
docs/PartnerSummary.md
|
|
68
69
|
docs/PresignedUrl.md
|
|
70
|
+
docs/Savings.md
|
|
69
71
|
docs/SchemaEstimationResult.md
|
|
70
72
|
docs/SharingSubject.md
|
|
71
73
|
docs/SizingApi.md
|
|
@@ -147,6 +149,7 @@ src/models/MigrationEstimationResponse.ts
|
|
|
147
149
|
src/models/MigrationIssue.ts
|
|
148
150
|
src/models/ModelError.ts
|
|
149
151
|
src/models/Network.ts
|
|
152
|
+
src/models/OptimizationStatus.ts
|
|
150
153
|
src/models/OsDiskEstimationEntry.ts
|
|
151
154
|
src/models/OsInfo.ts
|
|
152
155
|
src/models/PartnerRequest.ts
|
|
@@ -155,6 +158,7 @@ src/models/PartnerRequestStatus.ts
|
|
|
155
158
|
src/models/PartnerRequestUpdate.ts
|
|
156
159
|
src/models/PartnerSummary.ts
|
|
157
160
|
src/models/PresignedUrl.ts
|
|
161
|
+
src/models/Savings.ts
|
|
158
162
|
src/models/SchemaEstimationResult.ts
|
|
159
163
|
src/models/SharingSubject.ts
|
|
160
164
|
src/models/SizingOverCommitRatio.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
7.
|
|
1
|
+
7.24.0-SNAPSHOT
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @openshift-migration-advisor/planner-sdk@0.13.
|
|
1
|
+
# @openshift-migration-advisor/planner-sdk@0.13.6-b314a1e352c6
|
|
2
2
|
|
|
3
3
|
A TypeScript SDK client for the raw.githubusercontent.com API.
|
|
4
4
|
|
|
@@ -148,6 +148,7 @@ All URIs are relative to *https://raw.githubusercontent.com*
|
|
|
148
148
|
- [MigrationIssue](docs/MigrationIssue.md)
|
|
149
149
|
- [ModelError](docs/ModelError.md)
|
|
150
150
|
- [Network](docs/Network.md)
|
|
151
|
+
- [OptimizationStatus](docs/OptimizationStatus.md)
|
|
151
152
|
- [OsDiskEstimationEntry](docs/OsDiskEstimationEntry.md)
|
|
152
153
|
- [OsInfo](docs/OsInfo.md)
|
|
153
154
|
- [PartnerRequest](docs/PartnerRequest.md)
|
|
@@ -156,6 +157,7 @@ All URIs are relative to *https://raw.githubusercontent.com*
|
|
|
156
157
|
- [PartnerRequestUpdate](docs/PartnerRequestUpdate.md)
|
|
157
158
|
- [PartnerSummary](docs/PartnerSummary.md)
|
|
158
159
|
- [PresignedUrl](docs/PresignedUrl.md)
|
|
160
|
+
- [Savings](docs/Savings.md)
|
|
159
161
|
- [SchemaEstimationResult](docs/SchemaEstimationResult.md)
|
|
160
162
|
- [SharingSubject](docs/SharingSubject.md)
|
|
161
163
|
- [SizingOverCommitRatio](docs/SizingOverCommitRatio.md)
|
|
@@ -187,8 +189,8 @@ and is automatically generated by the
|
|
|
187
189
|
[OpenAPI Generator](https://openapi-generator.tech) project:
|
|
188
190
|
|
|
189
191
|
- API version: `v1alpha1`
|
|
190
|
-
- Package version: `0.13.
|
|
191
|
-
- Generator version: `7.
|
|
192
|
+
- Package version: `0.13.6-b314a1e352c6`
|
|
193
|
+
- Generator version: `7.24.0-SNAPSHOT`
|
|
192
194
|
- Build package: `org.openapitools.codegen.languages.TypeScriptFetchClientCodegen`
|
|
193
195
|
|
|
194
196
|
The generated npm module supports the following:
|
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
* https://openapi-generator.tech
|
|
10
10
|
* Do not edit the class manually.
|
|
11
11
|
*/
|
|
12
|
+
import type { Savings } from './Savings.js';
|
|
12
13
|
import type { SizingResourceConsumption } from './SizingResourceConsumption.js';
|
|
13
14
|
import type { InventoryTotals } from './InventoryTotals.js';
|
|
14
15
|
import type { ClusterSizing } from './ClusterSizing.js';
|
|
16
|
+
import type { OptimizationStatus } from './OptimizationStatus.js';
|
|
15
17
|
/**
|
|
16
18
|
* Cluster requirements calculation results
|
|
17
19
|
* @export
|
|
@@ -24,6 +26,24 @@ export interface ClusterRequirementsResponse {
|
|
|
24
26
|
* @memberof ClusterRequirementsResponse
|
|
25
27
|
*/
|
|
26
28
|
clusterSizing: ClusterSizing;
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
* @type {ClusterSizing}
|
|
32
|
+
* @memberof ClusterRequirementsResponse
|
|
33
|
+
*/
|
|
34
|
+
optimizedSizing?: ClusterSizing;
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @type {Savings}
|
|
38
|
+
* @memberof ClusterRequirementsResponse
|
|
39
|
+
*/
|
|
40
|
+
savings?: Savings;
|
|
41
|
+
/**
|
|
42
|
+
*
|
|
43
|
+
* @type {OptimizationStatus}
|
|
44
|
+
* @memberof ClusterRequirementsResponse
|
|
45
|
+
*/
|
|
46
|
+
optimizationStatus?: OptimizationStatus;
|
|
27
47
|
/**
|
|
28
48
|
*
|
|
29
49
|
* @type {SizingResourceConsumption}
|
|
@@ -11,9 +11,11 @@
|
|
|
11
11
|
* https://openapi-generator.tech
|
|
12
12
|
* Do not edit the class manually.
|
|
13
13
|
*/
|
|
14
|
+
import { SavingsFromJSON, SavingsToJSON, } from './Savings.js';
|
|
14
15
|
import { SizingResourceConsumptionFromJSON, SizingResourceConsumptionToJSON, } from './SizingResourceConsumption.js';
|
|
15
16
|
import { InventoryTotalsFromJSON, InventoryTotalsToJSON, } from './InventoryTotals.js';
|
|
16
17
|
import { ClusterSizingFromJSON, ClusterSizingToJSON, } from './ClusterSizing.js';
|
|
18
|
+
import { OptimizationStatusFromJSON, OptimizationStatusToJSON, } from './OptimizationStatus.js';
|
|
17
19
|
/**
|
|
18
20
|
* Check if a given object implements the ClusterRequirementsResponse interface.
|
|
19
21
|
*/
|
|
@@ -35,6 +37,9 @@ export function ClusterRequirementsResponseFromJSONTyped(json, ignoreDiscriminat
|
|
|
35
37
|
}
|
|
36
38
|
return {
|
|
37
39
|
'clusterSizing': ClusterSizingFromJSON(json['clusterSizing']),
|
|
40
|
+
'optimizedSizing': json['optimizedSizing'] == null ? undefined : ClusterSizingFromJSON(json['optimizedSizing']),
|
|
41
|
+
'savings': json['savings'] == null ? undefined : SavingsFromJSON(json['savings']),
|
|
42
|
+
'optimizationStatus': json['optimizationStatus'] == null ? undefined : OptimizationStatusFromJSON(json['optimizationStatus']),
|
|
38
43
|
'resourceConsumption': SizingResourceConsumptionFromJSON(json['resourceConsumption']),
|
|
39
44
|
'inventoryTotals': InventoryTotalsFromJSON(json['inventoryTotals']),
|
|
40
45
|
};
|
|
@@ -48,6 +53,9 @@ export function ClusterRequirementsResponseToJSONTyped(value, ignoreDiscriminato
|
|
|
48
53
|
}
|
|
49
54
|
return {
|
|
50
55
|
'clusterSizing': ClusterSizingToJSON(value['clusterSizing']),
|
|
56
|
+
'optimizedSizing': ClusterSizingToJSON(value['optimizedSizing']),
|
|
57
|
+
'savings': SavingsToJSON(value['savings']),
|
|
58
|
+
'optimizationStatus': OptimizationStatusToJSON(value['optimizationStatus']),
|
|
51
59
|
'resourceConsumption': SizingResourceConsumptionToJSON(value['resourceConsumption']),
|
|
52
60
|
'inventoryTotals': InventoryTotalsToJSON(value['inventoryTotals']),
|
|
53
61
|
};
|
|
@@ -51,6 +51,24 @@ export interface ClusterSizing {
|
|
|
51
51
|
* @memberof ClusterSizing
|
|
52
52
|
*/
|
|
53
53
|
totalMemory: number;
|
|
54
|
+
/**
|
|
55
|
+
* CPU utilization maximum percentage (only in optimized_sizing)
|
|
56
|
+
* @type {number}
|
|
57
|
+
* @memberof ClusterSizing
|
|
58
|
+
*/
|
|
59
|
+
cpuUtilizationMax?: number;
|
|
60
|
+
/**
|
|
61
|
+
* Memory utilization maximum percentage (only in optimized_sizing)
|
|
62
|
+
* @type {number}
|
|
63
|
+
* @memberof ClusterSizing
|
|
64
|
+
*/
|
|
65
|
+
memoryUtilizationMax?: number;
|
|
66
|
+
/**
|
|
67
|
+
* Data coverage confidence 0-100 (only in optimized_sizing)
|
|
68
|
+
* @type {number}
|
|
69
|
+
* @memberof ClusterSizing
|
|
70
|
+
*/
|
|
71
|
+
confidence?: number;
|
|
54
72
|
}
|
|
55
73
|
/**
|
|
56
74
|
* Check if a given object implements the ClusterSizing interface.
|
|
@@ -43,6 +43,9 @@ export function ClusterSizingFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
43
43
|
'failoverNodes': json['failoverNodes'],
|
|
44
44
|
'totalCPU': json['totalCPU'],
|
|
45
45
|
'totalMemory': json['totalMemory'],
|
|
46
|
+
'cpuUtilizationMax': json['cpuUtilizationMax'] == null ? undefined : json['cpuUtilizationMax'],
|
|
47
|
+
'memoryUtilizationMax': json['memoryUtilizationMax'] == null ? undefined : json['memoryUtilizationMax'],
|
|
48
|
+
'confidence': json['confidence'] == null ? undefined : json['confidence'],
|
|
46
49
|
};
|
|
47
50
|
}
|
|
48
51
|
export function ClusterSizingToJSON(json) {
|
|
@@ -59,5 +62,8 @@ export function ClusterSizingToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
59
62
|
'failoverNodes': value['failoverNodes'],
|
|
60
63
|
'totalCPU': value['totalCPU'],
|
|
61
64
|
'totalMemory': value['totalMemory'],
|
|
65
|
+
'cpuUtilizationMax': value['cpuUtilizationMax'],
|
|
66
|
+
'memoryUtilizationMax': value['memoryUtilizationMax'],
|
|
67
|
+
'confidence': value['confidence'],
|
|
62
68
|
};
|
|
63
69
|
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenShift Migration Advisor API
|
|
3
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: v1alpha1
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
+
* https://openapi-generator.tech
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Status of utilization-based optimization attempt
|
|
14
|
+
* @export
|
|
15
|
+
* @interface OptimizationStatus
|
|
16
|
+
*/
|
|
17
|
+
export interface OptimizationStatus {
|
|
18
|
+
/**
|
|
19
|
+
* Whether optimization was attempted based on available utilization data
|
|
20
|
+
* @type {boolean}
|
|
21
|
+
* @memberof OptimizationStatus
|
|
22
|
+
*/
|
|
23
|
+
attempted: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Reason for optimization result
|
|
26
|
+
* @type {OptimizationStatusReasonEnum}
|
|
27
|
+
* @memberof OptimizationStatus
|
|
28
|
+
*/
|
|
29
|
+
reason: OptimizationStatusReasonEnum;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @export
|
|
33
|
+
*/
|
|
34
|
+
export declare const OptimizationStatusReasonEnum: {
|
|
35
|
+
readonly NoUtilizationData: "no_utilization_data";
|
|
36
|
+
readonly LowConfidence: "low_confidence";
|
|
37
|
+
readonly CalculationError: "calculation_error";
|
|
38
|
+
readonly Success: "success";
|
|
39
|
+
};
|
|
40
|
+
export type OptimizationStatusReasonEnum = typeof OptimizationStatusReasonEnum[keyof typeof OptimizationStatusReasonEnum];
|
|
41
|
+
/**
|
|
42
|
+
* Check if a given object implements the OptimizationStatus interface.
|
|
43
|
+
*/
|
|
44
|
+
export declare function instanceOfOptimizationStatus(value: object): value is OptimizationStatus;
|
|
45
|
+
export declare function OptimizationStatusFromJSON(json: any): OptimizationStatus;
|
|
46
|
+
export declare function OptimizationStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): OptimizationStatus;
|
|
47
|
+
export declare function OptimizationStatusToJSON(json: any): OptimizationStatus;
|
|
48
|
+
export declare function OptimizationStatusToJSONTyped(value?: OptimizationStatus | null, ignoreDiscriminator?: boolean): any;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/**
|
|
4
|
+
* OpenShift Migration Advisor API
|
|
5
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
6
|
+
*
|
|
7
|
+
* The version of the OpenAPI document: v1alpha1
|
|
8
|
+
*
|
|
9
|
+
*
|
|
10
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
11
|
+
* https://openapi-generator.tech
|
|
12
|
+
* Do not edit the class manually.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* @export
|
|
16
|
+
*/
|
|
17
|
+
export const OptimizationStatusReasonEnum = {
|
|
18
|
+
NoUtilizationData: 'no_utilization_data',
|
|
19
|
+
LowConfidence: 'low_confidence',
|
|
20
|
+
CalculationError: 'calculation_error',
|
|
21
|
+
Success: 'success'
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Check if a given object implements the OptimizationStatus interface.
|
|
25
|
+
*/
|
|
26
|
+
export function instanceOfOptimizationStatus(value) {
|
|
27
|
+
if (!('attempted' in value) || value['attempted'] === undefined)
|
|
28
|
+
return false;
|
|
29
|
+
if (!('reason' in value) || value['reason'] === undefined)
|
|
30
|
+
return false;
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
export function OptimizationStatusFromJSON(json) {
|
|
34
|
+
return OptimizationStatusFromJSONTyped(json, false);
|
|
35
|
+
}
|
|
36
|
+
export function OptimizationStatusFromJSONTyped(json, ignoreDiscriminator) {
|
|
37
|
+
if (json == null) {
|
|
38
|
+
return json;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
'attempted': json['attempted'],
|
|
42
|
+
'reason': json['reason'],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function OptimizationStatusToJSON(json) {
|
|
46
|
+
return OptimizationStatusToJSONTyped(json, false);
|
|
47
|
+
}
|
|
48
|
+
export function OptimizationStatusToJSONTyped(value, ignoreDiscriminator = false) {
|
|
49
|
+
if (value == null) {
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
'attempted': value['attempted'],
|
|
54
|
+
'reason': value['reason'],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenShift Migration Advisor API
|
|
3
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: v1alpha1
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
+
* https://openapi-generator.tech
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Infrastructure savings comparison
|
|
14
|
+
* @export
|
|
15
|
+
* @interface Savings
|
|
16
|
+
*/
|
|
17
|
+
export interface Savings {
|
|
18
|
+
/**
|
|
19
|
+
* Number of nodes saved compared to baseline
|
|
20
|
+
* @type {number}
|
|
21
|
+
* @memberof Savings
|
|
22
|
+
*/
|
|
23
|
+
nodesSaved: number;
|
|
24
|
+
/**
|
|
25
|
+
* Percentage reduction in nodes
|
|
26
|
+
* @type {number}
|
|
27
|
+
* @memberof Savings
|
|
28
|
+
*/
|
|
29
|
+
percentageReduction: number;
|
|
30
|
+
/**
|
|
31
|
+
* Human-readable description of savings source
|
|
32
|
+
* @type {string}
|
|
33
|
+
* @memberof Savings
|
|
34
|
+
*/
|
|
35
|
+
description: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if a given object implements the Savings interface.
|
|
39
|
+
*/
|
|
40
|
+
export declare function instanceOfSavings(value: object): value is Savings;
|
|
41
|
+
export declare function SavingsFromJSON(json: any): Savings;
|
|
42
|
+
export declare function SavingsFromJSONTyped(json: any, ignoreDiscriminator: boolean): Savings;
|
|
43
|
+
export declare function SavingsToJSON(json: any): Savings;
|
|
44
|
+
export declare function SavingsToJSONTyped(value?: Savings | null, ignoreDiscriminator?: boolean): any;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/**
|
|
4
|
+
* OpenShift Migration Advisor API
|
|
5
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
6
|
+
*
|
|
7
|
+
* The version of the OpenAPI document: v1alpha1
|
|
8
|
+
*
|
|
9
|
+
*
|
|
10
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
11
|
+
* https://openapi-generator.tech
|
|
12
|
+
* Do not edit the class manually.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Check if a given object implements the Savings interface.
|
|
16
|
+
*/
|
|
17
|
+
export function instanceOfSavings(value) {
|
|
18
|
+
if (!('nodesSaved' in value) || value['nodesSaved'] === undefined)
|
|
19
|
+
return false;
|
|
20
|
+
if (!('percentageReduction' in value) || value['percentageReduction'] === undefined)
|
|
21
|
+
return false;
|
|
22
|
+
if (!('description' in value) || value['description'] === undefined)
|
|
23
|
+
return false;
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
export function SavingsFromJSON(json) {
|
|
27
|
+
return SavingsFromJSONTyped(json, false);
|
|
28
|
+
}
|
|
29
|
+
export function SavingsFromJSONTyped(json, ignoreDiscriminator) {
|
|
30
|
+
if (json == null) {
|
|
31
|
+
return json;
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
'nodesSaved': json['nodesSaved'],
|
|
35
|
+
'percentageReduction': json['percentageReduction'],
|
|
36
|
+
'description': json['description'],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function SavingsToJSON(json) {
|
|
40
|
+
return SavingsToJSONTyped(json, false);
|
|
41
|
+
}
|
|
42
|
+
export function SavingsToJSONTyped(value, ignoreDiscriminator = false) {
|
|
43
|
+
if (value == null) {
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
'nodesSaved': value['nodesSaved'],
|
|
48
|
+
'percentageReduction': value['percentageReduction'],
|
|
49
|
+
'description': value['description'],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
@@ -47,6 +47,7 @@ export * from './MigrationEstimationResponse.js';
|
|
|
47
47
|
export * from './MigrationIssue.js';
|
|
48
48
|
export * from './ModelError.js';
|
|
49
49
|
export * from './Network.js';
|
|
50
|
+
export * from './OptimizationStatus.js';
|
|
50
51
|
export * from './OsDiskEstimationEntry.js';
|
|
51
52
|
export * from './OsInfo.js';
|
|
52
53
|
export * from './PartnerRequest.js';
|
|
@@ -55,6 +56,7 @@ export * from './PartnerRequestStatus.js';
|
|
|
55
56
|
export * from './PartnerRequestUpdate.js';
|
|
56
57
|
export * from './PartnerSummary.js';
|
|
57
58
|
export * from './PresignedUrl.js';
|
|
59
|
+
export * from './Savings.js';
|
|
58
60
|
export * from './SchemaEstimationResult.js';
|
|
59
61
|
export * from './SharingSubject.js';
|
|
60
62
|
export * from './SizingOverCommitRatio.js';
|
package/dist/esm/models/index.js
CHANGED
|
@@ -49,6 +49,7 @@ export * from './MigrationEstimationResponse.js';
|
|
|
49
49
|
export * from './MigrationIssue.js';
|
|
50
50
|
export * from './ModelError.js';
|
|
51
51
|
export * from './Network.js';
|
|
52
|
+
export * from './OptimizationStatus.js';
|
|
52
53
|
export * from './OsDiskEstimationEntry.js';
|
|
53
54
|
export * from './OsInfo.js';
|
|
54
55
|
export * from './PartnerRequest.js';
|
|
@@ -57,6 +58,7 @@ export * from './PartnerRequestStatus.js';
|
|
|
57
58
|
export * from './PartnerRequestUpdate.js';
|
|
58
59
|
export * from './PartnerSummary.js';
|
|
59
60
|
export * from './PresignedUrl.js';
|
|
61
|
+
export * from './Savings.js';
|
|
60
62
|
export * from './SchemaEstimationResult.js';
|
|
61
63
|
export * from './SharingSubject.js';
|
|
62
64
|
export * from './SizingOverCommitRatio.js';
|
package/dist/esm/runtime.js
CHANGED
|
@@ -297,8 +297,9 @@ export function mapValues(data, fn) {
|
|
|
297
297
|
return result;
|
|
298
298
|
}
|
|
299
299
|
export function canConsumeForm(consumes) {
|
|
300
|
+
var _a;
|
|
300
301
|
for (const consume of consumes) {
|
|
301
|
-
if ('multipart/form-data'
|
|
302
|
+
if (((_a = consume.contentType) === null || _a === void 0 ? void 0 : _a.startsWith('multipart/form-data')) == true) {
|
|
302
303
|
return true;
|
|
303
304
|
}
|
|
304
305
|
}
|
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
* https://openapi-generator.tech
|
|
10
10
|
* Do not edit the class manually.
|
|
11
11
|
*/
|
|
12
|
+
import type { Savings } from './Savings.js';
|
|
12
13
|
import type { SizingResourceConsumption } from './SizingResourceConsumption.js';
|
|
13
14
|
import type { InventoryTotals } from './InventoryTotals.js';
|
|
14
15
|
import type { ClusterSizing } from './ClusterSizing.js';
|
|
16
|
+
import type { OptimizationStatus } from './OptimizationStatus.js';
|
|
15
17
|
/**
|
|
16
18
|
* Cluster requirements calculation results
|
|
17
19
|
* @export
|
|
@@ -24,6 +26,24 @@ export interface ClusterRequirementsResponse {
|
|
|
24
26
|
* @memberof ClusterRequirementsResponse
|
|
25
27
|
*/
|
|
26
28
|
clusterSizing: ClusterSizing;
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
* @type {ClusterSizing}
|
|
32
|
+
* @memberof ClusterRequirementsResponse
|
|
33
|
+
*/
|
|
34
|
+
optimizedSizing?: ClusterSizing;
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @type {Savings}
|
|
38
|
+
* @memberof ClusterRequirementsResponse
|
|
39
|
+
*/
|
|
40
|
+
savings?: Savings;
|
|
41
|
+
/**
|
|
42
|
+
*
|
|
43
|
+
* @type {OptimizationStatus}
|
|
44
|
+
* @memberof ClusterRequirementsResponse
|
|
45
|
+
*/
|
|
46
|
+
optimizationStatus?: OptimizationStatus;
|
|
27
47
|
/**
|
|
28
48
|
*
|
|
29
49
|
* @type {SizingResourceConsumption}
|
|
@@ -18,9 +18,11 @@ exports.ClusterRequirementsResponseFromJSON = ClusterRequirementsResponseFromJSO
|
|
|
18
18
|
exports.ClusterRequirementsResponseFromJSONTyped = ClusterRequirementsResponseFromJSONTyped;
|
|
19
19
|
exports.ClusterRequirementsResponseToJSON = ClusterRequirementsResponseToJSON;
|
|
20
20
|
exports.ClusterRequirementsResponseToJSONTyped = ClusterRequirementsResponseToJSONTyped;
|
|
21
|
+
const Savings_js_1 = require("./Savings.js");
|
|
21
22
|
const SizingResourceConsumption_js_1 = require("./SizingResourceConsumption.js");
|
|
22
23
|
const InventoryTotals_js_1 = require("./InventoryTotals.js");
|
|
23
24
|
const ClusterSizing_js_1 = require("./ClusterSizing.js");
|
|
25
|
+
const OptimizationStatus_js_1 = require("./OptimizationStatus.js");
|
|
24
26
|
/**
|
|
25
27
|
* Check if a given object implements the ClusterRequirementsResponse interface.
|
|
26
28
|
*/
|
|
@@ -42,6 +44,9 @@ function ClusterRequirementsResponseFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
42
44
|
}
|
|
43
45
|
return {
|
|
44
46
|
'clusterSizing': (0, ClusterSizing_js_1.ClusterSizingFromJSON)(json['clusterSizing']),
|
|
47
|
+
'optimizedSizing': json['optimizedSizing'] == null ? undefined : (0, ClusterSizing_js_1.ClusterSizingFromJSON)(json['optimizedSizing']),
|
|
48
|
+
'savings': json['savings'] == null ? undefined : (0, Savings_js_1.SavingsFromJSON)(json['savings']),
|
|
49
|
+
'optimizationStatus': json['optimizationStatus'] == null ? undefined : (0, OptimizationStatus_js_1.OptimizationStatusFromJSON)(json['optimizationStatus']),
|
|
45
50
|
'resourceConsumption': (0, SizingResourceConsumption_js_1.SizingResourceConsumptionFromJSON)(json['resourceConsumption']),
|
|
46
51
|
'inventoryTotals': (0, InventoryTotals_js_1.InventoryTotalsFromJSON)(json['inventoryTotals']),
|
|
47
52
|
};
|
|
@@ -55,6 +60,9 @@ function ClusterRequirementsResponseToJSONTyped(value, ignoreDiscriminator = fal
|
|
|
55
60
|
}
|
|
56
61
|
return {
|
|
57
62
|
'clusterSizing': (0, ClusterSizing_js_1.ClusterSizingToJSON)(value['clusterSizing']),
|
|
63
|
+
'optimizedSizing': (0, ClusterSizing_js_1.ClusterSizingToJSON)(value['optimizedSizing']),
|
|
64
|
+
'savings': (0, Savings_js_1.SavingsToJSON)(value['savings']),
|
|
65
|
+
'optimizationStatus': (0, OptimizationStatus_js_1.OptimizationStatusToJSON)(value['optimizationStatus']),
|
|
58
66
|
'resourceConsumption': (0, SizingResourceConsumption_js_1.SizingResourceConsumptionToJSON)(value['resourceConsumption']),
|
|
59
67
|
'inventoryTotals': (0, InventoryTotals_js_1.InventoryTotalsToJSON)(value['inventoryTotals']),
|
|
60
68
|
};
|
|
@@ -51,6 +51,24 @@ export interface ClusterSizing {
|
|
|
51
51
|
* @memberof ClusterSizing
|
|
52
52
|
*/
|
|
53
53
|
totalMemory: number;
|
|
54
|
+
/**
|
|
55
|
+
* CPU utilization maximum percentage (only in optimized_sizing)
|
|
56
|
+
* @type {number}
|
|
57
|
+
* @memberof ClusterSizing
|
|
58
|
+
*/
|
|
59
|
+
cpuUtilizationMax?: number;
|
|
60
|
+
/**
|
|
61
|
+
* Memory utilization maximum percentage (only in optimized_sizing)
|
|
62
|
+
* @type {number}
|
|
63
|
+
* @memberof ClusterSizing
|
|
64
|
+
*/
|
|
65
|
+
memoryUtilizationMax?: number;
|
|
66
|
+
/**
|
|
67
|
+
* Data coverage confidence 0-100 (only in optimized_sizing)
|
|
68
|
+
* @type {number}
|
|
69
|
+
* @memberof ClusterSizing
|
|
70
|
+
*/
|
|
71
|
+
confidence?: number;
|
|
54
72
|
}
|
|
55
73
|
/**
|
|
56
74
|
* Check if a given object implements the ClusterSizing interface.
|
|
@@ -50,6 +50,9 @@ function ClusterSizingFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
50
50
|
'failoverNodes': json['failoverNodes'],
|
|
51
51
|
'totalCPU': json['totalCPU'],
|
|
52
52
|
'totalMemory': json['totalMemory'],
|
|
53
|
+
'cpuUtilizationMax': json['cpuUtilizationMax'] == null ? undefined : json['cpuUtilizationMax'],
|
|
54
|
+
'memoryUtilizationMax': json['memoryUtilizationMax'] == null ? undefined : json['memoryUtilizationMax'],
|
|
55
|
+
'confidence': json['confidence'] == null ? undefined : json['confidence'],
|
|
53
56
|
};
|
|
54
57
|
}
|
|
55
58
|
function ClusterSizingToJSON(json) {
|
|
@@ -66,5 +69,8 @@ function ClusterSizingToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
66
69
|
'failoverNodes': value['failoverNodes'],
|
|
67
70
|
'totalCPU': value['totalCPU'],
|
|
68
71
|
'totalMemory': value['totalMemory'],
|
|
72
|
+
'cpuUtilizationMax': value['cpuUtilizationMax'],
|
|
73
|
+
'memoryUtilizationMax': value['memoryUtilizationMax'],
|
|
74
|
+
'confidence': value['confidence'],
|
|
69
75
|
};
|
|
70
76
|
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenShift Migration Advisor API
|
|
3
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: v1alpha1
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
+
* https://openapi-generator.tech
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Status of utilization-based optimization attempt
|
|
14
|
+
* @export
|
|
15
|
+
* @interface OptimizationStatus
|
|
16
|
+
*/
|
|
17
|
+
export interface OptimizationStatus {
|
|
18
|
+
/**
|
|
19
|
+
* Whether optimization was attempted based on available utilization data
|
|
20
|
+
* @type {boolean}
|
|
21
|
+
* @memberof OptimizationStatus
|
|
22
|
+
*/
|
|
23
|
+
attempted: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Reason for optimization result
|
|
26
|
+
* @type {OptimizationStatusReasonEnum}
|
|
27
|
+
* @memberof OptimizationStatus
|
|
28
|
+
*/
|
|
29
|
+
reason: OptimizationStatusReasonEnum;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @export
|
|
33
|
+
*/
|
|
34
|
+
export declare const OptimizationStatusReasonEnum: {
|
|
35
|
+
readonly NoUtilizationData: "no_utilization_data";
|
|
36
|
+
readonly LowConfidence: "low_confidence";
|
|
37
|
+
readonly CalculationError: "calculation_error";
|
|
38
|
+
readonly Success: "success";
|
|
39
|
+
};
|
|
40
|
+
export type OptimizationStatusReasonEnum = typeof OptimizationStatusReasonEnum[keyof typeof OptimizationStatusReasonEnum];
|
|
41
|
+
/**
|
|
42
|
+
* Check if a given object implements the OptimizationStatus interface.
|
|
43
|
+
*/
|
|
44
|
+
export declare function instanceOfOptimizationStatus(value: object): value is OptimizationStatus;
|
|
45
|
+
export declare function OptimizationStatusFromJSON(json: any): OptimizationStatus;
|
|
46
|
+
export declare function OptimizationStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): OptimizationStatus;
|
|
47
|
+
export declare function OptimizationStatusToJSON(json: any): OptimizationStatus;
|
|
48
|
+
export declare function OptimizationStatusToJSONTyped(value?: OptimizationStatus | null, ignoreDiscriminator?: boolean): any;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* tslint:disable */
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
/**
|
|
5
|
+
* OpenShift Migration Advisor API
|
|
6
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
*
|
|
8
|
+
* The version of the OpenAPI document: v1alpha1
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
12
|
+
* https://openapi-generator.tech
|
|
13
|
+
* Do not edit the class manually.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.OptimizationStatusReasonEnum = void 0;
|
|
17
|
+
exports.instanceOfOptimizationStatus = instanceOfOptimizationStatus;
|
|
18
|
+
exports.OptimizationStatusFromJSON = OptimizationStatusFromJSON;
|
|
19
|
+
exports.OptimizationStatusFromJSONTyped = OptimizationStatusFromJSONTyped;
|
|
20
|
+
exports.OptimizationStatusToJSON = OptimizationStatusToJSON;
|
|
21
|
+
exports.OptimizationStatusToJSONTyped = OptimizationStatusToJSONTyped;
|
|
22
|
+
/**
|
|
23
|
+
* @export
|
|
24
|
+
*/
|
|
25
|
+
exports.OptimizationStatusReasonEnum = {
|
|
26
|
+
NoUtilizationData: 'no_utilization_data',
|
|
27
|
+
LowConfidence: 'low_confidence',
|
|
28
|
+
CalculationError: 'calculation_error',
|
|
29
|
+
Success: 'success'
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Check if a given object implements the OptimizationStatus interface.
|
|
33
|
+
*/
|
|
34
|
+
function instanceOfOptimizationStatus(value) {
|
|
35
|
+
if (!('attempted' in value) || value['attempted'] === undefined)
|
|
36
|
+
return false;
|
|
37
|
+
if (!('reason' in value) || value['reason'] === undefined)
|
|
38
|
+
return false;
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
function OptimizationStatusFromJSON(json) {
|
|
42
|
+
return OptimizationStatusFromJSONTyped(json, false);
|
|
43
|
+
}
|
|
44
|
+
function OptimizationStatusFromJSONTyped(json, ignoreDiscriminator) {
|
|
45
|
+
if (json == null) {
|
|
46
|
+
return json;
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
'attempted': json['attempted'],
|
|
50
|
+
'reason': json['reason'],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function OptimizationStatusToJSON(json) {
|
|
54
|
+
return OptimizationStatusToJSONTyped(json, false);
|
|
55
|
+
}
|
|
56
|
+
function OptimizationStatusToJSONTyped(value, ignoreDiscriminator = false) {
|
|
57
|
+
if (value == null) {
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
'attempted': value['attempted'],
|
|
62
|
+
'reason': value['reason'],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenShift Migration Advisor API
|
|
3
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: v1alpha1
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
+
* https://openapi-generator.tech
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Infrastructure savings comparison
|
|
14
|
+
* @export
|
|
15
|
+
* @interface Savings
|
|
16
|
+
*/
|
|
17
|
+
export interface Savings {
|
|
18
|
+
/**
|
|
19
|
+
* Number of nodes saved compared to baseline
|
|
20
|
+
* @type {number}
|
|
21
|
+
* @memberof Savings
|
|
22
|
+
*/
|
|
23
|
+
nodesSaved: number;
|
|
24
|
+
/**
|
|
25
|
+
* Percentage reduction in nodes
|
|
26
|
+
* @type {number}
|
|
27
|
+
* @memberof Savings
|
|
28
|
+
*/
|
|
29
|
+
percentageReduction: number;
|
|
30
|
+
/**
|
|
31
|
+
* Human-readable description of savings source
|
|
32
|
+
* @type {string}
|
|
33
|
+
* @memberof Savings
|
|
34
|
+
*/
|
|
35
|
+
description: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if a given object implements the Savings interface.
|
|
39
|
+
*/
|
|
40
|
+
export declare function instanceOfSavings(value: object): value is Savings;
|
|
41
|
+
export declare function SavingsFromJSON(json: any): Savings;
|
|
42
|
+
export declare function SavingsFromJSONTyped(json: any, ignoreDiscriminator: boolean): Savings;
|
|
43
|
+
export declare function SavingsToJSON(json: any): Savings;
|
|
44
|
+
export declare function SavingsToJSONTyped(value?: Savings | null, ignoreDiscriminator?: boolean): any;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* tslint:disable */
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
/**
|
|
5
|
+
* OpenShift Migration Advisor API
|
|
6
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
*
|
|
8
|
+
* The version of the OpenAPI document: v1alpha1
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
12
|
+
* https://openapi-generator.tech
|
|
13
|
+
* Do not edit the class manually.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.instanceOfSavings = instanceOfSavings;
|
|
17
|
+
exports.SavingsFromJSON = SavingsFromJSON;
|
|
18
|
+
exports.SavingsFromJSONTyped = SavingsFromJSONTyped;
|
|
19
|
+
exports.SavingsToJSON = SavingsToJSON;
|
|
20
|
+
exports.SavingsToJSONTyped = SavingsToJSONTyped;
|
|
21
|
+
/**
|
|
22
|
+
* Check if a given object implements the Savings interface.
|
|
23
|
+
*/
|
|
24
|
+
function instanceOfSavings(value) {
|
|
25
|
+
if (!('nodesSaved' in value) || value['nodesSaved'] === undefined)
|
|
26
|
+
return false;
|
|
27
|
+
if (!('percentageReduction' in value) || value['percentageReduction'] === undefined)
|
|
28
|
+
return false;
|
|
29
|
+
if (!('description' in value) || value['description'] === undefined)
|
|
30
|
+
return false;
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
function SavingsFromJSON(json) {
|
|
34
|
+
return SavingsFromJSONTyped(json, false);
|
|
35
|
+
}
|
|
36
|
+
function SavingsFromJSONTyped(json, ignoreDiscriminator) {
|
|
37
|
+
if (json == null) {
|
|
38
|
+
return json;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
'nodesSaved': json['nodesSaved'],
|
|
42
|
+
'percentageReduction': json['percentageReduction'],
|
|
43
|
+
'description': json['description'],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function SavingsToJSON(json) {
|
|
47
|
+
return SavingsToJSONTyped(json, false);
|
|
48
|
+
}
|
|
49
|
+
function SavingsToJSONTyped(value, ignoreDiscriminator = false) {
|
|
50
|
+
if (value == null) {
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
'nodesSaved': value['nodesSaved'],
|
|
55
|
+
'percentageReduction': value['percentageReduction'],
|
|
56
|
+
'description': value['description'],
|
|
57
|
+
};
|
|
58
|
+
}
|
package/dist/models/index.d.ts
CHANGED
|
@@ -47,6 +47,7 @@ export * from './MigrationEstimationResponse.js';
|
|
|
47
47
|
export * from './MigrationIssue.js';
|
|
48
48
|
export * from './ModelError.js';
|
|
49
49
|
export * from './Network.js';
|
|
50
|
+
export * from './OptimizationStatus.js';
|
|
50
51
|
export * from './OsDiskEstimationEntry.js';
|
|
51
52
|
export * from './OsInfo.js';
|
|
52
53
|
export * from './PartnerRequest.js';
|
|
@@ -55,6 +56,7 @@ export * from './PartnerRequestStatus.js';
|
|
|
55
56
|
export * from './PartnerRequestUpdate.js';
|
|
56
57
|
export * from './PartnerSummary.js';
|
|
57
58
|
export * from './PresignedUrl.js';
|
|
59
|
+
export * from './Savings.js';
|
|
58
60
|
export * from './SchemaEstimationResult.js';
|
|
59
61
|
export * from './SharingSubject.js';
|
|
60
62
|
export * from './SizingOverCommitRatio.js';
|
package/dist/models/index.js
CHANGED
|
@@ -65,6 +65,7 @@ __exportStar(require("./MigrationEstimationResponse.js"), exports);
|
|
|
65
65
|
__exportStar(require("./MigrationIssue.js"), exports);
|
|
66
66
|
__exportStar(require("./ModelError.js"), exports);
|
|
67
67
|
__exportStar(require("./Network.js"), exports);
|
|
68
|
+
__exportStar(require("./OptimizationStatus.js"), exports);
|
|
68
69
|
__exportStar(require("./OsDiskEstimationEntry.js"), exports);
|
|
69
70
|
__exportStar(require("./OsInfo.js"), exports);
|
|
70
71
|
__exportStar(require("./PartnerRequest.js"), exports);
|
|
@@ -73,6 +74,7 @@ __exportStar(require("./PartnerRequestStatus.js"), exports);
|
|
|
73
74
|
__exportStar(require("./PartnerRequestUpdate.js"), exports);
|
|
74
75
|
__exportStar(require("./PartnerSummary.js"), exports);
|
|
75
76
|
__exportStar(require("./PresignedUrl.js"), exports);
|
|
77
|
+
__exportStar(require("./Savings.js"), exports);
|
|
76
78
|
__exportStar(require("./SchemaEstimationResult.js"), exports);
|
|
77
79
|
__exportStar(require("./SharingSubject.js"), exports);
|
|
78
80
|
__exportStar(require("./SizingOverCommitRatio.js"), exports);
|
package/dist/runtime.js
CHANGED
|
@@ -309,8 +309,9 @@ function mapValues(data, fn) {
|
|
|
309
309
|
return result;
|
|
310
310
|
}
|
|
311
311
|
function canConsumeForm(consumes) {
|
|
312
|
+
var _a;
|
|
312
313
|
for (const consume of consumes) {
|
|
313
|
-
if ('multipart/form-data'
|
|
314
|
+
if (((_a = consume.contentType) === null || _a === void 0 ? void 0 : _a.startsWith('multipart/form-data')) == true) {
|
|
314
315
|
return true;
|
|
315
316
|
}
|
|
316
317
|
}
|
|
@@ -8,6 +8,9 @@ Cluster requirements calculation results
|
|
|
8
8
|
Name | Type
|
|
9
9
|
------------ | -------------
|
|
10
10
|
`clusterSizing` | [ClusterSizing](ClusterSizing.md)
|
|
11
|
+
`optimizedSizing` | [ClusterSizing](ClusterSizing.md)
|
|
12
|
+
`savings` | [Savings](Savings.md)
|
|
13
|
+
`optimizationStatus` | [OptimizationStatus](OptimizationStatus.md)
|
|
11
14
|
`resourceConsumption` | [SizingResourceConsumption](SizingResourceConsumption.md)
|
|
12
15
|
`inventoryTotals` | [InventoryTotals](InventoryTotals.md)
|
|
13
16
|
|
|
@@ -19,6 +22,9 @@ import type { ClusterRequirementsResponse } from '@openshift-migration-advisor/p
|
|
|
19
22
|
// TODO: Update the object below with actual values
|
|
20
23
|
const example = {
|
|
21
24
|
"clusterSizing": null,
|
|
25
|
+
"optimizedSizing": null,
|
|
26
|
+
"savings": null,
|
|
27
|
+
"optimizationStatus": null,
|
|
22
28
|
"resourceConsumption": null,
|
|
23
29
|
"inventoryTotals": null,
|
|
24
30
|
} satisfies ClusterRequirementsResponse
|
package/docs/ClusterSizing.md
CHANGED
|
@@ -13,6 +13,9 @@ Name | Type
|
|
|
13
13
|
`failoverNodes` | number
|
|
14
14
|
`totalCPU` | number
|
|
15
15
|
`totalMemory` | number
|
|
16
|
+
`cpuUtilizationMax` | number
|
|
17
|
+
`memoryUtilizationMax` | number
|
|
18
|
+
`confidence` | number
|
|
16
19
|
|
|
17
20
|
## Example
|
|
18
21
|
|
|
@@ -27,6 +30,9 @@ const example = {
|
|
|
27
30
|
"failoverNodes": null,
|
|
28
31
|
"totalCPU": null,
|
|
29
32
|
"totalMemory": null,
|
|
33
|
+
"cpuUtilizationMax": null,
|
|
34
|
+
"memoryUtilizationMax": null,
|
|
35
|
+
"confidence": null,
|
|
30
36
|
} satisfies ClusterSizing
|
|
31
37
|
|
|
32
38
|
console.log(example)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
|
|
2
|
+
# OptimizationStatus
|
|
3
|
+
|
|
4
|
+
Status of utilization-based optimization attempt
|
|
5
|
+
|
|
6
|
+
## Properties
|
|
7
|
+
|
|
8
|
+
Name | Type
|
|
9
|
+
------------ | -------------
|
|
10
|
+
`attempted` | boolean
|
|
11
|
+
`reason` | string
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import type { OptimizationStatus } from '@openshift-migration-advisor/planner-sdk'
|
|
17
|
+
|
|
18
|
+
// TODO: Update the object below with actual values
|
|
19
|
+
const example = {
|
|
20
|
+
"attempted": null,
|
|
21
|
+
"reason": null,
|
|
22
|
+
} satisfies OptimizationStatus
|
|
23
|
+
|
|
24
|
+
console.log(example)
|
|
25
|
+
|
|
26
|
+
// Convert the instance to a JSON string
|
|
27
|
+
const exampleJSON: string = JSON.stringify(example)
|
|
28
|
+
console.log(exampleJSON)
|
|
29
|
+
|
|
30
|
+
// Parse the JSON string back to an object
|
|
31
|
+
const exampleParsed = JSON.parse(exampleJSON) as OptimizationStatus
|
|
32
|
+
console.log(exampleParsed)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
36
|
+
|
|
37
|
+
|
package/docs/Savings.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
|
|
2
|
+
# Savings
|
|
3
|
+
|
|
4
|
+
Infrastructure savings comparison
|
|
5
|
+
|
|
6
|
+
## Properties
|
|
7
|
+
|
|
8
|
+
Name | Type
|
|
9
|
+
------------ | -------------
|
|
10
|
+
`nodesSaved` | number
|
|
11
|
+
`percentageReduction` | number
|
|
12
|
+
`description` | string
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import type { Savings } from '@openshift-migration-advisor/planner-sdk'
|
|
18
|
+
|
|
19
|
+
// TODO: Update the object below with actual values
|
|
20
|
+
const example = {
|
|
21
|
+
"nodesSaved": null,
|
|
22
|
+
"percentageReduction": null,
|
|
23
|
+
"description": null,
|
|
24
|
+
} satisfies Savings
|
|
25
|
+
|
|
26
|
+
console.log(example)
|
|
27
|
+
|
|
28
|
+
// Convert the instance to a JSON string
|
|
29
|
+
const exampleJSON: string = JSON.stringify(example)
|
|
30
|
+
console.log(exampleJSON)
|
|
31
|
+
|
|
32
|
+
// Parse the JSON string back to an object
|
|
33
|
+
const exampleParsed = JSON.parse(exampleJSON) as Savings
|
|
34
|
+
console.log(exampleParsed)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
38
|
+
|
|
39
|
+
|
package/package.json
CHANGED
|
@@ -13,6 +13,13 @@
|
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
15
|
import { mapValues } from '../runtime.js';
|
|
16
|
+
import type { Savings } from './Savings.js';
|
|
17
|
+
import {
|
|
18
|
+
SavingsFromJSON,
|
|
19
|
+
SavingsFromJSONTyped,
|
|
20
|
+
SavingsToJSON,
|
|
21
|
+
SavingsToJSONTyped,
|
|
22
|
+
} from './Savings.js';
|
|
16
23
|
import type { SizingResourceConsumption } from './SizingResourceConsumption.js';
|
|
17
24
|
import {
|
|
18
25
|
SizingResourceConsumptionFromJSON,
|
|
@@ -34,6 +41,13 @@ import {
|
|
|
34
41
|
ClusterSizingToJSON,
|
|
35
42
|
ClusterSizingToJSONTyped,
|
|
36
43
|
} from './ClusterSizing.js';
|
|
44
|
+
import type { OptimizationStatus } from './OptimizationStatus.js';
|
|
45
|
+
import {
|
|
46
|
+
OptimizationStatusFromJSON,
|
|
47
|
+
OptimizationStatusFromJSONTyped,
|
|
48
|
+
OptimizationStatusToJSON,
|
|
49
|
+
OptimizationStatusToJSONTyped,
|
|
50
|
+
} from './OptimizationStatus.js';
|
|
37
51
|
|
|
38
52
|
/**
|
|
39
53
|
* Cluster requirements calculation results
|
|
@@ -47,6 +61,24 @@ export interface ClusterRequirementsResponse {
|
|
|
47
61
|
* @memberof ClusterRequirementsResponse
|
|
48
62
|
*/
|
|
49
63
|
clusterSizing: ClusterSizing;
|
|
64
|
+
/**
|
|
65
|
+
*
|
|
66
|
+
* @type {ClusterSizing}
|
|
67
|
+
* @memberof ClusterRequirementsResponse
|
|
68
|
+
*/
|
|
69
|
+
optimizedSizing?: ClusterSizing;
|
|
70
|
+
/**
|
|
71
|
+
*
|
|
72
|
+
* @type {Savings}
|
|
73
|
+
* @memberof ClusterRequirementsResponse
|
|
74
|
+
*/
|
|
75
|
+
savings?: Savings;
|
|
76
|
+
/**
|
|
77
|
+
*
|
|
78
|
+
* @type {OptimizationStatus}
|
|
79
|
+
* @memberof ClusterRequirementsResponse
|
|
80
|
+
*/
|
|
81
|
+
optimizationStatus?: OptimizationStatus;
|
|
50
82
|
/**
|
|
51
83
|
*
|
|
52
84
|
* @type {SizingResourceConsumption}
|
|
@@ -82,6 +114,9 @@ export function ClusterRequirementsResponseFromJSONTyped(json: any, ignoreDiscri
|
|
|
82
114
|
return {
|
|
83
115
|
|
|
84
116
|
'clusterSizing': ClusterSizingFromJSON(json['clusterSizing']),
|
|
117
|
+
'optimizedSizing': json['optimizedSizing'] == null ? undefined : ClusterSizingFromJSON(json['optimizedSizing']),
|
|
118
|
+
'savings': json['savings'] == null ? undefined : SavingsFromJSON(json['savings']),
|
|
119
|
+
'optimizationStatus': json['optimizationStatus'] == null ? undefined : OptimizationStatusFromJSON(json['optimizationStatus']),
|
|
85
120
|
'resourceConsumption': SizingResourceConsumptionFromJSON(json['resourceConsumption']),
|
|
86
121
|
'inventoryTotals': InventoryTotalsFromJSON(json['inventoryTotals']),
|
|
87
122
|
};
|
|
@@ -99,6 +134,9 @@ export function ClusterRequirementsResponseToJSONTyped(value?: ClusterRequiremen
|
|
|
99
134
|
return {
|
|
100
135
|
|
|
101
136
|
'clusterSizing': ClusterSizingToJSON(value['clusterSizing']),
|
|
137
|
+
'optimizedSizing': ClusterSizingToJSON(value['optimizedSizing']),
|
|
138
|
+
'savings': SavingsToJSON(value['savings']),
|
|
139
|
+
'optimizationStatus': OptimizationStatusToJSON(value['optimizationStatus']),
|
|
102
140
|
'resourceConsumption': SizingResourceConsumptionToJSON(value['resourceConsumption']),
|
|
103
141
|
'inventoryTotals': InventoryTotalsToJSON(value['inventoryTotals']),
|
|
104
142
|
};
|
|
@@ -55,6 +55,24 @@ export interface ClusterSizing {
|
|
|
55
55
|
* @memberof ClusterSizing
|
|
56
56
|
*/
|
|
57
57
|
totalMemory: number;
|
|
58
|
+
/**
|
|
59
|
+
* CPU utilization maximum percentage (only in optimized_sizing)
|
|
60
|
+
* @type {number}
|
|
61
|
+
* @memberof ClusterSizing
|
|
62
|
+
*/
|
|
63
|
+
cpuUtilizationMax?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Memory utilization maximum percentage (only in optimized_sizing)
|
|
66
|
+
* @type {number}
|
|
67
|
+
* @memberof ClusterSizing
|
|
68
|
+
*/
|
|
69
|
+
memoryUtilizationMax?: number;
|
|
70
|
+
/**
|
|
71
|
+
* Data coverage confidence 0-100 (only in optimized_sizing)
|
|
72
|
+
* @type {number}
|
|
73
|
+
* @memberof ClusterSizing
|
|
74
|
+
*/
|
|
75
|
+
confidence?: number;
|
|
58
76
|
}
|
|
59
77
|
|
|
60
78
|
/**
|
|
@@ -86,6 +104,9 @@ export function ClusterSizingFromJSONTyped(json: any, ignoreDiscriminator: boole
|
|
|
86
104
|
'failoverNodes': json['failoverNodes'],
|
|
87
105
|
'totalCPU': json['totalCPU'],
|
|
88
106
|
'totalMemory': json['totalMemory'],
|
|
107
|
+
'cpuUtilizationMax': json['cpuUtilizationMax'] == null ? undefined : json['cpuUtilizationMax'],
|
|
108
|
+
'memoryUtilizationMax': json['memoryUtilizationMax'] == null ? undefined : json['memoryUtilizationMax'],
|
|
109
|
+
'confidence': json['confidence'] == null ? undefined : json['confidence'],
|
|
89
110
|
};
|
|
90
111
|
}
|
|
91
112
|
|
|
@@ -106,6 +127,9 @@ export function ClusterSizingToJSONTyped(value?: ClusterSizing | null, ignoreDis
|
|
|
106
127
|
'failoverNodes': value['failoverNodes'],
|
|
107
128
|
'totalCPU': value['totalCPU'],
|
|
108
129
|
'totalMemory': value['totalMemory'],
|
|
130
|
+
'cpuUtilizationMax': value['cpuUtilizationMax'],
|
|
131
|
+
'memoryUtilizationMax': value['memoryUtilizationMax'],
|
|
132
|
+
'confidence': value['confidence'],
|
|
109
133
|
};
|
|
110
134
|
}
|
|
111
135
|
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/**
|
|
4
|
+
* OpenShift Migration Advisor API
|
|
5
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
6
|
+
*
|
|
7
|
+
* The version of the OpenAPI document: v1alpha1
|
|
8
|
+
*
|
|
9
|
+
*
|
|
10
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
11
|
+
* https://openapi-generator.tech
|
|
12
|
+
* Do not edit the class manually.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { mapValues } from '../runtime.js';
|
|
16
|
+
/**
|
|
17
|
+
* Status of utilization-based optimization attempt
|
|
18
|
+
* @export
|
|
19
|
+
* @interface OptimizationStatus
|
|
20
|
+
*/
|
|
21
|
+
export interface OptimizationStatus {
|
|
22
|
+
/**
|
|
23
|
+
* Whether optimization was attempted based on available utilization data
|
|
24
|
+
* @type {boolean}
|
|
25
|
+
* @memberof OptimizationStatus
|
|
26
|
+
*/
|
|
27
|
+
attempted: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Reason for optimization result
|
|
30
|
+
* @type {OptimizationStatusReasonEnum}
|
|
31
|
+
* @memberof OptimizationStatus
|
|
32
|
+
*/
|
|
33
|
+
reason: OptimizationStatusReasonEnum;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @export
|
|
39
|
+
*/
|
|
40
|
+
export const OptimizationStatusReasonEnum = {
|
|
41
|
+
NoUtilizationData: 'no_utilization_data',
|
|
42
|
+
LowConfidence: 'low_confidence',
|
|
43
|
+
CalculationError: 'calculation_error',
|
|
44
|
+
Success: 'success'
|
|
45
|
+
} as const;
|
|
46
|
+
export type OptimizationStatusReasonEnum = typeof OptimizationStatusReasonEnum[keyof typeof OptimizationStatusReasonEnum];
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Check if a given object implements the OptimizationStatus interface.
|
|
51
|
+
*/
|
|
52
|
+
export function instanceOfOptimizationStatus(value: object): value is OptimizationStatus {
|
|
53
|
+
if (!('attempted' in value) || value['attempted'] === undefined) return false;
|
|
54
|
+
if (!('reason' in value) || value['reason'] === undefined) return false;
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function OptimizationStatusFromJSON(json: any): OptimizationStatus {
|
|
59
|
+
return OptimizationStatusFromJSONTyped(json, false);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function OptimizationStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): OptimizationStatus {
|
|
63
|
+
if (json == null) {
|
|
64
|
+
return json;
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
|
|
68
|
+
'attempted': json['attempted'],
|
|
69
|
+
'reason': json['reason'],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export function OptimizationStatusToJSON(json: any): OptimizationStatus {
|
|
74
|
+
return OptimizationStatusToJSONTyped(json, false);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export function OptimizationStatusToJSONTyped(value?: OptimizationStatus | null, ignoreDiscriminator: boolean = false): any {
|
|
78
|
+
if (value == null) {
|
|
79
|
+
return value;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return {
|
|
83
|
+
|
|
84
|
+
'attempted': value['attempted'],
|
|
85
|
+
'reason': value['reason'],
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/**
|
|
4
|
+
* OpenShift Migration Advisor API
|
|
5
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
6
|
+
*
|
|
7
|
+
* The version of the OpenAPI document: v1alpha1
|
|
8
|
+
*
|
|
9
|
+
*
|
|
10
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
11
|
+
* https://openapi-generator.tech
|
|
12
|
+
* Do not edit the class manually.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { mapValues } from '../runtime.js';
|
|
16
|
+
/**
|
|
17
|
+
* Infrastructure savings comparison
|
|
18
|
+
* @export
|
|
19
|
+
* @interface Savings
|
|
20
|
+
*/
|
|
21
|
+
export interface Savings {
|
|
22
|
+
/**
|
|
23
|
+
* Number of nodes saved compared to baseline
|
|
24
|
+
* @type {number}
|
|
25
|
+
* @memberof Savings
|
|
26
|
+
*/
|
|
27
|
+
nodesSaved: number;
|
|
28
|
+
/**
|
|
29
|
+
* Percentage reduction in nodes
|
|
30
|
+
* @type {number}
|
|
31
|
+
* @memberof Savings
|
|
32
|
+
*/
|
|
33
|
+
percentageReduction: number;
|
|
34
|
+
/**
|
|
35
|
+
* Human-readable description of savings source
|
|
36
|
+
* @type {string}
|
|
37
|
+
* @memberof Savings
|
|
38
|
+
*/
|
|
39
|
+
description: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Check if a given object implements the Savings interface.
|
|
44
|
+
*/
|
|
45
|
+
export function instanceOfSavings(value: object): value is Savings {
|
|
46
|
+
if (!('nodesSaved' in value) || value['nodesSaved'] === undefined) return false;
|
|
47
|
+
if (!('percentageReduction' in value) || value['percentageReduction'] === undefined) return false;
|
|
48
|
+
if (!('description' in value) || value['description'] === undefined) return false;
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function SavingsFromJSON(json: any): Savings {
|
|
53
|
+
return SavingsFromJSONTyped(json, false);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function SavingsFromJSONTyped(json: any, ignoreDiscriminator: boolean): Savings {
|
|
57
|
+
if (json == null) {
|
|
58
|
+
return json;
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
|
|
62
|
+
'nodesSaved': json['nodesSaved'],
|
|
63
|
+
'percentageReduction': json['percentageReduction'],
|
|
64
|
+
'description': json['description'],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function SavingsToJSON(json: any): Savings {
|
|
69
|
+
return SavingsToJSONTyped(json, false);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function SavingsToJSONTyped(value?: Savings | null, ignoreDiscriminator: boolean = false): any {
|
|
73
|
+
if (value == null) {
|
|
74
|
+
return value;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return {
|
|
78
|
+
|
|
79
|
+
'nodesSaved': value['nodesSaved'],
|
|
80
|
+
'percentageReduction': value['percentageReduction'],
|
|
81
|
+
'description': value['description'],
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
package/src/models/index.ts
CHANGED
|
@@ -49,6 +49,7 @@ export * from './MigrationEstimationResponse.js';
|
|
|
49
49
|
export * from './MigrationIssue.js';
|
|
50
50
|
export * from './ModelError.js';
|
|
51
51
|
export * from './Network.js';
|
|
52
|
+
export * from './OptimizationStatus.js';
|
|
52
53
|
export * from './OsDiskEstimationEntry.js';
|
|
53
54
|
export * from './OsInfo.js';
|
|
54
55
|
export * from './PartnerRequest.js';
|
|
@@ -57,6 +58,7 @@ export * from './PartnerRequestStatus.js';
|
|
|
57
58
|
export * from './PartnerRequestUpdate.js';
|
|
58
59
|
export * from './PartnerSummary.js';
|
|
59
60
|
export * from './PresignedUrl.js';
|
|
61
|
+
export * from './Savings.js';
|
|
60
62
|
export * from './SchemaEstimationResult.js';
|
|
61
63
|
export * from './SharingSubject.js';
|
|
62
64
|
export * from './SizingOverCommitRatio.js';
|
package/src/runtime.ts
CHANGED
|
@@ -369,7 +369,7 @@ export function mapValues(data: any, fn: (item: any) => any) {
|
|
|
369
369
|
|
|
370
370
|
export function canConsumeForm(consumes: Consume[]): boolean {
|
|
371
371
|
for (const consume of consumes) {
|
|
372
|
-
if ('multipart/form-data'
|
|
372
|
+
if (consume.contentType?.startsWith('multipart/form-data') == true) {
|
|
373
373
|
return true;
|
|
374
374
|
}
|
|
375
375
|
}
|