@openshift-migration-advisor/planner-sdk 0.4.0-190ea33a47ea
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 +105 -0
- package/.openapi-generator/VERSION +1 -0
- package/.openapi-generator-ignore +23 -0
- package/README.md +173 -0
- package/dist/apis/AssessmentApi.d.ts +236 -0
- package/dist/apis/AssessmentApi.js +277 -0
- package/dist/apis/HealthApi.d.ts +54 -0
- package/dist/apis/HealthApi.js +66 -0
- package/dist/apis/ImageApi.d.ts +94 -0
- package/dist/apis/ImageApi.js +110 -0
- package/dist/apis/InfoApi.d.ts +55 -0
- package/dist/apis/InfoApi.js +68 -0
- package/dist/apis/JobApi.d.ts +131 -0
- package/dist/apis/JobApi.js +174 -0
- package/dist/apis/SourceApi.d.ts +260 -0
- package/dist/apis/SourceApi.js +309 -0
- package/dist/apis/index.d.ts +6 -0
- package/dist/apis/index.js +24 -0
- package/dist/esm/apis/AssessmentApi.d.ts +236 -0
- package/dist/esm/apis/AssessmentApi.js +273 -0
- package/dist/esm/apis/HealthApi.d.ts +54 -0
- package/dist/esm/apis/HealthApi.js +62 -0
- package/dist/esm/apis/ImageApi.d.ts +94 -0
- package/dist/esm/apis/ImageApi.js +106 -0
- package/dist/esm/apis/InfoApi.d.ts +55 -0
- package/dist/esm/apis/InfoApi.js +64 -0
- package/dist/esm/apis/JobApi.d.ts +131 -0
- package/dist/esm/apis/JobApi.js +170 -0
- package/dist/esm/apis/SourceApi.d.ts +260 -0
- package/dist/esm/apis/SourceApi.js +305 -0
- package/dist/esm/apis/index.d.ts +6 -0
- package/dist/esm/apis/index.js +8 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/models/Agent.d.ts +80 -0
- package/dist/esm/models/Agent.js +78 -0
- package/dist/esm/models/AgentProxy.d.ts +44 -0
- package/dist/esm/models/AgentProxy.js +45 -0
- package/dist/esm/models/Assessment.d.ts +84 -0
- package/dist/esm/models/Assessment.js +74 -0
- package/dist/esm/models/AssessmentForm.d.ts +54 -0
- package/dist/esm/models/AssessmentForm.js +52 -0
- package/dist/esm/models/AssessmentUpdate.d.ts +32 -0
- package/dist/esm/models/AssessmentUpdate.js +41 -0
- package/dist/esm/models/ClusterRequirementsRequest.d.ts +87 -0
- package/dist/esm/models/ClusterRequirementsRequest.js +80 -0
- package/dist/esm/models/ClusterRequirementsResponse.d.ts +47 -0
- package/dist/esm/models/ClusterRequirementsResponse.js +54 -0
- package/dist/esm/models/ClusterSizing.d.ts +62 -0
- package/dist/esm/models/ClusterSizing.js +63 -0
- package/dist/esm/models/Datastore.d.ts +80 -0
- package/dist/esm/models/Datastore.js +73 -0
- package/dist/esm/models/DiskSizeTierSummary.d.ts +38 -0
- package/dist/esm/models/DiskSizeTierSummary.js +47 -0
- package/dist/esm/models/DiskTypeSummary.d.ts +38 -0
- package/dist/esm/models/DiskTypeSummary.js +47 -0
- package/dist/esm/models/Histogram.d.ts +44 -0
- package/dist/esm/models/Histogram.js +51 -0
- package/dist/esm/models/Host.d.ts +62 -0
- package/dist/esm/models/Host.js +55 -0
- package/dist/esm/models/Info.d.ts +38 -0
- package/dist/esm/models/Info.js +47 -0
- package/dist/esm/models/Infra.d.ts +106 -0
- package/dist/esm/models/Infra.js +74 -0
- package/dist/esm/models/Inventory.d.ts +47 -0
- package/dist/esm/models/Inventory.js +51 -0
- package/dist/esm/models/InventoryData.d.ts +47 -0
- package/dist/esm/models/InventoryData.js +52 -0
- package/dist/esm/models/InventoryTotals.d.ts +44 -0
- package/dist/esm/models/InventoryTotals.js +51 -0
- package/dist/esm/models/Ipv4Config.d.ts +50 -0
- package/dist/esm/models/Ipv4Config.js +55 -0
- package/dist/esm/models/Job.d.ts +51 -0
- package/dist/esm/models/Job.js +52 -0
- package/dist/esm/models/JobStatus.d.ts +36 -0
- package/dist/esm/models/JobStatus.js +54 -0
- package/dist/esm/models/Label.d.ts +38 -0
- package/dist/esm/models/Label.js +47 -0
- package/dist/esm/models/MigrationIssue.d.ts +50 -0
- package/dist/esm/models/MigrationIssue.js +53 -0
- package/dist/esm/models/ModelError.d.ts +38 -0
- package/dist/esm/models/ModelError.js +45 -0
- package/dist/esm/models/Network.d.ts +66 -0
- package/dist/esm/models/Network.js +62 -0
- package/dist/esm/models/OsInfo.d.ts +44 -0
- package/dist/esm/models/OsInfo.js +49 -0
- package/dist/esm/models/PresignedUrl.d.ts +38 -0
- package/dist/esm/models/PresignedUrl.js +45 -0
- package/dist/esm/models/SizingOverCommitRatio.d.ts +38 -0
- package/dist/esm/models/SizingOverCommitRatio.js +47 -0
- package/dist/esm/models/SizingResourceConsumption.d.ts +52 -0
- package/dist/esm/models/SizingResourceConsumption.js +53 -0
- package/dist/esm/models/SizingResourceLimits.d.ts +38 -0
- package/dist/esm/models/SizingResourceLimits.js +47 -0
- package/dist/esm/models/Snapshot.d.ts +39 -0
- package/dist/esm/models/Snapshot.js +48 -0
- package/dist/esm/models/Source.d.ts +84 -0
- package/dist/esm/models/Source.js +71 -0
- package/dist/esm/models/SourceCreate.d.ts +65 -0
- package/dist/esm/models/SourceCreate.js +56 -0
- package/dist/esm/models/SourceInfra.d.ts +46 -0
- package/dist/esm/models/SourceInfra.js +47 -0
- package/dist/esm/models/SourceUpdate.d.ts +65 -0
- package/dist/esm/models/SourceUpdate.js +54 -0
- package/dist/esm/models/Status.d.ts +44 -0
- package/dist/esm/models/Status.js +45 -0
- package/dist/esm/models/UpdateInventory.d.ts +39 -0
- package/dist/esm/models/UpdateInventory.js +48 -0
- package/dist/esm/models/VCenter.d.ts +32 -0
- package/dist/esm/models/VCenter.js +43 -0
- package/dist/esm/models/VMResourceBreakdown.d.ts +58 -0
- package/dist/esm/models/VMResourceBreakdown.js +58 -0
- package/dist/esm/models/VMs.d.ts +162 -0
- package/dist/esm/models/VMs.js +101 -0
- package/dist/esm/models/VmNetwork.d.ts +33 -0
- package/dist/esm/models/VmNetwork.js +42 -0
- package/dist/esm/models/index.d.ts +41 -0
- package/dist/esm/models/index.js +43 -0
- package/dist/esm/runtime.d.ts +184 -0
- package/dist/esm/runtime.js +334 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +21 -0
- package/dist/models/Agent.d.ts +80 -0
- package/dist/models/Agent.js +86 -0
- package/dist/models/AgentProxy.d.ts +44 -0
- package/dist/models/AgentProxy.js +52 -0
- package/dist/models/Assessment.d.ts +84 -0
- package/dist/models/Assessment.js +82 -0
- package/dist/models/AssessmentForm.d.ts +54 -0
- package/dist/models/AssessmentForm.js +59 -0
- package/dist/models/AssessmentUpdate.d.ts +32 -0
- package/dist/models/AssessmentUpdate.js +48 -0
- package/dist/models/ClusterRequirementsRequest.d.ts +87 -0
- package/dist/models/ClusterRequirementsRequest.js +88 -0
- package/dist/models/ClusterRequirementsResponse.d.ts +47 -0
- package/dist/models/ClusterRequirementsResponse.js +61 -0
- package/dist/models/ClusterSizing.d.ts +62 -0
- package/dist/models/ClusterSizing.js +70 -0
- package/dist/models/Datastore.d.ts +80 -0
- package/dist/models/Datastore.js +80 -0
- package/dist/models/DiskSizeTierSummary.d.ts +38 -0
- package/dist/models/DiskSizeTierSummary.js +54 -0
- package/dist/models/DiskTypeSummary.d.ts +38 -0
- package/dist/models/DiskTypeSummary.js +54 -0
- package/dist/models/Histogram.d.ts +44 -0
- package/dist/models/Histogram.js +58 -0
- package/dist/models/Host.d.ts +62 -0
- package/dist/models/Host.js +62 -0
- package/dist/models/Info.d.ts +38 -0
- package/dist/models/Info.js +54 -0
- package/dist/models/Infra.d.ts +106 -0
- package/dist/models/Infra.js +81 -0
- package/dist/models/Inventory.d.ts +47 -0
- package/dist/models/Inventory.js +58 -0
- package/dist/models/InventoryData.d.ts +47 -0
- package/dist/models/InventoryData.js +59 -0
- package/dist/models/InventoryTotals.d.ts +44 -0
- package/dist/models/InventoryTotals.js +58 -0
- package/dist/models/Ipv4Config.d.ts +50 -0
- package/dist/models/Ipv4Config.js +62 -0
- package/dist/models/Job.d.ts +51 -0
- package/dist/models/Job.js +59 -0
- package/dist/models/JobStatus.d.ts +36 -0
- package/dist/models/JobStatus.js +62 -0
- package/dist/models/Label.d.ts +38 -0
- package/dist/models/Label.js +54 -0
- package/dist/models/MigrationIssue.d.ts +50 -0
- package/dist/models/MigrationIssue.js +60 -0
- package/dist/models/ModelError.d.ts +38 -0
- package/dist/models/ModelError.js +52 -0
- package/dist/models/Network.d.ts +66 -0
- package/dist/models/Network.js +70 -0
- package/dist/models/OsInfo.d.ts +44 -0
- package/dist/models/OsInfo.js +56 -0
- package/dist/models/PresignedUrl.d.ts +38 -0
- package/dist/models/PresignedUrl.js +52 -0
- package/dist/models/SizingOverCommitRatio.d.ts +38 -0
- package/dist/models/SizingOverCommitRatio.js +54 -0
- package/dist/models/SizingResourceConsumption.d.ts +52 -0
- package/dist/models/SizingResourceConsumption.js +60 -0
- package/dist/models/SizingResourceLimits.d.ts +38 -0
- package/dist/models/SizingResourceLimits.js +54 -0
- package/dist/models/Snapshot.d.ts +39 -0
- package/dist/models/Snapshot.js +55 -0
- package/dist/models/Source.d.ts +84 -0
- package/dist/models/Source.js +78 -0
- package/dist/models/SourceCreate.d.ts +65 -0
- package/dist/models/SourceCreate.js +63 -0
- package/dist/models/SourceInfra.d.ts +46 -0
- package/dist/models/SourceInfra.js +54 -0
- package/dist/models/SourceUpdate.d.ts +65 -0
- package/dist/models/SourceUpdate.js +61 -0
- package/dist/models/Status.d.ts +44 -0
- package/dist/models/Status.js +52 -0
- package/dist/models/UpdateInventory.d.ts +39 -0
- package/dist/models/UpdateInventory.js +55 -0
- package/dist/models/VCenter.d.ts +32 -0
- package/dist/models/VCenter.js +50 -0
- package/dist/models/VMResourceBreakdown.d.ts +58 -0
- package/dist/models/VMResourceBreakdown.js +65 -0
- package/dist/models/VMs.d.ts +162 -0
- package/dist/models/VMs.js +108 -0
- package/dist/models/VmNetwork.d.ts +33 -0
- package/dist/models/VmNetwork.js +49 -0
- package/dist/models/index.d.ts +41 -0
- package/dist/models/index.js +59 -0
- package/dist/runtime.d.ts +184 -0
- package/dist/runtime.js +350 -0
- package/docs/Agent.md +46 -0
- package/docs/AgentProxy.md +38 -0
- package/docs/Assessment.md +48 -0
- package/docs/AssessmentApi.md +448 -0
- package/docs/AssessmentForm.md +40 -0
- package/docs/AssessmentUpdate.md +35 -0
- package/docs/ClusterRequirementsRequest.md +47 -0
- package/docs/ClusterRequirementsResponse.md +39 -0
- package/docs/ClusterSizing.md +45 -0
- package/docs/Datastore.md +50 -0
- package/docs/DiskSizeTierSummary.md +36 -0
- package/docs/DiskTypeSummary.md +36 -0
- package/docs/HealthApi.md +68 -0
- package/docs/Histogram.md +38 -0
- package/docs/Host.md +44 -0
- package/docs/ImageApi.md +152 -0
- package/docs/Info.md +37 -0
- package/docs/InfoApi.md +69 -0
- package/docs/Infra.md +56 -0
- package/docs/Inventory.md +38 -0
- package/docs/InventoryData.md +38 -0
- package/docs/InventoryTotals.md +39 -0
- package/docs/Ipv4Config.md +40 -0
- package/docs/Job.md +41 -0
- package/docs/JobApi.md +229 -0
- package/docs/JobStatus.md +33 -0
- package/docs/Label.md +36 -0
- package/docs/MigrationIssue.md +40 -0
- package/docs/ModelError.md +36 -0
- package/docs/Network.md +42 -0
- package/docs/OsInfo.md +38 -0
- package/docs/PresignedUrl.md +36 -0
- package/docs/SizingOverCommitRatio.md +37 -0
- package/docs/SizingResourceConsumption.md +41 -0
- package/docs/SizingResourceLimits.md +37 -0
- package/docs/Snapshot.md +36 -0
- package/docs/Source.md +50 -0
- package/docs/SourceApi.md +501 -0
- package/docs/SourceCreate.md +44 -0
- package/docs/SourceInfra.md +38 -0
- package/docs/SourceUpdate.md +44 -0
- package/docs/Status.md +39 -0
- package/docs/UpdateInventory.md +36 -0
- package/docs/VCenter.md +34 -0
- package/docs/VMResourceBreakdown.md +42 -0
- package/docs/VMs.md +70 -0
- package/docs/VmNetwork.md +34 -0
- package/package.json +22 -0
- package/src/apis/AssessmentApi.ts +501 -0
- package/src/apis/HealthApi.ts +88 -0
- package/src/apis/ImageApi.ts +180 -0
- package/src/apis/InfoApi.ts +96 -0
- package/src/apis/JobApi.ts +286 -0
- package/src/apis/SourceApi.ts +548 -0
- package/src/apis/index.ts +8 -0
- package/src/index.ts +5 -0
- package/src/models/Agent.ts +135 -0
- package/src/models/AgentProxy.ts +81 -0
- package/src/models/Assessment.ts +146 -0
- package/src/models/AssessmentForm.ts +102 -0
- package/src/models/AssessmentUpdate.ts +65 -0
- package/src/models/ClusterRequirementsRequest.ts +141 -0
- package/src/models/ClusterRequirementsResponse.ts +106 -0
- package/src/models/ClusterSizing.ts +111 -0
- package/src/models/Datastore.ts +137 -0
- package/src/models/DiskSizeTierSummary.ts +75 -0
- package/src/models/DiskTypeSummary.ts +75 -0
- package/src/models/Histogram.ts +84 -0
- package/src/models/Host.ts +107 -0
- package/src/models/Info.ts +75 -0
- package/src/models/Infra.ts +182 -0
- package/src/models/Inventory.ts +91 -0
- package/src/models/InventoryData.ts +105 -0
- package/src/models/InventoryTotals.ts +84 -0
- package/src/models/Ipv4Config.ts +93 -0
- package/src/models/Job.ts +101 -0
- package/src/models/JobStatus.ts +64 -0
- package/src/models/Label.ts +75 -0
- package/src/models/MigrationIssue.ts +92 -0
- package/src/models/ModelError.ts +74 -0
- package/src/models/Network.ts +112 -0
- package/src/models/OsInfo.ts +83 -0
- package/src/models/PresignedUrl.ts +74 -0
- package/src/models/SizingOverCommitRatio.ts +75 -0
- package/src/models/SizingResourceConsumption.ts +106 -0
- package/src/models/SizingResourceLimits.ts +75 -0
- package/src/models/Snapshot.ts +83 -0
- package/src/models/Source.ts +163 -0
- package/src/models/SourceCreate.ts +128 -0
- package/src/models/SourceInfra.ts +96 -0
- package/src/models/SourceUpdate.ts +127 -0
- package/src/models/Status.ts +81 -0
- package/src/models/UpdateInventory.ts +83 -0
- package/src/models/VCenter.ts +66 -0
- package/src/models/VMResourceBreakdown.ts +110 -0
- package/src/models/VMs.ts +255 -0
- package/src/models/VmNetwork.ts +73 -0
- package/src/models/index.ts +43 -0
- package/src/runtime.ts +432 -0
- package/tsconfig.esm.json +7 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
|
|
2
|
+
# Ipv4Config
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
Name | Type
|
|
8
|
+
------------ | -------------
|
|
9
|
+
`ipAddress` | string
|
|
10
|
+
`subnetMask` | string
|
|
11
|
+
`defaultGateway` | string
|
|
12
|
+
`dns` | string
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import type { Ipv4Config } from '@openshift-migration-advisor/planner-sdk'
|
|
18
|
+
|
|
19
|
+
// TODO: Update the object below with actual values
|
|
20
|
+
const example = {
|
|
21
|
+
"ipAddress": null,
|
|
22
|
+
"subnetMask": null,
|
|
23
|
+
"defaultGateway": null,
|
|
24
|
+
"dns": null,
|
|
25
|
+
} satisfies Ipv4Config
|
|
26
|
+
|
|
27
|
+
console.log(example)
|
|
28
|
+
|
|
29
|
+
// Convert the instance to a JSON string
|
|
30
|
+
const exampleJSON: string = JSON.stringify(example)
|
|
31
|
+
console.log(exampleJSON)
|
|
32
|
+
|
|
33
|
+
// Parse the JSON string back to an object
|
|
34
|
+
const exampleParsed = JSON.parse(exampleJSON) as Ipv4Config
|
|
35
|
+
console.log(exampleParsed)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
39
|
+
|
|
40
|
+
|
package/docs/Job.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
# Job
|
|
3
|
+
|
|
4
|
+
Background job for async assessment creation
|
|
5
|
+
|
|
6
|
+
## Properties
|
|
7
|
+
|
|
8
|
+
Name | Type
|
|
9
|
+
------------ | -------------
|
|
10
|
+
`id` | number
|
|
11
|
+
`status` | [JobStatus](JobStatus.md)
|
|
12
|
+
`error` | string
|
|
13
|
+
`assessmentId` | string
|
|
14
|
+
|
|
15
|
+
## Example
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import type { Job } from '@openshift-migration-advisor/planner-sdk'
|
|
19
|
+
|
|
20
|
+
// TODO: Update the object below with actual values
|
|
21
|
+
const example = {
|
|
22
|
+
"id": null,
|
|
23
|
+
"status": null,
|
|
24
|
+
"error": null,
|
|
25
|
+
"assessmentId": null,
|
|
26
|
+
} satisfies Job
|
|
27
|
+
|
|
28
|
+
console.log(example)
|
|
29
|
+
|
|
30
|
+
// Convert the instance to a JSON string
|
|
31
|
+
const exampleJSON: string = JSON.stringify(example)
|
|
32
|
+
console.log(exampleJSON)
|
|
33
|
+
|
|
34
|
+
// Parse the JSON string back to an object
|
|
35
|
+
const exampleParsed = JSON.parse(exampleJSON) as Job
|
|
36
|
+
console.log(exampleParsed)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
40
|
+
|
|
41
|
+
|
package/docs/JobApi.md
ADDED
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# JobApi
|
|
2
|
+
|
|
3
|
+
All URIs are relative to *https://raw.githubusercontent.com*
|
|
4
|
+
|
|
5
|
+
| Method | HTTP request | Description |
|
|
6
|
+
|------------- | ------------- | -------------|
|
|
7
|
+
| [**cancelJob**](JobApi.md#canceljob) | **DELETE** /api/v1/assessments/jobs/{id} | |
|
|
8
|
+
| [**createRVToolsAssessment**](JobApi.md#creatervtoolsassessment) | **POST** /api/v1/assessments/rvtools | |
|
|
9
|
+
| [**getJob**](JobApi.md#getjob) | **GET** /api/v1/assessments/jobs/{id} | |
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## cancelJob
|
|
14
|
+
|
|
15
|
+
> Job cancelJob(id)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
Cancel a job
|
|
20
|
+
|
|
21
|
+
### Example
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import {
|
|
25
|
+
Configuration,
|
|
26
|
+
JobApi,
|
|
27
|
+
} from '@openshift-migration-advisor/planner-sdk';
|
|
28
|
+
import type { CancelJobRequest } from '@openshift-migration-advisor/planner-sdk';
|
|
29
|
+
|
|
30
|
+
async function example() {
|
|
31
|
+
console.log("🚀 Testing @openshift-migration-advisor/planner-sdk SDK...");
|
|
32
|
+
const api = new JobApi();
|
|
33
|
+
|
|
34
|
+
const body = {
|
|
35
|
+
// number | ID of the job
|
|
36
|
+
id: 789,
|
|
37
|
+
} satisfies CancelJobRequest;
|
|
38
|
+
|
|
39
|
+
try {
|
|
40
|
+
const data = await api.cancelJob(body);
|
|
41
|
+
console.log(data);
|
|
42
|
+
} catch (error) {
|
|
43
|
+
console.error(error);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Run the test
|
|
48
|
+
example().catch(console.error);
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Parameters
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
| Name | Type | Description | Notes |
|
|
55
|
+
|------------- | ------------- | ------------- | -------------|
|
|
56
|
+
| **id** | `number` | ID of the job | [Defaults to `undefined`] |
|
|
57
|
+
|
|
58
|
+
### Return type
|
|
59
|
+
|
|
60
|
+
[**Job**](Job.md)
|
|
61
|
+
|
|
62
|
+
### Authorization
|
|
63
|
+
|
|
64
|
+
No authorization required
|
|
65
|
+
|
|
66
|
+
### HTTP request headers
|
|
67
|
+
|
|
68
|
+
- **Content-Type**: Not defined
|
|
69
|
+
- **Accept**: `application/json`
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
### HTTP response details
|
|
73
|
+
| Status code | Description | Response headers |
|
|
74
|
+
|-------------|-------------|------------------|
|
|
75
|
+
| **200** | OK | - |
|
|
76
|
+
| **400** | Bad Request | - |
|
|
77
|
+
| **401** | Unauthorized | - |
|
|
78
|
+
| **403** | Forbidden | - |
|
|
79
|
+
| **404** | NotFound | - |
|
|
80
|
+
| **409** | Conflict | - |
|
|
81
|
+
| **500** | Internal error | - |
|
|
82
|
+
|
|
83
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
## createRVToolsAssessment
|
|
87
|
+
|
|
88
|
+
> Job createRVToolsAssessment(name, file)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
Create an assessment from RVTools file asynchronously
|
|
93
|
+
|
|
94
|
+
### Example
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
import {
|
|
98
|
+
Configuration,
|
|
99
|
+
JobApi,
|
|
100
|
+
} from '@openshift-migration-advisor/planner-sdk';
|
|
101
|
+
import type { CreateRVToolsAssessmentRequest } from '@openshift-migration-advisor/planner-sdk';
|
|
102
|
+
|
|
103
|
+
async function example() {
|
|
104
|
+
console.log("🚀 Testing @openshift-migration-advisor/planner-sdk SDK...");
|
|
105
|
+
const api = new JobApi();
|
|
106
|
+
|
|
107
|
+
const body = {
|
|
108
|
+
// string | Name of the assessment
|
|
109
|
+
name: name_example,
|
|
110
|
+
// Blob | File upload for assessment data
|
|
111
|
+
file: BINARY_DATA_HERE,
|
|
112
|
+
} satisfies CreateRVToolsAssessmentRequest;
|
|
113
|
+
|
|
114
|
+
try {
|
|
115
|
+
const data = await api.createRVToolsAssessment(body);
|
|
116
|
+
console.log(data);
|
|
117
|
+
} catch (error) {
|
|
118
|
+
console.error(error);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Run the test
|
|
123
|
+
example().catch(console.error);
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Parameters
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
| Name | Type | Description | Notes |
|
|
130
|
+
|------------- | ------------- | ------------- | -------------|
|
|
131
|
+
| **name** | `string` | Name of the assessment | [Defaults to `undefined`] |
|
|
132
|
+
| **file** | `Blob` | File upload for assessment data | [Defaults to `undefined`] |
|
|
133
|
+
|
|
134
|
+
### Return type
|
|
135
|
+
|
|
136
|
+
[**Job**](Job.md)
|
|
137
|
+
|
|
138
|
+
### Authorization
|
|
139
|
+
|
|
140
|
+
No authorization required
|
|
141
|
+
|
|
142
|
+
### HTTP request headers
|
|
143
|
+
|
|
144
|
+
- **Content-Type**: `multipart/form-data`
|
|
145
|
+
- **Accept**: `application/json`
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
### HTTP response details
|
|
149
|
+
| Status code | Description | Response headers |
|
|
150
|
+
|-------------|-------------|------------------|
|
|
151
|
+
| **202** | Accepted - Job created | - |
|
|
152
|
+
| **400** | Bad Request | - |
|
|
153
|
+
| **401** | Unauthorized | - |
|
|
154
|
+
| **500** | Internal error | - |
|
|
155
|
+
|
|
156
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
## getJob
|
|
160
|
+
|
|
161
|
+
> Job getJob(id)
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
Get job status
|
|
166
|
+
|
|
167
|
+
### Example
|
|
168
|
+
|
|
169
|
+
```ts
|
|
170
|
+
import {
|
|
171
|
+
Configuration,
|
|
172
|
+
JobApi,
|
|
173
|
+
} from '@openshift-migration-advisor/planner-sdk';
|
|
174
|
+
import type { GetJobRequest } from '@openshift-migration-advisor/planner-sdk';
|
|
175
|
+
|
|
176
|
+
async function example() {
|
|
177
|
+
console.log("🚀 Testing @openshift-migration-advisor/planner-sdk SDK...");
|
|
178
|
+
const api = new JobApi();
|
|
179
|
+
|
|
180
|
+
const body = {
|
|
181
|
+
// number | ID of the job
|
|
182
|
+
id: 789,
|
|
183
|
+
} satisfies GetJobRequest;
|
|
184
|
+
|
|
185
|
+
try {
|
|
186
|
+
const data = await api.getJob(body);
|
|
187
|
+
console.log(data);
|
|
188
|
+
} catch (error) {
|
|
189
|
+
console.error(error);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Run the test
|
|
194
|
+
example().catch(console.error);
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Parameters
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
| Name | Type | Description | Notes |
|
|
201
|
+
|------------- | ------------- | ------------- | -------------|
|
|
202
|
+
| **id** | `number` | ID of the job | [Defaults to `undefined`] |
|
|
203
|
+
|
|
204
|
+
### Return type
|
|
205
|
+
|
|
206
|
+
[**Job**](Job.md)
|
|
207
|
+
|
|
208
|
+
### Authorization
|
|
209
|
+
|
|
210
|
+
No authorization required
|
|
211
|
+
|
|
212
|
+
### HTTP request headers
|
|
213
|
+
|
|
214
|
+
- **Content-Type**: Not defined
|
|
215
|
+
- **Accept**: `application/json`
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
### HTTP response details
|
|
219
|
+
| Status code | Description | Response headers |
|
|
220
|
+
|-------------|-------------|------------------|
|
|
221
|
+
| **200** | OK | - |
|
|
222
|
+
| **400** | Bad Request | - |
|
|
223
|
+
| **401** | Unauthorized | - |
|
|
224
|
+
| **403** | Forbidden | - |
|
|
225
|
+
| **404** | NotFound | - |
|
|
226
|
+
| **500** | Internal error | - |
|
|
227
|
+
|
|
228
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
229
|
+
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
|
|
2
|
+
# JobStatus
|
|
3
|
+
|
|
4
|
+
Job status: * `pending` - Job is queued * `parsing` - Parsing RVTools Excel file * `validating` - Running OPA VM validations * `completed` - Assessment created successfully * `failed` - Job failed with error * `cancelled` - Job was cancelled
|
|
5
|
+
|
|
6
|
+
## Properties
|
|
7
|
+
|
|
8
|
+
Name | Type
|
|
9
|
+
------------ | -------------
|
|
10
|
+
|
|
11
|
+
## Example
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import type { JobStatus } from '@openshift-migration-advisor/planner-sdk'
|
|
15
|
+
|
|
16
|
+
// TODO: Update the object below with actual values
|
|
17
|
+
const example = {
|
|
18
|
+
} satisfies JobStatus
|
|
19
|
+
|
|
20
|
+
console.log(example)
|
|
21
|
+
|
|
22
|
+
// Convert the instance to a JSON string
|
|
23
|
+
const exampleJSON: string = JSON.stringify(example)
|
|
24
|
+
console.log(exampleJSON)
|
|
25
|
+
|
|
26
|
+
// Parse the JSON string back to an object
|
|
27
|
+
const exampleParsed = JSON.parse(exampleJSON) as JobStatus
|
|
28
|
+
console.log(exampleParsed)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
32
|
+
|
|
33
|
+
|
package/docs/Label.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
|
|
2
|
+
# Label
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
Name | Type
|
|
8
|
+
------------ | -------------
|
|
9
|
+
`key` | string
|
|
10
|
+
`value` | string
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
import type { Label } from '@openshift-migration-advisor/planner-sdk'
|
|
16
|
+
|
|
17
|
+
// TODO: Update the object below with actual values
|
|
18
|
+
const example = {
|
|
19
|
+
"key": null,
|
|
20
|
+
"value": null,
|
|
21
|
+
} satisfies Label
|
|
22
|
+
|
|
23
|
+
console.log(example)
|
|
24
|
+
|
|
25
|
+
// Convert the instance to a JSON string
|
|
26
|
+
const exampleJSON: string = JSON.stringify(example)
|
|
27
|
+
console.log(exampleJSON)
|
|
28
|
+
|
|
29
|
+
// Parse the JSON string back to an object
|
|
30
|
+
const exampleParsed = JSON.parse(exampleJSON) as Label
|
|
31
|
+
console.log(exampleParsed)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
35
|
+
|
|
36
|
+
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
|
|
2
|
+
# MigrationIssue
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
Name | Type
|
|
8
|
+
------------ | -------------
|
|
9
|
+
`id` | string
|
|
10
|
+
`label` | string
|
|
11
|
+
`assessment` | string
|
|
12
|
+
`count` | number
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import type { MigrationIssue } from '@openshift-migration-advisor/planner-sdk'
|
|
18
|
+
|
|
19
|
+
// TODO: Update the object below with actual values
|
|
20
|
+
const example = {
|
|
21
|
+
"id": null,
|
|
22
|
+
"label": null,
|
|
23
|
+
"assessment": null,
|
|
24
|
+
"count": null,
|
|
25
|
+
} satisfies MigrationIssue
|
|
26
|
+
|
|
27
|
+
console.log(example)
|
|
28
|
+
|
|
29
|
+
// Convert the instance to a JSON string
|
|
30
|
+
const exampleJSON: string = JSON.stringify(example)
|
|
31
|
+
console.log(exampleJSON)
|
|
32
|
+
|
|
33
|
+
// Parse the JSON string back to an object
|
|
34
|
+
const exampleParsed = JSON.parse(exampleJSON) as MigrationIssue
|
|
35
|
+
console.log(exampleParsed)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
39
|
+
|
|
40
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
|
|
2
|
+
# ModelError
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
Name | Type
|
|
8
|
+
------------ | -------------
|
|
9
|
+
`message` | string
|
|
10
|
+
`requestId` | string
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
import type { ModelError } from '@openshift-migration-advisor/planner-sdk'
|
|
16
|
+
|
|
17
|
+
// TODO: Update the object below with actual values
|
|
18
|
+
const example = {
|
|
19
|
+
"message": null,
|
|
20
|
+
"requestId": null,
|
|
21
|
+
} satisfies ModelError
|
|
22
|
+
|
|
23
|
+
console.log(example)
|
|
24
|
+
|
|
25
|
+
// Convert the instance to a JSON string
|
|
26
|
+
const exampleJSON: string = JSON.stringify(example)
|
|
27
|
+
console.log(exampleJSON)
|
|
28
|
+
|
|
29
|
+
// Parse the JSON string back to an object
|
|
30
|
+
const exampleParsed = JSON.parse(exampleJSON) as ModelError
|
|
31
|
+
console.log(exampleParsed)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
35
|
+
|
|
36
|
+
|
package/docs/Network.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
|
|
2
|
+
# Network
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
Name | Type
|
|
8
|
+
------------ | -------------
|
|
9
|
+
`type` | string
|
|
10
|
+
`name` | string
|
|
11
|
+
`vlanId` | string
|
|
12
|
+
`dvswitch` | string
|
|
13
|
+
`vmsCount` | number
|
|
14
|
+
|
|
15
|
+
## Example
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import type { Network } from '@openshift-migration-advisor/planner-sdk'
|
|
19
|
+
|
|
20
|
+
// TODO: Update the object below with actual values
|
|
21
|
+
const example = {
|
|
22
|
+
"type": null,
|
|
23
|
+
"name": null,
|
|
24
|
+
"vlanId": null,
|
|
25
|
+
"dvswitch": null,
|
|
26
|
+
"vmsCount": null,
|
|
27
|
+
} satisfies Network
|
|
28
|
+
|
|
29
|
+
console.log(example)
|
|
30
|
+
|
|
31
|
+
// Convert the instance to a JSON string
|
|
32
|
+
const exampleJSON: string = JSON.stringify(example)
|
|
33
|
+
console.log(exampleJSON)
|
|
34
|
+
|
|
35
|
+
// Parse the JSON string back to an object
|
|
36
|
+
const exampleParsed = JSON.parse(exampleJSON) as Network
|
|
37
|
+
console.log(exampleParsed)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
41
|
+
|
|
42
|
+
|
package/docs/OsInfo.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
|
|
2
|
+
# OsInfo
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
Name | Type
|
|
8
|
+
------------ | -------------
|
|
9
|
+
`count` | number
|
|
10
|
+
`supported` | boolean
|
|
11
|
+
`upgradeRecommendation` | string
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import type { OsInfo } from '@openshift-migration-advisor/planner-sdk'
|
|
17
|
+
|
|
18
|
+
// TODO: Update the object below with actual values
|
|
19
|
+
const example = {
|
|
20
|
+
"count": null,
|
|
21
|
+
"supported": null,
|
|
22
|
+
"upgradeRecommendation": null,
|
|
23
|
+
} satisfies OsInfo
|
|
24
|
+
|
|
25
|
+
console.log(example)
|
|
26
|
+
|
|
27
|
+
// Convert the instance to a JSON string
|
|
28
|
+
const exampleJSON: string = JSON.stringify(example)
|
|
29
|
+
console.log(exampleJSON)
|
|
30
|
+
|
|
31
|
+
// Parse the JSON string back to an object
|
|
32
|
+
const exampleParsed = JSON.parse(exampleJSON) as OsInfo
|
|
33
|
+
console.log(exampleParsed)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
37
|
+
|
|
38
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
|
|
2
|
+
# PresignedUrl
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
Name | Type
|
|
8
|
+
------------ | -------------
|
|
9
|
+
`url` | string
|
|
10
|
+
`expiresAt` | Date
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
import type { PresignedUrl } from '@openshift-migration-advisor/planner-sdk'
|
|
16
|
+
|
|
17
|
+
// TODO: Update the object below with actual values
|
|
18
|
+
const example = {
|
|
19
|
+
"url": null,
|
|
20
|
+
"expiresAt": null,
|
|
21
|
+
} satisfies PresignedUrl
|
|
22
|
+
|
|
23
|
+
console.log(example)
|
|
24
|
+
|
|
25
|
+
// Convert the instance to a JSON string
|
|
26
|
+
const exampleJSON: string = JSON.stringify(example)
|
|
27
|
+
console.log(exampleJSON)
|
|
28
|
+
|
|
29
|
+
// Parse the JSON string back to an object
|
|
30
|
+
const exampleParsed = JSON.parse(exampleJSON) as PresignedUrl
|
|
31
|
+
console.log(exampleParsed)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
35
|
+
|
|
36
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
|
|
2
|
+
# SizingOverCommitRatio
|
|
3
|
+
|
|
4
|
+
Over-commit ratios
|
|
5
|
+
|
|
6
|
+
## Properties
|
|
7
|
+
|
|
8
|
+
Name | Type
|
|
9
|
+
------------ | -------------
|
|
10
|
+
`cpu` | number
|
|
11
|
+
`memory` | number
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import type { SizingOverCommitRatio } from '@openshift-migration-advisor/planner-sdk'
|
|
17
|
+
|
|
18
|
+
// TODO: Update the object below with actual values
|
|
19
|
+
const example = {
|
|
20
|
+
"cpu": null,
|
|
21
|
+
"memory": null,
|
|
22
|
+
} satisfies SizingOverCommitRatio
|
|
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 SizingOverCommitRatio
|
|
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
|
+
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
# SizingResourceConsumption
|
|
3
|
+
|
|
4
|
+
Resource consumption across the cluster
|
|
5
|
+
|
|
6
|
+
## Properties
|
|
7
|
+
|
|
8
|
+
Name | Type
|
|
9
|
+
------------ | -------------
|
|
10
|
+
`cpu` | number
|
|
11
|
+
`memory` | number
|
|
12
|
+
`limits` | [SizingResourceLimits](SizingResourceLimits.md)
|
|
13
|
+
`overCommitRatio` | [SizingOverCommitRatio](SizingOverCommitRatio.md)
|
|
14
|
+
|
|
15
|
+
## Example
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import type { SizingResourceConsumption } from '@openshift-migration-advisor/planner-sdk'
|
|
19
|
+
|
|
20
|
+
// TODO: Update the object below with actual values
|
|
21
|
+
const example = {
|
|
22
|
+
"cpu": null,
|
|
23
|
+
"memory": null,
|
|
24
|
+
"limits": null,
|
|
25
|
+
"overCommitRatio": null,
|
|
26
|
+
} satisfies SizingResourceConsumption
|
|
27
|
+
|
|
28
|
+
console.log(example)
|
|
29
|
+
|
|
30
|
+
// Convert the instance to a JSON string
|
|
31
|
+
const exampleJSON: string = JSON.stringify(example)
|
|
32
|
+
console.log(exampleJSON)
|
|
33
|
+
|
|
34
|
+
// Parse the JSON string back to an object
|
|
35
|
+
const exampleParsed = JSON.parse(exampleJSON) as SizingResourceConsumption
|
|
36
|
+
console.log(exampleParsed)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
40
|
+
|
|
41
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
|
|
2
|
+
# SizingResourceLimits
|
|
3
|
+
|
|
4
|
+
Resource limits
|
|
5
|
+
|
|
6
|
+
## Properties
|
|
7
|
+
|
|
8
|
+
Name | Type
|
|
9
|
+
------------ | -------------
|
|
10
|
+
`cpu` | number
|
|
11
|
+
`memory` | number
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import type { SizingResourceLimits } from '@openshift-migration-advisor/planner-sdk'
|
|
17
|
+
|
|
18
|
+
// TODO: Update the object below with actual values
|
|
19
|
+
const example = {
|
|
20
|
+
"cpu": null,
|
|
21
|
+
"memory": null,
|
|
22
|
+
} satisfies SizingResourceLimits
|
|
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 SizingResourceLimits
|
|
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
|
+
|