@cloud-ru/uikit-product-calculator 0.37.0 → 0.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +1 -1
- package/dist/cjs/config/platforms/evolution/catalog.js +1 -1
- package/dist/cjs/config/platforms/evolution/constants.d.ts +0 -1
- package/dist/cjs/config/platforms/evolution/constants.js +0 -1
- package/dist/cjs/config/platforms/evolution/product-config/index.d.ts +5 -1
- package/dist/cjs/config/platforms/evolution/product-config/index.js +5 -1
- package/dist/cjs/config/platforms/evolution/products.js +6 -21
- package/dist/esm/config/platforms/evolution/catalog.js +1 -1
- package/dist/esm/config/platforms/evolution/constants.d.ts +0 -1
- package/dist/esm/config/platforms/evolution/constants.js +0 -1
- package/dist/esm/config/platforms/evolution/product-config/index.d.ts +5 -1
- package/dist/esm/config/platforms/evolution/product-config/index.js +5 -1
- package/dist/esm/config/platforms/evolution/products.js +3 -18
- package/package.json +2 -2
- package/src/config/platforms/evolution/catalog.tsx +1 -1
- package/src/config/platforms/evolution/constants.ts +0 -1
- package/src/config/platforms/evolution/product-config/index.ts +5 -1
- package/src/config/platforms/evolution/products.ts +6 -18
- package/dist/cjs/config/platforms/evolution/product-config/EvolutionCloudServerGpu.d.ts +0 -2
- package/dist/cjs/config/platforms/evolution/product-config/EvolutionCloudServerGpu.js +0 -273
- package/dist/esm/config/platforms/evolution/product-config/EvolutionCloudServerGpu.d.ts +0 -2
- package/dist/esm/config/platforms/evolution/product-config/EvolutionCloudServerGpu.js +0 -270
- package/src/config/platforms/evolution/product-config/EvolutionCloudServerGpu.tsx +0 -301
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# 0.38.0 (2025-12-19)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **SITE-10410:** update calculator ([881e1d8](https://gitverse.ru/cloud-ru-tech/uikit-product/commits/881e1d80f5b63e94facee9958b8fc59ad8113f15))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# 0.37.0 (2025-12-18)
|
|
7
18
|
|
|
8
19
|
|
package/README.md
CHANGED
|
@@ -122,7 +122,7 @@ data-test-id
|
|
|
122
122
|
### Props
|
|
123
123
|
| name | type | default value | description |
|
|
124
124
|
|------|------|---------------|-------------|
|
|
125
|
-
| __@iterator@
|
|
125
|
+
| __@iterator@1094* | `() => StringIterator<string>` | - | Iterator |
|
|
126
126
|
| toWellFormed* | `() => string` | - | Returns a string where all lone or out-of-order surrogates have been replaced by the Unicode replacement character (U+FFFD). |
|
|
127
127
|
| isWellFormed* | `() => boolean` | - | Returns true if all leading surrogates and trailing surrogates appear paired and in order. |
|
|
128
128
|
| at* | `(index: number) => string` | - | Returns a new String consisting of the single UTF-16 code unit located at the specified index. @param index The zero-based index of the desired code unit. A negative index will count back from the last item. |
|
|
@@ -28,6 +28,7 @@ exports.EVOLUTION_CATALOG = {
|
|
|
28
28
|
constants_2.EVOLUTION_PRODUCT.EvolutionCloudServerFreeTier,
|
|
29
29
|
constants_2.EVOLUTION_PRODUCT.EvolutionStorageS3FreeTier,
|
|
30
30
|
constants_2.EVOLUTION_PRODUCT.EvolutionContainerAppsFreeTier,
|
|
31
|
+
constants_2.EVOLUTION_PRODUCT.EvolutionManagedBI,
|
|
31
32
|
],
|
|
32
33
|
banner: ((0, jsx_runtime_1.jsx)(alert_1.Alert, { appearance: 'info', outline: true, description: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Free tier\u00A0\u2014 \u044D\u0442\u043E \u043E\u0431\u043B\u0430\u0447\u043D\u044B\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044B, \u0437\u0430\u00A0\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043D\u0435\u00A0\u043D\u0430\u0434\u043E \u043F\u043B\u0430\u0442\u0438\u0442\u044C. \u041F\u043E\u0441\u043B\u0435 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u043E\u0441\u0442\u0430\u043D\u0435\u0442\u0441\u044F \u043D\u0430\u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u044B\u043C. \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435 \u0432\u00A0", (0, jsx_runtime_1.jsx)(link_1.Link, { size: 'm', appearance: 'primary', textMode: 'accent', insideText: true, target: '_blank', href: 'https://cloud.ru/docs/evolution/overview/topics/free-tier', text: '\u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u0438' })] }) })),
|
|
33
34
|
},
|
|
@@ -39,7 +40,6 @@ exports.EVOLUTION_CATALOG = {
|
|
|
39
40
|
constants_2.EVOLUTION_PRODUCT.EvolutionCloudServer,
|
|
40
41
|
constants_2.EVOLUTION_PRODUCT.EvolutionCloudServerFreeTier,
|
|
41
42
|
constants_2.EVOLUTION_PRODUCT.EvolutionBareMetal,
|
|
42
|
-
constants_2.EVOLUTION_PRODUCT.EvolutionCloudServerGpu,
|
|
43
43
|
],
|
|
44
44
|
},
|
|
45
45
|
{
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export declare const EVOLUTION_PRODUCT: {
|
|
2
2
|
readonly EvolutionCloudServer: "evolutionCloudServer";
|
|
3
|
-
readonly EvolutionCloudServerGpu: "evolutionCloudServerGpu";
|
|
4
3
|
readonly EvolutionCloudServerFreeTier: "evolutionCloudServerFreeTier";
|
|
5
4
|
readonly EvolutionKubernetes: "evolutionKubernetes";
|
|
6
5
|
readonly EvolutionStorageS3FreeTier: "evolutionStorageS3FreeTier";
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.deploymentModes = exports.DeploymentMode = exports.guaranteedPartVCpuToRamMap = exports.guaranteedPartToVCpuMap = exports.EVOLUTION_PRODUCT = void 0;
|
|
4
4
|
exports.EVOLUTION_PRODUCT = {
|
|
5
5
|
EvolutionCloudServer: 'evolutionCloudServer',
|
|
6
|
-
EvolutionCloudServerGpu: 'evolutionCloudServerGpu',
|
|
7
6
|
EvolutionCloudServerFreeTier: 'evolutionCloudServerFreeTier',
|
|
8
7
|
EvolutionKubernetes: 'evolutionKubernetes',
|
|
9
8
|
EvolutionStorageS3FreeTier: 'evolutionStorageS3FreeTier',
|
|
@@ -5,7 +5,6 @@ export * from './EvolutionKubernetes';
|
|
|
5
5
|
export * from './EvolutionPostgreSql';
|
|
6
6
|
export * from './EvolutionStorageS3';
|
|
7
7
|
export * from './EvolutionStorageS3FreeTier';
|
|
8
|
-
export * from './EvolutionCloudServerGpu';
|
|
9
8
|
export * from './EvolutionContainerApps';
|
|
10
9
|
export * from './EvolutionContainerAppsFreeTier';
|
|
11
10
|
export * from './EvolutionNotebooks';
|
|
@@ -16,3 +15,8 @@ export * from './EvolutionPublicIp';
|
|
|
16
15
|
export * from './EvolutionManagedMetastore';
|
|
17
16
|
export * from './EvolutionArtifactRegistry';
|
|
18
17
|
export * from './EvolutionManagedTrino';
|
|
18
|
+
export * from './EvolutionDNS';
|
|
19
|
+
export * from './EvolutionLoadBalancer';
|
|
20
|
+
export * from './EvolutionManagedBI';
|
|
21
|
+
export * from './EvolutionManagedRedis';
|
|
22
|
+
export * from './EvolutionManagedSpark';
|
|
@@ -21,7 +21,6 @@ __exportStar(require("./EvolutionKubernetes"), exports);
|
|
|
21
21
|
__exportStar(require("./EvolutionPostgreSql"), exports);
|
|
22
22
|
__exportStar(require("./EvolutionStorageS3"), exports);
|
|
23
23
|
__exportStar(require("./EvolutionStorageS3FreeTier"), exports);
|
|
24
|
-
__exportStar(require("./EvolutionCloudServerGpu"), exports);
|
|
25
24
|
__exportStar(require("./EvolutionContainerApps"), exports);
|
|
26
25
|
__exportStar(require("./EvolutionContainerAppsFreeTier"), exports);
|
|
27
26
|
__exportStar(require("./EvolutionNotebooks"), exports);
|
|
@@ -32,3 +31,8 @@ __exportStar(require("./EvolutionPublicIp"), exports);
|
|
|
32
31
|
__exportStar(require("./EvolutionManagedMetastore"), exports);
|
|
33
32
|
__exportStar(require("./EvolutionArtifactRegistry"), exports);
|
|
34
33
|
__exportStar(require("./EvolutionManagedTrino"), exports);
|
|
34
|
+
__exportStar(require("./EvolutionDNS"), exports);
|
|
35
|
+
__exportStar(require("./EvolutionLoadBalancer"), exports);
|
|
36
|
+
__exportStar(require("./EvolutionManagedBI"), exports);
|
|
37
|
+
__exportStar(require("./EvolutionManagedRedis"), exports);
|
|
38
|
+
__exportStar(require("./EvolutionManagedSpark"), exports);
|
|
@@ -5,11 +5,6 @@ const uikit_product_icons_1 = require("@cloud-ru/uikit-product-icons");
|
|
|
5
5
|
const constants_1 = require("../../../constants");
|
|
6
6
|
const constants_2 = require("./constants");
|
|
7
7
|
const product_config_1 = require("./product-config");
|
|
8
|
-
const EvolutionDNS_1 = require("./product-config/EvolutionDNS");
|
|
9
|
-
const EvolutionLoadBalancer_1 = require("./product-config/EvolutionLoadBalancer");
|
|
10
|
-
const EvolutionManagedBI_1 = require("./product-config/EvolutionManagedBI");
|
|
11
|
-
const EvolutionManagedRedis_1 = require("./product-config/EvolutionManagedRedis");
|
|
12
|
-
const EvolutionManagedSpark_1 = require("./product-config/EvolutionManagedSpark");
|
|
13
8
|
exports.EVOLUTION_PRODUCTS = {
|
|
14
9
|
[constants_2.EVOLUTION_PRODUCT.EvolutionCloudServer]: {
|
|
15
10
|
id: constants_2.EVOLUTION_PRODUCT.EvolutionCloudServer,
|
|
@@ -80,7 +75,7 @@ exports.EVOLUTION_PRODUCTS = {
|
|
|
80
75
|
platform: constants_1.PLATFORM.Evolution,
|
|
81
76
|
label: 'Evolution Managed Spark',
|
|
82
77
|
caption: 'Распределенная обработка данных в Spark',
|
|
83
|
-
formConfig:
|
|
78
|
+
formConfig: product_config_1.EVOLUTION_MANAGED_SPARK_CONFIG,
|
|
84
79
|
icon: uikit_product_icons_1.SparkSVG,
|
|
85
80
|
dataTestId: 'evolutionManagedSpark',
|
|
86
81
|
enableConnectToConsole: true,
|
|
@@ -90,7 +85,7 @@ exports.EVOLUTION_PRODUCTS = {
|
|
|
90
85
|
platform: constants_1.PLATFORM.Evolution,
|
|
91
86
|
label: 'Evolution Managed Redis®',
|
|
92
87
|
caption: 'Управляемая база данных Redis®',
|
|
93
|
-
formConfig:
|
|
88
|
+
formConfig: product_config_1.EVOLUTION_MANAGED_REDIS_CONFIG,
|
|
94
89
|
icon: uikit_product_icons_1.RedisSVG,
|
|
95
90
|
dataTestId: 'EvolutionManagedRedis',
|
|
96
91
|
enableConnectToConsole: true,
|
|
@@ -100,7 +95,7 @@ exports.EVOLUTION_PRODUCTS = {
|
|
|
100
95
|
platform: constants_1.PLATFORM.Evolution,
|
|
101
96
|
label: 'Evolution Load Balancer',
|
|
102
97
|
caption: 'Сервис для балансировки сетевого трафика',
|
|
103
|
-
formConfig:
|
|
98
|
+
formConfig: product_config_1.EVOLUTION_LOAD_BALANCER_CONFIG,
|
|
104
99
|
icon: uikit_product_icons_1.LoadBalancerSVG,
|
|
105
100
|
dataTestId: 'EvolutionLoadBalancer',
|
|
106
101
|
enableConnectToConsole: true,
|
|
@@ -138,17 +133,6 @@ exports.EVOLUTION_PRODUCTS = {
|
|
|
138
133
|
enableChangeProductQuantity: false,
|
|
139
134
|
enableConnectToConsole: true,
|
|
140
135
|
},
|
|
141
|
-
[constants_2.EVOLUTION_PRODUCT.EvolutionCloudServerGpu]: {
|
|
142
|
-
id: constants_2.EVOLUTION_PRODUCT.EvolutionCloudServerGpu,
|
|
143
|
-
platform: constants_1.PLATFORM.Evolution,
|
|
144
|
-
label: 'Вычислительные мощности с GPU',
|
|
145
|
-
caption: 'Аренда виртуальных машин, серверов и ML-сервисов с графическими ускорителями',
|
|
146
|
-
icon: uikit_product_icons_1.ElasticCloudServerWithGpuSVG,
|
|
147
|
-
formConfig: product_config_1.EVOLUTION_CLOUD_SERVER_GPU_FORM_CONFIG,
|
|
148
|
-
dataTestId: constants_2.EVOLUTION_PRODUCT.EvolutionCloudServerGpu,
|
|
149
|
-
enableChangeProductQuantity: true,
|
|
150
|
-
enableConnectToConsole: true,
|
|
151
|
-
},
|
|
152
136
|
[constants_2.EVOLUTION_PRODUCT.EvolutionContainerApps]: {
|
|
153
137
|
id: constants_2.EVOLUTION_PRODUCT.EvolutionContainerApps,
|
|
154
138
|
platform: constants_1.PLATFORM.Evolution,
|
|
@@ -214,7 +198,7 @@ exports.EVOLUTION_PRODUCTS = {
|
|
|
214
198
|
label: 'Evolution DNS',
|
|
215
199
|
caption: 'Сервис для управления публичными и приватными доменными зонами на облачной платформе Cloud.ru Evolution',
|
|
216
200
|
icon: uikit_product_icons_1.EvoDnsSVG,
|
|
217
|
-
formConfig:
|
|
201
|
+
formConfig: product_config_1.EVOLUTION_DNS_CONFIG,
|
|
218
202
|
dataTestId: constants_2.EVOLUTION_PRODUCT.EvolutionDNS,
|
|
219
203
|
enableChangeProductQuantity: true,
|
|
220
204
|
enableConnectToConsole: true,
|
|
@@ -247,9 +231,10 @@ exports.EVOLUTION_PRODUCTS = {
|
|
|
247
231
|
label: 'Evolution Managed BI',
|
|
248
232
|
caption: 'Управляемые инстансы Business Intelligence',
|
|
249
233
|
icon: uikit_product_icons_1.EvolutionBiSVG,
|
|
250
|
-
formConfig:
|
|
234
|
+
formConfig: product_config_1.EVOLUTION_MANAGED_BI,
|
|
251
235
|
dataTestId: constants_2.EVOLUTION_PRODUCT.EvolutionManagedBI,
|
|
252
236
|
enableChangeProductQuantity: false,
|
|
237
|
+
freeTier: true,
|
|
253
238
|
enableConnectToConsole: true,
|
|
254
239
|
},
|
|
255
240
|
[constants_2.EVOLUTION_PRODUCT.EvolutionNotebooks]: {
|
|
@@ -25,6 +25,7 @@ export const EVOLUTION_CATALOG = {
|
|
|
25
25
|
EVOLUTION_PRODUCT.EvolutionCloudServerFreeTier,
|
|
26
26
|
EVOLUTION_PRODUCT.EvolutionStorageS3FreeTier,
|
|
27
27
|
EVOLUTION_PRODUCT.EvolutionContainerAppsFreeTier,
|
|
28
|
+
EVOLUTION_PRODUCT.EvolutionManagedBI,
|
|
28
29
|
],
|
|
29
30
|
banner: (_jsx(Alert, { appearance: 'info', outline: true, description: _jsxs(_Fragment, { children: ["Free tier\u00A0\u2014 \u044D\u0442\u043E \u043E\u0431\u043B\u0430\u0447\u043D\u044B\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044B, \u0437\u0430\u00A0\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043D\u0435\u00A0\u043D\u0430\u0434\u043E \u043F\u043B\u0430\u0442\u0438\u0442\u044C. \u041F\u043E\u0441\u043B\u0435 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u043E\u0441\u0442\u0430\u043D\u0435\u0442\u0441\u044F \u043D\u0430\u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u044B\u043C. \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435 \u0432\u00A0", _jsx(Link, { size: 'm', appearance: 'primary', textMode: 'accent', insideText: true, target: '_blank', href: 'https://cloud.ru/docs/evolution/overview/topics/free-tier', text: '\u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u0438' })] }) })),
|
|
30
31
|
},
|
|
@@ -36,7 +37,6 @@ export const EVOLUTION_CATALOG = {
|
|
|
36
37
|
EVOLUTION_PRODUCT.EvolutionCloudServer,
|
|
37
38
|
EVOLUTION_PRODUCT.EvolutionCloudServerFreeTier,
|
|
38
39
|
EVOLUTION_PRODUCT.EvolutionBareMetal,
|
|
39
|
-
EVOLUTION_PRODUCT.EvolutionCloudServerGpu,
|
|
40
40
|
],
|
|
41
41
|
},
|
|
42
42
|
{
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export declare const EVOLUTION_PRODUCT: {
|
|
2
2
|
readonly EvolutionCloudServer: "evolutionCloudServer";
|
|
3
|
-
readonly EvolutionCloudServerGpu: "evolutionCloudServerGpu";
|
|
4
3
|
readonly EvolutionCloudServerFreeTier: "evolutionCloudServerFreeTier";
|
|
5
4
|
readonly EvolutionKubernetes: "evolutionKubernetes";
|
|
6
5
|
readonly EvolutionStorageS3FreeTier: "evolutionStorageS3FreeTier";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export const EVOLUTION_PRODUCT = {
|
|
2
2
|
EvolutionCloudServer: 'evolutionCloudServer',
|
|
3
|
-
EvolutionCloudServerGpu: 'evolutionCloudServerGpu',
|
|
4
3
|
EvolutionCloudServerFreeTier: 'evolutionCloudServerFreeTier',
|
|
5
4
|
EvolutionKubernetes: 'evolutionKubernetes',
|
|
6
5
|
EvolutionStorageS3FreeTier: 'evolutionStorageS3FreeTier',
|
|
@@ -5,7 +5,6 @@ export * from './EvolutionKubernetes';
|
|
|
5
5
|
export * from './EvolutionPostgreSql';
|
|
6
6
|
export * from './EvolutionStorageS3';
|
|
7
7
|
export * from './EvolutionStorageS3FreeTier';
|
|
8
|
-
export * from './EvolutionCloudServerGpu';
|
|
9
8
|
export * from './EvolutionContainerApps';
|
|
10
9
|
export * from './EvolutionContainerAppsFreeTier';
|
|
11
10
|
export * from './EvolutionNotebooks';
|
|
@@ -16,3 +15,8 @@ export * from './EvolutionPublicIp';
|
|
|
16
15
|
export * from './EvolutionManagedMetastore';
|
|
17
16
|
export * from './EvolutionArtifactRegistry';
|
|
18
17
|
export * from './EvolutionManagedTrino';
|
|
18
|
+
export * from './EvolutionDNS';
|
|
19
|
+
export * from './EvolutionLoadBalancer';
|
|
20
|
+
export * from './EvolutionManagedBI';
|
|
21
|
+
export * from './EvolutionManagedRedis';
|
|
22
|
+
export * from './EvolutionManagedSpark';
|
|
@@ -5,7 +5,6 @@ export * from './EvolutionKubernetes';
|
|
|
5
5
|
export * from './EvolutionPostgreSql';
|
|
6
6
|
export * from './EvolutionStorageS3';
|
|
7
7
|
export * from './EvolutionStorageS3FreeTier';
|
|
8
|
-
export * from './EvolutionCloudServerGpu';
|
|
9
8
|
export * from './EvolutionContainerApps';
|
|
10
9
|
export * from './EvolutionContainerAppsFreeTier';
|
|
11
10
|
export * from './EvolutionNotebooks';
|
|
@@ -16,3 +15,8 @@ export * from './EvolutionPublicIp';
|
|
|
16
15
|
export * from './EvolutionManagedMetastore';
|
|
17
16
|
export * from './EvolutionArtifactRegistry';
|
|
18
17
|
export * from './EvolutionManagedTrino';
|
|
18
|
+
export * from './EvolutionDNS';
|
|
19
|
+
export * from './EvolutionLoadBalancer';
|
|
20
|
+
export * from './EvolutionManagedBI';
|
|
21
|
+
export * from './EvolutionManagedRedis';
|
|
22
|
+
export * from './EvolutionManagedSpark';
|
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
import { ArenadataDbSVG, ArtifactRegistrySVG, BareMetalSVG, ContainerAppsSVG,
|
|
1
|
+
import { ArenadataDbSVG, ArtifactRegistrySVG, BareMetalSVG, ContainerAppsSVG, EvoDnsSVG, EvolutionBiSVG, EvolutionComputeSVG, JupyterServersSVG, LoadBalancerSVG, ManagedKubernetesSVG, ManagedPostgreSqlSVG, MetastoreSVG, MlInferenceSVG, PublicIpSVG, RedisSVG, S3StorageSVG, SnatSVG, SparkSVG, TrinoSVG, } from '@cloud-ru/uikit-product-icons';
|
|
2
2
|
import { PLATFORM } from '../../../constants';
|
|
3
3
|
import { EVOLUTION_PRODUCT } from './constants';
|
|
4
|
-
import { EVOLUTION_ARENADATA_DB_FORM_CONFIG, EVOLUTION_ARTIFACT_REGISTRY, EVOLUTION_BARE_METAL_FORM_CONFIG, EVOLUTION_CLOUD_SERVER_FORM_CONFIG, EVOLUTION_CLOUD_SERVER_FREE_TIER_FORM_CONFIG,
|
|
5
|
-
import { EVOLUTION_DNS_CONFIG } from './product-config/EvolutionDNS';
|
|
6
|
-
import { EVOLUTION_LOAD_BALANCER_CONFIG } from './product-config/EvolutionLoadBalancer';
|
|
7
|
-
import { EVOLUTION_MANAGED_BI } from './product-config/EvolutionManagedBI';
|
|
8
|
-
import { EVOLUTION_MANAGED_REDIS_CONFIG } from './product-config/EvolutionManagedRedis';
|
|
9
|
-
import { EVOLUTION_MANAGED_SPARK_CONFIG } from './product-config/EvolutionManagedSpark';
|
|
4
|
+
import { EVOLUTION_ARENADATA_DB_FORM_CONFIG, EVOLUTION_ARTIFACT_REGISTRY, EVOLUTION_BARE_METAL_FORM_CONFIG, EVOLUTION_CLOUD_SERVER_FORM_CONFIG, EVOLUTION_CLOUD_SERVER_FREE_TIER_FORM_CONFIG, EVOLUTION_CONTAINER_APPS_CONFIG, EVOLUTION_CONTAINER_APPS_FREE_TIER_CONFIG, EVOLUTION_DNS_CONFIG, EVOLUTION_KUBERNETES_FORM_CONFIG, EVOLUTION_LOAD_BALANCER_CONFIG, EVOLUTION_MANAGED_BI, EVOLUTION_MANAGED_METASTORE_CONFIG, EVOLUTION_MANAGED_REDIS_CONFIG, EVOLUTION_MANAGED_SPARK_CONFIG, EVOLUTION_MANAGED_TRINO_CONFIG, EVOLUTION_ML_INFERENCE_FORM_CONFIG, EVOLUTION_NOTEBOOKS_CONFIG, EVOLUTION_POSTGRE_SQL_FORM_CONFIG, EVOLUTION_PUBLIC_IP_FORM_CONFIG, EVOLUTION_SNAT_GATEWAY_FORM_CONFIG, EVOLUTION_STORAGE_S3_FORM_CONFIG, EVOLUTION_STORAGE_S3_FREE_TIER_FORM_CONFIG, } from './product-config';
|
|
10
5
|
export const EVOLUTION_PRODUCTS = {
|
|
11
6
|
[EVOLUTION_PRODUCT.EvolutionCloudServer]: {
|
|
12
7
|
id: EVOLUTION_PRODUCT.EvolutionCloudServer,
|
|
@@ -135,17 +130,6 @@ export const EVOLUTION_PRODUCTS = {
|
|
|
135
130
|
enableChangeProductQuantity: false,
|
|
136
131
|
enableConnectToConsole: true,
|
|
137
132
|
},
|
|
138
|
-
[EVOLUTION_PRODUCT.EvolutionCloudServerGpu]: {
|
|
139
|
-
id: EVOLUTION_PRODUCT.EvolutionCloudServerGpu,
|
|
140
|
-
platform: PLATFORM.Evolution,
|
|
141
|
-
label: 'Вычислительные мощности с GPU',
|
|
142
|
-
caption: 'Аренда виртуальных машин, серверов и ML-сервисов с графическими ускорителями',
|
|
143
|
-
icon: ElasticCloudServerWithGpuSVG,
|
|
144
|
-
formConfig: EVOLUTION_CLOUD_SERVER_GPU_FORM_CONFIG,
|
|
145
|
-
dataTestId: EVOLUTION_PRODUCT.EvolutionCloudServerGpu,
|
|
146
|
-
enableChangeProductQuantity: true,
|
|
147
|
-
enableConnectToConsole: true,
|
|
148
|
-
},
|
|
149
133
|
[EVOLUTION_PRODUCT.EvolutionContainerApps]: {
|
|
150
134
|
id: EVOLUTION_PRODUCT.EvolutionContainerApps,
|
|
151
135
|
platform: PLATFORM.Evolution,
|
|
@@ -247,6 +231,7 @@ export const EVOLUTION_PRODUCTS = {
|
|
|
247
231
|
formConfig: EVOLUTION_MANAGED_BI,
|
|
248
232
|
dataTestId: EVOLUTION_PRODUCT.EvolutionManagedBI,
|
|
249
233
|
enableChangeProductQuantity: false,
|
|
234
|
+
freeTier: true,
|
|
250
235
|
enableConnectToConsole: true,
|
|
251
236
|
},
|
|
252
237
|
[EVOLUTION_PRODUCT.EvolutionNotebooks]: {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloud-ru/uikit-product-calculator",
|
|
3
3
|
"title": "Calculator",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.38.0",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"*.css",
|
|
7
7
|
"*.woff",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"devDependencies": {
|
|
72
72
|
"@types/lodash": "4.17.13"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "d1898172d0f62f66bccf8474fcbd286031034347"
|
|
75
75
|
}
|
|
@@ -27,6 +27,7 @@ export const EVOLUTION_CATALOG: CatalogConfig['catalog'] = {
|
|
|
27
27
|
EVOLUTION_PRODUCT.EvolutionCloudServerFreeTier,
|
|
28
28
|
EVOLUTION_PRODUCT.EvolutionStorageS3FreeTier,
|
|
29
29
|
EVOLUTION_PRODUCT.EvolutionContainerAppsFreeTier,
|
|
30
|
+
EVOLUTION_PRODUCT.EvolutionManagedBI,
|
|
30
31
|
],
|
|
31
32
|
banner: (
|
|
32
33
|
<Alert
|
|
@@ -58,7 +59,6 @@ export const EVOLUTION_CATALOG: CatalogConfig['catalog'] = {
|
|
|
58
59
|
EVOLUTION_PRODUCT.EvolutionCloudServer,
|
|
59
60
|
EVOLUTION_PRODUCT.EvolutionCloudServerFreeTier,
|
|
60
61
|
EVOLUTION_PRODUCT.EvolutionBareMetal,
|
|
61
|
-
EVOLUTION_PRODUCT.EvolutionCloudServerGpu,
|
|
62
62
|
],
|
|
63
63
|
},
|
|
64
64
|
{
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export const EVOLUTION_PRODUCT = {
|
|
2
2
|
EvolutionCloudServer: 'evolutionCloudServer',
|
|
3
|
-
EvolutionCloudServerGpu: 'evolutionCloudServerGpu',
|
|
4
3
|
EvolutionCloudServerFreeTier: 'evolutionCloudServerFreeTier',
|
|
5
4
|
EvolutionKubernetes: 'evolutionKubernetes',
|
|
6
5
|
EvolutionStorageS3FreeTier: 'evolutionStorageS3FreeTier',
|
|
@@ -5,7 +5,6 @@ export * from './EvolutionKubernetes';
|
|
|
5
5
|
export * from './EvolutionPostgreSql';
|
|
6
6
|
export * from './EvolutionStorageS3';
|
|
7
7
|
export * from './EvolutionStorageS3FreeTier';
|
|
8
|
-
export * from './EvolutionCloudServerGpu';
|
|
9
8
|
export * from './EvolutionContainerApps';
|
|
10
9
|
export * from './EvolutionContainerAppsFreeTier';
|
|
11
10
|
export * from './EvolutionNotebooks';
|
|
@@ -16,3 +15,8 @@ export * from './EvolutionPublicIp';
|
|
|
16
15
|
export * from './EvolutionManagedMetastore';
|
|
17
16
|
export * from './EvolutionArtifactRegistry';
|
|
18
17
|
export * from './EvolutionManagedTrino';
|
|
18
|
+
export * from './EvolutionDNS';
|
|
19
|
+
export * from './EvolutionLoadBalancer';
|
|
20
|
+
export * from './EvolutionManagedBI';
|
|
21
|
+
export * from './EvolutionManagedRedis';
|
|
22
|
+
export * from './EvolutionManagedSpark';
|
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
ArtifactRegistrySVG,
|
|
4
4
|
BareMetalSVG,
|
|
5
5
|
ContainerAppsSVG,
|
|
6
|
-
ElasticCloudServerWithGpuSVG,
|
|
7
6
|
EvoDnsSVG,
|
|
8
7
|
EvolutionBiSVG,
|
|
9
8
|
EvolutionComputeSVG,
|
|
@@ -30,11 +29,15 @@ import {
|
|
|
30
29
|
EVOLUTION_BARE_METAL_FORM_CONFIG,
|
|
31
30
|
EVOLUTION_CLOUD_SERVER_FORM_CONFIG,
|
|
32
31
|
EVOLUTION_CLOUD_SERVER_FREE_TIER_FORM_CONFIG,
|
|
33
|
-
EVOLUTION_CLOUD_SERVER_GPU_FORM_CONFIG,
|
|
34
32
|
EVOLUTION_CONTAINER_APPS_CONFIG,
|
|
35
33
|
EVOLUTION_CONTAINER_APPS_FREE_TIER_CONFIG,
|
|
34
|
+
EVOLUTION_DNS_CONFIG,
|
|
36
35
|
EVOLUTION_KUBERNETES_FORM_CONFIG,
|
|
36
|
+
EVOLUTION_LOAD_BALANCER_CONFIG,
|
|
37
|
+
EVOLUTION_MANAGED_BI,
|
|
37
38
|
EVOLUTION_MANAGED_METASTORE_CONFIG,
|
|
39
|
+
EVOLUTION_MANAGED_REDIS_CONFIG,
|
|
40
|
+
EVOLUTION_MANAGED_SPARK_CONFIG,
|
|
38
41
|
EVOLUTION_MANAGED_TRINO_CONFIG,
|
|
39
42
|
EVOLUTION_ML_INFERENCE_FORM_CONFIG,
|
|
40
43
|
EVOLUTION_NOTEBOOKS_CONFIG,
|
|
@@ -44,11 +47,6 @@ import {
|
|
|
44
47
|
EVOLUTION_STORAGE_S3_FORM_CONFIG,
|
|
45
48
|
EVOLUTION_STORAGE_S3_FREE_TIER_FORM_CONFIG,
|
|
46
49
|
} from './product-config';
|
|
47
|
-
import { EVOLUTION_DNS_CONFIG } from './product-config/EvolutionDNS';
|
|
48
|
-
import { EVOLUTION_LOAD_BALANCER_CONFIG } from './product-config/EvolutionLoadBalancer';
|
|
49
|
-
import { EVOLUTION_MANAGED_BI } from './product-config/EvolutionManagedBI';
|
|
50
|
-
import { EVOLUTION_MANAGED_REDIS_CONFIG } from './product-config/EvolutionManagedRedis';
|
|
51
|
-
import { EVOLUTION_MANAGED_SPARK_CONFIG } from './product-config/EvolutionManagedSpark';
|
|
52
50
|
|
|
53
51
|
export const EVOLUTION_PRODUCTS: CatalogConfig['products'] = {
|
|
54
52
|
[EVOLUTION_PRODUCT.EvolutionCloudServer]: {
|
|
@@ -178,17 +176,6 @@ export const EVOLUTION_PRODUCTS: CatalogConfig['products'] = {
|
|
|
178
176
|
enableChangeProductQuantity: false,
|
|
179
177
|
enableConnectToConsole: true,
|
|
180
178
|
},
|
|
181
|
-
[EVOLUTION_PRODUCT.EvolutionCloudServerGpu]: {
|
|
182
|
-
id: EVOLUTION_PRODUCT.EvolutionCloudServerGpu,
|
|
183
|
-
platform: PLATFORM.Evolution,
|
|
184
|
-
label: 'Вычислительные мощности с GPU',
|
|
185
|
-
caption: 'Аренда виртуальных машин, серверов и ML-сервисов с графическими ускорителями',
|
|
186
|
-
icon: ElasticCloudServerWithGpuSVG,
|
|
187
|
-
formConfig: EVOLUTION_CLOUD_SERVER_GPU_FORM_CONFIG,
|
|
188
|
-
dataTestId: EVOLUTION_PRODUCT.EvolutionCloudServerGpu,
|
|
189
|
-
enableChangeProductQuantity: true,
|
|
190
|
-
enableConnectToConsole: true,
|
|
191
|
-
},
|
|
192
179
|
[EVOLUTION_PRODUCT.EvolutionContainerApps]: {
|
|
193
180
|
id: EVOLUTION_PRODUCT.EvolutionContainerApps,
|
|
194
181
|
platform: PLATFORM.Evolution,
|
|
@@ -291,6 +278,7 @@ export const EVOLUTION_PRODUCTS: CatalogConfig['products'] = {
|
|
|
291
278
|
formConfig: EVOLUTION_MANAGED_BI,
|
|
292
279
|
dataTestId: EVOLUTION_PRODUCT.EvolutionManagedBI,
|
|
293
280
|
enableChangeProductQuantity: false,
|
|
281
|
+
freeTier: true,
|
|
294
282
|
enableConnectToConsole: true,
|
|
295
283
|
},
|
|
296
284
|
[EVOLUTION_PRODUCT.EvolutionNotebooks]: {
|
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EVOLUTION_CLOUD_SERVER_GPU_FORM_CONFIG = void 0;
|
|
4
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const components_1 = require("../../../../components");
|
|
6
|
-
const utils_1 = require("../../../utils");
|
|
7
|
-
var GpuType;
|
|
8
|
-
(function (GpuType) {
|
|
9
|
-
GpuType["Tesla"] = "GPU NVIDIA\u00AE Tesla\u00AE V100";
|
|
10
|
-
GpuType["H100"] = "GPU NVIDIA\u00AE H100";
|
|
11
|
-
})(GpuType || (GpuType = {}));
|
|
12
|
-
const gpuTypeItems = [GpuType.Tesla, GpuType.H100];
|
|
13
|
-
const MinAdditionalDiskSize = 15;
|
|
14
|
-
var OsType;
|
|
15
|
-
(function (OsType) {
|
|
16
|
-
OsType["Ubuntu18_04"] = "Ubuntu_18.04";
|
|
17
|
-
OsType["Fedora38"] = "Fedora_38";
|
|
18
|
-
OsType["Debian10"] = "Debian_10";
|
|
19
|
-
OsType["Ubuntu22_04_4"] = "Ubuntu_22.04.4";
|
|
20
|
-
OsType["Ubuntu22_04"] = "Ubuntu_22.04";
|
|
21
|
-
OsType["Ubuntu20_04"] = "Ubuntu_20.04";
|
|
22
|
-
OsType["OpenSUSE15_2"] = "openSUSE_15.2";
|
|
23
|
-
OsType["Debian12"] = "Debian_12";
|
|
24
|
-
OsType["CentOS9"] = "CentOS_9";
|
|
25
|
-
OsType["CentOS8"] = "CentOS_8";
|
|
26
|
-
OsType["CentOS7Kernel5_4"] = "CentOS_7_kernel_5.4";
|
|
27
|
-
OsType["CentOS7"] = "CentOS_7";
|
|
28
|
-
OsType["Ubuntu24_04"] = "Ubuntu_24.04";
|
|
29
|
-
})(OsType || (OsType = {}));
|
|
30
|
-
const osItems = [
|
|
31
|
-
OsType.CentOS7,
|
|
32
|
-
OsType.CentOS7Kernel5_4,
|
|
33
|
-
OsType.CentOS8,
|
|
34
|
-
OsType.CentOS9,
|
|
35
|
-
OsType.Debian10,
|
|
36
|
-
OsType.Debian12,
|
|
37
|
-
OsType.Fedora38,
|
|
38
|
-
OsType.Ubuntu22_04,
|
|
39
|
-
OsType.Ubuntu22_04_4,
|
|
40
|
-
OsType.Ubuntu20_04,
|
|
41
|
-
OsType.Ubuntu18_04,
|
|
42
|
-
OsType.Ubuntu24_04,
|
|
43
|
-
OsType.OpenSUSE15_2,
|
|
44
|
-
];
|
|
45
|
-
const CardValuesTesla = {
|
|
46
|
-
GPU1_vCPU4_RAM64: `1 4 64`,
|
|
47
|
-
GPU2_vCPU8_RAM128: `2 8 128`,
|
|
48
|
-
GPU4_vCPU16_RAM256: `4 16 256`,
|
|
49
|
-
GPU8_vCPU32_RAM512: `8 32 512`,
|
|
50
|
-
GPU16_vCPU64_RAM1024: `16 64 1024`,
|
|
51
|
-
};
|
|
52
|
-
const CardValuesH100 = {
|
|
53
|
-
GPU1_vCPU20_RAM185: `1 20 186`,
|
|
54
|
-
GPU2_vCPU40_RAM372: `2 40 372`,
|
|
55
|
-
GPU3_vCPU60_RAM558: `3 60 558`,
|
|
56
|
-
GPU4_vCPU80_RAM744: `4 80 744`,
|
|
57
|
-
GPU5_vCPU100_RAM930: `5 100 930`,
|
|
58
|
-
GPU6_vCPU120_RAM1116: `6 120 1116`,
|
|
59
|
-
GPU7_vCPU140_RAM1302: `7 140 1302`,
|
|
60
|
-
GPU8_vCPU160_RAM1488: `8 160 1488`,
|
|
61
|
-
};
|
|
62
|
-
const getParamsByConfigTypeCard = (value) => {
|
|
63
|
-
const { 0: gpuCount, 1: vCpuCoreCount, 2: ramAmount } = value.split(' ');
|
|
64
|
-
return { gpuCount, vCpuCoreCount, ramAmount };
|
|
65
|
-
};
|
|
66
|
-
const generateCards = (cardsData, gpuType) => Object.keys(cardsData).map(cardDataKey => {
|
|
67
|
-
const { gpuCount, vCpuCoreCount, ramAmount } = getParamsByConfigTypeCard(cardsData[cardDataKey]);
|
|
68
|
-
return {
|
|
69
|
-
value: cardsData[cardDataKey],
|
|
70
|
-
label: gpuType,
|
|
71
|
-
description: ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [gpuCount, " GPU ", (0, jsx_runtime_1.jsx)("br", {}), vCpuCoreCount, " vCPU ", (0, jsx_runtime_1.jsx)("br", {}), ramAmount, " \u0413\u0411 RAM"] })),
|
|
72
|
-
};
|
|
73
|
-
});
|
|
74
|
-
const getMinOsDiskSpace = (os) => {
|
|
75
|
-
const minSize5GbOs = [OsType.Fedora38, OsType.Ubuntu18_04, OsType.Debian10];
|
|
76
|
-
const minSize15GbOs = [OsType.Ubuntu24_04];
|
|
77
|
-
const minSizeByOsMap = {
|
|
78
|
-
5: minSize5GbOs,
|
|
79
|
-
15: minSize15GbOs,
|
|
80
|
-
};
|
|
81
|
-
const osMinDiskSizeEntry = Object.entries(minSizeByOsMap).find(osMinDiskSizeEntries => {
|
|
82
|
-
const { 1: osMap } = osMinDiskSizeEntries;
|
|
83
|
-
if (osMap.includes(os)) {
|
|
84
|
-
return true;
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
if (!osMinDiskSizeEntry)
|
|
88
|
-
return 10;
|
|
89
|
-
return Number(osMinDiskSizeEntry[0]);
|
|
90
|
-
};
|
|
91
|
-
exports.EVOLUTION_CLOUD_SERVER_GPU_FORM_CONFIG = {
|
|
92
|
-
ui: [['osType'], ['gpuType'], 'configTypeCard', ['systemDisk'], 'additionalOptions', 'networkIsNeeded'],
|
|
93
|
-
controls: {
|
|
94
|
-
osType: {
|
|
95
|
-
type: components_1.CONTROL.SelectSingle,
|
|
96
|
-
accessorKey: 'os',
|
|
97
|
-
defaultValue: OsType.Ubuntu22_04,
|
|
98
|
-
items: (0, utils_1.generateBaseItems)(osItems, value => value.replace(/_/g, ' ')),
|
|
99
|
-
decoratorProps: {
|
|
100
|
-
label: 'Операционная система',
|
|
101
|
-
},
|
|
102
|
-
onChangeFn: (value, setValue) => {
|
|
103
|
-
const arr = [
|
|
104
|
-
['os', value],
|
|
105
|
-
['evs.systemDisk.diskSpace', getMinOsDiskSpace(value)],
|
|
106
|
-
];
|
|
107
|
-
setValue(arr);
|
|
108
|
-
},
|
|
109
|
-
},
|
|
110
|
-
gpuType: {
|
|
111
|
-
type: components_1.CONTROL.SelectSingle,
|
|
112
|
-
accessorKey: 'gpuType',
|
|
113
|
-
defaultValue: GpuType.Tesla,
|
|
114
|
-
items: (0, utils_1.generateBaseItems)(gpuTypeItems),
|
|
115
|
-
decoratorProps: {
|
|
116
|
-
label: 'Тип графического процессора',
|
|
117
|
-
},
|
|
118
|
-
uiProps: {
|
|
119
|
-
visible: false,
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
// значение не учитывается при подсчете data
|
|
123
|
-
configTypeCard: {
|
|
124
|
-
type: components_1.CONTROL.ToggleCards,
|
|
125
|
-
accessorKey: 'configTypeCard',
|
|
126
|
-
defaultValue: CardValuesTesla.GPU1_vCPU4_RAM64,
|
|
127
|
-
items: generateCards(CardValuesTesla, GpuType.Tesla),
|
|
128
|
-
decoratorProps: {
|
|
129
|
-
label: 'Конфигурация',
|
|
130
|
-
},
|
|
131
|
-
watchedControls: { gpuType: 'gpuType' },
|
|
132
|
-
onChangeFn: (value, setValue) => {
|
|
133
|
-
const { gpuCount, vCpuCoreCount, ramAmount } = getParamsByConfigTypeCard(value);
|
|
134
|
-
const valuesToSet = [
|
|
135
|
-
['configTypeCard', value],
|
|
136
|
-
['gpuCount', gpuCount],
|
|
137
|
-
['vCpuCoreCount', vCpuCoreCount],
|
|
138
|
-
['ramAmount', ramAmount],
|
|
139
|
-
];
|
|
140
|
-
setValue(valuesToSet);
|
|
141
|
-
},
|
|
142
|
-
relateFn: ({ gpuType }) => ({
|
|
143
|
-
items: gpuType === GpuType.H100
|
|
144
|
-
? generateCards(CardValuesH100, GpuType.H100)
|
|
145
|
-
: generateCards(CardValuesTesla, GpuType.Tesla),
|
|
146
|
-
}),
|
|
147
|
-
},
|
|
148
|
-
gpuCount: {
|
|
149
|
-
type: components_1.CONTROL.Segmented,
|
|
150
|
-
accessorKey: 'gpuCount',
|
|
151
|
-
defaultValue: '1',
|
|
152
|
-
items: [],
|
|
153
|
-
decoratorProps: {
|
|
154
|
-
label: '',
|
|
155
|
-
},
|
|
156
|
-
uiProps: {
|
|
157
|
-
visible: false,
|
|
158
|
-
},
|
|
159
|
-
},
|
|
160
|
-
vCpuCoreCount: {
|
|
161
|
-
type: components_1.CONTROL.Segmented,
|
|
162
|
-
accessorKey: 'vCpuCoreCount',
|
|
163
|
-
defaultValue: '4',
|
|
164
|
-
items: [],
|
|
165
|
-
decoratorProps: {
|
|
166
|
-
label: '',
|
|
167
|
-
},
|
|
168
|
-
uiProps: {
|
|
169
|
-
visible: false,
|
|
170
|
-
},
|
|
171
|
-
},
|
|
172
|
-
ramAmount: {
|
|
173
|
-
type: components_1.CONTROL.Segmented,
|
|
174
|
-
accessorKey: 'ramAmount',
|
|
175
|
-
defaultValue: '64',
|
|
176
|
-
items: [],
|
|
177
|
-
decoratorProps: {
|
|
178
|
-
label: '',
|
|
179
|
-
},
|
|
180
|
-
uiProps: {
|
|
181
|
-
visible: false,
|
|
182
|
-
},
|
|
183
|
-
},
|
|
184
|
-
systemDisk: (0, utils_1.getDisk)({
|
|
185
|
-
space: {
|
|
186
|
-
label: 'Диск',
|
|
187
|
-
accessorKey: 'evs.systemDisk.diskSpace',
|
|
188
|
-
defaultValue: 10,
|
|
189
|
-
uiProps: {
|
|
190
|
-
min: 10,
|
|
191
|
-
max: 4096,
|
|
192
|
-
},
|
|
193
|
-
watchedControls: { os: 'os' },
|
|
194
|
-
relateFn: ({ os }) => ({
|
|
195
|
-
uiProps: {
|
|
196
|
-
min: getMinOsDiskSpace(os),
|
|
197
|
-
},
|
|
198
|
-
}),
|
|
199
|
-
},
|
|
200
|
-
specification: {
|
|
201
|
-
accessorKey: 'evs.systemDisk.specification',
|
|
202
|
-
defaultValue: 'SSD',
|
|
203
|
-
uiProps: {
|
|
204
|
-
disabled: true,
|
|
205
|
-
},
|
|
206
|
-
},
|
|
207
|
-
}),
|
|
208
|
-
additionalOptions: {
|
|
209
|
-
type: components_1.CONTROL.Object,
|
|
210
|
-
ui: ['alertAdditional', ['additionalDisks']],
|
|
211
|
-
controls: {
|
|
212
|
-
alertAdditional: {
|
|
213
|
-
type: 'alert',
|
|
214
|
-
uiProps: {
|
|
215
|
-
appearance: 'info',
|
|
216
|
-
outline: true,
|
|
217
|
-
description: 'Можно добавить до 7 дополнительных дисков',
|
|
218
|
-
},
|
|
219
|
-
accessorKey: 'addDisk',
|
|
220
|
-
},
|
|
221
|
-
additionalDisks: {
|
|
222
|
-
type: components_1.CONTROL.Array,
|
|
223
|
-
max: 7,
|
|
224
|
-
accessorKey: 'evs.additionalDisks',
|
|
225
|
-
addText: 'Добавить диск',
|
|
226
|
-
ui: ['disk'],
|
|
227
|
-
defaultValue: [],
|
|
228
|
-
controls: {
|
|
229
|
-
disk: (0, utils_1.getDisk)({
|
|
230
|
-
space: {
|
|
231
|
-
label: 'Дополнительный диск',
|
|
232
|
-
accessorKey: 'diskSpace',
|
|
233
|
-
defaultValue: MinAdditionalDiskSize,
|
|
234
|
-
// TODO в текущем исполнении watchedControls и relateFn работают не корректно, поэтому в дальнейшем будут внесены правки, чтобы правильно отображать минимальные значения дисков
|
|
235
|
-
uiProps: {
|
|
236
|
-
min: MinAdditionalDiskSize,
|
|
237
|
-
max: 4096,
|
|
238
|
-
},
|
|
239
|
-
},
|
|
240
|
-
specification: {
|
|
241
|
-
accessorKey: 'specification',
|
|
242
|
-
defaultValue: 'SSD',
|
|
243
|
-
uiProps: {
|
|
244
|
-
disabled: true,
|
|
245
|
-
},
|
|
246
|
-
},
|
|
247
|
-
}),
|
|
248
|
-
},
|
|
249
|
-
},
|
|
250
|
-
},
|
|
251
|
-
},
|
|
252
|
-
networkIsNeeded: {
|
|
253
|
-
type: components_1.CONTROL.Toggle,
|
|
254
|
-
defaultValue: false,
|
|
255
|
-
accessorKey: 'networkIsNeeded',
|
|
256
|
-
decoratorProps: {
|
|
257
|
-
label: 'Аренда публичного IP',
|
|
258
|
-
},
|
|
259
|
-
},
|
|
260
|
-
network: {
|
|
261
|
-
type: components_1.CONTROL.Object,
|
|
262
|
-
defaultValue: {
|
|
263
|
-
ipQuantity: 1,
|
|
264
|
-
bindingIpAddressesQuantity: 0,
|
|
265
|
-
publicGatewayQuantity: 0,
|
|
266
|
-
privateGatewayQuantity: 0,
|
|
267
|
-
},
|
|
268
|
-
ui: [],
|
|
269
|
-
controls: {},
|
|
270
|
-
visible: false,
|
|
271
|
-
},
|
|
272
|
-
},
|
|
273
|
-
};
|
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { CONTROL } from '../../../../components';
|
|
3
|
-
import { generateBaseItems, getDisk } from '../../../utils';
|
|
4
|
-
var GpuType;
|
|
5
|
-
(function (GpuType) {
|
|
6
|
-
GpuType["Tesla"] = "GPU NVIDIA\u00AE Tesla\u00AE V100";
|
|
7
|
-
GpuType["H100"] = "GPU NVIDIA\u00AE H100";
|
|
8
|
-
})(GpuType || (GpuType = {}));
|
|
9
|
-
const gpuTypeItems = [GpuType.Tesla, GpuType.H100];
|
|
10
|
-
const MinAdditionalDiskSize = 15;
|
|
11
|
-
var OsType;
|
|
12
|
-
(function (OsType) {
|
|
13
|
-
OsType["Ubuntu18_04"] = "Ubuntu_18.04";
|
|
14
|
-
OsType["Fedora38"] = "Fedora_38";
|
|
15
|
-
OsType["Debian10"] = "Debian_10";
|
|
16
|
-
OsType["Ubuntu22_04_4"] = "Ubuntu_22.04.4";
|
|
17
|
-
OsType["Ubuntu22_04"] = "Ubuntu_22.04";
|
|
18
|
-
OsType["Ubuntu20_04"] = "Ubuntu_20.04";
|
|
19
|
-
OsType["OpenSUSE15_2"] = "openSUSE_15.2";
|
|
20
|
-
OsType["Debian12"] = "Debian_12";
|
|
21
|
-
OsType["CentOS9"] = "CentOS_9";
|
|
22
|
-
OsType["CentOS8"] = "CentOS_8";
|
|
23
|
-
OsType["CentOS7Kernel5_4"] = "CentOS_7_kernel_5.4";
|
|
24
|
-
OsType["CentOS7"] = "CentOS_7";
|
|
25
|
-
OsType["Ubuntu24_04"] = "Ubuntu_24.04";
|
|
26
|
-
})(OsType || (OsType = {}));
|
|
27
|
-
const osItems = [
|
|
28
|
-
OsType.CentOS7,
|
|
29
|
-
OsType.CentOS7Kernel5_4,
|
|
30
|
-
OsType.CentOS8,
|
|
31
|
-
OsType.CentOS9,
|
|
32
|
-
OsType.Debian10,
|
|
33
|
-
OsType.Debian12,
|
|
34
|
-
OsType.Fedora38,
|
|
35
|
-
OsType.Ubuntu22_04,
|
|
36
|
-
OsType.Ubuntu22_04_4,
|
|
37
|
-
OsType.Ubuntu20_04,
|
|
38
|
-
OsType.Ubuntu18_04,
|
|
39
|
-
OsType.Ubuntu24_04,
|
|
40
|
-
OsType.OpenSUSE15_2,
|
|
41
|
-
];
|
|
42
|
-
const CardValuesTesla = {
|
|
43
|
-
GPU1_vCPU4_RAM64: `1 4 64`,
|
|
44
|
-
GPU2_vCPU8_RAM128: `2 8 128`,
|
|
45
|
-
GPU4_vCPU16_RAM256: `4 16 256`,
|
|
46
|
-
GPU8_vCPU32_RAM512: `8 32 512`,
|
|
47
|
-
GPU16_vCPU64_RAM1024: `16 64 1024`,
|
|
48
|
-
};
|
|
49
|
-
const CardValuesH100 = {
|
|
50
|
-
GPU1_vCPU20_RAM185: `1 20 186`,
|
|
51
|
-
GPU2_vCPU40_RAM372: `2 40 372`,
|
|
52
|
-
GPU3_vCPU60_RAM558: `3 60 558`,
|
|
53
|
-
GPU4_vCPU80_RAM744: `4 80 744`,
|
|
54
|
-
GPU5_vCPU100_RAM930: `5 100 930`,
|
|
55
|
-
GPU6_vCPU120_RAM1116: `6 120 1116`,
|
|
56
|
-
GPU7_vCPU140_RAM1302: `7 140 1302`,
|
|
57
|
-
GPU8_vCPU160_RAM1488: `8 160 1488`,
|
|
58
|
-
};
|
|
59
|
-
const getParamsByConfigTypeCard = (value) => {
|
|
60
|
-
const { 0: gpuCount, 1: vCpuCoreCount, 2: ramAmount } = value.split(' ');
|
|
61
|
-
return { gpuCount, vCpuCoreCount, ramAmount };
|
|
62
|
-
};
|
|
63
|
-
const generateCards = (cardsData, gpuType) => Object.keys(cardsData).map(cardDataKey => {
|
|
64
|
-
const { gpuCount, vCpuCoreCount, ramAmount } = getParamsByConfigTypeCard(cardsData[cardDataKey]);
|
|
65
|
-
return {
|
|
66
|
-
value: cardsData[cardDataKey],
|
|
67
|
-
label: gpuType,
|
|
68
|
-
description: (_jsxs(_Fragment, { children: [gpuCount, " GPU ", _jsx("br", {}), vCpuCoreCount, " vCPU ", _jsx("br", {}), ramAmount, " \u0413\u0411 RAM"] })),
|
|
69
|
-
};
|
|
70
|
-
});
|
|
71
|
-
const getMinOsDiskSpace = (os) => {
|
|
72
|
-
const minSize5GbOs = [OsType.Fedora38, OsType.Ubuntu18_04, OsType.Debian10];
|
|
73
|
-
const minSize15GbOs = [OsType.Ubuntu24_04];
|
|
74
|
-
const minSizeByOsMap = {
|
|
75
|
-
5: minSize5GbOs,
|
|
76
|
-
15: minSize15GbOs,
|
|
77
|
-
};
|
|
78
|
-
const osMinDiskSizeEntry = Object.entries(minSizeByOsMap).find(osMinDiskSizeEntries => {
|
|
79
|
-
const { 1: osMap } = osMinDiskSizeEntries;
|
|
80
|
-
if (osMap.includes(os)) {
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
if (!osMinDiskSizeEntry)
|
|
85
|
-
return 10;
|
|
86
|
-
return Number(osMinDiskSizeEntry[0]);
|
|
87
|
-
};
|
|
88
|
-
export const EVOLUTION_CLOUD_SERVER_GPU_FORM_CONFIG = {
|
|
89
|
-
ui: [['osType'], ['gpuType'], 'configTypeCard', ['systemDisk'], 'additionalOptions', 'networkIsNeeded'],
|
|
90
|
-
controls: {
|
|
91
|
-
osType: {
|
|
92
|
-
type: CONTROL.SelectSingle,
|
|
93
|
-
accessorKey: 'os',
|
|
94
|
-
defaultValue: OsType.Ubuntu22_04,
|
|
95
|
-
items: generateBaseItems(osItems, value => value.replace(/_/g, ' ')),
|
|
96
|
-
decoratorProps: {
|
|
97
|
-
label: 'Операционная система',
|
|
98
|
-
},
|
|
99
|
-
onChangeFn: (value, setValue) => {
|
|
100
|
-
const arr = [
|
|
101
|
-
['os', value],
|
|
102
|
-
['evs.systemDisk.diskSpace', getMinOsDiskSpace(value)],
|
|
103
|
-
];
|
|
104
|
-
setValue(arr);
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
gpuType: {
|
|
108
|
-
type: CONTROL.SelectSingle,
|
|
109
|
-
accessorKey: 'gpuType',
|
|
110
|
-
defaultValue: GpuType.Tesla,
|
|
111
|
-
items: generateBaseItems(gpuTypeItems),
|
|
112
|
-
decoratorProps: {
|
|
113
|
-
label: 'Тип графического процессора',
|
|
114
|
-
},
|
|
115
|
-
uiProps: {
|
|
116
|
-
visible: false,
|
|
117
|
-
},
|
|
118
|
-
},
|
|
119
|
-
// значение не учитывается при подсчете data
|
|
120
|
-
configTypeCard: {
|
|
121
|
-
type: CONTROL.ToggleCards,
|
|
122
|
-
accessorKey: 'configTypeCard',
|
|
123
|
-
defaultValue: CardValuesTesla.GPU1_vCPU4_RAM64,
|
|
124
|
-
items: generateCards(CardValuesTesla, GpuType.Tesla),
|
|
125
|
-
decoratorProps: {
|
|
126
|
-
label: 'Конфигурация',
|
|
127
|
-
},
|
|
128
|
-
watchedControls: { gpuType: 'gpuType' },
|
|
129
|
-
onChangeFn: (value, setValue) => {
|
|
130
|
-
const { gpuCount, vCpuCoreCount, ramAmount } = getParamsByConfigTypeCard(value);
|
|
131
|
-
const valuesToSet = [
|
|
132
|
-
['configTypeCard', value],
|
|
133
|
-
['gpuCount', gpuCount],
|
|
134
|
-
['vCpuCoreCount', vCpuCoreCount],
|
|
135
|
-
['ramAmount', ramAmount],
|
|
136
|
-
];
|
|
137
|
-
setValue(valuesToSet);
|
|
138
|
-
},
|
|
139
|
-
relateFn: ({ gpuType }) => ({
|
|
140
|
-
items: gpuType === GpuType.H100
|
|
141
|
-
? generateCards(CardValuesH100, GpuType.H100)
|
|
142
|
-
: generateCards(CardValuesTesla, GpuType.Tesla),
|
|
143
|
-
}),
|
|
144
|
-
},
|
|
145
|
-
gpuCount: {
|
|
146
|
-
type: CONTROL.Segmented,
|
|
147
|
-
accessorKey: 'gpuCount',
|
|
148
|
-
defaultValue: '1',
|
|
149
|
-
items: [],
|
|
150
|
-
decoratorProps: {
|
|
151
|
-
label: '',
|
|
152
|
-
},
|
|
153
|
-
uiProps: {
|
|
154
|
-
visible: false,
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
vCpuCoreCount: {
|
|
158
|
-
type: CONTROL.Segmented,
|
|
159
|
-
accessorKey: 'vCpuCoreCount',
|
|
160
|
-
defaultValue: '4',
|
|
161
|
-
items: [],
|
|
162
|
-
decoratorProps: {
|
|
163
|
-
label: '',
|
|
164
|
-
},
|
|
165
|
-
uiProps: {
|
|
166
|
-
visible: false,
|
|
167
|
-
},
|
|
168
|
-
},
|
|
169
|
-
ramAmount: {
|
|
170
|
-
type: CONTROL.Segmented,
|
|
171
|
-
accessorKey: 'ramAmount',
|
|
172
|
-
defaultValue: '64',
|
|
173
|
-
items: [],
|
|
174
|
-
decoratorProps: {
|
|
175
|
-
label: '',
|
|
176
|
-
},
|
|
177
|
-
uiProps: {
|
|
178
|
-
visible: false,
|
|
179
|
-
},
|
|
180
|
-
},
|
|
181
|
-
systemDisk: getDisk({
|
|
182
|
-
space: {
|
|
183
|
-
label: 'Диск',
|
|
184
|
-
accessorKey: 'evs.systemDisk.diskSpace',
|
|
185
|
-
defaultValue: 10,
|
|
186
|
-
uiProps: {
|
|
187
|
-
min: 10,
|
|
188
|
-
max: 4096,
|
|
189
|
-
},
|
|
190
|
-
watchedControls: { os: 'os' },
|
|
191
|
-
relateFn: ({ os }) => ({
|
|
192
|
-
uiProps: {
|
|
193
|
-
min: getMinOsDiskSpace(os),
|
|
194
|
-
},
|
|
195
|
-
}),
|
|
196
|
-
},
|
|
197
|
-
specification: {
|
|
198
|
-
accessorKey: 'evs.systemDisk.specification',
|
|
199
|
-
defaultValue: 'SSD',
|
|
200
|
-
uiProps: {
|
|
201
|
-
disabled: true,
|
|
202
|
-
},
|
|
203
|
-
},
|
|
204
|
-
}),
|
|
205
|
-
additionalOptions: {
|
|
206
|
-
type: CONTROL.Object,
|
|
207
|
-
ui: ['alertAdditional', ['additionalDisks']],
|
|
208
|
-
controls: {
|
|
209
|
-
alertAdditional: {
|
|
210
|
-
type: 'alert',
|
|
211
|
-
uiProps: {
|
|
212
|
-
appearance: 'info',
|
|
213
|
-
outline: true,
|
|
214
|
-
description: 'Можно добавить до 7 дополнительных дисков',
|
|
215
|
-
},
|
|
216
|
-
accessorKey: 'addDisk',
|
|
217
|
-
},
|
|
218
|
-
additionalDisks: {
|
|
219
|
-
type: CONTROL.Array,
|
|
220
|
-
max: 7,
|
|
221
|
-
accessorKey: 'evs.additionalDisks',
|
|
222
|
-
addText: 'Добавить диск',
|
|
223
|
-
ui: ['disk'],
|
|
224
|
-
defaultValue: [],
|
|
225
|
-
controls: {
|
|
226
|
-
disk: getDisk({
|
|
227
|
-
space: {
|
|
228
|
-
label: 'Дополнительный диск',
|
|
229
|
-
accessorKey: 'diskSpace',
|
|
230
|
-
defaultValue: MinAdditionalDiskSize,
|
|
231
|
-
// TODO в текущем исполнении watchedControls и relateFn работают не корректно, поэтому в дальнейшем будут внесены правки, чтобы правильно отображать минимальные значения дисков
|
|
232
|
-
uiProps: {
|
|
233
|
-
min: MinAdditionalDiskSize,
|
|
234
|
-
max: 4096,
|
|
235
|
-
},
|
|
236
|
-
},
|
|
237
|
-
specification: {
|
|
238
|
-
accessorKey: 'specification',
|
|
239
|
-
defaultValue: 'SSD',
|
|
240
|
-
uiProps: {
|
|
241
|
-
disabled: true,
|
|
242
|
-
},
|
|
243
|
-
},
|
|
244
|
-
}),
|
|
245
|
-
},
|
|
246
|
-
},
|
|
247
|
-
},
|
|
248
|
-
},
|
|
249
|
-
networkIsNeeded: {
|
|
250
|
-
type: CONTROL.Toggle,
|
|
251
|
-
defaultValue: false,
|
|
252
|
-
accessorKey: 'networkIsNeeded',
|
|
253
|
-
decoratorProps: {
|
|
254
|
-
label: 'Аренда публичного IP',
|
|
255
|
-
},
|
|
256
|
-
},
|
|
257
|
-
network: {
|
|
258
|
-
type: CONTROL.Object,
|
|
259
|
-
defaultValue: {
|
|
260
|
-
ipQuantity: 1,
|
|
261
|
-
bindingIpAddressesQuantity: 0,
|
|
262
|
-
publicGatewayQuantity: 0,
|
|
263
|
-
privateGatewayQuantity: 0,
|
|
264
|
-
},
|
|
265
|
-
ui: [],
|
|
266
|
-
controls: {},
|
|
267
|
-
visible: false,
|
|
268
|
-
},
|
|
269
|
-
},
|
|
270
|
-
};
|
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
import { CONTROL, FormConfig } from '../../../../components';
|
|
2
|
-
import { AnyType } from '../../../../types';
|
|
3
|
-
import { generateBaseItems, getDisk } from '../../../utils';
|
|
4
|
-
|
|
5
|
-
enum GpuType {
|
|
6
|
-
Tesla = 'GPU NVIDIA® Tesla® V100',
|
|
7
|
-
H100 = 'GPU NVIDIA® H100',
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const gpuTypeItems = [GpuType.Tesla, GpuType.H100];
|
|
11
|
-
|
|
12
|
-
const MinAdditionalDiskSize = 15 as const;
|
|
13
|
-
|
|
14
|
-
enum OsType {
|
|
15
|
-
Ubuntu18_04 = 'Ubuntu_18.04',
|
|
16
|
-
Fedora38 = 'Fedora_38',
|
|
17
|
-
Debian10 = 'Debian_10',
|
|
18
|
-
Ubuntu22_04_4 = 'Ubuntu_22.04.4',
|
|
19
|
-
Ubuntu22_04 = 'Ubuntu_22.04',
|
|
20
|
-
Ubuntu20_04 = 'Ubuntu_20.04',
|
|
21
|
-
OpenSUSE15_2 = 'openSUSE_15.2',
|
|
22
|
-
Debian12 = 'Debian_12',
|
|
23
|
-
CentOS9 = 'CentOS_9',
|
|
24
|
-
CentOS8 = 'CentOS_8',
|
|
25
|
-
CentOS7Kernel5_4 = 'CentOS_7_kernel_5.4',
|
|
26
|
-
CentOS7 = 'CentOS_7',
|
|
27
|
-
Ubuntu24_04 = 'Ubuntu_24.04',
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const osItems = [
|
|
31
|
-
OsType.CentOS7,
|
|
32
|
-
OsType.CentOS7Kernel5_4,
|
|
33
|
-
OsType.CentOS8,
|
|
34
|
-
OsType.CentOS9,
|
|
35
|
-
OsType.Debian10,
|
|
36
|
-
OsType.Debian12,
|
|
37
|
-
OsType.Fedora38,
|
|
38
|
-
OsType.Ubuntu22_04,
|
|
39
|
-
OsType.Ubuntu22_04_4,
|
|
40
|
-
OsType.Ubuntu20_04,
|
|
41
|
-
OsType.Ubuntu18_04,
|
|
42
|
-
OsType.Ubuntu24_04,
|
|
43
|
-
OsType.OpenSUSE15_2,
|
|
44
|
-
];
|
|
45
|
-
|
|
46
|
-
const CardValuesTesla = {
|
|
47
|
-
GPU1_vCPU4_RAM64: `1 4 64`,
|
|
48
|
-
GPU2_vCPU8_RAM128: `2 8 128`,
|
|
49
|
-
GPU4_vCPU16_RAM256: `4 16 256`,
|
|
50
|
-
GPU8_vCPU32_RAM512: `8 32 512`,
|
|
51
|
-
GPU16_vCPU64_RAM1024: `16 64 1024`,
|
|
52
|
-
} as const;
|
|
53
|
-
|
|
54
|
-
const CardValuesH100 = {
|
|
55
|
-
GPU1_vCPU20_RAM185: `1 20 186`,
|
|
56
|
-
GPU2_vCPU40_RAM372: `2 40 372`,
|
|
57
|
-
GPU3_vCPU60_RAM558: `3 60 558`,
|
|
58
|
-
GPU4_vCPU80_RAM744: `4 80 744`,
|
|
59
|
-
GPU5_vCPU100_RAM930: `5 100 930`,
|
|
60
|
-
GPU6_vCPU120_RAM1116: `6 120 1116`,
|
|
61
|
-
GPU7_vCPU140_RAM1302: `7 140 1302`,
|
|
62
|
-
GPU8_vCPU160_RAM1488: `8 160 1488`,
|
|
63
|
-
} as const;
|
|
64
|
-
|
|
65
|
-
type FlavorGpuTeslaValue = (typeof CardValuesTesla)[keyof typeof CardValuesTesla];
|
|
66
|
-
type FlavorGpuH100Value = (typeof CardValuesH100)[keyof typeof CardValuesH100];
|
|
67
|
-
|
|
68
|
-
type FlavorsGpuValue = FlavorGpuTeslaValue | FlavorGpuH100Value;
|
|
69
|
-
|
|
70
|
-
const getParamsByConfigTypeCard = (value: FlavorsGpuValue) => {
|
|
71
|
-
const { 0: gpuCount, 1: vCpuCoreCount, 2: ramAmount } = value.split(' ');
|
|
72
|
-
|
|
73
|
-
return { gpuCount, vCpuCoreCount, ramAmount };
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
const generateCards = (cardsData: Record<string, string>, gpuType: GpuType) =>
|
|
77
|
-
Object.keys(cardsData).map(cardDataKey => {
|
|
78
|
-
const { gpuCount, vCpuCoreCount, ramAmount } = getParamsByConfigTypeCard(cardsData[cardDataKey] as FlavorsGpuValue);
|
|
79
|
-
|
|
80
|
-
return {
|
|
81
|
-
value: cardsData[cardDataKey],
|
|
82
|
-
label: gpuType,
|
|
83
|
-
description: (
|
|
84
|
-
<>
|
|
85
|
-
{gpuCount} GPU <br />
|
|
86
|
-
{vCpuCoreCount} vCPU <br />
|
|
87
|
-
{ramAmount} ГБ RAM
|
|
88
|
-
</>
|
|
89
|
-
),
|
|
90
|
-
};
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
const getMinOsDiskSpace = (os: OsType) => {
|
|
94
|
-
const minSize5GbOs: OsType[] = [OsType.Fedora38, OsType.Ubuntu18_04, OsType.Debian10];
|
|
95
|
-
const minSize15GbOs: OsType[] = [OsType.Ubuntu24_04];
|
|
96
|
-
|
|
97
|
-
const minSizeByOsMap = {
|
|
98
|
-
5: minSize5GbOs,
|
|
99
|
-
15: minSize15GbOs,
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
const osMinDiskSizeEntry = Object.entries(minSizeByOsMap).find(osMinDiskSizeEntries => {
|
|
103
|
-
const { 1: osMap } = osMinDiskSizeEntries;
|
|
104
|
-
|
|
105
|
-
if (osMap.includes(os)) {
|
|
106
|
-
return true;
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
if (!osMinDiskSizeEntry) return 10;
|
|
111
|
-
|
|
112
|
-
return Number(osMinDiskSizeEntry[0]);
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
export const EVOLUTION_CLOUD_SERVER_GPU_FORM_CONFIG: FormConfig = {
|
|
116
|
-
ui: [['osType'], ['gpuType'], 'configTypeCard', ['systemDisk'], 'additionalOptions', 'networkIsNeeded'],
|
|
117
|
-
controls: {
|
|
118
|
-
osType: {
|
|
119
|
-
type: CONTROL.SelectSingle,
|
|
120
|
-
accessorKey: 'os',
|
|
121
|
-
defaultValue: OsType.Ubuntu22_04,
|
|
122
|
-
items: generateBaseItems(osItems, value => value.replace(/_/g, ' ')),
|
|
123
|
-
decoratorProps: {
|
|
124
|
-
label: 'Операционная система',
|
|
125
|
-
},
|
|
126
|
-
onChangeFn: (value: OsType, setValue) => {
|
|
127
|
-
const arr: [string, AnyType][] = [
|
|
128
|
-
['os', value],
|
|
129
|
-
['evs.systemDisk.diskSpace', getMinOsDiskSpace(value)],
|
|
130
|
-
];
|
|
131
|
-
|
|
132
|
-
setValue(arr);
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
gpuType: {
|
|
136
|
-
type: CONTROL.SelectSingle,
|
|
137
|
-
accessorKey: 'gpuType',
|
|
138
|
-
defaultValue: GpuType.Tesla,
|
|
139
|
-
items: generateBaseItems(gpuTypeItems),
|
|
140
|
-
decoratorProps: {
|
|
141
|
-
label: 'Тип графического процессора',
|
|
142
|
-
},
|
|
143
|
-
uiProps: {
|
|
144
|
-
visible: false,
|
|
145
|
-
},
|
|
146
|
-
},
|
|
147
|
-
// значение не учитывается при подсчете data
|
|
148
|
-
configTypeCard: {
|
|
149
|
-
type: CONTROL.ToggleCards,
|
|
150
|
-
accessorKey: 'configTypeCard',
|
|
151
|
-
defaultValue: CardValuesTesla.GPU1_vCPU4_RAM64,
|
|
152
|
-
items: generateCards(CardValuesTesla, GpuType.Tesla),
|
|
153
|
-
decoratorProps: {
|
|
154
|
-
label: 'Конфигурация',
|
|
155
|
-
},
|
|
156
|
-
watchedControls: { gpuType: 'gpuType' },
|
|
157
|
-
onChangeFn: (value: FlavorGpuTeslaValue, setValue) => {
|
|
158
|
-
const { gpuCount, vCpuCoreCount, ramAmount } = getParamsByConfigTypeCard(value);
|
|
159
|
-
|
|
160
|
-
const valuesToSet = [
|
|
161
|
-
['configTypeCard', value],
|
|
162
|
-
['gpuCount', gpuCount],
|
|
163
|
-
['vCpuCoreCount', vCpuCoreCount],
|
|
164
|
-
['ramAmount', ramAmount],
|
|
165
|
-
] as [string, AnyType][];
|
|
166
|
-
|
|
167
|
-
setValue(valuesToSet);
|
|
168
|
-
},
|
|
169
|
-
relateFn: ({ gpuType }: { gpuType: GpuType }) => ({
|
|
170
|
-
items:
|
|
171
|
-
gpuType === GpuType.H100
|
|
172
|
-
? generateCards(CardValuesH100, GpuType.H100)
|
|
173
|
-
: generateCards(CardValuesTesla, GpuType.Tesla),
|
|
174
|
-
}),
|
|
175
|
-
},
|
|
176
|
-
gpuCount: {
|
|
177
|
-
type: CONTROL.Segmented,
|
|
178
|
-
accessorKey: 'gpuCount',
|
|
179
|
-
defaultValue: '1',
|
|
180
|
-
items: [],
|
|
181
|
-
decoratorProps: {
|
|
182
|
-
label: '',
|
|
183
|
-
},
|
|
184
|
-
uiProps: {
|
|
185
|
-
visible: false,
|
|
186
|
-
},
|
|
187
|
-
},
|
|
188
|
-
vCpuCoreCount: {
|
|
189
|
-
type: CONTROL.Segmented,
|
|
190
|
-
accessorKey: 'vCpuCoreCount',
|
|
191
|
-
defaultValue: '4',
|
|
192
|
-
items: [],
|
|
193
|
-
decoratorProps: {
|
|
194
|
-
label: '',
|
|
195
|
-
},
|
|
196
|
-
uiProps: {
|
|
197
|
-
visible: false,
|
|
198
|
-
},
|
|
199
|
-
},
|
|
200
|
-
ramAmount: {
|
|
201
|
-
type: CONTROL.Segmented,
|
|
202
|
-
accessorKey: 'ramAmount',
|
|
203
|
-
defaultValue: '64',
|
|
204
|
-
items: [],
|
|
205
|
-
decoratorProps: {
|
|
206
|
-
label: '',
|
|
207
|
-
},
|
|
208
|
-
uiProps: {
|
|
209
|
-
visible: false,
|
|
210
|
-
},
|
|
211
|
-
},
|
|
212
|
-
systemDisk: getDisk({
|
|
213
|
-
space: {
|
|
214
|
-
label: 'Диск',
|
|
215
|
-
accessorKey: 'evs.systemDisk.diskSpace',
|
|
216
|
-
defaultValue: 10,
|
|
217
|
-
uiProps: {
|
|
218
|
-
min: 10,
|
|
219
|
-
max: 4_096,
|
|
220
|
-
},
|
|
221
|
-
watchedControls: { os: 'os' },
|
|
222
|
-
relateFn: ({ os }: { os: OsType }) => ({
|
|
223
|
-
uiProps: {
|
|
224
|
-
min: getMinOsDiskSpace(os),
|
|
225
|
-
},
|
|
226
|
-
}),
|
|
227
|
-
},
|
|
228
|
-
specification: {
|
|
229
|
-
accessorKey: 'evs.systemDisk.specification',
|
|
230
|
-
defaultValue: 'SSD',
|
|
231
|
-
uiProps: {
|
|
232
|
-
disabled: true,
|
|
233
|
-
},
|
|
234
|
-
},
|
|
235
|
-
}),
|
|
236
|
-
additionalOptions: {
|
|
237
|
-
type: CONTROL.Object,
|
|
238
|
-
ui: ['alertAdditional', ['additionalDisks']],
|
|
239
|
-
controls: {
|
|
240
|
-
alertAdditional: {
|
|
241
|
-
type: 'alert',
|
|
242
|
-
uiProps: {
|
|
243
|
-
appearance: 'info',
|
|
244
|
-
outline: true,
|
|
245
|
-
description: 'Можно добавить до 7 дополнительных дисков',
|
|
246
|
-
},
|
|
247
|
-
accessorKey: 'addDisk',
|
|
248
|
-
},
|
|
249
|
-
additionalDisks: {
|
|
250
|
-
type: CONTROL.Array,
|
|
251
|
-
max: 7,
|
|
252
|
-
accessorKey: 'evs.additionalDisks',
|
|
253
|
-
addText: 'Добавить диск',
|
|
254
|
-
ui: ['disk'],
|
|
255
|
-
defaultValue: [],
|
|
256
|
-
controls: {
|
|
257
|
-
disk: getDisk({
|
|
258
|
-
space: {
|
|
259
|
-
label: 'Дополнительный диск',
|
|
260
|
-
accessorKey: 'diskSpace',
|
|
261
|
-
defaultValue: MinAdditionalDiskSize,
|
|
262
|
-
// TODO в текущем исполнении watchedControls и relateFn работают не корректно, поэтому в дальнейшем будут внесены правки, чтобы правильно отображать минимальные значения дисков
|
|
263
|
-
uiProps: {
|
|
264
|
-
min: MinAdditionalDiskSize,
|
|
265
|
-
max: 4_096,
|
|
266
|
-
},
|
|
267
|
-
},
|
|
268
|
-
specification: {
|
|
269
|
-
accessorKey: 'specification',
|
|
270
|
-
defaultValue: 'SSD',
|
|
271
|
-
uiProps: {
|
|
272
|
-
disabled: true,
|
|
273
|
-
},
|
|
274
|
-
},
|
|
275
|
-
}),
|
|
276
|
-
},
|
|
277
|
-
},
|
|
278
|
-
},
|
|
279
|
-
},
|
|
280
|
-
networkIsNeeded: {
|
|
281
|
-
type: CONTROL.Toggle,
|
|
282
|
-
defaultValue: false,
|
|
283
|
-
accessorKey: 'networkIsNeeded',
|
|
284
|
-
decoratorProps: {
|
|
285
|
-
label: 'Аренда публичного IP',
|
|
286
|
-
},
|
|
287
|
-
},
|
|
288
|
-
network: {
|
|
289
|
-
type: CONTROL.Object,
|
|
290
|
-
defaultValue: {
|
|
291
|
-
ipQuantity: 1,
|
|
292
|
-
bindingIpAddressesQuantity: 0,
|
|
293
|
-
publicGatewayQuantity: 0,
|
|
294
|
-
privateGatewayQuantity: 0,
|
|
295
|
-
},
|
|
296
|
-
ui: [],
|
|
297
|
-
controls: {},
|
|
298
|
-
visible: false,
|
|
299
|
-
},
|
|
300
|
-
},
|
|
301
|
-
};
|