bfg-common 1.5.210 → 1.5.212

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 (215) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/perPage/PerPage.vue +58 -58
  8. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  9. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  10. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  11. package/components/common/backup/lib/utils/getBackupOrBackupStorageId.ts +29 -0
  12. package/components/common/backup/storage/actions/add/Add.vue +36 -0
  13. package/components/common/backup/storage/actions/add/temp/Add.vue +508 -0
  14. package/components/common/backup/storage/actions/add/temp/lib/config/stepItems.ts +203 -0
  15. package/components/common/backup/storage/actions/add/temp/lib/models/interfaces.ts +58 -0
  16. package/components/common/backup/storage/actions/add/temp/lib/models/types.ts +14 -0
  17. package/components/common/backup/storage/actions/add/temp/lib/utils.ts +70 -0
  18. package/components/common/backup/storage/actions/add/temp/local/Local.vue +65 -0
  19. package/components/common/backup/storage/actions/add/temp/local/createName/CreateName.vue +158 -0
  20. package/components/common/backup/storage/actions/add/temp/local/createName/lib/config/defaultForm.ts +15 -0
  21. package/components/common/backup/storage/actions/add/temp/nfs/Nfs.vue +106 -0
  22. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/Accessibility.vue +104 -0
  23. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/lib/config/tabsPannel.ts +25 -0
  24. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/lib/models/interfaces.ts +9 -0
  25. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/lib/models/types.ts +5 -0
  26. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/tablesView/TablesView.vue +141 -0
  27. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/tablesView/lib/config/compatibleTable.ts +62 -0
  28. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/tablesView/lib/config/hostsTableItems.ts +53 -0
  29. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/tablesView/lib/config/incompatibleTable.ts +68 -0
  30. package/components/common/backup/storage/actions/add/temp/nfs/accessibility/tablesView/lib/config/tableKeys.ts +15 -0
  31. package/components/common/backup/storage/actions/add/temp/nfs/configuration/Configuration.vue +469 -0
  32. package/components/common/backup/storage/actions/add/temp/nfs/configuration/lib/config/defaultForm.ts +51 -0
  33. package/components/common/backup/storage/actions/add/temp/nfs/configuration/lib/models/interfaces.ts +14 -0
  34. package/components/common/backup/storage/actions/add/temp/nfs/configuration/serversList/DeletePopover.vue +99 -0
  35. package/components/common/backup/storage/actions/add/temp/nfs/configuration/serversList/ServersList.vue +125 -0
  36. package/components/common/backup/storage/actions/add/temp/nfs/configuration/serversList/lib/config/serversListConfig.ts +40 -0
  37. package/components/common/backup/storage/actions/add/temp/nfs/configuration/serversList/lib/config/tableKeys.ts +3 -0
  38. package/components/common/backup/storage/actions/add/temp/nfs/configuration/serversList/lib/models/interfaces.ts +13 -0
  39. package/components/common/backup/storage/actions/add/temp/nfs/configuration/serversList/lib/models/types.ts +1 -0
  40. package/components/common/backup/storage/actions/add/temp/nfs/kerberosAuthentication/KerberosAuthentication.vue +55 -0
  41. package/components/common/backup/storage/actions/add/temp/nfs/kerberosAuthentication/lib/config/radioOptions.ts +27 -0
  42. package/components/common/backup/storage/actions/add/temp/nfs/version/Version.vue +42 -0
  43. package/components/common/backup/storage/actions/add/temp/nfs/version/lib/config/versionOptions.ts +22 -0
  44. package/components/common/backup/storage/actions/add/temp/readyComplete/ReadyComplete.vue +85 -0
  45. package/components/common/backup/storage/actions/add/temp/readyComplete/lib/config/propertiesDetails.ts +139 -0
  46. package/components/common/backup/storage/actions/add/temp/readyComplete/lib/models/interfaces.ts +4 -0
  47. package/components/common/backup/storage/actions/add/temp/samba/Samba.vue +95 -0
  48. package/components/common/backup/storage/actions/add/temp/samba/accessibility/Accessibility.vue +104 -0
  49. package/components/common/backup/storage/actions/add/temp/samba/accessibility/lib/config/tabsPannel.ts +25 -0
  50. package/components/common/backup/storage/actions/add/temp/samba/accessibility/lib/models/interfaces.ts +9 -0
  51. package/components/common/backup/storage/actions/add/temp/samba/accessibility/lib/models/types.ts +5 -0
  52. package/components/common/backup/storage/actions/add/temp/samba/accessibility/tablesView/TablesView.vue +141 -0
  53. package/components/common/backup/storage/actions/add/temp/samba/accessibility/tablesView/lib/config/compatibleTable.ts +62 -0
  54. package/components/common/backup/storage/actions/add/temp/samba/accessibility/tablesView/lib/config/hostsTableItems.ts +53 -0
  55. package/components/common/backup/storage/actions/add/temp/samba/accessibility/tablesView/lib/config/incompatibleTable.ts +68 -0
  56. package/components/common/backup/storage/actions/add/temp/samba/accessibility/tablesView/lib/config/tableKeys.ts +15 -0
  57. package/components/common/backup/storage/actions/add/temp/samba/configuration/Configuration.vue +470 -0
  58. package/components/common/backup/storage/actions/add/temp/samba/configuration/lib/config/defaultForm.ts +51 -0
  59. package/components/common/backup/storage/actions/add/temp/samba/configuration/lib/models/interfaces.ts +14 -0
  60. package/components/common/backup/storage/actions/add/temp/samba/configuration/serversList/DeletePopover.vue +99 -0
  61. package/components/common/backup/storage/actions/add/temp/samba/configuration/serversList/ServersList.vue +124 -0
  62. package/components/common/backup/storage/actions/add/temp/samba/configuration/serversList/lib/config/serversListConfig.ts +40 -0
  63. package/components/common/backup/storage/actions/add/temp/samba/configuration/serversList/lib/config/tableKeys.ts +3 -0
  64. package/components/common/backup/storage/actions/add/temp/samba/configuration/serversList/lib/models/interfaces.ts +13 -0
  65. package/components/common/backup/storage/actions/add/temp/samba/configuration/serversList/lib/models/types.ts +1 -0
  66. package/components/common/backup/storage/actions/add/temp/samba/kerberosAuthentication/KerberosAuthentication.vue +55 -0
  67. package/components/common/backup/storage/actions/add/temp/samba/kerberosAuthentication/lib/config/radioOptions.ts +27 -0
  68. package/components/common/backup/storage/actions/add/temp/sharedStorm/SharedStorm.vue +80 -0
  69. package/components/common/backup/storage/actions/add/temp/sharedStorm/createName/CreateName.vue +156 -0
  70. package/components/common/backup/storage/actions/add/temp/sharedStorm/createName/lib/config/defaultForm.ts +15 -0
  71. package/components/common/backup/storage/actions/add/temp/sharedStorm/storage/Storage.vue +71 -0
  72. package/components/common/backup/storage/actions/add/temp/sharedStorm/storage/lib/config/defaultForm.ts +15 -0
  73. package/components/common/backup/storage/actions/add/temp/types/Types.vue +78 -0
  74. package/components/common/backup/storage/actions/add/temp/types/lib/config/typeOptions.ts +52 -0
  75. package/components/common/backup/storage/actions/delete/Delete.vue +65 -0
  76. package/components/common/backup/storage/actions/delete/lib/models/interfaces.ts +5 -0
  77. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  78. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  79. package/components/common/browse/lib/models/interfaces.ts +5 -5
  80. package/components/common/context/lib/models/interfaces.ts +31 -31
  81. package/components/common/diagramMain/DiagramMain.vue +897 -897
  82. package/components/common/diagramMain/Header.vue +214 -214
  83. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  84. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  85. package/components/common/diagramMain/lib/models/types.ts +21 -21
  86. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  87. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  88. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  89. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  90. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  91. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  92. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  93. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  94. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  95. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  96. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  97. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  98. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  99. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  100. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  101. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  102. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  103. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  104. package/components/common/diagramMain/port/Ports.vue +47 -47
  105. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  106. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  107. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  108. package/components/common/pages/home/headline/Headline.vue +45 -45
  109. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  110. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  111. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  112. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  113. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  114. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  115. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  116. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  117. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  118. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  119. package/components/common/pages/packages/Packages.vue +208 -208
  120. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  121. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  122. package/components/common/recursionTree/RecursionTree.vue +223 -223
  123. package/components/common/select/button/ButtonDropdown.vue +108 -108
  124. package/components/common/spiceConsole/Drawer.vue +377 -377
  125. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  126. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  127. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  128. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  129. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  130. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  131. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  132. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +337 -337
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +480 -480
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  135. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  136. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  137. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  138. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  139. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  140. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  141. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  142. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +190 -190
  143. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +237 -237
  144. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  145. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  146. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  147. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  148. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
  149. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +154 -154
  150. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +382 -382
  151. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +151 -151
  152. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +73 -73
  153. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  154. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  155. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  156. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  157. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  158. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  159. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  160. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  161. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  162. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  163. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  164. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  165. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  166. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  167. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  168. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevicesNew.vue +40 -40
  169. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  170. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +106 -106
  171. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +81 -81
  172. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  173. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  174. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  175. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +67 -67
  176. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +149 -149
  177. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  178. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +31 -31
  179. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +31 -31
  180. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  181. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  182. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +128 -128
  183. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  184. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  185. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  186. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  187. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  188. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +134 -134
  189. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  190. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  191. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  192. package/components/common/vm/actions/common/select/createType/New.vue +84 -84
  193. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  194. package/components/common/vm/actions/common/select/name/Name.vue +167 -167
  195. package/components/common/vm/actions/common/select/os/New.vue +122 -122
  196. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  197. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  198. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  199. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  200. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  201. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  202. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  203. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  204. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +137 -137
  205. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  206. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  207. package/composables/productNameLocal.ts +30 -30
  208. package/composables/useAppVersion.ts +21 -21
  209. package/package.json +1 -1
  210. package/plugins/date.ts +233 -233
  211. package/public/spice-console/lib/images/bitmap.js +203 -203
  212. package/public/spice-console/network/spicechannel.js +387 -387
  213. package/store/main/mutations.ts +7 -7
  214. package/store/main/state.ts +7 -7
  215. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -0,0 +1,29 @@
