bfg-common 1.3.333 → 1.3.335

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.
@@ -1,395 +1,423 @@
1
- <template>
2
- <div class="new-datastore">
3
- <atoms-modal-by-steps
4
- test-id="add-datastore-wizard"
5
- :show="true"
6
- :title="localization.newDatastore"
7
- :step-items="stepItems"
8
- :step-position="stepPosition"
9
- :loading="loading"
10
- @finish="onAddDatastore"
11
- @next="onNextStep"
12
- @back="back"
13
- @change-step="onChangeStep"
14
- @hide="onHideModal"
15
- >
16
- <template #modalBody>
17
- <div class="new-datastore__body">
18
- <common-wizards-datastore-add-types
19
- v-show="stepPosition === 0"
20
- v-model:type="datastoreType"
21
- :project="props.mode"
22
- />
23
-
24
- <common-wizards-datastore-add-local
25
- v-show="datastoreType === 'local' && !isShowCompleteBlock"
26
- :mode="props.mode"
27
- :step-position="stepPosition"
28
- :datastore-type="datastoreType"
29
- :local-create-name-submit="localCreateNameSubmit"
30
- :datacenter-hosts="datacenterHosts"
31
- :is-main-filter="props.isMainFilter"
32
- @loading="(e) => (loading = e)"
33
- @submit="onSaveNameAndNextLocal"
34
- @main-filter="emits('main-filter', $event)"
35
- />
36
-
37
- <common-wizards-datastore-add-shared-storm
38
- v-show="datastoreType === 'shared-storm' && !isShowCompleteBlock"
39
- :mode="props.mode"
40
- :step-position="stepPosition"
41
- :datastore-type="datastoreType"
42
- :device-selection-submit="deviceSelectionSubmit"
43
- :datacenter-hosts="datacenterHosts"
44
- :is-main-filter="props.isMainFilter"
45
- @loading="(e) => (loading = e)"
46
- @submit="onSaveAndNextSharedStorm"
47
- @main-filter="emits('main-filter', $event)"
48
- />
49
-
50
- <common-wizards-datastore-add-nfs
51
- v-show="datastoreType === 'nfs' && !isShowCompleteBlock"
52
- :mode="props.mode"
53
- :step-position="stepPosition"
54
- :datastore-type="datastoreType"
55
- :nfs-configuration-submit="nfsConfigurationSubmit"
56
- :host-accessibility-submit="hostAccessibilitySubmit"
57
- @loading="(e) => (loading = e)"
58
- @change-nfs-version="updateNfsVersion"
59
- @submit="saveChangesAndNextNfs"
60
- />
61
-
62
- <common-wizards-datastore-add-ready-complete
63
- v-show="isShowCompleteBlock"
64
- :data-ready-view="dataReadyView"
65
- />
66
- </div>
67
- </template>
68
- </atoms-modal-by-steps>
69
- </div>
70
- </template>
71
-
72
- <script setup lang="ts">
73
- import { UI_I_Localization } from '~/lib/models/interfaces'
74
- import { UI_I_VerticalStepItem } from '~/components/atoms/lib/models/interfaces'
75
- import {
76
- UI_T_DatastoreType,
77
- UI_T_NfsType,
78
- UI_T_WizardDatastoreMode,
79
- } from '~/components/common/wizards/datastore/add/lib/models/types'
80
- import { UI_I_CreateDatastoreForm } from '~/components/common/wizards/datastore/add/lib/models/interfaces'
81
- import {
82
- UI_I_LunDisk,
83
- UI_I_SelectHostOptions,
84
- } from '~/components/common/wizards/datastore/add/sharedStorm/deviceSelection/lib/models/interfaces'
85
- import { stepItemsFunc } from '~/components/common/wizards/datastore/add/lib/config/stepItems'
86
- import { constructDataReadyViewFunc } from '~/components/common/wizards/datastore/add/readyComplete/lib/config/propertiesDetails'
87
-
88
- const props = defineProps<{
89
- // TODO refactoring to project
90
- mode: UI_T_WizardDatastoreMode
91
- finishFunc: (
92
- datastoreForm: UI_I_CreateDatastoreForm,
93
- datastoreType: UI_T_DatastoreType,
94
- version: UI_T_NfsType
95
- ) => Promise<void>
96
- datacenterHosts?: UI_I_SelectHostOptions[]
97
- isMainFilter?: boolean
98
- }>()
99
- const emits = defineEmits<{
100
- (event: 'hide'): void
101
- (event: 'global-refresh'): void
102
- (event: 'main-filter', value: string): void
103
- }>()
104
-
105
- const localization = computed<UI_I_Localization>(() => useLocal())
106
-
107
- const loading = ref<boolean>(false)
108
- const datastoreType = ref<UI_T_DatastoreType>(props.mode === 'procurator' ? 'local' : 'shared-storm')
109
- const nfsVersion = ref<UI_T_NfsType>('nfs-3')
110
-
111
- const stepPosition = ref<number>(0)
112
- const dataReadyView = ref<any>([])
113
-
114
- const datastoreForm = ref<UI_I_CreateDatastoreForm>({
115
- local: {
116
- name: '',
117
- hosts: [],
118
- type_code: 1,
119
- },
120
- sharedStorm: {
121
- name: '',
122
- dev_names: [],
123
- hosts: [],
124
- pool_name: '',
125
- type_code: 2,
126
- },
127
- nfs: {
128
- name: '',
129
- server: '',
130
- folder: '',
131
- readonly: false,
132
- version: nfsVersion.value,
133
- type_code: 4,
134
- },
135
- })
136
-
137
- const stepItems = computed<UI_I_VerticalStepItem[]>(() =>
138
- stepItemsFunc(localization.value, datastoreType.value, props.mode)
139
- )
140
-
141
- let cashStep = -1
142
- const onNextStep = (force = false): void => {
143
- const isValid = checkSubmit(force)
144
-
145
- if (!isValid) {
146
- return
147
- }
148
-
149
- const isDisabled = stepItems.value[cashStep]?.disabled
150
- if (cashStep !== -1 && !isDisabled) {
151
- stepPosition.value = cashStep
152
- cashStep = -1
153
- return
154
- }
155
-
156
- stepItems.value[stepPosition.value].complete = true
157
- stepItems.value[stepPosition.value + 1].disabled = false
158
- stepPosition.value++
159
- }
160
-
161
- const back = (): void => {
162
- stepPosition.value--
163
- }
164
-
165
- const onChangeStep = (key: number): void => {
166
- if (key < stepPosition.value) {
167
- stepPosition.value = key
168
- return
169
- }
170
-
171
- const isValid = checkSubmit()
172
-
173
- if (!isValid) {
174
- cashStep = key
175
- return
176
- }
177
-
178
- stepPosition.value = key
179
- }
180
- const onHideModal = (): void => {
181
- emits('hide')
182
- }
183
-
184
- const updateNfsVersion = (event: UI_T_NfsType): void => {
185
- nfsVersion.value = event
186
- const { name, server, folder } = datastoreForm.value.nfs
187
- saveChangesAndNextNfs({ name, server, folder }, false)
188
- }
189
-
190
- const localCreateNameSubmit = ref<number>(0)
191
-
192
- const nfsConfigurationSubmit = ref<number>(0)
193
- const hostAccessibilitySubmit = ref<number>(0)
194
-
195
- const deviceSelectionSubmit = ref<number>(0)
196
-
197
- const checkSubmit = (force = false): boolean => {
198
- if (datastoreType.value === 'local') {
199
- if (stepPosition.value === 1 && !force) {
200
- localCreateNameSubmit.value++
201
- return false
202
- }
203
- }
204
-
205
- if (datastoreType.value === 'shared-storm') {
206
- if (stepPosition.value === 1 && !force) {
207
- deviceSelectionSubmit.value++
208
- return false
209
- }
210
- }
211
-
212
- if (datastoreType.value === 'nfs') {
213
- if (stepPosition.value === 2 && !force) {
214
- nfsConfigurationSubmit.value++
215
- return false
216
- }
217
-
218
- if (
219
- ((stepPosition.value === 4 && nfsVersion.value === 'nfs-4.1') ||
220
- (stepPosition.value === 3 && nfsVersion.value === 'nfs-3')) &&
221
- !force
222
- ) {
223
- hostAccessibilitySubmit.value++
224
- return false
225
- }
226
- }
227
-
228
- return true
229
- }
230
-
231
- const isWizardModeForSphere = computed<boolean>(() => props.mode === 'sphere')
232
-
233
- const onSaveNameAndNextLocal = (event: any): void => {
234
- const { local } = datastoreForm.value
235
-
236
- if (isWizardModeForSphere.value) {
237
- local.name = event.name
238
- local.hosts.push(event.host)
239
- }
240
-
241
- if (!isWizardModeForSphere.value) {
242
- local.name = event
243
- }
244
-
245
- dataReadyView.value = constructDataReadyViewFunc(
246
- localization.value,
247
- 'local',
248
- event,
249
- isWizardModeForSphere.value
250
- )
251
-
252
- onNextStep(true)
253
- }
254
-
255
- const onSaveAndNextSharedStorm = (event: any): void => {
256
- const { sharedStorm } = datastoreForm.value
257
- sharedStorm.name = event.name
258
- sharedStorm.dev_names = event.lunDisk.map((lun: UI_I_LunDisk) => lun.name)
259
- sharedStorm.hosts = [event.host]
260
-
261
- dataReadyView.value = constructDataReadyViewFunc(
262
- localization.value,
263
- 'shared-storm',
264
- event,
265
- isWizardModeForSphere.value
266
- )
267
-
268
- onNextStep(true)
269
- }
270
- const saveChangesAndNextNfs = (event: any, next = true): void => {
271
- const { nfs } = datastoreForm.value
272
- nfs.name = event.name
273
- nfs.folder = event.folder
274
- nfs.server = event.server
275
-
276
- dataReadyView.value = constructDataReadyViewFunc(
277
- localization.value,
278
- 'nfs',
279
- {
280
- ...event,
281
- version: nfsVersion.value,
282
- },
283
- isWizardModeForSphere.value
284
- )
285
-
286
- next && onNextStep(true)
287
- }
288
-
289
- const isShowCompleteBlock = computed<boolean>(() => {
290
- const localStep = datastoreType.value === 'local' && stepPosition.value === 2
291
-
292
- const sharesStep =
293
- datastoreType.value === 'shared-storm' && (props.mode === 'procurator' ? stepPosition.value === 3 : stepPosition.value === 2)
294
-
295
- const nfsFirst =
296
- datastoreType.value === 'nfs' &&
297
- nfsVersion.value === 'nfs-3' &&
298
- stepPosition.value === 3
299
- const nfsSecond =
300
- datastoreType.value === 'nfs' &&
301
- nfsVersion.value === 'nfs-4.1' &&
302
- stepPosition.value === 3
303
-
304
- return localStep || sharesStep || nfsFirst || nfsSecond
305
- })
306
-
307
- const onAddDatastore = async (): Promise<void> => {
308
- loading.value = true
309
-
310
- props
311
- .finishFunc(datastoreForm.value, datastoreType.value, nfsVersion.value)
312
- .then(() => {
313
- emits('global-refresh')
314
- loading.value = false
315
- onHideModal()
316
- })
317
- }
318
-
319
- // const createDatastoreFromLocal = async (): Promise<API_UI_I_Error> => {
320
- // const { local } = datastoreForm.value
321
- //
322
- // return await createDatastore<Omit<UI_I_CreateDatastoreBodyRequest, 'pool_name'>>(
323
- // local
324
- // )
325
- // }
326
- // const createDatastoreFromSharedStorm = async (): Promise<API_UI_I_Error> => {
327
- // const {
328
- // sharedStorm: { dev_names: disks, ...sendData },
329
- // } = datastoreForm.value
330
- //
331
- // const { data, msg } = await getStoragePoolName<{ dev_names: string[] }>(
332
- // '/psm/api/v1/storage/lvm/create',
333
- // { dev_names: disks }
334
- // )
335
- //
336
- // if (!data && msg) return msg
337
- //
338
- // sendData.pool_name = data?.pool_name || ''
339
- //
340
- // return await createDatastore(sendData)
341
- // }
342
-
343
- // const createDatastoreFromNfs = async (): Promise<API_UI_I_Error> => {
344
- // const {
345
- // nfs: { server, folder, readonly, name, type_code: type },
346
- // } = datastoreForm.value
347
- //
348
- // const sendDataOne = {
349
- // server,
350
- // folder,
351
- // readonly,
352
- // version: nfsVersion.value === 'nfs-4.1' ? 4.1 : 3.0,
353
- // }
354
- //
355
- // const { data, msg } = await getStoragePoolName<UI_I_NfsPoolNameForm>(
356
- // '/psm/api/v1/storage/cnfs',
357
- // sendDataOne
358
- // )
359
- //
360
- // if (!data && msg) return msg
361
- //
362
- // const sendDataTwo = {
363
- // name,
364
- // type_code: type,
365
- // pool_name: data?.pool_name || '',
366
- // }
367
- //
368
- // return await createDatastore(sendDataTwo)
369
- // }
370
- </script>
371
-
372
- <style scoped lang="scss">
373
- @import '~/assets/scss/common/mixins.scss';
374
-
375
- .new-datastore {
376
- &__body {
377
- @include flex($dir: column);
378
- height: 100%;
379
- padding-left: 24px;
380
- }
381
- }
382
-
383
- .finish-block {
384
- padding: 18px 24px 24px 24px;
385
-
386
- .add-hosts-ready-to-complete-mt-12 {
387
- margin-top: 12px;
388
-
389
- .add-hosts-ready-to-complete-bold {
390
- line-height: 18px;
391
- font-weight: 700;
392
- }
393
- }
394
- }
395
- </style>
1
+ <template>
2
+ <div class="new-datastore">
3
+ <atoms-modal-by-steps
4
+ test-id="add-datastore-wizard"
5
+ :show="true"
6
+ :title="localization.newDatastore"
7
+ :step-items="stepItems"
8
+ :step-position="stepPosition"
9
+ :loading="loading"
10
+ @finish="onAddDatastore"
11
+ @next="onNextStep"
12
+ @back="back"
13
+ @change-step="onChangeStep"
14
+ @hide="onHideModal"
15
+ >
16
+ <template #modalBody>
17
+ <div class="new-datastore__body">
18
+ <common-wizards-datastore-add-types
19
+ v-show="stepPosition === 0"
20
+ v-model:type="datastoreType"
21
+ :project="props.mode"
22
+ />
23
+
24
+ <common-wizards-datastore-add-local
25
+ v-show="datastoreType === 'local' && !isShowCompleteBlock"
26
+ :mode="props.mode"
27
+ :step-position="stepPosition"
28
+ :datastore-type="datastoreType"
29
+ :local-create-name-submit="localCreateNameSubmit"
30
+ :datacenter-hosts="props.datacenterHosts"
31
+ :is-main-filter="props.isMainFilter"
32
+ @loading="(e) => (loading = e)"
33
+ @submit="onSaveNameAndNextLocal"
34
+ @main-filter="emits('main-filter', $event)"
35
+ />
36
+
37
+ <common-wizards-datastore-add-shared-storm
38
+ v-show="datastoreType === 'shared-storm' && !isShowCompleteBlock"
39
+ :mode="props.mode"
40
+ :step-position="stepPosition"
41
+ :datastore-type="datastoreType"
42
+ :device-selection-submit="deviceSelectionSubmit"
43
+ :datacenter-hosts="props.datacenterHosts"
44
+ :is-main-filter="props.isMainFilter"
45
+ @loading="(e) => (loading = e)"
46
+ @submit="onSaveAndNextSharedStorm"
47
+ @main-filter="emits('main-filter', $event)"
48
+ />
49
+
50
+ <common-wizards-datastore-add-nfs
51
+ v-show="datastoreType === 'nfs' && !isShowCompleteBlock"
52
+ :mode="props.mode"
53
+ :step-position="stepPosition"
54
+ :datastore-type="datastoreType"
55
+ :nfs-configuration-submit="nfsConfigurationSubmit"
56
+ :host-accessibility-submit="hostAccessibilitySubmit"
57
+ :datacenter-hosts="props.datacenterHosts"
58
+ @loading="(e) => (loading = e)"
59
+ @change-nfs-version="updateNfsVersion"
60
+ @submit="saveChangesAndNextNfs"
61
+ />
62
+
63
+ <common-wizards-datastore-add-ready-complete
64
+ v-show="isShowCompleteBlock"
65
+ :data-ready-view="dataReadyView"
66
+ />
67
+ </div>
68
+ </template>
69
+ </atoms-modal-by-steps>
70
+ </div>
71
+ </template>
72
+
73
+ <script setup lang="ts">
74
+ import { UI_I_Localization } from '~/lib/models/interfaces'
75
+ import { UI_I_VerticalStepItem } from '~/components/atoms/lib/models/interfaces'
76
+ import {
77
+ UI_T_DatastoreType,
78
+ UI_T_NfsType,
79
+ UI_T_WizardDatastoreMode,
80
+ } from '~/components/common/wizards/datastore/add/lib/models/types'
81
+ import { UI_I_CreateDatastoreForm } from '~/components/common/wizards/datastore/add/lib/models/interfaces'
82
+ import {
83
+ UI_I_LunDisk,
84
+ UI_I_SelectHostOptions,
85
+ } from '~/components/common/wizards/datastore/add/sharedStorm/deviceSelection/lib/models/interfaces'
86
+ import { stepItemsFunc } from '~/components/common/wizards/datastore/add/lib/config/stepItems'
87
+ import { constructDataReadyViewFunc } from '~/components/common/wizards/datastore/add/readyComplete/lib/config/propertiesDetails'
88
+
89
+ const props = defineProps<{
90
+ // TODO refactoring to project
91
+ mode: UI_T_WizardDatastoreMode
92
+ finishFunc: (
93
+ datastoreForm: UI_I_CreateDatastoreForm,
94
+ datastoreType: UI_T_DatastoreType,
95
+ version: UI_T_NfsType
96
+ ) => Promise<void>
97
+ datacenterHosts?: UI_I_SelectHostOptions[]
98
+ isMainFilter?: boolean
99
+ }>()
100
+ const emits = defineEmits<{
101
+ (event: 'hide'): void
102
+ (event: 'global-refresh'): void
103
+ (event: 'main-filter', value: string): void
104
+ }>()
105
+
106
+ const localization = computed<UI_I_Localization>(() => useLocal())
107
+
108
+ const loading = ref<boolean>(false)
109
+ const datastoreType = ref<UI_T_DatastoreType>(
110
+ props.mode === 'procurator' ? 'local' : 'shared-storm'
111
+ )
112
+ const nfsVersion = ref<UI_T_NfsType>('nfs-3')
113
+
114
+ const stepPosition = ref<number>(0)
115
+ const dataReadyView = ref<any>([])
116
+
117
+ const datastoreForm = ref<UI_I_CreateDatastoreForm>({
118
+ local: {
119
+ name: '',
120
+ hosts: [],
121
+ type_code: 1,
122
+ },
123
+ sharedStorm: {
124
+ name: '',
125
+ dev_names: [],
126
+ hosts: [],
127
+ pool_name: '',
128
+ type_code: 2,
129
+ },
130
+ nfs: {
131
+ name: '',
132
+ server: '',
133
+ folder: '',
134
+ readonly: false,
135
+ version: nfsVersion.value,
136
+ type_code: 4,
137
+ },
138
+ })
139
+
140
+ const stepItems = computed<UI_I_VerticalStepItem[]>(() =>
141
+ stepItemsFunc(localization.value, datastoreType.value, props.mode)
142
+ )
143
+
144
+ let cashStep = -1
145
+ const onNextStep = (force = false): void => {
146
+ const isValid = checkSubmit(force)
147
+
148
+ if (!isValid) {
149
+ return
150
+ }
151
+
152
+ const isDisabled = stepItems.value[cashStep]?.disabled
153
+ if (cashStep !== -1 && !isDisabled) {
154
+ stepPosition.value = cashStep
155
+ cashStep = -1
156
+ return
157
+ }
158
+
159
+ stepItems.value[stepPosition.value].complete = true
160
+ stepItems.value[stepPosition.value + 1].disabled = false
161
+ stepPosition.value++
162
+ }
163
+
164
+ const back = (): void => {
165
+ stepPosition.value--
166
+ }
167
+
168
+ const onChangeStep = (key: number): void => {
169
+ if (key < stepPosition.value) {
170
+ stepPosition.value = key
171
+ return
172
+ }
173
+
174
+ const isValid = checkSubmit()
175
+
176
+ if (!isValid) {
177
+ cashStep = key
178
+ return
179
+ }
180
+
181
+ stepPosition.value = key
182
+ }
183
+ const onHideModal = (): void => {
184
+ emits('hide')
185
+ }
186
+
187
+ const updateNfsVersion = (event: UI_T_NfsType): void => {
188
+ nfsVersion.value = event
189
+ const { name, server, folder } = datastoreForm.value.nfs
190
+ saveChangesAndNextNfs({ name, server, folder }, false)
191
+ }
192
+
193
+ const localCreateNameSubmit = ref<number>(0)
194
+
195
+ const nfsConfigurationSubmit = ref<number>(0)
196
+ const hostAccessibilitySubmit = ref<number>(0)
197
+
198
+ const deviceSelectionSubmit = ref<number>(0)
199
+
200
+ const checkSubmit = (force = false): boolean => {
201
+ if (datastoreType.value === 'local') {
202
+ if (stepPosition.value === 1 && !force) {
203
+ localCreateNameSubmit.value++
204
+ return false
205
+ }
206
+ }
207
+
208
+ if (datastoreType.value === 'shared-storm') {
209
+ if (stepPosition.value === 1 && !force) {
210
+ deviceSelectionSubmit.value++
211
+ return false
212
+ }
213
+ }
214
+
215
+ if (datastoreType.value === 'nfs') {
216
+ if (stepPosition.value === 2 && !force) {
217
+ nfsConfigurationSubmit.value++
218
+ return false
219
+ }
220
+
221
+ if (props.mode === 'sphere' && stepPosition.value === 3 && !force) {
222
+ hostAccessibilitySubmit.value++
223
+ return false
224
+ }
225
+ // if (
226
+ // ((stepPosition.value === 4 && nfsVersion.value === 'nfs-4.1') ||
227
+ // (stepPosition.value === 3 && nfsVersion.value === 'nfs-3')) &&
228
+ // !force
229
+ // ) {
230
+ // hostAccessibilitySubmit.value++
231
+ // return false
232
+ // }
233
+ }
234
+
235
+ return true
236
+ }
237
+
238
+ const isWizardModeForSphere = computed<boolean>(() => props.mode === 'sphere')
239
+
240
+ const onSaveNameAndNextLocal = (event: any): void => {
241
+ const { local } = datastoreForm.value
242
+
243
+ if (isWizardModeForSphere.value) {
244
+ local.name = event.name
245
+ local.hosts.push(event.host)
246
+ }
247
+
248
+ if (!isWizardModeForSphere.value) {
249
+ local.name = event
250
+ }
251
+
252
+ dataReadyView.value = constructDataReadyViewFunc(
253
+ localization.value,
254
+ 'local',
255
+ event,
256
+ isWizardModeForSphere.value
257
+ )
258
+
259
+ onNextStep(true)
260
+ }
261
+
262
+ const onSaveAndNextSharedStorm = (event: any): void => {
263
+ const { sharedStorm } = datastoreForm.value
264
+ sharedStorm.name = event.name
265
+ sharedStorm.dev_names = event.lunDisk.map((lun: UI_I_LunDisk) => lun.name)
266
+ sharedStorm.hosts = [event.host]
267
+
268
+ dataReadyView.value = constructDataReadyViewFunc(
269
+ localization.value,
270
+ 'shared-storm',
271
+ event,
272
+ isWizardModeForSphere.value
273
+ )
274
+
275
+ onNextStep(true)
276
+ }
277
+ const saveChangesAndNextNfs = (event: any, next = true): void => {
278
+ const { nfs } = datastoreForm.value
279
+ nfs.name = event.name
280
+ nfs.folder = event.folder
281
+ nfs.server = event.server
282
+
283
+ dataReadyView.value = constructDataReadyViewFunc(
284
+ localization.value,
285
+ 'nfs',
286
+ {
287
+ ...event,
288
+ version: nfsVersion.value,
289
+ },
290
+ isWizardModeForSphere.value
291
+ )
292
+
293
+ next && onNextStep(true)
294
+ }
295
+
296
+ const isShowCompleteBlock = computed<boolean>(() => {
297
+ // TODO refactoring
298
+ const localStep = datastoreType.value === 'local' && stepPosition.value === 2
299
+
300
+ const sharesStep =
301
+ datastoreType.value === 'shared-storm' &&
302
+ (props.mode === 'procurator'
303
+ ? stepPosition.value === 3
304
+ : stepPosition.value === 2)
305
+
306
+ let nfsFirst
307
+ if (props.mode === 'procurator') {
308
+ nfsFirst =
309
+ datastoreType.value === 'nfs' &&
310
+ nfsVersion.value === 'nfs-3' &&
311
+ stepPosition.value === 3
312
+ } else {
313
+ nfsFirst =
314
+ datastoreType.value === 'nfs' &&
315
+ nfsVersion.value === 'nfs-3' &&
316
+ stepPosition.value === 4
317
+ }
318
+
319
+ let nfsSecond
320
+ if (props.mode === 'procurator') {
321
+ nfsSecond =
322
+ datastoreType.value === 'nfs' &&
323
+ nfsVersion.value === 'nfs-4.1' &&
324
+ stepPosition.value === 3
325
+ } else {
326
+ nfsSecond =
327
+ datastoreType.value === 'nfs' &&
328
+ nfsVersion.value === 'nfs-4.1' &&
329
+ stepPosition.value === 4
330
+ }
331
+
332
+ return localStep || sharesStep || nfsFirst || nfsSecond
333
+ })
334
+
335
+ const onAddDatastore = async (): Promise<void> => {
336
+ loading.value = true
337
+
338
+ props
339
+ .finishFunc(datastoreForm.value, datastoreType.value, nfsVersion.value)
340
+ .then(() => {
341
+ emits('global-refresh')
342
+ loading.value = false
343
+ onHideModal()
344
+ })
345
+ }
346
+
347
+ // const createDatastoreFromLocal = async (): Promise<API_UI_I_Error> => {
348
+ // const { local } = datastoreForm.value
349
+ //
350
+ // return await createDatastore<Omit<UI_I_CreateDatastoreBodyRequest, 'pool_name'>>(
351
+ // local
352
+ // )
353
+ // }
354
+ // const createDatastoreFromSharedStorm = async (): Promise<API_UI_I_Error> => {
355
+ // const {
356
+ // sharedStorm: { dev_names: disks, ...sendData },
357
+ // } = datastoreForm.value
358
+ //
359
+ // const { data, msg } = await getStoragePoolName<{ dev_names: string[] }>(
360
+ // '/psm/api/v1/storage/lvm/create',
361
+ // { dev_names: disks }
362
+ // )
363
+ //
364
+ // if (!data && msg) return msg
365
+ //
366
+ // sendData.pool_name = data?.pool_name || ''
367
+ //
368
+ // return await createDatastore(sendData)
369
+ // }
370
+
371
+ // const createDatastoreFromNfs = async (): Promise<API_UI_I_Error> => {
372
+ // const {
373
+ // nfs: { server, folder, readonly, name, type_code: type },
374
+ // } = datastoreForm.value
375
+ //
376
+ // const sendDataOne = {
377
+ // server,
378
+ // folder,
379
+ // readonly,
380
+ // version: nfsVersion.value === 'nfs-4.1' ? 4.1 : 3.0,
381
+ // }
382
+ //
383
+ // const { data, msg } = await getStoragePoolName<UI_I_NfsPoolNameForm>(
384
+ // '/psm/api/v1/storage/cnfs',
385
+ // sendDataOne
386
+ // )
387
+ //
388
+ // if (!data && msg) return msg
389
+ //
390
+ // const sendDataTwo = {
391
+ // name,
392
+ // type_code: type,
393
+ // pool_name: data?.pool_name || '',
394
+ // }
395
+ //
396
+ // return await createDatastore(sendDataTwo)
397
+ // }
398
+ </script>
399
+
400
+ <style scoped lang="scss">
401
+ @import '~/assets/scss/common/mixins.scss';
402
+
403
+ .new-datastore {
404
+ &__body {
405
+ @include flex($dir: column);
406
+ height: 100%;
407
+ padding-left: 24px;
408
+ }
409
+ }
410
+
411
+ .finish-block {
412
+ padding: 18px 24px 24px 24px;
413
+
414
+ .add-hosts-ready-to-complete-mt-12 {
415
+ margin-top: 12px;
416
+
417
+ .add-hosts-ready-to-complete-bold {
418
+ line-height: 18px;
419
+ font-weight: 700;
420
+ }
421
+ }
422
+ }
423
+ </style>