bfg-common 1.5.783 → 1.5.785
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/assets/localization/local_be.json +1 -0
- package/assets/localization/local_en.json +1 -0
- package/assets/localization/local_hy.json +1 -0
- package/assets/localization/local_kk.json +1 -0
- package/assets/localization/local_ru.json +1 -0
- package/assets/localization/local_zh.json +1 -0
- package/components/common/wizards/datastore/add/lib/utils.ts +13 -2
- package/lib/models/enums.ts +52 -1
- package/lib/utils/validation.ts +74 -0
- package/package.json +1 -1
|
@@ -3870,6 +3870,7 @@
|
|
|
3870
3870
|
},
|
|
3871
3871
|
"ssoConfiguration": {
|
|
3872
3872
|
"twoFactorPolicy": "Палітыка двухфактарнай аўтэнтыфікацыі",
|
|
3873
|
+
"enableTwoFactorPolicy": "Уключыць палітыку двухфактарнай аўтэнтыфікацыі",
|
|
3873
3874
|
"twoFactorGracePeriodDays": "Дні льготнага перыяду для двухфактарнай аўтэнтыфікацыі",
|
|
3874
3875
|
"maxIdenticalAdjacentCharacters": "Макс. колькасць аднолькавых суседніх сімвалаў",
|
|
3875
3876
|
"maxLength": "Макс. даўжыня",
|
|
@@ -3874,6 +3874,7 @@
|
|
|
3874
3874
|
},
|
|
3875
3875
|
"ssoConfiguration": {
|
|
3876
3876
|
"twoFactorPolicy": "Two-factor policy",
|
|
3877
|
+
"enableTwoFactorPolicy": "Enable Two-factor policy",
|
|
3877
3878
|
"twoFactorGracePeriodDays": "Two factor grace period days",
|
|
3878
3879
|
"maxIdenticalAdjacentCharacters": "Max identical adjacent characters",
|
|
3879
3880
|
"maxLength": "Max length",
|
|
@@ -3874,6 +3874,7 @@
|
|
|
3874
3874
|
},
|
|
3875
3875
|
"ssoConfiguration": {
|
|
3876
3876
|
"twoFactorPolicy": "Երկու գործոնի քաղաքականություն",
|
|
3877
|
+
"enableTwoFactorPolicy": "Միացնել երկգործոն նույնականացման քաղաքականությունը",
|
|
3877
3878
|
"twoFactorGracePeriodDays": "Երկու գործոնի արտոնյալ ժամանակահատվածի օրերը",
|
|
3878
3879
|
"maxIdenticalAdjacentCharacters": "Առավելագույն նույնական հաջորդական նիշեր",
|
|
3879
3880
|
"maxLength": "Առավելագույն երկարություն",
|
|
@@ -3873,6 +3873,7 @@
|
|
|
3873
3873
|
},
|
|
3874
3874
|
"ssoConfiguration": {
|
|
3875
3875
|
"twoFactorPolicy": "Екі факторлы саясат",
|
|
3876
|
+
"enableTwoFactorPolicy": "Екі факторлы аутентификация саясатын қосу",
|
|
3876
3877
|
"twoFactorGracePeriodDays": "Екі факторлы жеңілдік мерзімінің күндері",
|
|
3877
3878
|
"maxIdenticalAdjacentCharacters": "Қатар тұрған бірдей таңбалардың макс. саны",
|
|
3878
3879
|
"maxLength": "Максималды ұзындық",
|
|
@@ -3873,6 +3873,7 @@
|
|
|
3873
3873
|
},
|
|
3874
3874
|
"ssoConfiguration": {
|
|
3875
3875
|
"twoFactorPolicy": "Политика двухфакторной аутентификации",
|
|
3876
|
+
"enableTwoFactorPolicy": "Включить политику двухфакторной аутентификации",
|
|
3876
3877
|
"twoFactorGracePeriodDays": "Дни льготного периода для двухфакторной аутентификации",
|
|
3877
3878
|
"maxIdenticalAdjacentCharacters": "Макс. количество одинаковых соседних символов",
|
|
3878
3879
|
"maxLength": "Максимальная длина",
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
|
|
2
2
|
import type { API_UI_I_Error } from '~/lib/models/store/interfaces'
|
|
3
3
|
import type { UI_T_Project } from '~/lib/models/types'
|
|
4
|
-
import {
|
|
4
|
+
import { UI_E_ObjectNodeKind } from '~/lib/models/enums'
|
|
5
|
+
import { checkName } from '~/lib/utils/validation'
|
|
5
6
|
|
|
6
7
|
export const checkValidityName = async ({
|
|
7
8
|
name,
|
|
@@ -17,6 +18,16 @@ export const checkValidityName = async ({
|
|
|
17
18
|
datacenterId?: string
|
|
18
19
|
}): Promise<void> => {
|
|
19
20
|
wizard.setLoader(true)
|
|
21
|
+
|
|
22
|
+
const asd = checkName(
|
|
23
|
+
name,
|
|
24
|
+
project,
|
|
25
|
+
UI_E_ObjectNodeKind.DATASTORE,
|
|
26
|
+
datacenterId
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
console.log(asd, 'validate datastore name in vizard')
|
|
30
|
+
|
|
20
31
|
const url = buildValidationUrl(name, project, datacenterId)
|
|
21
32
|
|
|
22
33
|
const { error } = await useMyFetch<null, API_UI_I_Error>(url, {
|
|
@@ -45,7 +56,7 @@ const buildValidationUrl = (
|
|
|
45
56
|
|
|
46
57
|
const params = new URLSearchParams()
|
|
47
58
|
params.set('name', name)
|
|
48
|
-
params.set('kind', String(
|
|
59
|
+
params.set('kind', String(UI_E_ObjectNodeKind.DATASTORE))
|
|
49
60
|
if (datacenterId) params.set('datacenter', datacenterId)
|
|
50
61
|
|
|
51
62
|
return `/ui/object/validate_name_datacenter?${params.toString()}`
|
package/lib/models/enums.ts
CHANGED
|
@@ -69,5 +69,56 @@ export enum UI_E_DatastoreState {
|
|
|
69
69
|
UNHEALTHY,
|
|
70
70
|
MAINTENANCE,
|
|
71
71
|
INACCESSIBLE,
|
|
72
|
-
UNMOUNTED
|
|
72
|
+
UNMOUNTED,
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export enum UI_E_ObjectNodeKind {
|
|
76
|
+
EMPTY,
|
|
77
|
+
ZONE,
|
|
78
|
+
ZONE_DIR,
|
|
79
|
+
DATACENTER,
|
|
80
|
+
DC_HC_DIR,
|
|
81
|
+
DC_NET_DIR,
|
|
82
|
+
DC_DS_DIR,
|
|
83
|
+
DC_VMT_DIR,
|
|
84
|
+
CLUSTER,
|
|
85
|
+
HOST,
|
|
86
|
+
DATASTORE,
|
|
87
|
+
NETWORK,
|
|
88
|
+
DSWITCH,
|
|
89
|
+
VM,
|
|
90
|
+
VM_TEMPLATE,
|
|
91
|
+
VM_APP,
|
|
92
|
+
BUCKET,
|
|
93
|
+
BACKUP_STORAGE,
|
|
94
|
+
RESOURCE_POOL,
|
|
95
|
+
NAMESPACE,
|
|
96
|
+
DC_BACKUP_DIR,
|
|
97
|
+
ENDSUBTYPES,
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Маппинг для названий
|
|
101
|
+
export const UI_E_ObjectKindName: Record<UI_E_ObjectNodeKind, string> = {
|
|
102
|
+
[UI_E_ObjectNodeKind.EMPTY]: 'empty',
|
|
103
|
+
[UI_E_ObjectNodeKind.ZONE]: 'zone',
|
|
104
|
+
[UI_E_ObjectNodeKind.ZONE_DIR]: 'zone_dir',
|
|
105
|
+
[UI_E_ObjectNodeKind.DATACENTER]: 'datacenter',
|
|
106
|
+
[UI_E_ObjectNodeKind.DC_HC_DIR]: 'dc_hc_dir',
|
|
107
|
+
[UI_E_ObjectNodeKind.DC_NET_DIR]: 'dc_net_dir',
|
|
108
|
+
[UI_E_ObjectNodeKind.DC_DS_DIR]: 'dc_ds_dir',
|
|
109
|
+
[UI_E_ObjectNodeKind.DC_VMT_DIR]: 'dc_vmt_dir',
|
|
110
|
+
[UI_E_ObjectNodeKind.CLUSTER]: 'cluster',
|
|
111
|
+
[UI_E_ObjectNodeKind.HOST]: 'host',
|
|
112
|
+
[UI_E_ObjectNodeKind.DATASTORE]: 'datastore',
|
|
113
|
+
[UI_E_ObjectNodeKind.NETWORK]: 'network',
|
|
114
|
+
[UI_E_ObjectNodeKind.DSWITCH]: 'dswitch',
|
|
115
|
+
[UI_E_ObjectNodeKind.VM]: 'vm',
|
|
116
|
+
[UI_E_ObjectNodeKind.VM_TEMPLATE]: 'vm_template',
|
|
117
|
+
[UI_E_ObjectNodeKind.VM_APP]: 'vm_app',
|
|
118
|
+
[UI_E_ObjectNodeKind.BUCKET]: 'bucket',
|
|
119
|
+
[UI_E_ObjectNodeKind.BACKUP_STORAGE]: 'backup_storage',
|
|
120
|
+
[UI_E_ObjectNodeKind.RESOURCE_POOL]: 'resource_pool',
|
|
121
|
+
[UI_E_ObjectNodeKind.NAMESPACE]: 'namespace',
|
|
122
|
+
[UI_E_ObjectNodeKind.DC_BACKUP_DIR]: 'dc_backup_dir',
|
|
123
|
+
[UI_E_ObjectNodeKind.ENDSUBTYPES]: 'endsubtypes',
|
|
73
124
|
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { API_UI_I_Error } from '~/lib/models/store/interfaces'
|
|
2
|
+
import type { UI_T_Project } from '~/lib/models/types'
|
|
3
|
+
import { UI_E_ObjectNodeKind } from '~/lib/models/enums'
|
|
4
|
+
|
|
5
|
+
// const onChangeName = async (name: string): Promise<void> => {
|
|
6
|
+
//
|
|
7
|
+
//
|
|
8
|
+
// isLoading.value = true
|
|
9
|
+
// const { statusCode } = await checkName(name, 'sphere', UI_E_ObjectNodeKind.DATASTORE)
|
|
10
|
+
// isLoading.value = false
|
|
11
|
+
//
|
|
12
|
+
// /* TODO: сделать глобально */
|
|
13
|
+
// switch (statusCode) {
|
|
14
|
+
// case 200: // OK
|
|
15
|
+
// alertErrorText.value = null
|
|
16
|
+
// break
|
|
17
|
+
// case 405: // Invalid kind
|
|
18
|
+
// break
|
|
19
|
+
// case 406: // Invalid name
|
|
20
|
+
// break
|
|
21
|
+
// case 409: // Name exist
|
|
22
|
+
// alertErrorText.value =
|
|
23
|
+
// localization.value.common.datastoreExistsTheSelectedLocation
|
|
24
|
+
// break
|
|
25
|
+
// }
|
|
26
|
+
//
|
|
27
|
+
// if (alertErrorText.value) return
|
|
28
|
+
// onHide()
|
|
29
|
+
// }
|
|
30
|
+
|
|
31
|
+
export const checkName = async (
|
|
32
|
+
name: string,
|
|
33
|
+
project: UI_T_Project,
|
|
34
|
+
kind?: UI_E_ObjectNodeKind,
|
|
35
|
+
datacenterId?: string
|
|
36
|
+
): Promise<{ statusCode: number; error?: string }> => {
|
|
37
|
+
const url = buildValidationUrl(name, project, kind, datacenterId)
|
|
38
|
+
console.log(url, 'checkName URL')
|
|
39
|
+
|
|
40
|
+
const { error } = await useMyFetch<null, API_UI_I_Error>(url, {
|
|
41
|
+
method: 'GET',
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
if (!error.value) {
|
|
45
|
+
return {
|
|
46
|
+
statusCode: 200,
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return {
|
|
51
|
+
statusCode: error.value?.statusCode ?? 500,
|
|
52
|
+
error: error.value.data?.error_message || error.value.data,
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const buildValidationUrl = (
|
|
57
|
+
name: string,
|
|
58
|
+
project: UI_T_Project,
|
|
59
|
+
kind?: UI_E_ObjectNodeKind,
|
|
60
|
+
datacenterId?: string
|
|
61
|
+
): string => {
|
|
62
|
+
const params = new URLSearchParams({ name }) // URLSearchParams сам закодирует
|
|
63
|
+
|
|
64
|
+
if (project === 'procurator') {
|
|
65
|
+
/* TODO надо исправить для пракуратора, чтобы валидация проходила для всех елементов */
|
|
66
|
+
return `/ui/ds/validate?${params.toString()}`
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
params.set('kind', String(kind))
|
|
70
|
+
if (datacenterId) params.set('datacenter', datacenterId)
|
|
71
|
+
|
|
72
|
+
const endpoint = datacenterId ? 'validate_name_datacenter' : 'validate_name'
|
|
73
|
+
return `/ui/object/${endpoint}?${params.toString()}`
|
|
74
|
+
}
|