bfg-common 1.5.23 → 1.5.24

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 (161) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/scss/common/normalize.scss +339 -339
  3. package/components/atoms/TheIcon3.vue +50 -50
  4. package/components/atoms/collapse/CollapseNav.vue +165 -165
  5. package/components/atoms/dropdown/dropdown/Dropdown.vue +168 -168
  6. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  7. package/components/atoms/perPage/PerPage.vue +58 -58
  8. package/components/atoms/stack/StackBlock.vue +185 -185
  9. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  10. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  11. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  12. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  13. package/components/common/accordion/Recursion.vue +222 -222
  14. package/components/common/browse/BrowseNew.vue +237 -237
  15. package/components/common/browse/BrowseOld.vue +217 -217
  16. package/components/common/browse/blocks/contents/Files.vue +37 -37
  17. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  18. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  19. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  20. package/components/common/context/Context.vue +111 -111
  21. package/components/common/context/lib/models/interfaces.ts +31 -31
  22. package/components/common/context/recursion/Recursion.vue +87 -87
  23. package/components/common/context/recursion/RecursionNew.vue +238 -238
  24. package/components/common/context/recursion/RecursionOld.vue +228 -228
  25. package/components/common/details/DetailsItem.vue +109 -109
  26. package/components/common/diagramMain/DiagramMain.vue +897 -897
  27. package/components/common/diagramMain/Header.vue +214 -214
  28. package/components/common/graph/Graph.vue +104 -104
  29. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  30. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  31. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  32. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +336 -336
  33. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +311 -311
  34. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  35. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/config/utils.ts +1040 -1040
  36. package/components/common/monitor/overview/Overview.vue +1 -0
  37. package/components/common/monitor/overview/Overview.vue~ +132 -0
  38. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  39. package/components/common/pages/home/StatusContent.vue +49 -49
  40. package/components/common/pages/home/headline/Headline.vue +45 -45
  41. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  42. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  43. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  44. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  45. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  46. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  47. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  48. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  49. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  50. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  51. package/components/common/pages/packages/Packages.vue +208 -208
  52. package/components/common/pages/shortcuts/block/BlockNew.vue +96 -96
  53. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  54. package/components/common/portlets/customAttributes/Portlet.vue +667 -667
  55. package/components/common/portlets/tag/Portlet.vue +433 -433
  56. package/components/common/recursionTree/RecursionTree.vue +223 -223
  57. package/components/common/select/button/ButtonDropdown.vue +108 -108
  58. package/components/common/spiceConsole/Drawer.vue +370 -370
  59. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  60. package/components/common/split/horizontal/HorizontalNew.vue +376 -376
  61. package/components/common/split/horizontal/HorizontalOld.vue +337 -337
  62. package/components/common/split/vertical/Vertical.vue +160 -160
  63. package/components/common/tools/Actions.vue +188 -188
  64. package/components/common/vm/actions/add/Add.vue +622 -622
  65. package/components/common/vm/actions/clone/Clone.vue +639 -639
  66. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  67. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +634 -634
  68. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  69. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +275 -275
  70. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +274 -274
  71. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +177 -177
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +698 -698
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +410 -410
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +99 -99
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +164 -164
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +368 -368
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +232 -232
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +250 -250
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +286 -286
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +84 -84
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +81 -81
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  117. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  118. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  119. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  120. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  121. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  122. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  123. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  124. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  125. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  126. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  127. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  128. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  129. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  130. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  131. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  132. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  133. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  134. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  135. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  136. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  137. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  138. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  139. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  140. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  141. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  142. package/components/common/wizards/datastore/add/lib/config/steps.ts +138 -138
  143. package/components/common/wizards/datastore/add/nfs/accessibility/Accessibility.vue +60 -60
  144. package/components/common/wizards/datastore/add/readyComplete/ReadyComplete.vue +92 -92
  145. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +105 -105
  146. package/components/common/wizards/vm/migrate/Migrate.vue +302 -302
  147. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  148. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  149. package/components/common/wizards/vm/migrate/select/network/table/network/Network.vue +150 -150
  150. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  151. package/components/common/wizards/vm/migrate/select/priority/Priority.vue +43 -43
  152. package/composables/productNameLocal.ts +30 -30
  153. package/composables/useAppVersion.ts +21 -21
  154. package/package.json +1 -1
  155. package/plugins/date.ts +233 -233
  156. package/plugins/directives.ts +24 -24
  157. package/public/spice-console/lib/images/bitmap.js +203 -203
  158. package/public/spice-console/network/spicechannel.js +383 -383
  159. package/store/main/mutations.ts +7 -7
  160. package/store/main/state.ts +7 -7
  161. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,302 +1,302 @@
