bfg-common 1.5.417 → 1.5.419

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 (61) hide show
  1. package/components/common/modals/confirmation/ConfirmationNew.vue +1 -1
  2. package/components/common/pages/backups/Backups.vue +102 -0
  3. package/components/common/pages/backups/DetailView.vue +52 -0
  4. package/components/common/pages/backups/lib/models/interfaces.ts +24 -0
  5. package/components/common/pages/backups/lib/models/types.ts +7 -0
  6. package/components/common/pages/backups/modals/Modals.vue +229 -0
  7. package/components/common/pages/backups/modals/createBackup/CreateBackup.vue +371 -0
  8. package/components/common/pages/backups/modals/createBackup/configuration/Configuration.vue +29 -0
  9. package/components/common/pages/backups/modals/createBackup/configuration/backupWindow/BackupWindow.vue +26 -0
  10. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/MaxBandwidth.vue +65 -0
  11. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -0
  12. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/models/types.ts +1 -0
  13. package/components/common/pages/backups/modals/createBackup/configuration/strategy/Strategy.vue +36 -0
  14. package/components/common/pages/backups/modals/createBackup/datastores/Datastores.vue +58 -0
  15. package/components/common/pages/backups/modals/createBackup/datastores/tableView/TableView.vue +94 -0
  16. package/components/common/pages/backups/modals/createBackup/datastores/tableView/lib/config/keys.ts +14 -0
  17. package/components/common/pages/backups/modals/createBackup/datastores/tableView/lib/config/table.ts +117 -0
  18. package/components/common/pages/backups/modals/createBackup/datastores/tableView/lib/models/types.ts +10 -0
  19. package/components/common/pages/backups/modals/createBackup/disks/Disks.vue +28 -0
  20. package/components/common/pages/backups/modals/createBackup/disks/tableView/TableView.vue +105 -0
  21. package/components/common/pages/backups/modals/createBackup/disks/tableView/lib/config/keys.ts +12 -0
  22. package/components/common/pages/backups/modals/createBackup/disks/tableView/lib/config/table.ts +117 -0
  23. package/components/common/pages/backups/modals/createBackup/disks/tableView/lib/models/interfaces.ts +4 -0
  24. package/components/common/pages/backups/modals/createBackup/disks/tableView/lib/models/types.ts +10 -0
  25. package/components/common/pages/backups/modals/createBackup/general/General.vue +48 -0
  26. package/components/common/pages/backups/modals/createBackup/lib/config/createBackup.ts +14 -0
  27. package/components/common/pages/backups/modals/createBackup/lib/config/steps.ts +117 -0
  28. package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +12 -0
  29. package/components/common/pages/backups/modals/createBackup/lib/models/interfaces.ts +8 -0
  30. package/components/common/pages/backups/modals/createBackup/readyToComplete/ReadyToComplete.vue +15 -0
  31. package/components/common/pages/backups/modals/lib/config/createBackup.ts +16 -0
  32. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -0
  33. package/components/common/pages/backups/modals/lib/models/interfaces.ts +164 -0
  34. package/components/common/pages/backups/modals/restore/Restore.vue +388 -0
  35. package/components/common/pages/backups/modals/restore/disks/Disks.vue +28 -0
  36. package/components/common/pages/backups/modals/restore/disks/tableView/TableView.vue +101 -0
  37. package/components/common/pages/backups/modals/restore/disks/tableView/lib/config/keys.ts +14 -0
  38. package/components/common/pages/backups/modals/restore/disks/tableView/lib/config/table.ts +114 -0
  39. package/components/common/pages/backups/modals/restore/disks/tableView/lib/models/interfaces.ts +4 -0
  40. package/components/common/pages/backups/modals/restore/disks/tableView/lib/models/types.ts +10 -0
  41. package/components/common/pages/backups/modals/restore/lib/config/steps.ts +92 -0
  42. package/components/common/pages/backups/modals/restore/name/Name.vue +159 -0
  43. package/components/common/pages/backups/modals/restore/networks/Networks.vue +67 -0
  44. package/components/common/pages/backups/modals/restore/networks/table/Table.vue +216 -0
  45. package/components/common/pages/backups/modals/restore/networks/table/adapterType/AdapterType.vue +32 -0
  46. package/components/common/pages/backups/modals/restore/networks/table/adapterType/lib/config/options.ts +8 -0
  47. package/components/common/pages/backups/modals/restore/networks/table/lib/config/networkTable.ts +82 -0
  48. package/components/common/pages/backups/modals/restore/networks/table/lib/config/tableKeys.ts +10 -0
  49. package/components/common/pages/backups/modals/restore/networks/table/lib/models/types.ts +6 -0
  50. package/components/common/pages/backups/modals/restore/types/Types.vue +61 -0
  51. package/components/common/pages/backups/modals/restore/types/lib/config/descriptions.ts +7 -0
  52. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +24 -0
  53. package/components/common/pages/backups/tools/Tools.vue +75 -0
  54. package/components/common/pages/backups/tools/lib/config/tabs.ts +36 -0
  55. package/components/common/pages/scheduledTasks/lib/models/interfaces.ts +35 -0
  56. package/components/common/pages/scheduledTasks/lib/models/types.ts +16 -0
  57. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -0
  58. package/components/common/treeView/TreeView.vue +52 -0
  59. package/lib/models/interfaces.ts +1 -1
  60. package/package.json +1 -1
  61. /package/components/common/{backup/actions → pages/backups/modals}/deleteBackup/DeleteBackup.vue +0 -0