1
+ // В дереве бэкапов элементы соделжат в поле "id" все "id" родителей разделенной "_".
2
+ // Пример: 0_y3bxahpr_ngzjnhdm(hostId_storageId_bucketId) или 0_y3bxahpr(hostId_storageId)
3
+ export const getBackupTreeNodeIdByTypeFromRoute = (type: 'host' | 'backupStorage' | 'bucket' | 'last'): string => {
4
+ const idFromRoute = useRoute().params.id?.toString() || ''
5
+
6
+ let result = ''
7
+ // if typeFromRoute === 'bucket' ids === [hostId, storageId, bucketId|vmId]
8
+ // if typeFromRoute === 'backup' ids === [hostId, storageId]
9
+ // if typeFromRoute === 'vm' ids === [bucketId|vmId]
10
+ // vmId === bucketId
11
+
12
+ const ids = idFromRoute.split('_')
13
+ switch(type) {
14
+ case 'host':
15
+ result = ids[0]
16
+ break
17
+ case 'backupStorage':
18
+ result = ids[1] || ''
19
+ break
20
+ case 'bucket':
21
+ result = ids[2] || ids[0]
22
+ break
23
+ case 'last':
24
+ result = ids[2] || ids[1] || ids[0]
25
+ break
26
+ }
27
+
28
+ return result
29
+ }
@@ -0,0 +1,36 @@
1
+ <template>
2
+ <div class="new-datastore">
3
+ <common-backup-storage-actions-add-temp-add
4
+ mode="procurator"
5
+ :finish-func="onFinish"
6
+ @hide="onHideModal"
7
+ />
8
+ </div>
9
+ </template>
10
+
11
+ <script setup lang="ts">
12
+ import type {
13
+ // UI_T_DatastoreType,
14
+ UI_T_NfsType,
15
+ } from '~/components/common/wizards/datastore/add/lib/models/types'
16
+ import type { UI_I_CreateDatastoreForm } from '~/components/common/wizards/datastore/add/lib/models/interfaces'
17
+
18
+ const emits = defineEmits<{
19
+ (event: 'create', value: any): void
20
+ (event: 'hide'): void
21
+ }>()
22
+
23
+ const onFinish = async (
24
+ form: UI_I_CreateDatastoreForm,
25
+ mode: UI_T_DatastoreType,
26
+ version: UI_T_NfsType
27
+ ): Promise<void> => {
28
+ emits('create', { form, mode, version })
29
+ }
30
+
31
+ const onHideModal = (): void => {
32
+ emits('hide')
33
+ }
34
+ </script>
35
+
36
+ <style scoped lang="scss"></style>
@@ -0,0 +1,508 @@
1
+ <template>
2
+ <div class="new-datastore">
3
+ <atoms-modal-by-steps
4
+ test-id="add-datastore-wizard"
5
+ :show="true"
6
+ :title="localization.common.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 flex flex-col h-full pl-6">
18
+ <common-backup-storage-actions-add-temp-types
19
+ v-show="stepPosition === 0"
20
+ v-model:type="datastoreType"
21
+ :project="props.mode"
22
+ />
23
+
24
+ <common-backup-storage-actions-add-temp-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-backup-storage-actions-add-temp-nfs
38
+ v-show="datastoreType === 'nfs' && !isShowCompleteBlock"
39
+ :mode="props.mode"
40
+ :step-position="stepPosition"
41
+ :datastore-type="datastoreType"
42
+ :nfs-configuration-submit="nfsConfigurationSubmit"
43
+ :host-accessibility-submit="hostAccessibilitySubmit"
44
+ :hosts="props.nfsHosts"
45
+ @loading="(e) => (loading = e)"
46
+ @change-nfs-version="updateNfsVersion"
47
+ @submit="saveChangesAndNextNfs"
48
+ />
49
+
50
+ <common-backup-storage-actions-add-temp-samba
51
+ v-show="datastoreType === 'samba' && !isShowCompleteBlock"
52
+ :mode="props.mode"
53
+ :step-position="stepPosition"
54
+ :datastore-type="datastoreType"
55
+ :nfs-configuration-submit="nfsConfigurationSubmit"
56
+ :host-accessibility-submit="hostAccessibilitySubmit"
57
+ :hosts="props.nfsHosts"
58
+ @loading="(e) => (loading = e)"
59
+ @change-nfs-version="updateNfsVersion"
60
+ @submit="saveChangesAndNextSamba"
61
+ />
62
+
63
+ <common-backup-storage-actions-add-temp-shared-storm
64
+ v-show="datastoreType === 'shared-storm' && !isShowCompleteBlock"
65
+ :mode="props.mode"
66
+ :step-position="stepPosition"
67
+ :datastore-type="datastoreType"
68
+ :create-name-submit="sharedStormCreateNameSubmit"
69
+ :storage-submit="storageSubmit"
70
+ @loading="(e) => (loading = e)"
71
+ @submit="saveChangesAndNextSharedStorm"
72
+ />
73
+
74
+ <common-backup-storage-actions-add-temp-ready-complete
75
+ v-show="isShowCompleteBlock"
76
+ :data-ready-view="dataReadyView"
77
+ />
78
+ </div>
79
+ </template>
80
+ </atoms-modal-by-steps>
81
+ </div>
82
+ </template>
83
+
84
+ <script setup lang="ts">
85
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
86
+ import type { UI_I_VerticalStepItem } from '~/components/atoms/lib/models/interfaces'
87
+ import type {
88
+ UI_T_DatastoreType,
89
+ UI_T_NfsType,
90
+ UI_T_WizardDatastoreMode,
91
+ } from '~/components/common/backup/storage/actions/add/temp/lib/models/types'
92
+ import type {
93
+ I_SharedStormData,
94
+ UI_I_CreateDatastoreForm,
95
+ } from '~/components/common/backup/storage/actions/add/temp/lib/models/interfaces'
96
+ import { stepItemsFunc } from '~/components/common/backup/storage/actions/add/temp/lib/config/stepItems'
97
+ import { constructDataReadyViewFunc } from '~/components/common/backup/storage/actions/add/temp/readyComplete/lib/config/propertiesDetails'
98
+
99
+ const props = defineProps<{
100
+ // TODO refactoring to project
101
+ mode: UI_T_WizardDatastoreMode
102
+ finishFunc: (
103
+ datastoreForm: UI_I_CreateDatastoreForm,
104
+ datastoreType: UI_T_DatastoreType,
105
+ version: UI_T_NfsType
106
+ ) => Promise<void>
107
+ datacenterHosts?: any[]
108
+ nfsHosts?: any
109
+ isMainFilter?: boolean
110
+ hostId?: string
111
+ }>()
112
+ const emits = defineEmits<{
113
+ (event: 'hide'): void
114
+ (event: 'global-refresh'): void
115
+ (event: 'main-filter', value: string): void
116
+ }>()
117
+
118
+ const localization = computed<UI_I_Localization>(() => useLocal())
119
+
120
+ const loading = ref<boolean>(false)
121
+ const datastoreType = ref<UI_T_DatastoreType>(
122
+ props.mode === 'procurator' ? 'local' : 'shared-storm'
123
+ )
124
+ const nfsVersion = ref<UI_T_NfsType>('nfs-4.1')
125
+
126
+ const stepPosition = ref<number>(0)
127
+ const dataReadyView = ref<any>([])
128
+
129
+ // TODO move to config
130
+ const datastoreForm = ref<UI_I_CreateDatastoreForm>({
131
+ local: {
132
+ name: '',
133
+ hosts: [],
134
+ type_code: 1,
135
+ },
136
+ nfs: {
137
+ name: '',
138
+ server: '',
139
+ folder: '',
140
+ user: '',
141
+ password: '',
142
+ readonly: false,
143
+ version: nfsVersion.value,
144
+ type_code: 2,
145
+ hosts: [],
146
+ },
147
+ samba: {
148
+ name: '',
149
+ server: '',
150
+ folder: '',
151
+ user: '',
152
+ password: '',
153
+ readonly: false,
154
+ type_code: 3,
155
+ hosts: [],
156
+ },
157
+ sharedStorm: {
158
+ name: '',
159
+ storm_id: '',
160
+ type_code: 4,
161
+ },
162
+ })
163
+
164
+ const stepItems = computed<UI_I_VerticalStepItem[]>(() =>
165
+ stepItemsFunc(localization.value, datastoreType.value, props.mode)
166
+ )
167
+
168
+ let cashStep = -1
169
+ const onNextStep = (force = false): void => {
170
+ const isValid = checkSubmit(force)
171
+
172
+ if (!isValid) {
173
+ return
174
+ }
175
+
176
+ const isDisabled = stepItems.value[cashStep]?.disabled
177
+ if (cashStep !== -1 && !isDisabled) {
178
+ stepPosition.value = cashStep
179
+ cashStep = -1
180
+ return
181
+ }
182
+
183
+ stepItems.value[stepPosition.value].complete = true
184
+ stepItems.value[stepPosition.value + 1].disabled = false
185
+ stepPosition.value++
186
+ }
187
+
188
+ const back = (): void => {
189
+ stepPosition.value--
190
+ }
191
+
192
+ const onChangeStep = (key: number): void => {
193
+ if (key < stepPosition.value) {
194
+ stepPosition.value = key
195
+ return
196
+ }
197
+
198
+ const isValid = checkSubmit()
199
+
200
+ if (!isValid) {
201
+ cashStep = key
202
+ return
203
+ }
204
+
205
+ stepPosition.value = key
206
+ }
207
+ const onHideModal = (): void => {
208
+ emits('hide')
209
+ }
210
+
211
+ const updateNfsVersion = (event: UI_T_NfsType): void => {
212
+ nfsVersion.value = event
213
+ const { name, server, folder, user, password, hosts } =
214
+ datastoreForm.value.nfs
215
+ saveChangesAndNextNfs({ name, server, folder, user, password, hosts }, false)
216
+ }
217
+
218
+ const localCreateNameSubmit = ref<number>(0)
219
+ const nfsConfigurationSubmit = ref<number>(0)
220
+ const hostAccessibilitySubmit = ref<number>(0)
221
+ const sharedStormCreateNameSubmit = ref<number>(0)
222
+ const storageSubmit = ref<number>(0)
223
+
224
+ const checkSubmit = (force = false): boolean => {
225
+ if (datastoreType.value === 'local') {
226
+ if (stepPosition.value === 1 && !force) {
227
+ localCreateNameSubmit.value++
228
+ return false
229
+ }
230
+ }
231
+
232
+ if (datastoreType.value === 'nfs') {
233
+ if (stepPosition.value === 1 && !force) {
234
+ nfsConfigurationSubmit.value++
235
+ return false
236
+ }
237
+
238
+ if (props.mode === 'sphere' && stepPosition.value === 2 && !force) {
239
+ hostAccessibilitySubmit.value++
240
+ return false
241
+ }
242
+ // if (
243
+ // ((stepPosition.value === 4 && nfsVersion.value === 'nfs-4.1') ||
244
+ // (stepPosition.value === 3 && nfsVersion.value === 'nfs-3')) &&
245
+ // !force
246
+ // ) {
247
+ // hostAccessibilitySubmit.value++
248
+ // return false
249
+ // }
250
+ }
251
+
252
+ if (datastoreType.value === 'samba') {
253
+ if (stepPosition.value === 1 && !force) {
254
+ nfsConfigurationSubmit.value++
255
+ return false
256
+ }
257
+
258
+ if (props.mode === 'sphere' && stepPosition.value === 2 && !force) {
259
+ hostAccessibilitySubmit.value++
260
+ return false
261
+ }
262
+ }
263
+
264
+ if (datastoreType.value === 'shared-storm') {
265
+ if (stepPosition.value === 1 && !force) {
266
+ sharedStormCreateNameSubmit.value++
267
+ return false
268
+ }
269
+ if (stepPosition.value === 2 && !force) {
270
+ storageSubmit.value++
271
+ return false
272
+ }
273
+ }
274
+
275
+ return true
276
+ }
277
+
278
+ const isWizardModeForSphere = computed<boolean>(() => props.mode === 'sphere')
279
+
280
+ const onSaveNameAndNextLocal = (event: any): void => {
281
+ const { local } = datastoreForm.value
282
+
283
+ if (isWizardModeForSphere.value) {
284
+ local.name = event.name
285
+ local.hosts.push(event.host)
286
+ }
287
+
288
+ if (!isWizardModeForSphere.value) {
289
+ local.name = event
290
+ }
291
+
292
+ dataReadyView.value = constructDataReadyViewFunc(
293
+ localization.value,
294
+ 'local',
295
+ event,
296
+ isWizardModeForSphere.value
297
+ )
298
+
299
+ onNextStep(true)
300
+ }
301
+
302
+ const saveChangesAndNextNfs = (event: any, next = true): void => {
303
+ const { nfs } = datastoreForm.value
304
+ nfs.name = event.name
305
+ nfs.folder = event.folder
306
+ nfs.server = event.server
307
+ nfs.user = event.user
308
+ nfs.password = event.password
309
+ nfs.hosts = event.hosts
310
+
311
+ // TODO refactoring
312
+ const hostsNames = props.nfsHosts
313
+ ? props.nfsHosts.items
314
+ .filter((host) => event.hosts.includes(host.id))
315
+ .map((host) => host.host)
316
+ : []
317
+
318
+ dataReadyView.value = constructDataReadyViewFunc(
319
+ localization.value,
320
+ 'nfs',
321
+ {
322
+ ...event,
323
+ hosts: hostsNames,
324
+ version: nfsVersion.value,
325
+ },
326
+ isWizardModeForSphere.value
327
+ )
328
+
329
+ next && onNextStep(true)
330
+ }
331
+
332
+ const saveChangesAndNextSamba = (event: any, next = true): void => {
333
+ const { samba } = datastoreForm.value
334
+ samba.name = event.name
335
+ samba.folder = event.folder
336
+ samba.server = event.server
337
+ samba.user = event.user
338
+ samba.password = event.password
339
+ samba.hosts = event.hosts
340
+
341
+ // TODO refactoring
342
+ const hostsNames = props.nfsHosts
343
+ ? props.nfsHosts.items
344
+ .filter((host) => event.hosts.includes(host.id))
345
+ .map((host) => host.host)
346
+ : []
347
+
348
+ dataReadyView.value = constructDataReadyViewFunc(
349
+ localization.value,
350
+ 'samba',
351
+ {
352
+ ...event,
353
+ hosts: hostsNames,
354
+ },
355
+ isWizardModeForSphere.value
356
+ )
357
+
358
+ next && onNextStep(true)
359
+ }
360
+
361
+ const saveChangesAndNextSharedStorm = (
362
+ event: I_SharedStormData,
363
+ next = true
364
+ ): void => {
365
+ const { sharedStorm } = datastoreForm.value
366
+ sharedStorm.name = event.name
367
+ sharedStorm.storm_id = event.storm_id
368
+
369
+ dataReadyView.value = constructDataReadyViewFunc(
370
+ localization.value,
371
+ 'shared-storm',
372
+ {
373
+ ...event,
374
+ },
375
+ isWizardModeForSphere.value
376
+ )
377
+
378
+ next && onNextStep(true)
379
+ }
380
+
381
+ const isShowCompleteBlock = computed<boolean>(() => {
382
+ // TODO refactoring
383
+ const localStep = datastoreType.value === 'local' && stepPosition.value === 2
384
+
385
+ let nfsFirst
386
+ if (props.mode === 'procurator') {
387
+ nfsFirst =
388
+ datastoreType.value === 'nfs' &&
389
+ nfsVersion.value === 'nfs-3' &&
390
+ stepPosition.value === 3
391
+ } else {
392
+ nfsFirst =
393
+ datastoreType.value === 'nfs' &&
394
+ nfsVersion.value === 'nfs-3' &&
395
+ stepPosition.value === 4
396
+ }
397
+
398
+ let nfsSecond
399
+ if (props.mode === 'procurator') {
400
+ nfsSecond =
401
+ datastoreType.value === 'nfs' &&
402
+ nfsVersion.value === 'nfs-4.1' &&
403
+ stepPosition.value === 2
404
+ } else {
405
+ nfsSecond =
406
+ datastoreType.value === 'nfs' &&
407
+ nfsVersion.value === 'nfs-4.1' &&
408
+ stepPosition.value === 3
409
+ }
410
+
411
+ let samba
412
+ if (props.mode === 'procurator') {
413
+ samba = datastoreType.value === 'samba' && stepPosition.value === 2
414
+ } else {
415
+ samba = datastoreType.value === 'samba' && stepPosition.value === 3
416
+ }
417
+
418
+ let sharedStorm
419
+ if (props.mode === 'procurator') {
420
+ sharedStorm =
421
+ datastoreType.value === 'shared-storm' && stepPosition.value === 3
422
+ } else {
423
+ sharedStorm =
424
+ datastoreType.value === 'shared-storm' && stepPosition.value === 4
425
+ }
426
+
427
+ return localStep || nfsFirst || nfsSecond || samba || sharedStorm
428
+ })
429
+
430
+ const onAddDatastore = async (): Promise<void> => {
431
+ loading.value = true
432
+
433
+ props
434
+ .finishFunc(datastoreForm.value, datastoreType.value, nfsVersion.value)
435
+ .then(() => {
436
+ emits('global-refresh')
437
+ loading.value = false
438
+ onHideModal()
439
+ })
440
+ }
441
+
442
+ // const createDatastoreFromLocal = async (): Promise<API_UI_I_Error> => {
443
+ // const { local } = datastoreForm.value
444
+ //
445
+ // return await createDatastore<Omit<UI_I_CreateDatastoreBodyRequest, 'pool_name'>>(
446
+ // local
447
+ // )
448
+ // }
449
+ // const createDatastoreFromSharedStorm = async (): Promise<API_UI_I_Error> => {
450
+ // const {
451
+ // sharedStorm: { dev_names: disks, ...sendData },
452
+ // } = datastoreForm.value
453
+ //
454
+ // const { data, msg } = await getStoragePoolName<{ dev_names: string[] }>(
455
+ // '/psm/api/v1/storage/lvm/create',
456
+ // { dev_names: disks }
457
+ // )
458
+ //
459
+ // if (!data && msg) return msg
460
+ //
461
+ // sendData.pool_name = data?.pool_name || ''
462
+ //
463
+ // return await createDatastore(sendData)
464
+ // }
465
+
466
+ // const createDatastoreFromNfs = async (): Promise<API_UI_I_Error> => {
467
+ // const {
468
+ // nfs: { server, folder, readonly, name, type_code: type },
469
+ // } = datastoreForm.value
470
+ //
471
+ // const sendDataOne = {
472
+ // server,
473
+ // folder,
474
+ // readonly,
475
+ // version: nfsVersion.value === 'nfs-4.1' ? 4.1 : 3.0,
476
+ // }
477
+ //
478
+ // const { data, msg } = await getStoragePoolName<UI_I_NfsPoolNameForm>(
479
+ // '/psm/api/v1/storage/cnfs',
480
+ // sendDataOne
481
+ // )
482
+ //
483
+ // if (!data && msg) return msg
484
+ //
485
+ // const sendDataTwo = {
486
+ // name,
487
+ // type_code: type,
488
+ // pool_name: data?.pool_name || '',
489
+ // }
490
+ //
491
+ // return await createDatastore(sendDataTwo)
492
+ // }
493
+ </script>
494
+
495
+ <style scoped lang="scss">
496
+ .finish-block {
497
+ padding: 18px 24px 24px 24px;
498
+
499
+ .add-hosts-ready-to-complete-mt-12 {
500
+ margin-top: 12px;
501
+
502
+ .add-hosts-ready-to-complete-bold {
503
+ line-height: 18px;
504
+ font-weight: 700;
505
+ }
506
+ }
507
+ }
508
+ </style>