1
- <template>
2
- <div class="migrate-vm">
3
- <atoms-wizard
4
- show
5
- :wizard="wizard"
6
- :selected-scheme="selectedScheme"
7
- :title="title"
8
- :localization="localization"
9
- class="migrate-vm-wizard"
10
- test-id="migrate-vm-wizard"
11
- @change-steps="onChangeSteps"
12
- @hide="onHideModal"
13
- @submit="onFinish"
14
- >
15
- <template #modalBody="{ selectedStep }">
16
- <common-pages-scheduled-tasks-modals-common-new-task-form
17
- v-if="selectedStep.id === 0"
18
- v-model="modelSchedulerTask"
19
- :target="selectedVirtualMachine"
20
- />
21
-
22
- <common-wizards-vm-migrate-select-type
23
- v-if="selectedStep.id === 1"
24
- v-model="form.migrate_type"
25
- :project="props.project"
26
- />
27
-
28
- <common-wizards-vm-migrate-select-target-server
29
- v-if="selectedStep.id === 2"
30
- v-model="form.target_server"
31
- v-model:connect-server="isConnectSourceServer"
32
- :wizard="wizard"
33
- />
34
-
35
- <common-wizards-vm-migrate-select-compute-resource
36
- v-show="selectedStep.id === 3"
37
- v-model="form"
38
- :alert-messages="alertMessages[3]"
39
- :get-compute-resource-data="props.getComputeResourceData"
40
- :compute-resource-data="props.computeResourceTableData"
41
- :compute-resource-tree="props.computeResourceTree"
42
- @hide-alert="onHideAlert"
43
- />
44
-
45
- <common-wizards-vm-migrate-select-storage
46
- v-show="selectedStep.id === 4"
47
- v-model="form"
48
- :alert-messages="alertMessages[4]"
49
- :get-datastore-table-func="props.getDatastoreTableFunc"
50
- :datastore="props.datastore"
51
- :connected-storage-id-default="connectedStorageIdOnVm"
52
- :configure-per-disks="props.configurePerDisks"
53
- @hide-alert="onHideAlert"
54
- />
55
-
56
- <common-wizards-vm-migrate-select-network
57
- v-show="selectedStep.id === 5"
58
- v-model="form.network"
59
- :vm-info="props.vmInfo"
60
- :networks="props.networks"
61
- />
62
-
63
- <common-wizards-vm-migrate-select-priority
64
- v-if="selectedStep.id === 6"
65
- v-model="form.vMotion_priority"
66
- :vm-state="props.vmState"
67
- />
68
-
69
- <common-ready-to-complete
70
- v-if="selectedStep.id === 7"
71
- :data="dataReadyView"
72
- />
73
- </template>
74
- </atoms-wizard>
75
- </div>
76
- </template>
77
-
78
- <script setup lang="ts">
79
- import type {
80
- UI_I_WizardStep,
81
- UI_I_ValidationReturn,
82
- } from '~/components/atoms/wizard/lib/models/interfaces'
83
- import Wizard from '~/components/atoms/wizard/lib/utils/utils'
84
- import {
85
- stepsFunc,
86
- stepsSchemeInitial,
87
- } from '~/components/common/wizards/vm/migrate/lib/config/steps'
88
- import type { UI_I_Localization } from '~/lib/models/interfaces'
89
- import type { UI_T_Project } from '~/lib/models/types'
90
- import type {
91
- UI_I_MigrateFormLocal,
92
- UI_I_ChangeStepsSchemes,
93
- } from '~/components/common/wizards/vm/migrate/lib/models/interfaces'
94
- import type { UI_T_VmMigrateType } from '~/components/common/wizards/vm/migrate/select/type/lib/models/types'
95
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
96
- import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
97
- import type { UI_I_VmSettings } from '~/lib/models/store/vm/interfaces'
98
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
99
- import type { UI_I_StorageConfigurePerDiskItem } from '~/components/common/wizards/vm/migrate/select/storage/configure/disk/table/lib/models/interfaces'
100
- import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
101
- import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
102
- import { constructDataReadyViewFunc } from '~/components/common/wizards/vm/migrate/lib/config/constructDataReady'
103
- import * as validation from '~/components/common/wizards/vm/migrate/lib/validations'
104
-
105
- const props = withDefaults(
106
- defineProps<{
107
- project: UI_T_Project
108
- isScheduledTasks: boolean
109
- isEditScheduledTasks: boolean
110
- vmSettings: UI_I_VmSettings | null
111
- vmName: string
112
- getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
113
- getComputeResourceData: (payload: UI_I_TablePayload) => Promise<void>
114
- datastore: UI_I_DatastoreTableItem[]
115
- configurePerDisks: UI_I_StorageConfigurePerDiskItem[]
116
- computeResourceTableData?: any
117
- computeResourceTree?: UI_I_TreeNode | null
118
- selectedVirtualMachine?: string
119
- vmState?: number
120
- vmInfo?: any | null
121
- networks?: any
122
- }>(),
123
- {
124
- computeResourceTree: null,
125
- }
126
- )
127
- const emits = defineEmits<{
128
- (event: 'finish', value: UI_I_MigrateFormLocal): void
129
- (event: 'get-networks', value: string): void
130
- (event: 'hide'): void
131
- }>()
132
- const modelSchedulerTask = defineModel<UI_I_ScheduleNewTasksForm>(
133
- 'schedulerForm',
134
- { required: true }
135
- )
136
-
137
- const localization = computed<UI_I_Localization>(() => useLocal())
138
-
139
- const wizard: Wizard = new Wizard(
140
- stepsFunc(localization.value, props.isScheduledTasks),
141
- stepsSchemeInitial
142
- )
143
-
144
- const selectedScheme = computed<number[]>(() => wizard.selectedScheme.value)
145
- const alertMessages = computed<string[][]>(() => wizard.alertMessages.value)
146
-
147
- const title = computed<string>(() => {
148
- const { scheduleNewTasks, scheduleTaskEdit, migrate } =
149
- localization.value.common
150
- let result = migrate
151
- if (props.isScheduledTasks) {
152
- const schedulerMode = props.isEditScheduledTasks
153
- ? scheduleTaskEdit
154
- : scheduleNewTasks
155
-
156
- result = `${schedulerMode} (${migrate})`
157
- }
158
-
159
- return result
160
- })
161
-
162
- const isConnectSourceServer = ref<boolean>(false)
163
- const form = ref<UI_I_MigrateFormLocal>({
164
- migrate_type: props.project === 'procurator' ? 'storage' : 'resource',
165
- disk_format: 0,
166
- storage: null,
167
- configure: {
168
- type: 'batch-configure',
169
- disks: [],
170
- },
171
- target_server: {
172
- fqdn: '',
173
- user: '',
174
- password: '',
175
- },
176
- network: {},
177
- resource: {
178
- selectedNode: null,
179
- host: null,
180
- cluster: null,
181
- resourcePool: null,
182
- vApps: null,
183
- },
184
- vMotion_priority:
185
- props.vmState === 2 ? 'live' : props.vmState === 1 ? 'offline' : '',
186
- })
187
-
188
-
189
- const validationFunc = async (
190
- value: UI_I_WizardStep[],
191
- currentStep: UI_I_WizardStep,
192
- nextStep: UI_I_WizardStep
193
- ): Promise<UI_I_ValidationReturn> => {
194
- let stepHasError = false
195
-
196
- if (wizard.isValidateForStep(3, currentStep.id, nextStep.id)) {
197
- const nameValidation = await validation.checkSelectedResourceSync(
198
- localization.value,
199
- form.value.resource,
200
- wizard,
201
- value
202
- )
203
-
204
- value = nameValidation.newValue
205
-
206
- stepHasError = nameValidation.stepHasError
207
- }
208
-
209
- if (wizard.isValidateForStep(4, currentStep.id, nextStep.id)) {
210
- const nameValidation = await validation.checkSelectedDatastoreSync(
211
- localization.value,
212
- form.value.storage,
213
- wizard,
214
- value
215
- )
216
-
217
- value = nameValidation.newValue
218
-
219
- stepHasError = nameValidation.stepHasError
220
- }
221
-
222
- return {
223
- newValue: value,
224
- stepHasError,
225
- }
226
- }
227
- const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> =>
228
- wizard.changeSteps(value, validationFunc)
229
-
230
- // Choosing Scheme
231
- watch(
232
- () => form.value.migrate_type,
233
- (newValue: UI_T_VmMigrateType) => {
234
- const schemes: UI_I_ChangeStepsSchemes = {
235
- procurator: {
236
- storage: props.isScheduledTasks ? 1 : 0,
237
- },
238
- sphere: {
239
- storage: props.isScheduledTasks ? 1 : 0,
240
- resource: props.isScheduledTasks ? 3 : 2,
241
- 'resource-storage': 2,
242
- server: 3,
243
- },
244
- }
245
-
246
- const projectSchemes = schemes[props.project]
247
-
248
- if (projectSchemes && projectSchemes[newValue] !== undefined) {
249
- wizard.changeScheme(projectSchemes[newValue] as number)
250
- }
251
- },
252
- { deep: true, immediate: true }
253
- )
254
- // Get networks
255
- watch(
256
- () => form.value.resource.host,
257
- (newValue) => {
258
- emits('get-networks', newValue.id)
259
- }
260
- )
261
-
262
- watch(
263
- modelSchedulerTask,
264
- (newValue: UI_I_ScheduleNewTasksForm) => {
265
- if (props.isScheduledTasks) wizard.setDisabledNextButton(newValue.isValid)
266
- },
267
- { immediate: true, deep: true }
268
- )
269
-
270
- const loading = ref<boolean>(false)
271
-
272
- const connectedStorageIdOnVm = computed<string>(
273
- () => props.vmSettings?.storage.id || ''
274
- )
275
-
276
- const dataReadyView = computed<UI_I_TableInfoItem>(() =>
277
- constructDataReadyViewFunc(props.vmName, form.value)
278
- )
279
- const onFinish = (): void => {
280
- loading.value = true
281
- emits('finish', form.value)
282
- loading.value = false
283
- }
284
-
285
- const onHideModal = (): void => {
286
- emits('hide')
287
- }
288
-
289
- const onHideAlert = (stepId: number): void => {
290
- wizard.hideAlertMessagesByStepId(stepId)
291
- }
292
- </script>
293
-
294
- <style scoped lang="scss">
295
- @import 'assets/scss/common/mixins.scss';
296
- .migrate-vm {
297
- :deep(.modal-body) {
298
- height: inherit;
299
- @include flex($dir: column);
300
- }
301
- }
302
- </style>
1
+ <template>
2
+ <div class="migrate-vm">
3
+ <atoms-wizard
4
+ show
5
+ :wizard="wizard"
6
+ :selected-scheme="selectedScheme"
7
+ :title="title"
8
+ :localization="localization"
9
+ class="migrate-vm-wizard"
10
+ test-id="migrate-vm-wizard"
11
+ @change-steps="onChangeSteps"
12
+ @hide="onHideModal"
13
+ @submit="onFinish"
14
+ >
15
+ <template #modalBody="{ selectedStep }">
16
+ <common-pages-scheduled-tasks-modals-common-new-task-form
17
+ v-if="selectedStep.id === 0"
18
+ v-model="modelSchedulerTask"
19
+ :target="selectedVirtualMachine"
20
+ />
21
+
22
+ <common-wizards-vm-migrate-select-type
23
+ v-if="selectedStep.id === 1"
24
+ v-model="form.migrate_type"
25
+ :project="props.project"
26
+ />
27
+
28
+ <common-wizards-vm-migrate-select-target-server
29
+ v-if="selectedStep.id === 2"
30
+ v-model="form.target_server"
31
+ v-model:connect-server="isConnectSourceServer"
32
+ :wizard="wizard"
33
+ />
34
+
35
+ <common-wizards-vm-migrate-select-compute-resource
36
+ v-show="selectedStep.id === 3"
37
+ v-model="form"
38
+ :alert-messages="alertMessages[3]"
39
+ :get-compute-resource-data="props.getComputeResourceData"
40
+ :compute-resource-data="props.computeResourceTableData"
41
+ :compute-resource-tree="props.computeResourceTree"
42
+ @hide-alert="onHideAlert"
43
+ />
44
+
45
+ <common-wizards-vm-migrate-select-storage
46
+ v-show="selectedStep.id === 4"
47
+ v-model="form"
48
+ :alert-messages="alertMessages[4]"
49
+ :get-datastore-table-func="props.getDatastoreTableFunc"
50
+ :datastore="props.datastore"
51
+ :connected-storage-id-default="connectedStorageIdOnVm"
52
+ :configure-per-disks="props.configurePerDisks"
53
+ @hide-alert="onHideAlert"
54
+ />
55
+
56
+ <common-wizards-vm-migrate-select-network
57
+ v-show="selectedStep.id === 5"
58
+ v-model="form.network"
59
+ :vm-info="props.vmInfo"
60
+ :networks="props.networks"
61
+ />
62
+
63
+ <common-wizards-vm-migrate-select-priority
64
+ v-if="selectedStep.id === 6"
65
+ v-model="form.vMotion_priority"
66
+ :vm-state="props.vmState"
67
+ />
68
+
69
+ <common-ready-to-complete
70
+ v-if="selectedStep.id === 7"
71
+ :data="dataReadyView"
72
+ />
73
+ </template>
74
+ </atoms-wizard>
75
+ </div>
76
+ </template>
77
+
78
+ <script setup lang="ts">
79
+ import type {
80
+ UI_I_WizardStep,
81
+ UI_I_ValidationReturn,
82
+ } from '~/components/atoms/wizard/lib/models/interfaces'
83
+ import Wizard from '~/components/atoms/wizard/lib/utils/utils'
84
+ import {
85
+ stepsFunc,
86
+ stepsSchemeInitial,
87
+ } from '~/components/common/wizards/vm/migrate/lib/config/steps'
88
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
89
+ import type { UI_T_Project } from '~/lib/models/types'
90
+ import type {
91
+ UI_I_MigrateFormLocal,
92
+ UI_I_ChangeStepsSchemes,
93
+ } from '~/components/common/wizards/vm/migrate/lib/models/interfaces'
94
+ import type { UI_T_VmMigrateType } from '~/components/common/wizards/vm/migrate/select/type/lib/models/types'
95
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
96
+ import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
97
+ import type { UI_I_VmSettings } from '~/lib/models/store/vm/interfaces'
98
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
99
+ import type { UI_I_StorageConfigurePerDiskItem } from '~/components/common/wizards/vm/migrate/select/storage/configure/disk/table/lib/models/interfaces'
100
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
101
+ import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
102
+ import { constructDataReadyViewFunc } from '~/components/common/wizards/vm/migrate/lib/config/constructDataReady'
103
+ import * as validation from '~/components/common/wizards/vm/migrate/lib/validations'
104
+
105
+ const props = withDefaults(
106
+ defineProps<{
107
+ project: UI_T_Project
108
+ isScheduledTasks: boolean
109
+ isEditScheduledTasks: boolean
110
+ vmSettings: UI_I_VmSettings | null
111
+ vmName: string
112
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
113
+ getComputeResourceData: (payload: UI_I_TablePayload) => Promise<void>
114
+ datastore: UI_I_DatastoreTableItem[]
115
+ configurePerDisks: UI_I_StorageConfigurePerDiskItem[]
116
+ computeResourceTableData?: any
117
+ computeResourceTree?: UI_I_TreeNode | null
118
+ selectedVirtualMachine?: string
119
+ vmState?: number
120
+ vmInfo?: any | null
121
+ networks?: any
122
+ }>(),
123
+ {
124
+ computeResourceTree: null,
125
+ }
126
+ )
127
+ const emits = defineEmits<{
128
+ (event: 'finish', value: UI_I_MigrateFormLocal): void
129
+ (event: 'get-networks', value: string): void
130
+ (event: 'hide'): void
131
+ }>()
132
+ const modelSchedulerTask = defineModel<UI_I_ScheduleNewTasksForm>(
133
+ 'schedulerForm',
134
+ { required: true }
135
+ )
136
+
137
+ const localization = computed<UI_I_Localization>(() => useLocal())
138
+
139
+ const wizard: Wizard = new Wizard(
140
+ stepsFunc(localization.value, props.isScheduledTasks),
141
+ stepsSchemeInitial
142
+ )
143
+
144
+ const selectedScheme = computed<number[]>(() => wizard.selectedScheme.value)
145
+ const alertMessages = computed<string[][]>(() => wizard.alertMessages.value)
146
+
147
+ const title = computed<string>(() => {
148
+ const { scheduleNewTasks, scheduleTaskEdit, migrate } =
149
+ localization.value.common
150
+ let result = migrate
151
+ if (props.isScheduledTasks) {
152
+ const schedulerMode = props.isEditScheduledTasks
153
+ ? scheduleTaskEdit
154
+ : scheduleNewTasks
155
+
156
+ result = `${schedulerMode} (${migrate})`
157
+ }
158
+
159
+ return result
160
+ })
161
+
162
+ const isConnectSourceServer = ref<boolean>(false)
163
+ const form = ref<UI_I_MigrateFormLocal>({
164
+ migrate_type: props.project === 'procurator' ? 'storage' : 'resource',
165
+ disk_format: 0,
166
+ storage: null,
167
+ configure: {
168
+ type: 'batch-configure',
169
+ disks: [],
170
+ },
171
+ target_server: {
172
+ fqdn: '',
173
+ user: '',
174
+ password: '',
175
+ },
176
+ network: {},
177
+ resource: {
178
+ selectedNode: null,
179
+ host: null,
180
+ cluster: null,
181
+ resourcePool: null,
182
+ vApps: null,
183
+ },
184
+ vMotion_priority:
185
+ props.vmState === 2 ? 'live' : props.vmState === 1 ? 'offline' : '',
186
+ })
187
+
188
+
189
+ const validationFunc = async (
190
+ value: UI_I_WizardStep[],
191
+ currentStep: UI_I_WizardStep,
192
+ nextStep: UI_I_WizardStep
193
+ ): Promise<UI_I_ValidationReturn> => {
194
+ let stepHasError = false
195
+
196
+ if (wizard.isValidateForStep(3, currentStep.id, nextStep.id)) {
197
+ const nameValidation = await validation.checkSelectedResourceSync(
198
+ localization.value,
199
+ form.value.resource,
200
+ wizard,
201
+ value
202
+ )
203
+
204
+ value = nameValidation.newValue
205
+
206
+ stepHasError = nameValidation.stepHasError
207
+ }
208
+
209
+ if (wizard.isValidateForStep(4, currentStep.id, nextStep.id)) {
210
+ const nameValidation = await validation.checkSelectedDatastoreSync(
211
+ localization.value,
212
+ form.value.storage,
213
+ wizard,
214
+ value
215
+ )
216
+
217
+ value = nameValidation.newValue
218
+
219
+ stepHasError = nameValidation.stepHasError
220
+ }
221
+
222
+ return {
223
+ newValue: value,
224
+ stepHasError,
225
+ }
226
+ }
227
+ const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> =>
228
+ wizard.changeSteps(value, validationFunc)
229
+
230
+ // Choosing Scheme
231
+ watch(
232
+ () => form.value.migrate_type,
233
+ (newValue: UI_T_VmMigrateType) => {
234
+ const schemes: UI_I_ChangeStepsSchemes = {
235
+ procurator: {
236
+ storage: props.isScheduledTasks ? 1 : 0,
237
+ },
238
+ sphere: {
239
+ storage: props.isScheduledTasks ? 1 : 0,
240
+ resource: props.isScheduledTasks ? 3 : 2,
241
+ 'resource-storage': 2,
242
+ server: 3,
243
+ },
244
+ }
245
+
246
+ const projectSchemes = schemes[props.project]
247
+
248
+ if (projectSchemes && projectSchemes[newValue] !== undefined) {
249
+ wizard.changeScheme(projectSchemes[newValue] as number)
250
+ }
251
+ },
252
+ { deep: true, immediate: true }
253
+ )
254
+ // Get networks
255
+ watch(
256
+ () => form.value.resource.host,
257
+ (newValue) => {
258
+ emits('get-networks', newValue.id)
259
+ }
260
+ )
261
+
262
+ watch(
263
+ modelSchedulerTask,
264
+ (newValue: UI_I_ScheduleNewTasksForm) => {
265
+ if (props.isScheduledTasks) wizard.setDisabledNextButton(newValue.isValid)
266
+ },
267
+ { immediate: true, deep: true }
268
+ )
269
+
270
+ const loading = ref<boolean>(false)
271
+
272
+ const connectedStorageIdOnVm = computed<string>(
273
+ () => props.vmSettings?.storage.id || ''
274
+ )
275
+
276
+ const dataReadyView = computed<UI_I_TableInfoItem>(() =>
277
+ constructDataReadyViewFunc(props.vmName, form.value)
278
+ )
279
+ const onFinish = (): void => {
280
+ loading.value = true
281
+ emits('finish', form.value)
282
+ loading.value = false
283
+ }
284
+
285
+ const onHideModal = (): void => {
286
+ emits('hide')
287
+ }
288
+
289
+ const onHideAlert = (stepId: number): void => {
290
+ wizard.hideAlertMessagesByStepId(stepId)
291
+ }
292
+ </script>
293
+
294
+ <style scoped lang="scss">
295
+ @import 'assets/scss/common/mixins.scss';
296
+ .migrate-vm {
297
+ :deep(.modal-body) {
298
+ height: inherit;
299
+ @include flex($dir: column);
300
+ }
301
+ }
302
+ </style>