bfg-common 1.3.333 → 1.3.334

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,404 @@
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="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>(
109
+ props.mode === 'procurator' ? 'local' : 'shared-storm'
110
+ )
111
+ const nfsVersion = ref<UI_T_NfsType>('nfs-3')
112
+
113
+ const stepPosition = ref<number>(0)
114
+ const dataReadyView = ref<any>([])
115
+
116
+ const datastoreForm = ref<UI_I_CreateDatastoreForm>({
117
+ local: {
118
+ name: '',
119
+ hosts: [],
120
+ type_code: 1,
121
+ },
122
+ sharedStorm: {
123
+ name: '',
124
+ dev_names: [],
125
+ hosts: [],
126
+ pool_name: '',
127
+ type_code: 2,
128
+ },
129
+ nfs: {
130
+ name: '',
131
+ server: '',
132
+ folder: '',
133
+ readonly: false,
134
+ version: nfsVersion.value,
135
+ type_code: 4,
136
+ },
137
+ })
138
+
139
+ const stepItems = computed<UI_I_VerticalStepItem[]>(() =>
140
+ stepItemsFunc(localization.value, datastoreType.value, props.mode)
141
+ )
142
+
143
+ let cashStep = -1
144
+ const onNextStep = (force = false): void => {
145
+ const isValid = checkSubmit(force)
146
+
147
+ if (!isValid) {
148
+ return
149
+ }
150
+
151
+ const isDisabled = stepItems.value[cashStep]?.disabled
152
+ if (cashStep !== -1 && !isDisabled) {
153
+ stepPosition.value = cashStep
154
+ cashStep = -1
155
+ return
156
+ }
157
+
158
+ stepItems.value[stepPosition.value].complete = true
159
+ stepItems.value[stepPosition.value + 1].disabled = false
160
+ stepPosition.value++
161
+ }
162
+
163
+ const back = (): void => {
164
+ stepPosition.value--
165
+ }
166
+
167
+ const onChangeStep = (key: number): void => {
168
+ if (key < stepPosition.value) {
169
+ stepPosition.value = key
170
+ return
171
+ }
172
+
173
+ const isValid = checkSubmit()
174
+
175
+ if (!isValid) {
176
+ cashStep = key
177
+ return
178
+ }
179
+
180
+ stepPosition.value = key
181
+ }
182
+ const onHideModal = (): void => {
183
+ emits('hide')
184
+ }
185
+
186
+ const updateNfsVersion = (event: UI_T_NfsType): void => {
187
+ nfsVersion.value = event
188
+ const { name, server, folder } = datastoreForm.value.nfs
189
+ saveChangesAndNextNfs({ name, server, folder }, false)
190
+ }
191
+
192
+ const localCreateNameSubmit = ref<number>(0)
193
+
194
+ const nfsConfigurationSubmit = ref<number>(0)
195
+ const hostAccessibilitySubmit = ref<number>(0)
196
+
197
+ const deviceSelectionSubmit = ref<number>(0)
198
+
199
+ const checkSubmit = (force = false): boolean => {
200
+ if (datastoreType.value === 'local') {
201
+ if (stepPosition.value === 1 && !force) {
202
+ localCreateNameSubmit.value++
203
+ return false
204
+ }
205
+ }
206
+
207
+ if (datastoreType.value === 'shared-storm') {
208
+ if (stepPosition.value === 1 && !force) {
209
+ deviceSelectionSubmit.value++
210
+ return false
211
+ }
212
+ }
213
+
214
+ if (datastoreType.value === 'nfs') {
215
+ if (stepPosition.value === 2 && !force) {
216
+ nfsConfigurationSubmit.value++
217
+ return false
218
+ }
219
+
220
+ if (props.mode === 'sphere' && stepPosition.value === 3 && !force) {
221
+ hostAccessibilitySubmit.value++
222
+ return false
223
+ }
224
+ // if (
225
+ // ((stepPosition.value === 4 && nfsVersion.value === 'nfs-4.1') ||
226
+ // (stepPosition.value === 3 && nfsVersion.value === 'nfs-3')) &&
227
+ // !force
228
+ // ) {
229
+ // hostAccessibilitySubmit.value++
230
+ // return false
231
+ // }
232
+ }
233
+
234
+ return true
235
+ }
236
+
237
+ const isWizardModeForSphere = computed<boolean>(() => props.mode === 'sphere')
238
+
239
+ const onSaveNameAndNextLocal = (event: any): void => {
240
+ const { local } = datastoreForm.value
241
+
242
+ if (isWizardModeForSphere.value) {
243
+ local.name = event.name
244
+ local.hosts.push(event.host)
245
+ }
246
+
247
+ if (!isWizardModeForSphere.value) {
248
+ local.name = event
249
+ }
250
+
251
+ dataReadyView.value = constructDataReadyViewFunc(
252
+ localization.value,
253
+ 'local',
254
+ event,
255
+ isWizardModeForSphere.value
256
+ )
257
+
258
+ onNextStep(true)
259
+ }
260
+
261
+ const onSaveAndNextSharedStorm = (event: any): void => {
262
+ const { sharedStorm } = datastoreForm.value
263
+ sharedStorm.name = event.name
264
+ sharedStorm.dev_names = event.lunDisk.map((lun: UI_I_LunDisk) => lun.name)
265
+ sharedStorm.hosts = [event.host]
266
+
267
+ dataReadyView.value = constructDataReadyViewFunc(
268
+ localization.value,
269
+ 'shared-storm',
270
+ event,
271
+ isWizardModeForSphere.value
272
+ )
273
+
274
+ onNextStep(true)
275
+ }
276
+ const saveChangesAndNextNfs = (event: any, next = true): void => {
277
+ const { nfs } = datastoreForm.value
278
+ nfs.name = event.name
279
+ nfs.folder = event.folder
280
+ nfs.server = event.server
281
+
282
+ dataReadyView.value = constructDataReadyViewFunc(
283
+ localization.value,
284
+ 'nfs',
285
+ {
286
+ ...event,
287
+ version: nfsVersion.value,
288
+ },
289
+ isWizardModeForSphere.value
290
+ )
291
+
292
+ next && onNextStep(true)
293
+ }
294
+
295
+ const isShowCompleteBlock = computed<boolean>(() => {
296
+ const localStep = datastoreType.value === 'local' && stepPosition.value === 2
297
+
298
+ const sharesStep =
299
+ datastoreType.value === 'shared-storm' &&
300
+ (props.mode === 'procurator'
301
+ ? stepPosition.value === 3
302
+ : stepPosition.value === 2)
303
+
304
+ const nfsFirst =
305
+ datastoreType.value === 'nfs' &&
306
+ nfsVersion.value === 'nfs-3' &&
307
+ stepPosition.value === 3
308
+ const nfsSecond =
309
+ datastoreType.value === 'nfs' &&
310
+ nfsVersion.value === 'nfs-4.1' &&
311
+ stepPosition.value === 3
312
+
313
+ return localStep || sharesStep || nfsFirst || nfsSecond
314
+ })
315
+
316
+ const onAddDatastore = async (): Promise<void> => {
317
+ loading.value = true
318
+
319
+ props
320
+ .finishFunc(datastoreForm.value, datastoreType.value, nfsVersion.value)
321
+ .then(() => {
322
+ emits('global-refresh')
323
+ loading.value = false
324
+ onHideModal()
325
+ })
326
+ }
327
+
328
+ // const createDatastoreFromLocal = async (): Promise<API_UI_I_Error> => {
329
+ // const { local } = datastoreForm.value
330
+ //
331
+ // return await createDatastore<Omit<UI_I_CreateDatastoreBodyRequest, 'pool_name'>>(
332
+ // local
333
+ // )
334
+ // }
335
+ // const createDatastoreFromSharedStorm = async (): Promise<API_UI_I_Error> => {
336
+ // const {
337
+ // sharedStorm: { dev_names: disks, ...sendData },
338
+ // } = datastoreForm.value
339
+ //
340
+ // const { data, msg } = await getStoragePoolName<{ dev_names: string[] }>(
341
+ // '/psm/api/v1/storage/lvm/create',
342
+ // { dev_names: disks }
343
+ // )
344
+ //
345
+ // if (!data && msg) return msg
346
+ //
347
+ // sendData.pool_name = data?.pool_name || ''
348
+ //
349
+ // return await createDatastore(sendData)
350
+ // }
351
+
352
+ // const createDatastoreFromNfs = async (): Promise<API_UI_I_Error> => {
353
+ // const {
354
+ // nfs: { server, folder, readonly, name, type_code: type },
355
+ // } = datastoreForm.value
356
+ //
357
+ // const sendDataOne = {
358
+ // server,
359
+ // folder,
360
+ // readonly,
361
+ // version: nfsVersion.value === 'nfs-4.1' ? 4.1 : 3.0,
362
+ // }
363
+ //
364
+ // const { data, msg } = await getStoragePoolName<UI_I_NfsPoolNameForm>(
365
+ // '/psm/api/v1/storage/cnfs',
366
+ // sendDataOne
367
+ // )
368
+ //
369
+ // if (!data && msg) return msg
370
+ //
371
+ // const sendDataTwo = {
372
+ // name,
373
+ // type_code: type,
374
+ // pool_name: data?.pool_name || '',
375
+ // }
376
+ //
377
+ // return await createDatastore(sendDataTwo)
378
+ // }
379
+ </script>
380
+
381
+ <style scoped lang="scss">
382
+ @import '~/assets/scss/common/mixins.scss';
383
+
384
+ .new-datastore {
385
+ &__body {
386
+ @include flex($dir: column);
387
+ height: 100%;
388
+ padding-left: 24px;
389
+ }
390
+ }
391
+
392
+ .finish-block {
393
+ padding: 18px 24px 24px 24px;
394
+
395
+ .add-hosts-ready-to-complete-mt-12 {
396
+ margin-top: 12px;
397
+
398
+ .add-hosts-ready-to-complete-bold {
399
+ line-height: 18px;
400
+ font-weight: 700;
401
+ }
402
+ }
403
+ }
404
+ </style>