@cloud-ru/uikit-product-calculator 1.9.6 → 1.10.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 (28) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/config/platforms/evolution/catalog.js +1 -0
  3. package/dist/cjs/config/platforms/evolution/constants.d.ts +1 -0
  4. package/dist/cjs/config/platforms/evolution/constants.js +1 -0
  5. package/dist/cjs/config/platforms/evolution/product-config/EvolutionManagedAirflow.d.ts +2 -0
  6. package/dist/cjs/config/platforms/evolution/product-config/EvolutionManagedAirflow.js +171 -0
  7. package/dist/cjs/config/platforms/evolution/product-config/index.d.ts +1 -0
  8. package/dist/cjs/config/platforms/evolution/product-config/index.js +1 -0
  9. package/dist/cjs/config/platforms/evolution/products.js +11 -0
  10. package/dist/cjs/config/utils/index.d.ts +1 -0
  11. package/dist/cjs/config/utils/index.js +3 -1
  12. package/dist/esm/config/platforms/evolution/catalog.js +1 -0
  13. package/dist/esm/config/platforms/evolution/constants.d.ts +1 -0
  14. package/dist/esm/config/platforms/evolution/constants.js +1 -0
  15. package/dist/esm/config/platforms/evolution/product-config/EvolutionManagedAirflow.d.ts +2 -0
  16. package/dist/esm/config/platforms/evolution/product-config/EvolutionManagedAirflow.js +168 -0
  17. package/dist/esm/config/platforms/evolution/product-config/index.d.ts +1 -0
  18. package/dist/esm/config/platforms/evolution/product-config/index.js +1 -0
  19. package/dist/esm/config/platforms/evolution/products.js +13 -2
  20. package/dist/esm/config/utils/index.d.ts +1 -0
  21. package/dist/esm/config/utils/index.js +1 -0
  22. package/package.json +7 -7
  23. package/src/config/platforms/evolution/catalog.tsx +1 -0
  24. package/src/config/platforms/evolution/constants.ts +1 -0
  25. package/src/config/platforms/evolution/product-config/EvolutionManagedAirflow.ts +177 -0
  26. package/src/config/platforms/evolution/product-config/index.ts +1 -0
  27. package/src/config/platforms/evolution/products.ts +13 -0
  28. package/src/config/utils/index.ts +3 -0
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
+ # 1.10.0 (2026-06-15)
7
+
8
+
9
+ ### Features
10
+
11
+ * **SITE-11165:** adding airflow calculator config ([447beb0](https://github.com/cloud-ru-tech/uikit-product/commit/447beb05c65cc717766a01cdc7e3943020673d65))
12
+
13
+
14
+
15
+
16
+
6
17
  ## 1.9.6 (2026-06-10)
7
18
 
8
19
  ### Only dependencies have been changed
@@ -76,6 +76,7 @@ exports.EVOLUTION_CATALOG = {
76
76
  constants_2.EVOLUTION_PRODUCT.EvolutionManagedRedis,
77
77
  constants_2.EVOLUTION_PRODUCT.EvolutionManagedSpark,
78
78
  constants_2.EVOLUTION_PRODUCT.EvolutionManagedBI,
79
+ constants_2.EVOLUTION_PRODUCT.EvolutionManagedAirflow,
79
80
  ],
80
81
  },
81
82
  {
@@ -17,6 +17,7 @@ export declare const EVOLUTION_PRODUCT: {
17
17
  readonly EvolutionArtifactRegistry: "evolutionArtifactRegistry";
18
18
  readonly EvolutionManagedTrino: "evolutionManagedTrino";
19
19
  readonly EvolutionManagedBI: "evolutionManagedBI";
20
+ readonly EvolutionManagedAirflow: "evolutionManagedAirflow";
20
21
  readonly EvolutionManagedRedis: "evolutionManagedRedis";
21
22
  readonly EvolutionManagedClickHouse: "evolutionManagedClickHouse";
22
23
  readonly EvolutionManagedSpark: "evolutionManagedSpark";
@@ -20,6 +20,7 @@ exports.EVOLUTION_PRODUCT = {
20
20
  EvolutionArtifactRegistry: 'evolutionArtifactRegistry',
21
21
  EvolutionManagedTrino: 'evolutionManagedTrino',
22
22
  EvolutionManagedBI: 'evolutionManagedBI',
23
+ EvolutionManagedAirflow: 'evolutionManagedAirflow',
23
24
  EvolutionManagedRedis: 'evolutionManagedRedis',
24
25
  EvolutionManagedClickHouse: 'evolutionManagedClickHouse',
25
26
  EvolutionManagedSpark: 'evolutionManagedSpark',
@@ -0,0 +1,2 @@
1
+ import { FormConfig } from '../../../../components';
2
+ export declare const EVOLUTION_MANAGED_AIRFLOW_CONFIG: FormConfig;
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVOLUTION_MANAGED_AIRFLOW_CONFIG = void 0;
4
+ const components_1 = require("../../../../components");
5
+ const utils_1 = require("../../../utils");
6
+ const flavorsConfig = [
7
+ { label: '2vCPU, 4ГБ RAM', value: '2 4' },
8
+ { label: '4vCPU, 8ГБ RAM', value: '4 8' },
9
+ { label: '4vCPU, 8ГБ RAM', value: '4 8' },
10
+ { label: '4vCPU, 16ГБ RAM', value: '4 16' },
11
+ { label: '4vCPU, 32ГБ RAM', value: '4 32' },
12
+ { label: '4vCPU, 64ГБ RAM', value: '4 64' },
13
+ { label: '8vCPU, 16ГБ RAM', value: '8 16' },
14
+ { label: '8vCPU, 32ГБ RAM', value: '8 32' },
15
+ { label: '8vCPU, 64ГБ RAM', value: '8 64' },
16
+ { label: '8vCPU, 128ГБ RAM', value: '8 128' },
17
+ { label: '16vCPU, 32ГБ RAM', value: '16 32' },
18
+ { label: '16vCPU, 64ГБ RAM', value: '16 64' },
19
+ ];
20
+ const quantityConfig = {
21
+ min: 1,
22
+ max: 10,
23
+ };
24
+ exports.EVOLUTION_MANAGED_AIRFLOW_CONFIG = {
25
+ ui: [
26
+ ['webserverConfig', 'webserverCount'],
27
+ ['schedulerConfig', 'schedulerCount'],
28
+ ['workerConfig', 'workerCount'],
29
+ ['dagProcessorConfig', 'dagProcessorCount'],
30
+ 'withTriggerer',
31
+ ['triggererConfig', 'triggererCount'],
32
+ ],
33
+ controls: {
34
+ webserverConfig: {
35
+ type: components_1.CONTROL.SelectSingle,
36
+ accessorKey: 'webServerConfig',
37
+ decoratorProps: {
38
+ label: 'Конфигурация веб-сервера',
39
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
40
+ },
41
+ defaultValue: flavorsConfig[0].value,
42
+ items: flavorsConfig,
43
+ },
44
+ webserverCount: {
45
+ type: components_1.CONTROL.Stepper,
46
+ accessorKey: 'webserverCount',
47
+ defaultValue: 1,
48
+ decoratorProps: {
49
+ label: 'Количество экземпляров',
50
+ },
51
+ uiProps: {
52
+ min: quantityConfig.min,
53
+ max: quantityConfig.max,
54
+ postfix: 'шт',
55
+ },
56
+ },
57
+ schedulerConfig: {
58
+ type: components_1.CONTROL.SelectSingle,
59
+ accessorKey: 'schedulerConfig',
60
+ decoratorProps: {
61
+ label: 'Конфигурация планировщика',
62
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
63
+ },
64
+ defaultValue: flavorsConfig[0].value,
65
+ items: flavorsConfig,
66
+ },
67
+ schedulerCount: {
68
+ type: components_1.CONTROL.Stepper,
69
+ accessorKey: 'schedulerCount',
70
+ defaultValue: 1,
71
+ decoratorProps: {
72
+ label: 'Количество экземпляров',
73
+ },
74
+ uiProps: {
75
+ min: quantityConfig.min,
76
+ max: quantityConfig.max,
77
+ postfix: 'шт',
78
+ },
79
+ },
80
+ workerConfig: {
81
+ type: components_1.CONTROL.SelectSingle,
82
+ accessorKey: 'workerConfig',
83
+ decoratorProps: {
84
+ label: 'Конфигурация воркеров',
85
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
86
+ },
87
+ defaultValue: flavorsConfig[0].value,
88
+ items: flavorsConfig,
89
+ },
90
+ workerCount: {
91
+ type: components_1.CONTROL.Slider,
92
+ accessorKey: 'workerCount',
93
+ defaultValue: '1',
94
+ decoratorProps: {
95
+ label: 'Минимальное и максимальное количество воркеров',
96
+ },
97
+ items: (0, utils_1.fillArrayWithNumbers)(quantityConfig.min, quantityConfig.max),
98
+ },
99
+ dagProcessorConfig: {
100
+ type: components_1.CONTROL.SelectSingle,
101
+ accessorKey: 'dagProcessorConfig',
102
+ decoratorProps: {
103
+ label: 'Конфигурация DAG-процессора',
104
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
105
+ },
106
+ defaultValue: flavorsConfig[0].value,
107
+ items: flavorsConfig,
108
+ },
109
+ dagProcessorCount: {
110
+ type: components_1.CONTROL.Stepper,
111
+ accessorKey: 'dagProcessorCount',
112
+ defaultValue: 1,
113
+ decoratorProps: {
114
+ label: 'Количество экземпляров',
115
+ },
116
+ uiProps: {
117
+ min: quantityConfig.min,
118
+ max: quantityConfig.max,
119
+ postfix: 'шт',
120
+ },
121
+ },
122
+ withTriggerer: {
123
+ type: components_1.CONTROL.Toggle,
124
+ accessorKey: 'withTriggerer',
125
+ defaultValue: false,
126
+ decoratorProps: {
127
+ label: 'Включить Triggerer',
128
+ labelTooltip: 'Компонент для автоматизации запуска задач, что упрощает управление рабочими процессами и повышает их эффективность',
129
+ },
130
+ },
131
+ triggererConfig: {
132
+ type: components_1.CONTROL.SelectSingle,
133
+ accessorKey: 'triggererConfig',
134
+ decoratorProps: {
135
+ label: 'Конфигурация triggerer',
136
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
137
+ },
138
+ defaultValue: flavorsConfig[0].value,
139
+ items: flavorsConfig,
140
+ watchedControls: {
141
+ withTriggerer: 'withTriggerer',
142
+ },
143
+ relateFn: ({ withTriggerer }) => ({
144
+ uiProps: {
145
+ visible: withTriggerer,
146
+ },
147
+ }),
148
+ },
149
+ triggererCount: {
150
+ type: components_1.CONTROL.Stepper,
151
+ accessorKey: 'triggererCount',
152
+ defaultValue: 1,
153
+ decoratorProps: {
154
+ label: 'Количество экземпляров',
155
+ },
156
+ uiProps: {
157
+ min: quantityConfig.min,
158
+ max: quantityConfig.max,
159
+ postfix: 'шт',
160
+ },
161
+ watchedControls: {
162
+ withTriggerer: 'withTriggerer',
163
+ },
164
+ relateFn: ({ withTriggerer }) => ({
165
+ uiProps: {
166
+ visible: withTriggerer,
167
+ },
168
+ }),
169
+ },
170
+ },
171
+ };
@@ -22,3 +22,4 @@ export * from './EvolutionManagedRedis';
22
22
  export * from './EvolutionManagedClickHouse';
23
23
  export * from './EvolutionManagedSpark';
24
24
  export * from './EvolutionManagedKafka';
25
+ export * from './EvolutionManagedAirflow';
@@ -38,3 +38,4 @@ __exportStar(require("./EvolutionManagedRedis"), exports);
38
38
  __exportStar(require("./EvolutionManagedClickHouse"), exports);
39
39
  __exportStar(require("./EvolutionManagedSpark"), exports);
40
40
  __exportStar(require("./EvolutionManagedKafka"), exports);
41
+ __exportStar(require("./EvolutionManagedAirflow"), exports);
@@ -257,6 +257,17 @@ exports.EVOLUTION_PRODUCTS = {
257
257
  freeTier: true,
258
258
  enableConnectToConsole: true,
259
259
  },
260
+ [constants_2.EVOLUTION_PRODUCT.EvolutionManagedAirflow]: {
261
+ id: constants_2.EVOLUTION_PRODUCT.EvolutionManagedAirflow,
262
+ platform: constants_1.PLATFORM.Evolution,
263
+ label: 'Evolution Managed Airflow',
264
+ caption: 'Инструмент для оркестрации процессов',
265
+ icon: uikit_product_icons_1.AirflowSVG,
266
+ formConfig: product_config_1.EVOLUTION_MANAGED_AIRFLOW_CONFIG,
267
+ dataTestId: constants_2.EVOLUTION_PRODUCT.EvolutionManagedAirflow,
268
+ enableChangeProductQuantity: false,
269
+ enableConnectToConsole: true,
270
+ },
260
271
  [constants_2.EVOLUTION_PRODUCT.EvolutionNotebooks]: {
261
272
  id: constants_2.EVOLUTION_PRODUCT.EvolutionNotebooks,
262
273
  platform: constants_1.PLATFORM.Evolution,
@@ -15,6 +15,7 @@ export declare function generateBaseItems(arr: (string | number)[], labelReplace
15
15
  value: string;
16
16
  label: string;
17
17
  }[];
18
+ export declare const fillArrayWithNumbers: (from: number, to: number) => number[];
18
19
  export * from './disk';
19
20
  export * from './eip';
20
21
  export * from './obs';
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.getMaxWorkingHoursAmount = exports.getNumeralWord = exports.generateRamItems = exports.generateCpuItems = void 0;
17
+ exports.getMaxWorkingHoursAmount = exports.getNumeralWord = exports.fillArrayWithNumbers = exports.generateRamItems = exports.generateCpuItems = void 0;
18
18
  exports.generateInstanceConfigItems = generateInstanceConfigItems;
19
19
  exports.generateBaseItems = generateBaseItems;
20
20
  const constants_1 = require("../../constants");
@@ -35,6 +35,8 @@ function generateBaseItems(arr, labelReplacerFn) {
35
35
  label: labelReplacerFn ? labelReplacerFn(String(item)) : String(item),
36
36
  }));
37
37
  }
38
+ const fillArrayWithNumbers = (from, to) => Array.from({ length: to - from + 1 }, (_, i) => from + i);
39
+ exports.fillArrayWithNumbers = fillArrayWithNumbers;
38
40
  __exportStar(require("./disk"), exports);
39
41
  __exportStar(require("./eip"), exports);
40
42
  __exportStar(require("./obs"), exports);
@@ -73,6 +73,7 @@ export const EVOLUTION_CATALOG = {
73
73
  EVOLUTION_PRODUCT.EvolutionManagedRedis,
74
74
  EVOLUTION_PRODUCT.EvolutionManagedSpark,
75
75
  EVOLUTION_PRODUCT.EvolutionManagedBI,
76
+ EVOLUTION_PRODUCT.EvolutionManagedAirflow,
76
77
  ],
77
78
  },
78
79
  {
@@ -17,6 +17,7 @@ export declare const EVOLUTION_PRODUCT: {
17
17
  readonly EvolutionArtifactRegistry: "evolutionArtifactRegistry";
18
18
  readonly EvolutionManagedTrino: "evolutionManagedTrino";
19
19
  readonly EvolutionManagedBI: "evolutionManagedBI";
20
+ readonly EvolutionManagedAirflow: "evolutionManagedAirflow";
20
21
  readonly EvolutionManagedRedis: "evolutionManagedRedis";
21
22
  readonly EvolutionManagedClickHouse: "evolutionManagedClickHouse";
22
23
  readonly EvolutionManagedSpark: "evolutionManagedSpark";
@@ -17,6 +17,7 @@ export const EVOLUTION_PRODUCT = {
17
17
  EvolutionArtifactRegistry: 'evolutionArtifactRegistry',
18
18
  EvolutionManagedTrino: 'evolutionManagedTrino',
19
19
  EvolutionManagedBI: 'evolutionManagedBI',
20
+ EvolutionManagedAirflow: 'evolutionManagedAirflow',
20
21
  EvolutionManagedRedis: 'evolutionManagedRedis',
21
22
  EvolutionManagedClickHouse: 'evolutionManagedClickHouse',
22
23
  EvolutionManagedSpark: 'evolutionManagedSpark',
@@ -0,0 +1,2 @@
1
+ import { FormConfig } from '../../../../components';
2
+ export declare const EVOLUTION_MANAGED_AIRFLOW_CONFIG: FormConfig;
@@ -0,0 +1,168 @@
1
+ import { CONTROL } from '../../../../components';
2
+ import { fillArrayWithNumbers } from '../../../utils';
3
+ const flavorsConfig = [
4
+ { label: '2vCPU, 4ГБ RAM', value: '2 4' },
5
+ { label: '4vCPU, 8ГБ RAM', value: '4 8' },
6
+ { label: '4vCPU, 8ГБ RAM', value: '4 8' },
7
+ { label: '4vCPU, 16ГБ RAM', value: '4 16' },
8
+ { label: '4vCPU, 32ГБ RAM', value: '4 32' },
9
+ { label: '4vCPU, 64ГБ RAM', value: '4 64' },
10
+ { label: '8vCPU, 16ГБ RAM', value: '8 16' },
11
+ { label: '8vCPU, 32ГБ RAM', value: '8 32' },
12
+ { label: '8vCPU, 64ГБ RAM', value: '8 64' },
13
+ { label: '8vCPU, 128ГБ RAM', value: '8 128' },
14
+ { label: '16vCPU, 32ГБ RAM', value: '16 32' },
15
+ { label: '16vCPU, 64ГБ RAM', value: '16 64' },
16
+ ];
17
+ const quantityConfig = {
18
+ min: 1,
19
+ max: 10,
20
+ };
21
+ export const EVOLUTION_MANAGED_AIRFLOW_CONFIG = {
22
+ ui: [
23
+ ['webserverConfig', 'webserverCount'],
24
+ ['schedulerConfig', 'schedulerCount'],
25
+ ['workerConfig', 'workerCount'],
26
+ ['dagProcessorConfig', 'dagProcessorCount'],
27
+ 'withTriggerer',
28
+ ['triggererConfig', 'triggererCount'],
29
+ ],
30
+ controls: {
31
+ webserverConfig: {
32
+ type: CONTROL.SelectSingle,
33
+ accessorKey: 'webServerConfig',
34
+ decoratorProps: {
35
+ label: 'Конфигурация веб-сервера',
36
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
37
+ },
38
+ defaultValue: flavorsConfig[0].value,
39
+ items: flavorsConfig,
40
+ },
41
+ webserverCount: {
42
+ type: CONTROL.Stepper,
43
+ accessorKey: 'webserverCount',
44
+ defaultValue: 1,
45
+ decoratorProps: {
46
+ label: 'Количество экземпляров',
47
+ },
48
+ uiProps: {
49
+ min: quantityConfig.min,
50
+ max: quantityConfig.max,
51
+ postfix: 'шт',
52
+ },
53
+ },
54
+ schedulerConfig: {
55
+ type: CONTROL.SelectSingle,
56
+ accessorKey: 'schedulerConfig',
57
+ decoratorProps: {
58
+ label: 'Конфигурация планировщика',
59
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
60
+ },
61
+ defaultValue: flavorsConfig[0].value,
62
+ items: flavorsConfig,
63
+ },
64
+ schedulerCount: {
65
+ type: CONTROL.Stepper,
66
+ accessorKey: 'schedulerCount',
67
+ defaultValue: 1,
68
+ decoratorProps: {
69
+ label: 'Количество экземпляров',
70
+ },
71
+ uiProps: {
72
+ min: quantityConfig.min,
73
+ max: quantityConfig.max,
74
+ postfix: 'шт',
75
+ },
76
+ },
77
+ workerConfig: {
78
+ type: CONTROL.SelectSingle,
79
+ accessorKey: 'workerConfig',
80
+ decoratorProps: {
81
+ label: 'Конфигурация воркеров',
82
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
83
+ },
84
+ defaultValue: flavorsConfig[0].value,
85
+ items: flavorsConfig,
86
+ },
87
+ workerCount: {
88
+ type: CONTROL.Slider,
89
+ accessorKey: 'workerCount',
90
+ defaultValue: '1',
91
+ decoratorProps: {
92
+ label: 'Минимальное и максимальное количество воркеров',
93
+ },
94
+ items: fillArrayWithNumbers(quantityConfig.min, quantityConfig.max),
95
+ },
96
+ dagProcessorConfig: {
97
+ type: CONTROL.SelectSingle,
98
+ accessorKey: 'dagProcessorConfig',
99
+ decoratorProps: {
100
+ label: 'Конфигурация DAG-процессора',
101
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
102
+ },
103
+ defaultValue: flavorsConfig[0].value,
104
+ items: flavorsConfig,
105
+ },
106
+ dagProcessorCount: {
107
+ type: CONTROL.Stepper,
108
+ accessorKey: 'dagProcessorCount',
109
+ defaultValue: 1,
110
+ decoratorProps: {
111
+ label: 'Количество экземпляров',
112
+ },
113
+ uiProps: {
114
+ min: quantityConfig.min,
115
+ max: quantityConfig.max,
116
+ postfix: 'шт',
117
+ },
118
+ },
119
+ withTriggerer: {
120
+ type: CONTROL.Toggle,
121
+ accessorKey: 'withTriggerer',
122
+ defaultValue: false,
123
+ decoratorProps: {
124
+ label: 'Включить Triggerer',
125
+ labelTooltip: 'Компонент для автоматизации запуска задач, что упрощает управление рабочими процессами и повышает их эффективность',
126
+ },
127
+ },
128
+ triggererConfig: {
129
+ type: CONTROL.SelectSingle,
130
+ accessorKey: 'triggererConfig',
131
+ decoratorProps: {
132
+ label: 'Конфигурация triggerer',
133
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
134
+ },
135
+ defaultValue: flavorsConfig[0].value,
136
+ items: flavorsConfig,
137
+ watchedControls: {
138
+ withTriggerer: 'withTriggerer',
139
+ },
140
+ relateFn: ({ withTriggerer }) => ({
141
+ uiProps: {
142
+ visible: withTriggerer,
143
+ },
144
+ }),
145
+ },
146
+ triggererCount: {
147
+ type: CONTROL.Stepper,
148
+ accessorKey: 'triggererCount',
149
+ defaultValue: 1,
150
+ decoratorProps: {
151
+ label: 'Количество экземпляров',
152
+ },
153
+ uiProps: {
154
+ min: quantityConfig.min,
155
+ max: quantityConfig.max,
156
+ postfix: 'шт',
157
+ },
158
+ watchedControls: {
159
+ withTriggerer: 'withTriggerer',
160
+ },
161
+ relateFn: ({ withTriggerer }) => ({
162
+ uiProps: {
163
+ visible: withTriggerer,
164
+ },
165
+ }),
166
+ },
167
+ },
168
+ };
@@ -22,3 +22,4 @@ export * from './EvolutionManagedRedis';
22
22
  export * from './EvolutionManagedClickHouse';
23
23
  export * from './EvolutionManagedSpark';
24
24
  export * from './EvolutionManagedKafka';
25
+ export * from './EvolutionManagedAirflow';
@@ -22,3 +22,4 @@ export * from './EvolutionManagedRedis';
22
22
  export * from './EvolutionManagedClickHouse';
23
23
  export * from './EvolutionManagedSpark';
24
24
  export * from './EvolutionManagedKafka';
25
+ export * from './EvolutionManagedAirflow';
@@ -1,7 +1,7 @@
1
- import { ArenadataDbSVG, ArtifactRegistrySVG, BareMetalSVG, ContainerAppsSVG, EvoDnsSVG, EvolutionBiSVG, EvolutionComputeSVG, JupyterServersSVG, LoadBalancerSVG, ManagedClickHouseSVG, ManagedKafkaSVG, ManagedKubernetesSVG, ManagedPostgreSqlSVG, MetastoreSVG, MlInferenceSVG, PublicIpSVG, RedisSVG, S3StorageSVG, SnatSVG, SparkSVG, TrinoSVG, } from '@cloud-ru/uikit-product-icons';
1
+ import { AirflowSVG, ArenadataDbSVG, ArtifactRegistrySVG, BareMetalSVG, ContainerAppsSVG, EvoDnsSVG, EvolutionBiSVG, EvolutionComputeSVG, JupyterServersSVG, LoadBalancerSVG, ManagedClickHouseSVG, ManagedKafkaSVG, 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_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_CLICKHOUSE_CONFIG, EVOLUTION_MANAGED_KAFKA_CONFIG, 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';
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_AIRFLOW_CONFIG, EVOLUTION_MANAGED_BI, EVOLUTION_MANAGED_CLICKHOUSE_CONFIG, EVOLUTION_MANAGED_KAFKA_CONFIG, 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';
5
5
  export const EVOLUTION_PRODUCTS = {
6
6
  [EVOLUTION_PRODUCT.EvolutionCloudServer]: {
7
7
  id: EVOLUTION_PRODUCT.EvolutionCloudServer,
@@ -254,6 +254,17 @@ export const EVOLUTION_PRODUCTS = {
254
254
  freeTier: true,
255
255
  enableConnectToConsole: true,
256
256
  },
257
+ [EVOLUTION_PRODUCT.EvolutionManagedAirflow]: {
258
+ id: EVOLUTION_PRODUCT.EvolutionManagedAirflow,
259
+ platform: PLATFORM.Evolution,
260
+ label: 'Evolution Managed Airflow',
261
+ caption: 'Инструмент для оркестрации процессов',
262
+ icon: AirflowSVG,
263
+ formConfig: EVOLUTION_MANAGED_AIRFLOW_CONFIG,
264
+ dataTestId: EVOLUTION_PRODUCT.EvolutionManagedAirflow,
265
+ enableChangeProductQuantity: false,
266
+ enableConnectToConsole: true,
267
+ },
257
268
  [EVOLUTION_PRODUCT.EvolutionNotebooks]: {
258
269
  id: EVOLUTION_PRODUCT.EvolutionNotebooks,
259
270
  platform: PLATFORM.Evolution,
@@ -15,6 +15,7 @@ export declare function generateBaseItems(arr: (string | number)[], labelReplace
15
15
  value: string;
16
16
  label: string;
17
17
  }[];
18
+ export declare const fillArrayWithNumbers: (from: number, to: number) => number[];
18
19
  export * from './disk';
19
20
  export * from './eip';
20
21
  export * from './obs';
@@ -14,6 +14,7 @@ export function generateBaseItems(arr, labelReplacerFn) {
14
14
  label: labelReplacerFn ? labelReplacerFn(String(item)) : String(item),
15
15
  }));
16
16
  }
17
+ export const fillArrayWithNumbers = (from, to) => Array.from({ length: to - from + 1 }, (_, i) => from + i);
17
18
  export * from './disk';
18
19
  export * from './eip';
19
20
  export * from './obs';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloud-ru/uikit-product-calculator",
3
3
  "title": "Calculator",
4
- "version": "1.9.6",
4
+ "version": "1.10.0",
5
5
  "sideEffects": [
6
6
  "*.css",
7
7
  "*.woff",
@@ -37,11 +37,11 @@
37
37
  "scripts": {},
38
38
  "dependencies": {
39
39
  "@cloud-ru/ft-copy-to-clipboard": "0.1.0",
40
- "@cloud-ru/uikit-product-icons": "17.4.0",
41
- "@cloud-ru/uikit-product-mobile-accordion": "1.1.13",
42
- "@cloud-ru/uikit-product-mobile-dropdown": "2.1.15",
43
- "@cloud-ru/uikit-product-mobile-fields": "2.2.0",
44
- "@cloud-ru/uikit-product-mobile-modal": "2.1.5",
40
+ "@cloud-ru/uikit-product-icons": "17.5.0",
41
+ "@cloud-ru/uikit-product-mobile-accordion": "1.1.14",
42
+ "@cloud-ru/uikit-product-mobile-dropdown": "2.1.16",
43
+ "@cloud-ru/uikit-product-mobile-fields": "2.2.1",
44
+ "@cloud-ru/uikit-product-mobile-modal": "2.1.6",
45
45
  "@cloud-ru/uikit-product-utils": "9.1.0",
46
46
  "@snack-uikit/alert": "0.16.28",
47
47
  "@snack-uikit/button": "0.19.7",
@@ -71,5 +71,5 @@
71
71
  "devDependencies": {
72
72
  "@types/lodash": "4.17.13"
73
73
  },
74
- "gitHead": "92d679e9b52484574ef7848f1b46241c465ce197"
74
+ "gitHead": "82c3199da1b9ed2c30651169a39e0848d2b8a519"
75
75
  }
@@ -95,6 +95,7 @@ export const EVOLUTION_CATALOG: CatalogConfig['catalog'] = {
95
95
  EVOLUTION_PRODUCT.EvolutionManagedRedis,
96
96
  EVOLUTION_PRODUCT.EvolutionManagedSpark,
97
97
  EVOLUTION_PRODUCT.EvolutionManagedBI,
98
+ EVOLUTION_PRODUCT.EvolutionManagedAirflow,
98
99
  ],
99
100
  },
100
101
  {
@@ -17,6 +17,7 @@ export const EVOLUTION_PRODUCT = {
17
17
  EvolutionArtifactRegistry: 'evolutionArtifactRegistry',
18
18
  EvolutionManagedTrino: 'evolutionManagedTrino',
19
19
  EvolutionManagedBI: 'evolutionManagedBI',
20
+ EvolutionManagedAirflow: 'evolutionManagedAirflow',
20
21
  EvolutionManagedRedis: 'evolutionManagedRedis',
21
22
  EvolutionManagedClickHouse: 'evolutionManagedClickHouse',
22
23
  EvolutionManagedSpark: 'evolutionManagedSpark',
@@ -0,0 +1,177 @@
1
+ import { CONTROL, FormConfig } from '../../../../components';
2
+ import { fillArrayWithNumbers } from '../../../utils';
3
+
4
+ const flavorsConfig = [
5
+ { label: '2vCPU, 4ГБ RAM', value: '2 4' },
6
+ { label: '4vCPU, 8ГБ RAM', value: '4 8' },
7
+ { label: '4vCPU, 8ГБ RAM', value: '4 8' },
8
+ { label: '4vCPU, 16ГБ RAM', value: '4 16' },
9
+ { label: '4vCPU, 32ГБ RAM', value: '4 32' },
10
+ { label: '4vCPU, 64ГБ RAM', value: '4 64' },
11
+ { label: '8vCPU, 16ГБ RAM', value: '8 16' },
12
+ { label: '8vCPU, 32ГБ RAM', value: '8 32' },
13
+ { label: '8vCPU, 64ГБ RAM', value: '8 64' },
14
+ { label: '8vCPU, 128ГБ RAM', value: '8 128' },
15
+ { label: '16vCPU, 32ГБ RAM', value: '16 32' },
16
+ { label: '16vCPU, 64ГБ RAM', value: '16 64' },
17
+ ];
18
+
19
+ const quantityConfig = {
20
+ min: 1,
21
+ max: 10,
22
+ };
23
+
24
+ export const EVOLUTION_MANAGED_AIRFLOW_CONFIG: FormConfig = {
25
+ ui: [
26
+ ['webserverConfig', 'webserverCount'],
27
+ ['schedulerConfig', 'schedulerCount'],
28
+ ['workerConfig', 'workerCount'],
29
+ ['dagProcessorConfig', 'dagProcessorCount'],
30
+ 'withTriggerer',
31
+ ['triggererConfig', 'triggererCount'],
32
+ ],
33
+ controls: {
34
+ webserverConfig: {
35
+ type: CONTROL.SelectSingle,
36
+ accessorKey: 'webServerConfig',
37
+ decoratorProps: {
38
+ label: 'Конфигурация веб-сервера',
39
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
40
+ },
41
+ defaultValue: flavorsConfig[0].value,
42
+ items: flavorsConfig,
43
+ },
44
+ webserverCount: {
45
+ type: CONTROL.Stepper,
46
+ accessorKey: 'webserverCount',
47
+ defaultValue: 1,
48
+ decoratorProps: {
49
+ label: 'Количество экземпляров',
50
+ },
51
+ uiProps: {
52
+ min: quantityConfig.min,
53
+ max: quantityConfig.max,
54
+ postfix: 'шт',
55
+ },
56
+ },
57
+
58
+ schedulerConfig: {
59
+ type: CONTROL.SelectSingle,
60
+ accessorKey: 'schedulerConfig',
61
+ decoratorProps: {
62
+ label: 'Конфигурация планировщика',
63
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
64
+ },
65
+ defaultValue: flavorsConfig[0].value,
66
+ items: flavorsConfig,
67
+ },
68
+ schedulerCount: {
69
+ type: CONTROL.Stepper,
70
+ accessorKey: 'schedulerCount',
71
+ defaultValue: 1,
72
+ decoratorProps: {
73
+ label: 'Количество экземпляров',
74
+ },
75
+ uiProps: {
76
+ min: quantityConfig.min,
77
+ max: quantityConfig.max,
78
+ postfix: 'шт',
79
+ },
80
+ },
81
+
82
+ workerConfig: {
83
+ type: CONTROL.SelectSingle,
84
+ accessorKey: 'workerConfig',
85
+ decoratorProps: {
86
+ label: 'Конфигурация воркеров',
87
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
88
+ },
89
+ defaultValue: flavorsConfig[0].value,
90
+ items: flavorsConfig,
91
+ },
92
+ workerCount: {
93
+ type: CONTROL.Slider,
94
+ accessorKey: 'workerCount',
95
+ defaultValue: '1',
96
+ decoratorProps: {
97
+ label: 'Минимальное и максимальное количество воркеров',
98
+ },
99
+ items: fillArrayWithNumbers(quantityConfig.min, quantityConfig.max),
100
+ },
101
+
102
+ dagProcessorConfig: {
103
+ type: CONTROL.SelectSingle,
104
+ accessorKey: 'dagProcessorConfig',
105
+ decoratorProps: {
106
+ label: 'Конфигурация DAG-процессора',
107
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
108
+ },
109
+ defaultValue: flavorsConfig[0].value,
110
+ items: flavorsConfig,
111
+ },
112
+ dagProcessorCount: {
113
+ type: CONTROL.Stepper,
114
+ accessorKey: 'dagProcessorCount',
115
+ defaultValue: 1,
116
+ decoratorProps: {
117
+ label: 'Количество экземпляров',
118
+ },
119
+ uiProps: {
120
+ min: quantityConfig.min,
121
+ max: quantityConfig.max,
122
+ postfix: 'шт',
123
+ },
124
+ },
125
+
126
+ withTriggerer: {
127
+ type: CONTROL.Toggle,
128
+ accessorKey: 'withTriggerer',
129
+ defaultValue: false,
130
+ decoratorProps: {
131
+ label: 'Включить Triggerer',
132
+ labelTooltip:
133
+ 'Компонент для автоматизации запуска задач, что упрощает управление рабочими процессами и повышает их эффективность',
134
+ },
135
+ },
136
+
137
+ triggererConfig: {
138
+ type: CONTROL.SelectSingle,
139
+ accessorKey: 'triggererConfig',
140
+ decoratorProps: {
141
+ label: 'Конфигурация triggerer',
142
+ labelTooltip: 'Вычислительные ресурсы - Количество ядер vCPU и RAM',
143
+ },
144
+ defaultValue: flavorsConfig[0].value,
145
+ items: flavorsConfig,
146
+ watchedControls: {
147
+ withTriggerer: 'withTriggerer',
148
+ },
149
+ relateFn: ({ withTriggerer }) => ({
150
+ uiProps: {
151
+ visible: withTriggerer,
152
+ },
153
+ }),
154
+ },
155
+ triggererCount: {
156
+ type: CONTROL.Stepper,
157
+ accessorKey: 'triggererCount',
158
+ defaultValue: 1,
159
+ decoratorProps: {
160
+ label: 'Количество экземпляров',
161
+ },
162
+ uiProps: {
163
+ min: quantityConfig.min,
164
+ max: quantityConfig.max,
165
+ postfix: 'шт',
166
+ },
167
+ watchedControls: {
168
+ withTriggerer: 'withTriggerer',
169
+ },
170
+ relateFn: ({ withTriggerer }) => ({
171
+ uiProps: {
172
+ visible: withTriggerer,
173
+ },
174
+ }),
175
+ },
176
+ },
177
+ };
@@ -22,3 +22,4 @@ export * from './EvolutionManagedRedis';
22
22
  export * from './EvolutionManagedClickHouse';
23
23
  export * from './EvolutionManagedSpark';
24
24
  export * from './EvolutionManagedKafka';
25
+ export * from './EvolutionManagedAirflow';
@@ -1,4 +1,5 @@
1
1
  import {
2
+ AirflowSVG,
2
3
  ArenadataDbSVG,
3
4
  ArtifactRegistrySVG,
4
5
  BareMetalSVG,
@@ -36,6 +37,7 @@ import {
36
37
  EVOLUTION_DNS_CONFIG,
37
38
  EVOLUTION_KUBERNETES_FORM_CONFIG,
38
39
  EVOLUTION_LOAD_BALANCER_CONFIG,
40
+ EVOLUTION_MANAGED_AIRFLOW_CONFIG,
39
41
  EVOLUTION_MANAGED_BI,
40
42
  EVOLUTION_MANAGED_CLICKHOUSE_CONFIG,
41
43
  EVOLUTION_MANAGED_KAFKA_CONFIG,
@@ -305,6 +307,17 @@ export const EVOLUTION_PRODUCTS: CatalogConfig['products'] = {
305
307
  freeTier: true,
306
308
  enableConnectToConsole: true,
307
309
  },
310
+ [EVOLUTION_PRODUCT.EvolutionManagedAirflow]: {
311
+ id: EVOLUTION_PRODUCT.EvolutionManagedAirflow,
312
+ platform: PLATFORM.Evolution,
313
+ label: 'Evolution Managed Airflow',
314
+ caption: 'Инструмент для оркестрации процессов',
315
+ icon: AirflowSVG,
316
+ formConfig: EVOLUTION_MANAGED_AIRFLOW_CONFIG,
317
+ dataTestId: EVOLUTION_PRODUCT.EvolutionManagedAirflow,
318
+ enableChangeProductQuantity: false,
319
+ enableConnectToConsole: true,
320
+ },
308
321
  [EVOLUTION_PRODUCT.EvolutionNotebooks]: {
309
322
  id: EVOLUTION_PRODUCT.EvolutionNotebooks,
310
323
  platform: PLATFORM.Evolution,
@@ -17,6 +17,9 @@ export function generateBaseItems(arr: (string | number)[], labelReplacerFn?: (v
17
17
  }));
18
18
  }
19
19
 
20
+ export const fillArrayWithNumbers = (from: number, to: number) =>
21
+ Array.from({ length: to - from + 1 }, (_, i) => from + i);
22
+
20
23
  export * from './disk';
21
24
  export * from './eip';
22
25
  export * from './obs';