@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.
Files changed (24) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +1 -1
  3. package/dist/cjs/config/platforms/evolution/catalog.js +1 -1
  4. package/dist/cjs/config/platforms/evolution/constants.d.ts +0 -1
  5. package/dist/cjs/config/platforms/evolution/constants.js +0 -1
  6. package/dist/cjs/config/platforms/evolution/product-config/index.d.ts +5 -1
  7. package/dist/cjs/config/platforms/evolution/product-config/index.js +5 -1
  8. package/dist/cjs/config/platforms/evolution/products.js +6 -21
  9. package/dist/esm/config/platforms/evolution/catalog.js +1 -1
  10. package/dist/esm/config/platforms/evolution/constants.d.ts +0 -1
  11. package/dist/esm/config/platforms/evolution/constants.js +0 -1
  12. package/dist/esm/config/platforms/evolution/product-config/index.d.ts +5 -1
  13. package/dist/esm/config/platforms/evolution/product-config/index.js +5 -1
  14. package/dist/esm/config/platforms/evolution/products.js +3 -18
  15. package/package.json +2 -2
  16. package/src/config/platforms/evolution/catalog.tsx +1 -1
  17. package/src/config/platforms/evolution/constants.ts +0 -1
  18. package/src/config/platforms/evolution/product-config/index.ts +5 -1
  19. package/src/config/platforms/evolution/products.ts +6 -18
  20. package/dist/cjs/config/platforms/evolution/product-config/EvolutionCloudServerGpu.d.ts +0 -2
  21. package/dist/cjs/config/platforms/evolution/product-config/EvolutionCloudServerGpu.js +0 -273
  22. package/dist/esm/config/platforms/evolution/product-config/EvolutionCloudServerGpu.d.ts +0 -2
  23. package/dist/esm/config/platforms/evolution/product-config/EvolutionCloudServerGpu.js +0 -270
  24. 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@1084* | `() => StringIterator<string>` | - | 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: EvolutionManagedSpark_1.EVOLUTION_MANAGED_SPARK_CONFIG,
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: EvolutionManagedRedis_1.EVOLUTION_MANAGED_REDIS_CONFIG,
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: EvolutionLoadBalancer_1.EVOLUTION_LOAD_BALANCER_CONFIG,
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: EvolutionDNS_1.EVOLUTION_DNS_CONFIG,
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: EvolutionManagedBI_1.EVOLUTION_MANAGED_BI,
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, ElasticCloudServerWithGpuSVG, EvoDnsSVG, EvolutionBiSVG, EvolutionComputeSVG, JupyterServersSVG, LoadBalancerSVG, ManagedKubernetesSVG, ManagedPostgreSqlSVG, MetastoreSVG, MlInferenceSVG, PublicIpSVG, RedisSVG, S3StorageSVG, SnatSVG, SparkSVG, TrinoSVG, } from '@cloud-ru/uikit-product-icons';
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, EVOLUTION_CLOUD_SERVER_GPU_FORM_CONFIG, EVOLUTION_CONTAINER_APPS_CONFIG, EVOLUTION_CONTAINER_APPS_FREE_TIER_CONFIG, EVOLUTION_KUBERNETES_FORM_CONFIG, EVOLUTION_MANAGED_METASTORE_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';
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.37.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": "340f8e4151c606c0bd1d8b3053a2bda085b2861b"
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,2 +0,0 @@
1
- import { FormConfig } from '../../../../components';
2
- export declare const EVOLUTION_CLOUD_SERVER_GPU_FORM_CONFIG: FormConfig;
@@ -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,2 +0,0 @@
1
- import { FormConfig } from '../../../../components';
2
- export declare const EVOLUTION_CLOUD_SERVER_GPU_FORM_CONFIG: FormConfig;
@@ -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
- };