@@ -33,7 +33,7 @@ const props = withDefaults(
33
33
  isLoading?: boolean
34
34
  }>(),
35
35
  {
36
- isLoading: boolean,
36
+ isLoading: false,
37
37
  }
38
38
  )
39
39
  const emits = defineEmits<{
@@ -0,0 +1,102 @@
1
+ <template>
2
+ <div class="main-content-backups h-full overflow-hidden">
3
+ <common-pages-backups-tools
4
+ :project="props.project"
5
+ :backups-count="backupsTree.length"
6
+ :backups-loading="backupsLoading"
7
+ :selected-node="selectedNode"
8
+ :target-type="typeFromRoute"
9
+ @select="onShowModal"
10
+ />
11
+
12
+ <atoms-loader-pre-loader
13
+ v-show="backupsLoading"
14
+ id="loader"
15
+ :show="true"
16
+ class="backups-loading w-full h-full flex items-center justify-center"
17
+ test-id="backups-tree-spinner"
18
+ />
19
+ <div class="fill-parent w-full h-full">
20
+ <div v-if="backupsTree.length" class="backup-view mt-1 flex w-full">
21
+ <common-tree-view
22
+ :loading="backupsLoading"
23
+ :nodes="backupsTree"
24
+ @select-node="onSelectNode"
25
+ @show-nodes="onShowNodes"
26
+ />
27
+ <common-pages-backups-detail-view :detail="detailData" />
28
+ </div>
29
+ <div v-else class="empty-block flex justify-center items-center w-full">
30
+ {{ localization.common.noBackupAvailable }}
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </template>
35
+
36
+ <script setup lang="ts">
37
+ import type { UI_T_Project } from '~/lib/models/types'
38
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
39
+ import type {
40
+ UI_T_TargetType,
41
+ UI_T_BackupActionType,
42
+ } from '~/components/common/pages/backups/lib/models/types'
43
+ import type {
44
+ UI_I_Backup,
45
+ UI_I_BackupsTreeNode,
46
+ } from '~/components/common/pages/backups/lib/models/interfaces'
47
+
48
+ const props = defineProps<{
49
+ project: UI_T_Project
50
+ backups: UI_I_Backup[]
51
+ backupsTree: UI_I_BackupsTreeNode[]
52
+ backupsLoading: boolean
53
+ selectedNode: UI_I_BackupsTreeNode
54
+ }>()
55
+ const emits = defineEmits<{
56
+ (event: 'select-node', value: string | number): void
57
+ (event: 'show-nodes', value: string | number): void
58
+ (event: 'set-action', value: UI_T_BackupActionType): void
59
+ }>()
60
+
61
+ const localization = computed<UI_I_Localization>(() => useLocal())
62
+ const { $recursion }: any = useNuxtApp()
63
+
64
+ const typeFromRoute = computed<UI_T_TargetType>(
65
+ () => useRoute().params.type.toString() as UI_T_TargetType
66
+ )
67
+
68
+ const detailData = computed<UI_I_BackupsTreeNode | null>(() => {
69
+ const node =
70
+ $recursion.find(props.backupsTree, true, 'isActive', 'nodes') || null
71
+ return node?.type === 'backup' ? node : null
72
+ })
73
+
74
+ const onSelectNode = (item: UI_I_BackupsTreeNode): void => {
75
+ emits('select-node', item.id)
76
+ if (item.type === 'group') {
77
+ onShowNodes(item.id.toString())
78
+ }
79
+ }
80
+ const onShowNodes = (id: string | number): void => {
81
+ emits('show-nodes', id)
82
+ }
83
+
84
+ const onShowModal = (action: UI_T_BackupActionType): void => {
85
+ emits('set-action', action)
86
+ }
87
+ </script>
88
+
89
+ <style scoped lang="scss">
90
+ .main-content-backups {
91
+ padding: 10px 5px 10px 0;
92
+
93
+ .fill-parent {
94
+ overflow: visible;
95
+
96
+ .backup-view {
97
+ // TODO fix
98
+ height: calc(90% - 24px);
99
+ }
100
+ }
101
+ }
102
+ </style>
@@ -0,0 +1,52 @@
1
+ <template>
2
+ <div class="detail-view overflow-auto py-0 px-6">
3
+ <table v-if="detailData" class="table table-noborder">
4
+ <tbody>
5
+ <tr>
6
+ <td class="left">{{ localization.common.name }}</td>
7
+ <td class="left backup-name-label">{{ detailData.name }}</td>
8
+ </tr>
9
+ <tr>
10
+ <td class="left">{{ localization.common.description }}</td>
11
+ <td class="left backup-name-label">{{ detailData.description }}</td>
12
+ </tr>
13
+ <tr>
14
+ <td class="left">{{ localization.common.timestamp }}</td>
15
+ <td class="left backup-name-label">{{ detailData.timestamp }}</td>
16
+ </tr>
17
+ </tbody>
18
+ </table>
19
+ </div>
20
+ </template>
21
+
22
+ <script setup lang="ts">
23
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
24
+ import type { UI_I_BackupsTreeNode } from '~/components/common/pages/backups/lib/models/interfaces'
25
+
26
+ const props = defineProps<{
27
+ detail: UI_I_BackupsTreeNode | null
28
+ }>()
29
+
30
+ const localization = computed<UI_I_Localization>(() => useLocal())
31
+
32
+ const detailData = ref<UI_I_BackupsTreeNode | null>(null)
33
+ watch(
34
+ () => props.detail,
35
+ (newValue) => {
36
+ detailData.value = newValue
37
+ },
38
+ { immediate: true, deep: true }
39
+ )
40
+ </script>
41
+
42
+ <style scoped lang="scss">
43
+ .detail-view {
44
+ width: 50%;
45
+
46
+ .table {
47
+ .left:not(.backup-name-label) {
48
+ width: 320px;
49
+ }
50
+ }
51
+ }
52
+ </style>
@@ -0,0 +1,24 @@
1
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
2
+
3
+ export interface API_UI_I_Backup {
4
+ creation_time: number
5
+ creation_type: number
6
+ description: string
7
+ kind: number // TODO
8
+ msg: string
9
+ name: string
10
+ state: number // TODO
11
+ uuid: string
12
+ vm_name: string
13
+ vmid: string
14
+ storage_id: string
15
+ storage_name: string
16
+ }
17
+
18
+ export interface UI_I_Backup extends API_UI_I_Backup {}
19
+
20
+ export interface UI_I_BackupsTreeNode extends UI_I_TreeNode<UI_I_BackupsTreeNode> {
21
+ parent_id: string
22
+ timestamp: string
23
+ description: string
24
+ }
@@ -0,0 +1,7 @@
1
+ export type UI_T_TargetType = 'vm' | 'bucket'
2
+
3
+ export type UI_T_BackupActionType =
4
+ | 'createBackup'
5
+ | 'restore'
6
+ | 'delete'
7
+ | 'deleteAll'
@@ -0,0 +1,229 @@
1
+ <template>
2
+ <common-pages-backups-modals-create-backup
3
+ v-if="isShowCreateBackupModal.isShow"
4
+ v-model="backupForm"
5
+ v-model:scheduler-form="schedulerTaskForm"
6
+ :is-scheduled-tasks="isShowCreateBackupModal.scheduler.isSchedulerTask"
7
+ :is-edit-scheduled-tasks="isShowCreateBackupModal.scheduler.editTask"
8
+ :target="props.target"
9
+ :selected-vm-name="props.selectedVmName"
10
+ :disks="props.disks"
11
+ :disks-loading="props.disksLoading"
12
+ :datastore-table="props.datastoreTable"
13
+ :datastore-table-loading="props.datastoreTableLoading"
14
+ @change-step-create-backup="onChangeStepCreateBackup"
15
+ @finish="onCreateBackup"
16
+ @hide="onHide"
17
+ />
18
+
19
+ <common-pages-backups-modals-restore
20
+ v-if="isShowRestoreModal"
21
+ v-model="restoreForm"
22
+ :datastore="props.restoreDatastore"
23
+ :datastore-loading="props.isRestoreDatastoreLoading"
24
+ :networks="props.restoreNetworks"
25
+ @get-datastore="onGetRestoreDatastore"
26
+ @get-networks="onGetRestoreNetworks"
27
+ @check-name="onCheckRestoreName"
28
+ @finish="onRestore"
29
+ @hide="onHide"
30
+ />
31
+
32
+ <common-pages-backups-modals-delete-backup
33
+ v-if="isShowDeleteBackupModal"
34
+ :name="action.name"
35
+ :is-loading="isLoadingDeleteBackup"
36
+ @remove="onDeleteBackup"
37
+ @hide="onHide"
38
+ />
39
+ <common-pages-backups-modals-delete-backup
40
+ v-if="isShowDeleteAllBackupsModal"
41
+ is-all
42
+ :is-loading="isLoadingDeleteBackup"
43
+ @remove="onDeleteBackup"
44
+ @hide="onHide"
45
+ />
46
+ </template>
47
+
48
+ <script lang="ts" setup>
49
+ import { sendTask } from '~/lib/utils/sendTask'
50
+ import type { UI_T_Project } from '~/lib/models/types'
51
+ import type { UI_I_SendTaskParams } from '~/lib/models/interfaces'
52
+ import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
53
+ import type {
54
+ UI_I_CreateBackupForm,
55
+ UI_I_CreateBackupFormDiskDevice,
56
+ UI_I_RestoreForm,
57
+ } from '~/components/common/pages/backups/modals/lib/models/interfaces'
58
+ import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
59
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
60
+ import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
61
+ import { scheduledTaskDefaultFormFunc } from '~/components/common/pages/scheduledTasks/modals/lib/config/createScheduledTask'
62
+ import { backupDefaultFormFunc } from '~/components/common/pages/backups/modals/lib/config/createBackup'
63
+ import { restoreDefaultFormFunc } from '~/components/common/pages/backups/modals/lib/config/restore'
64
+ import { scheduledTasks } from '~/components/common/pages/scheduledTasks/lib/utils/utils'
65
+
66
+ const action = defineModel<I_ActionPayload>('action', { required: true })
67
+
68
+ const props = defineProps<{
69
+ project: UI_T_Project
70
+ target: string
71
+ selectedVmName: string
72
+ disks: UI_I_CreateBackupFormDiskDevice[]
73
+ disksLoading: boolean
74
+ datastoreTable: any // ??
75
+ datastoreTableLoading: boolean
76
+ restoreDatastore: UI_I_DatastoreTableItem[]
77
+ isRestoreDatastoreLoading: boolean
78
+ restoreNetworks: UI_I_NetworkTableItem[]
79
+ }>()
80
+ const emits = defineEmits<{
81
+ (event: 'change-step-create-backup', value: UI_I_WizardStep[]): void
82
+ (event: 'get-restore-datastore', value: string): void
83
+ (event: 'get-restore-networks', value: string): void
84
+ (event: 'check-restore-name', value: any): void // ??
85
+ (event: 'delete-backup', value: boolean): void
86
+ }>()
87
+
88
+ const { $store }: any = useNuxtApp()
89
+
90
+ const idFromRoute = useRoute().params.id?.toString() || ''
91
+
92
+ const backupForm = ref<UI_I_CreateBackupForm>(
93
+ useDeepCopy(backupDefaultFormFunc())
94
+ )
95
+ backupForm.value.target = props.target
96
+
97
+ const schedulerTaskForm = ref<UI_I_ScheduleNewTasksForm>(
98
+ useDeepCopy(scheduledTaskDefaultFormFunc())
99
+ )
100
+
101
+ const restoreForm = ref<UI_I_RestoreForm>(useDeepCopy(restoreDefaultFormFunc()))
102
+ const deleteBackupId = ref<string>('')
103
+
104
+ // TODO
105
+ const isShowCreateBackupModal = computed<any>( // ??
106
+ () => $store.getters['backup/getCreateBackupModal']
107
+ )
108
+ const isShowDeleteBackupModal = ref<boolean>(false)
109
+ const isShowDeleteAllBackupsModal = ref<boolean>(false)
110
+ const isLoadingDeleteBackup = ref<boolean>(false)
111
+ const isShowRestoreModal = ref<boolean>(false)
112
+
113
+ const onCreateBackup = (): void => {
114
+ const backupTask: UI_I_SendTaskParams = {
115
+ method:
116
+ props.project === 'sphere'
117
+ ? 'VirtualMachines.CreateBackup'
118
+ : 'backup.create_backup',
119
+ target: idFromRoute,
120
+ args: backupForm.value,
121
+ }
122
+
123
+ const {
124
+ scheduler: { isSchedulerTask, editTask, data },
125
+ } = isShowCreateBackupModal.value
126
+ const sendData = isSchedulerTask
127
+ ? scheduledTasks(
128
+ schedulerTaskForm.value,
129
+ backupTask,
130
+ idFromRoute,
131
+ editTask,
132
+ data,
133
+ props.project
134
+ )
135
+ : backupTask
136
+
137
+ sendTask(sendData)
138
+ onHide()
139
+ }
140
+
141
+ const onDeleteBackup = async (isAll: boolean): Promise<void> => {
142
+ isLoadingDeleteBackup.value = true
143
+ emits('delete-backup', isAll)
144
+ isLoadingDeleteBackup.value = false
145
+ onHide()
146
+ }
147
+
148
+ const onRestore = (): void => {
149
+ sendTask({
150
+ args: restoreForm.value,
151
+ method:
152
+ props.project === 'sphere'
153
+ ? 'VirtualMachines.RestoreBackup'
154
+ : 'backup.restore_backup',
155
+ target: props.target,
156
+ })
157
+ onHide()
158
+ }
159
+
160
+ watch(
161
+ action,
162
+ (newValue) => {
163
+ switch (newValue.action) {
164
+ case 'createBackup':
165
+ // TODO
166
+ $store.dispatch('backup/A_SHOW_CREATE_BACKUP_MODAL', {
167
+ isShow: true,
168
+ scheduler: {
169
+ isSchedulerTask: false,
170
+ editTask: false,
171
+ data: null,
172
+ },
173
+ })
174
+ break
175
+ case 'restore':
176
+ isShowRestoreModal.value = true
177
+ restoreForm.value.backup_storage = newValue.storageId || ''
178
+ restoreForm.value.bucket = newValue.bucketId || ''
179
+ restoreForm.value.backup = newValue.backupId || ''
180
+ break
181
+ case 'deleteBackup':
182
+ deleteBackupId.value = newValue.backupId || ''
183
+ isShowDeleteBackupModal.value = true
184
+ break
185
+ case 'deleteAll':
186
+ isShowDeleteAllBackupsModal.value = true
187
+ break
188
+ }
189
+ },
190
+ { deep: true }
191
+ )
192
+
193
+ const onHide = (): void => {
194
+ // TODO
195
+ $store.dispatch('backup/A_SHOW_CREATE_BACKUP_MODAL', {
196
+ isShow: false,
197
+ scheduler: {
198
+ isSchedulerTask: false,
199
+ editTask: false,
200
+ data: null,
201
+ },
202
+ })
203
+ isShowRestoreModal.value = false
204
+ isShowDeleteBackupModal.value = false
205
+ isShowDeleteAllBackupsModal.value = false
206
+
207
+ action.value.action = ''
208
+ backupForm.value = useDeepCopy(backupDefaultFormFunc())
209
+ backupForm.value.target = props.target
210
+ restoreForm.value = useDeepCopy(restoreDefaultFormFunc())
211
+ }
212
+
213
+ const onChangeStepCreateBackup = (value: UI_I_WizardStep[]): void => {
214
+ emits('change-step-create-backup', value)
215
+ }
216
+
217
+ const onGetRestoreDatastore = (bucket: string): void => {
218
+ emits('get-restore-datastore', bucket)
219
+ }
220
+ const onGetRestoreNetworks = (hostId: string): void => {
221
+ emits('get-restore-networks', hostId)
222
+ }
223
+ const onCheckRestoreName = (data: any): void => {
224
+ // ??
225
+ emits('check-restore-name', data)
226
+ }
227
+ </script>
228
+
229
+ <style lang="scss" scoped></style>