bfg-common 1.6.76 → 1.6.78

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 (138) hide show
  1. package/assets/localization/local_be.json +1 -14
  2. package/assets/localization/local_en.json +1 -14
  3. package/assets/localization/local_hy.json +1 -14
  4. package/assets/localization/local_kk.json +1 -14
  5. package/assets/localization/local_ru.json +1 -14
  6. package/assets/localization/local_zh.json +1 -14
  7. package/components/atoms/dropdown/dropdown/Dropdown.vue +170 -170
  8. package/components/atoms/dropdown/dropdown/lib/models/interfaces.ts +10 -10
  9. package/components/common/adapterManager/AdapterManager.vue +473 -473
  10. package/components/common/adapterManager/AdapterManagerOld.vue +498 -498
  11. package/components/common/adapterManager/addAdapterModal/AddAdapterModal.vue +70 -70
  12. package/components/common/adapterManager/addAdapterModal/AddAdapterModalNew.vue +110 -110
  13. package/components/common/adapterManager/addAdapterModal/AddAdapterModalOld.vue +531 -531
  14. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModal.vue +32 -32
  15. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalNew.vue +37 -37
  16. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalOld.vue +73 -73
  17. package/components/common/adapterManager/lib/config/index.ts +19 -19
  18. package/components/common/adapterManager/noActiveAdaptersModal/NoActiveAdaptersModal.vue +31 -31
  19. package/components/common/adapterManager/noActiveAdaptersModal/NoActiveAdaptersModalNew.vue +34 -34
  20. package/components/common/adapterManager/noActiveAdaptersModal/NoActiveAdaptersModalOld.vue +57 -57
  21. package/components/common/adapterManager/noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModal.vue +31 -31
  22. package/components/common/adapterManager/noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModalNew.vue +34 -34
  23. package/components/common/adapterManager/noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModalOld.vue +57 -57
  24. package/components/common/adapterManager/ui/actions/AddAdapterButton.vue +34 -34
  25. package/components/common/adapterManager/ui/actions/RemoveAdapterButton.vue +41 -41
  26. package/components/common/adapterManager/ui/actions/VerticalSeparator.vue +10 -10
  27. package/components/common/adapterManager/ui/actions/bar/BarOld.vue +95 -95
  28. package/components/common/adapterManager/ui/actions/moveDownAdapterButton/MoveDownAdapterButton.vue +28 -28
  29. package/components/common/adapterManager/ui/actions/moveDownAdapterButton/MoveDownAdapterButtonNew.vue +76 -76
  30. package/components/common/adapterManager/ui/actions/moveDownAdapterButton/MoveDownAdapterButtonOld.vue +33 -33
  31. package/components/common/adapterManager/ui/actions/moveUpAdapterButton/MoveUpAdapterButton.vue +28 -28
  32. package/components/common/adapterManager/ui/actions/moveUpAdapterButton/MoveUpAdapterButtonNew.vue +77 -77
  33. package/components/common/adapterManager/ui/actions/moveUpAdapterButton/MoveUpAdapterButtonOld.vue +33 -33
  34. package/components/common/adapterManager/ui/noSelectedAdapter/NoSelectedAdapter.vue +24 -24
  35. package/components/common/adapterManager/ui/noSelectedAdapter/NoSelectedAdapterNew.vue +18 -18
  36. package/components/common/adapterManager/ui/noSelectedAdapter/NoSelectedAdapterOld.vue +38 -38
  37. package/components/common/adapterManager/ui/secondTitle/SecondTitle.vue +31 -31
  38. package/components/common/adapterManager/ui/secondTitle/SecondTitleNew.vue +51 -51
  39. package/components/common/adapterManager/ui/secondTitle/SecondTitleOld.vue +35 -35
  40. package/components/common/adapterManager/ui/table/Table.vue +88 -88
  41. package/components/common/adapterManager/ui/table/TableNew.vue +137 -137
  42. package/components/common/adapterManager/ui/table/TableOld.vue +141 -141
  43. package/components/common/adapterManager/ui/table/adapters/Adapters.vue +44 -44
  44. package/components/common/adapterManager/ui/table/adapters/AdaptersNew.vue +187 -187
  45. package/components/common/adapterManager/ui/table/adapters/AdaptersOld.vue +87 -87
  46. package/components/common/adapterManager/ui/table/header/Header.vue +57 -57
  47. package/components/common/adapterManager/ui/table/header/HeaderNew.vue +81 -81
  48. package/components/common/adapterManager/ui/table/header/HeaderOld.vue +79 -79
  49. package/components/common/adapterManager/ui/table/lib/models/types.ts +1 -1
  50. package/components/common/certificate/Certificate.vue +6 -16
  51. package/components/common/certificate/{Info/Old.vue → CertificateInfo.vue} +34 -6
  52. package/components/common/certificate/{tools/Tools.vue → Tools.vue} +23 -18
  53. package/components/common/certificate/lib/config/tabsPannel.ts +22 -0
  54. package/components/common/diagramMain/adapter/Adapter.vue +123 -123
  55. package/components/common/diagramMain/adapter/AdapterItem.vue +438 -438
  56. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  57. package/components/common/diagramMain/adapter/Contents.vue +212 -212
  58. package/components/common/diagramMain/adapter/Lines.vue +81 -81
  59. package/components/common/diagramMain/adapter/block/Block.vue +27 -27
  60. package/components/common/diagramMain/adapter/block/BlockNew.vue +58 -58
  61. package/components/common/diagramMain/adapter/block/BlockOld.vue +50 -50
  62. package/components/common/diagramMain/adapter/secondBlock/SecondBlock.vue +27 -27
  63. package/components/common/diagramMain/adapter/secondBlock/SecondBlockNew.vue +60 -60
  64. package/components/common/diagramMain/adapter/secondBlock/SecondBlockOld.vue +51 -51
  65. package/components/common/diagramMain/highlights/Highlights.vue +151 -151
  66. package/components/common/diagramMain/highlights/HighlightsNew.vue +124 -124
  67. package/components/common/diagramMain/highlights/HighlightsOld.vue +107 -107
  68. package/components/common/diagramMain/lib/config/index.ts +81 -81
  69. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  70. package/components/common/diagramMain/lib/config/positions.ts +194 -194
  71. package/components/common/diagramMain/lib/models/enums.ts +44 -44
  72. package/components/common/diagramMain/lib/models/interfaces.ts +760 -760
  73. package/components/common/diagramMain/lib/models/types.ts +21 -21
  74. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  75. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +331 -331
  76. package/components/common/diagramMain/modals/Modals.vue +483 -483
  77. package/components/common/diagramMain/modals/lib/config/adapterModal.ts +147 -147
  78. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  79. package/components/common/diagramMain/modals/lib/config/networkModal.ts +405 -405
  80. package/components/common/diagramMain/modals/lib/config/portModal.ts +253 -253
  81. package/components/common/diagramMain/modals/lib/config/switchModal.ts +245 -245
  82. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  83. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  84. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +88 -88
  85. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +541 -541
  86. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  87. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +170 -170
  88. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  89. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/VmkernelAdapterReadyComplete.vue +49 -49
  90. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +19 -19
  91. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  92. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  93. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  94. package/components/common/diagramMain/modals/remove/RemoveModal.vue +82 -82
  95. package/components/common/diagramMain/modals/remove/RemoveModalNew.vue +106 -106
  96. package/components/common/diagramMain/modals/remove/RemoveModalOld.vue +241 -241
  97. package/components/common/diagramMain/modals/viewSettings/info/Info.vue +57 -57
  98. package/components/common/diagramMain/modals/viewSettings/info/InfoNew.vue +174 -174
  99. package/components/common/diagramMain/modals/viewSettings/info/InfoOld.vue +141 -141
  100. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettings.vue +45 -45
  101. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettingsNew.vue +323 -323
  102. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettingsOld.vue +203 -203
  103. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModal.vue +60 -60
  104. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModalNew.vue +50 -50
  105. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModalOld.vue +70 -70
  106. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/lib/models/interfaces.ts +48 -48
  107. package/components/common/diagramMain/network/Contents.vue +497 -497
  108. package/components/common/diagramMain/network/Lines.vue +107 -107
  109. package/components/common/diagramMain/network/Network.vue +141 -141
  110. package/components/common/diagramMain/network/block/Block.vue +37 -37
  111. package/components/common/diagramMain/network/block/BlockNew.vue +68 -68
  112. package/components/common/diagramMain/network/block/BlockOld.vue +64 -64
  113. package/components/common/diagramMain/network/noNetwork/NoNetwork.vue +12 -12
  114. package/components/common/diagramMain/network/noNetwork/NoNetworkNew.vue +89 -89
  115. package/components/common/diagramMain/network/noNetwork/NoNetworkOld.vue +61 -61
  116. package/components/common/diagramMain/network/secondBlock/SecondBlock.vue +41 -41
  117. package/components/common/diagramMain/network/secondBlock/SecondBlockNew.vue +64 -64
  118. package/components/common/diagramMain/network/secondBlock/SecondBlockOld.vue +60 -60
  119. package/components/common/diagramMain/port/Port.vue +580 -580
  120. package/components/common/diagramMain/port/Ports.vue +47 -47
  121. package/components/common/diagramMain/switch/Switch.vue +180 -180
  122. package/components/common/diagramMain/switch/SwitchSelected.vue +111 -111
  123. package/components/common/monitor/advanced/table/tableOld/TableOld.vue +93 -93
  124. package/components/common/monitor/utilization/lib/models/enums.ts +4 -4
  125. package/components/common/split/horizontal/New.vue +1 -1
  126. package/components/common/split/horizontal/Old.vue +1 -1
  127. package/package.json +2 -2
  128. package/components/common/certificate/Info/Info.vue +0 -61
  129. package/components/common/certificate/Info/new/New.vue +0 -285
  130. package/components/common/certificate/Info/new/lib/config/index.ts +0 -59
  131. package/components/common/certificate/Info/new/lib/models/interfaces.ts +0 -3
  132. package/components/common/certificate/Info/new/lib/utils/index.ts +0 -10
  133. package/components/common/certificate/Old.vue +0 -27
  134. package/components/common/certificate/new/New.vue +0 -30
  135. package/components/common/certificate/new/Skeleton.vue +0 -155
  136. package/components/common/certificate/tools/New.vue +0 -48
  137. package/components/common/certificate/tools/Old.vue +0 -39
  138. package/components/common/certificate/tools/lib/config/tabsPannel.ts +0 -20
@@ -1,541 +1,541 @@
1
- <template>
2
- <atoms-wizard
3
- v-model:show="props.show"
4
- :wizard="wizard"
5
- :selected-scheme="selectedScheme"
6
- :title="title"
7
- :localization="localization"
8
- :class="[
9
- 'migrate-vm-kernel-modal',
10
- {
11
- 'is-dark': props.isDarkMode,
12
- },
13
- ]"
14
- @change-steps="onChangeSteps"
15
- @hide="onHide"
16
- @submit="onSubmit"
17
- >
18
- <template #modalBody="{ selectedStep }">
19
- <common-diagram-main-modals-migrate-vmkernel-adapter-steps-select-vmkernel-adapter
20
- v-if="selectedStep.id === 0"
21
- :vmkernel-adapter="vmkernelAdapter"
22
- :table-data="filteredNetworksList"
23
- :alert-messages="alertMessages[0]"
24
- @hide-alert="onHideAlert"
25
- @change-vmkernel-adapter="onChangeMigrateVmkernelAdapter"
26
- />
27
- <common-diagram-main-modals-migrate-vmkernel-adapter-steps-connection-settings
28
- v-if="selectedStep.id === 1"
29
- :connection-settings="connectionSettings"
30
- :messages-fields="selectedStep.fields"
31
- :alert-messages="alertMessages[1]"
32
- :wizard="wizard"
33
- @hide-alert="onHideAlert"
34
- @change-connection-settings="onChangeConnectionSettings"
35
- />
36
- <common-diagram-main-modals-migrate-vmkernel-adapter-steps-vmkernel-adapter-ready-complete
37
- v-if="selectedStep.id === 2"
38
- :data="readyCompleteData"
39
- />
40
- </template>
41
- </atoms-wizard>
42
- </template>
43
-
44
- <script setup lang="ts">
45
- import type {
46
- UI_I_WizardStep,
47
- UI_I_ValidationReturn,
48
- } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
49
- import Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
50
- import type { UI_I_Localization } from '~/lib/models/interfaces'
51
- import type {
52
- UI_I_Network,
53
- UI_I_VmkernelAdapterTableData,
54
- UI_I_MigrationVmkernelAdapterReadyComplete,
55
- } from '~/components/common/diagramMain/lib/models/interfaces'
56
- import type {
57
- UI_I_ConnectionSettings,
58
- UI_I_SelectVmkernelAdapter,
59
- } from '~/components/common/wizards/network/add/lib/models/interfaces'
60
- import { UI_E_MigrationValidationFields } from '~/components/common/diagramMain/lib/models/enums'
61
- import {
62
- stepsFunc,
63
- stepsSchemeInitial,
64
- } from '~/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps'
65
- import {
66
- checkNetworkAsync,
67
- checkConnectionSettingsSync,
68
- checkSelectedVmSync,
69
- } from '~/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations'
70
- import { readyCompleteInitial } from '~/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps'
71
-
72
- const props = withDefaults(
73
- defineProps<{
74
- show: boolean
75
- isDarkMode: boolean
76
- switchName?: string
77
- networksList?: UI_I_Network[]
78
- switchNetworks?: UI_I_Network[]
79
- isMigrateAdapterLoading?: boolean
80
- }>(),
81
- {
82
- switchName: '',
83
- networksList: () => [],
84
- switchNetworks: () => [],
85
- isMigrateAdapterLoading: false,
86
- }
87
- )
88
-
89
- const emits = defineEmits<{
90
- (
91
- event: 'check-network-label',
92
- networkLabel: string,
93
- cb: (error_message: string) => void
94
- ): void
95
- (event: 'hide'): void
96
- }>()
97
-
98
- const localization = computed<UI_I_Localization>(() => useLocal())
99
-
100
- const wizard: Wizard = new Wizard(
101
- stepsFunc(localization.value),
102
- stepsSchemeInitial
103
- )
104
- const selectedScheme = computed<number[]>(() => wizard.selectedScheme.value)
105
- const alertMessages = computed<string[][]>(() => wizard.alertMessages.value)
106
-
107
- const hostname = ref<string>('')
108
- const title = computed<string>(
109
- () =>
110
- `${hostname.value} - ${localization.value.common.migrateVmKernelNetworkAdapterTo} ${props.switchName}`
111
- )
112
-
113
- const connectionSettings = ref<UI_I_ConnectionSettings>({
114
- networkLabel: 'VM Network',
115
- vlanId: `${localization.value.common.none2} (0)`,
116
- })
117
-
118
- const vmkernelAdapter = ref<UI_I_SelectVmkernelAdapter>({
119
- vm: '',
120
- })
121
-
122
- const readyCompleteData =
123
- ref<UI_I_MigrationVmkernelAdapterReadyComplete>(readyCompleteInitial)
124
-
125
- const validationFunc = async (
126
- value: UI_I_WizardStep[],
127
- currentStep: UI_I_WizardStep,
128
- nextStep: UI_I_WizardStep
129
- ): Promise<UI_I_ValidationReturn> => {
130
- let stepHasError = false
131
-
132
- if (wizard.isValidateForStep(0, currentStep.id, nextStep.id)) {
133
- const selectVmkernelAdapterValidation = checkSelectedVmSync(
134
- localization.value,
135
- vmkernelAdapter.value,
136
- wizard,
137
- value
138
- )
139
-
140
- value = selectVmkernelAdapterValidation.newValue
141
-
142
- stepHasError = stepHasError || selectVmkernelAdapterValidation.stepHasError
143
- }
144
-
145
- if (wizard.isValidateForStep(1, currentStep.id, nextStep.id)) {
146
- const labelValidation = await checkNetworkAsync(
147
- value,
148
- connectionSettings.value.networkLabel,
149
- 1,
150
- UI_E_MigrationValidationFields.CONNECTION_SETTINGS_NETWORK,
151
- emits,
152
- localization.value,
153
- wizard
154
- )
155
-
156
- value = labelValidation.newValue
157
-
158
- const connectionSettingsValidation = checkConnectionSettingsSync(
159
- localization.value,
160
- connectionSettings.value,
161
- wizard,
162
- value
163
- )
164
-
165
- value = connectionSettingsValidation.newValue
166
-
167
- stepHasError =
168
- stepHasError ||
169
- labelValidation.stepHasError ||
170
- connectionSettingsValidation.stepHasError
171
- }
172
-
173
- return {
174
- newValue: value,
175
- stepHasError,
176
- }
177
- }
178
-
179
- const finalValidationFunc = async (
180
- value: UI_I_WizardStep[]
181
- ): Promise<UI_I_ValidationReturn> => {
182
- let stepHasError = false
183
-
184
- // wizard.setLoader(true)
185
-
186
- // wizard.setLoader(false)
187
- return {
188
- stepHasError,
189
- newValue: value,
190
- }
191
- }
192
-
193
- const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> =>
194
- wizard.changeSteps(value, validationFunc, finalValidationFunc)
195
-
196
- const filteredNetworksList = ref<UI_I_VmkernelAdapterTableData[]>([])
197
-
198
- watch(
199
- () => wizard.selectedStepId,
200
- (newSelectedStepId: number) => {
201
- if (newSelectedStepId !== 2) return
202
-
203
- const from = filteredNetworksList.value.find(
204
- (network) => network.name === vmkernelAdapter.value.vm
205
- )
206
-
207
- readyCompleteData.value = {
208
- vm: vmkernelAdapter.value.vm,
209
- currentSettings: {
210
- switch: from?.switch || '',
211
- network: from?.networkLabel || '',
212
- },
213
- newSettings: {
214
- switch: props.switchName,
215
- network: connectionSettings.value.networkLabel,
216
- },
217
- vlanId: connectionSettings.value.vlanId,
218
- }
219
- }
220
- )
221
-
222
- watch(
223
- () => props.switchNetworks,
224
- (netsOnSwitch: UI_I_Network[]) => {
225
- const vmKernelNetworksIdOnSwitch = netsOnSwitch
226
- .filter((net: UI_I_Network) => net.networkType === '1')
227
- .map((net: UI_I_Network) => net.id)
228
-
229
- filteredNetworksList.value = props.networksList
230
- .filter(
231
- (net: UI_I_Network) =>
232
- net.networkType === '1' &&
233
- !vmKernelNetworksIdOnSwitch.includes(net.id)
234
- )
235
- .map((net: UI_I_Network, index: number) => ({
236
- name: net.sysx?.id || '',
237
- networkLabel: net.title,
238
- switch: net.switchName || '',
239
- ipAddress: net.sysx?.ipv4_settings.ipv4 || '--',
240
- tcp: net.sysx?.tcp_stack
241
- ? localization.value[net.sysx?.tcp_stack]
242
- : '--',
243
- id: `${net.sysx?.id || ''}-${index}`,
244
- }))
245
- },
246
- { deep: true, immediate: true }
247
- )
248
-
249
- const onChangeConnectionSettings = (
250
- newFields: UI_I_ConnectionSettings
251
- ): void => {
252
- connectionSettings.value = newFields
253
- }
254
-
255
- const onChangeMigrateVmkernelAdapter = (
256
- newFields: UI_I_SelectVmkernelAdapter
257
- ): void => {
258
- vmkernelAdapter.value = newFields
259
- }
260
-
261
- const reset = (): void => {
262
- wizard.reset()
263
- connectionSettings.value = {
264
- networkLabel: 'VM Network',
265
- vlanId: `${localization.value.common.none2} (0)`,
266
- }
267
- vmkernelAdapter.value = {
268
- vm: '',
269
- }
270
- }
271
-
272
- const onHideAlert = (stepId: number): void => {
273
- wizard.hideAlertMessagesByStepId(stepId)
274
- }
275
-
276
- const onHide = (): void => {
277
- emits('hide')
278
- reset()
279
- }
280
-
281
- const onSubmit = (): void => {
282
- onHide()
283
- }
284
-
285
- watch(
286
- () => props.isMigrateAdapterLoading,
287
- (newValue: boolean) => {
288
- wizard.setLoader(newValue)
289
- },
290
- { immediate: true }
291
- )
292
-
293
- onMounted(() => {
294
- hostname.value = location.hostname
295
- })
296
- </script>
297
-
298
- <style scoped lang="scss">
299
- .main-step-container {
300
- display: flex;
301
- }
302
-
303
- :deep(.modal) {
304
- & > .modal-dialog > .modal-content > .modal-body {
305
- height: calc(100% - 110px);
306
- }
307
- }
308
- .step-items-container {
309
- width: 230px;
310
- padding: 10px 5px 10px 6px;
311
- li {
312
- display: flex;
313
- margin: 0;
314
- height: 24.8px;
315
- span {
316
- width: 16px;
317
- }
318
- }
319
-
320
- .step-item {
321
- margin: 0;
322
- height: 24.8px;
323
- padding-left: 5px;
324
- // 0-Disabled
325
- &.status-0 {
326
- height: 24.8px;
327
- overflow: hidden;
328
- text-overflow: ellipsis;
329
- white-space: nowrap;
330
- border-bottom: 1px solid transparent;
331
- width: 189px;
332
- line-height: 24px;
333
- display: inline-block;
334
- text-decoration: none;
335
- font-weight: 700;
336
- color: #999;
337
- cursor: default;
338
- }
339
- // 1-Selected
340
- &.status-1 {
341
- background-color: #29414e;
342
- color: #ffffff;
343
- border-bottom: 1px solid transparent;
344
- overflow: hidden;
345
- text-overflow: ellipsis;
346
- white-space: nowrap;
347
- border-radius: 5px;
348
- cursor: default;
349
- width: 189px;
350
- line-height: 24px;
351
- display: inline-block;
352
- text-decoration: none;
353
- font-weight: 700;
354
- }
355
- // 2-Active
356
- &.status-2 {
357
- overflow: hidden;
358
- text-overflow: ellipsis;
359
- white-space: nowrap;
360
- border-bottom: 1px solid transparent;
361
- width: 189px;
362
- line-height: 24px;
363
- cursor: pointer;
364
- display: inline-block;
365
- text-decoration: none;
366
- font-weight: 700;
367
- color: #333;
368
- &:hover {
369
- color: #454545;
370
- background-color: #e8e8e8;
371
- border-bottom: 1px solid #666666;
372
- border-radius: 5px;
373
- }
374
- }
375
- // 3-Complete
376
- &.status-3 {
377
- overflow: hidden;
378
- text-overflow: ellipsis;
379
- white-space: nowrap;
380
- border-bottom: 1px solid transparent;
381
- width: 189px;
382
- line-height: 24px;
383
- display: inline-block;
384
- text-decoration: none;
385
- font-weight: 700;
386
- color: #333;
387
- cursor: pointer;
388
- &:hover {
389
- color: #454545;
390
- background-color: #e8e8e8;
391
- border-bottom: 1px solid #666666;
392
- text-decoration: none;
393
- border-radius: 5px;
394
- }
395
- }
396
- // 4-ActiveSelected
397
- &.status-4 {
398
- background-color: #29414e;
399
- color: #ffffff;
400
- border-bottom: 1px solid transparent;
401
- overflow: hidden;
402
- text-overflow: ellipsis;
403
- white-space: nowrap;
404
- border-radius: 5px;
405
- cursor: default;
406
- width: 189px;
407
- line-height: 24px;
408
- display: inline-block;
409
- text-decoration: none;
410
- font-weight: 700;
411
- }
412
- }
413
- }
414
- :deep(.with-underline) {
415
- & > .modal-dialog > .modal-content > .modal-header {
416
- border-bottom: 1px solid #a6a6a6;
417
- padding: 0;
418
- }
419
- & > .modal-dialog > .modal-content > .modal-body {
420
- height: calc(100% - 87px);
421
- }
422
- }
423
- :deep(.wizard-content-container.add-networking-step) {
424
- .danger-not-valid {
425
- border: 2px solid red;
426
- border-bottom: 1px solid #db2100;
427
- }
428
- .tooltip-field {
429
- margin-right: 12px;
430
- }
431
-
432
- .horizontal-flex-container {
433
- margin-bottom: 5px;
434
- min-height: 36px;
435
- display: flex;
436
- flex-direction: row;
437
- }
438
- .property-label-group {
439
- width: 140px;
440
- }
441
- .disabled {
442
- opacity: 0.4;
443
- pointer-events: none;
444
- }
445
-
446
- .wizard-content-port {
447
- .margin-left-property-value-group {
448
- margin-left: 10px;
449
- }
450
-
451
- .property-value-group {
452
- padding-left: 23px;
453
- }
454
- .horizontal-flex-container {
455
- min-height: 24px;
456
- margin-bottom: 0;
457
- }
458
-
459
- .radio {
460
- min-height: 39px;
461
- margin: 10px 0;
462
- }
463
-
464
- .form-block {
465
- margin: 12px 0 24px 0;
466
- padding-left: 23px;
467
-
468
- &.form-block-ipv {
469
- input[type='text'] {
470
- width: 143px;
471
- }
472
-
473
- .horizontal-flex-container > label {
474
- margin-right: 50px;
475
- }
476
- }
477
- }
478
-
479
- .edit-vmkernel-adapter-section {
480
- padding-top: 12px;
481
-
482
- label {
483
- input[type='checkbox'] {
484
- margin-right: 4px;
485
- transform: translateY(1px);
486
- }
487
- }
488
-
489
- .horizontal-flex-container {
490
- margin-bottom: 5px;
491
- }
492
- }
493
- .port-properties-network-label {
494
- width: 280px;
495
- }
496
- .port-properties-padding {
497
- padding-top: 8px;
498
- }
499
- .port-properties-mtu-selector {
500
- margin-right: 12px;
501
- }
502
- .port-properties-mtu-container {
503
- display: flex;
504
- }
505
- select {
506
- height: 24px;
507
- }
508
- }
509
- .nw-property-value-group {
510
- display: inline;
511
- }
512
- }
513
-
514
- .migrate-vm-kernel-modal.is-dark {
515
- :deep(.wizard-content-container) {
516
- .ready-complete-container {
517
- background-color: var(--pannel-bg-color);
518
- margin-top: 12px;
519
-
520
- span {
521
- color: var(--description-color);
522
- }
523
- }
524
-
525
- .property-label-group {
526
- color: var(--main-color-mode2);
527
- }
528
- .flex-property-label-group {
529
- color: var(--main-color-mode2);
530
- }
531
- .flex-property-value-group {
532
- select {
533
- color: #fff;
534
- }
535
- }
536
- .wizard-content-header-area .title {
537
- color: #adbbc4;
538
- }
539
- }
540
- }
541
- </style>
1
+ <template>
2
+ <atoms-wizard
3
+ v-model:show="props.show"
4
+ :wizard="wizard"
5
+ :selected-scheme="selectedScheme"
6
+ :title="title"
7
+ :localization="localization"
8
+ :class="[
9
+ 'migrate-vm-kernel-modal',
10
+ {
11
+ 'is-dark': props.isDarkMode,
12
+ },
13
+ ]"
14
+ @change-steps="onChangeSteps"
15
+ @hide="onHide"
16
+ @submit="onSubmit"
17
+ >
18
+ <template #modalBody="{ selectedStep }">
19
+ <common-diagram-main-modals-migrate-vmkernel-adapter-steps-select-vmkernel-adapter
20
+ v-if="selectedStep.id === 0"
21
+ :vmkernel-adapter="vmkernelAdapter"
22
+ :table-data="filteredNetworksList"
23
+ :alert-messages="alertMessages[0]"
24
+ @hide-alert="onHideAlert"
25
+ @change-vmkernel-adapter="onChangeMigrateVmkernelAdapter"
26
+ />
27
+ <common-diagram-main-modals-migrate-vmkernel-adapter-steps-connection-settings
28
+ v-if="selectedStep.id === 1"
29
+ :connection-settings="connectionSettings"
30
+ :messages-fields="selectedStep.fields"
31
+ :alert-messages="alertMessages[1]"
32
+ :wizard="wizard"
33
+ @hide-alert="onHideAlert"
34
+ @change-connection-settings="onChangeConnectionSettings"
35
+ />
36
+ <common-diagram-main-modals-migrate-vmkernel-adapter-steps-vmkernel-adapter-ready-complete
37
+ v-if="selectedStep.id === 2"
38
+ :data="readyCompleteData"
39
+ />
40
+ </template>
41
+ </atoms-wizard>
42
+ </template>
43
+
44
+ <script setup lang="ts">
45
+ import type {
46
+ UI_I_WizardStep,
47
+ UI_I_ValidationReturn,
48
+ } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
49
+ import Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
50
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
51
+ import type {
52
+ UI_I_Network,
53
+ UI_I_VmkernelAdapterTableData,
54
+ UI_I_MigrationVmkernelAdapterReadyComplete,
55
+ } from '~/components/common/diagramMain/lib/models/interfaces'
56
+ import type {
57
+ UI_I_ConnectionSettings,
58
+ UI_I_SelectVmkernelAdapter,
59
+ } from '~/components/common/wizards/network/add/lib/models/interfaces'
60
+ import { UI_E_MigrationValidationFields } from '~/components/common/diagramMain/lib/models/enums'
61
+ import {
62
+ stepsFunc,
63
+ stepsSchemeInitial,
64
+ } from '~/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps'
65
+ import {
66
+ checkNetworkAsync,
67
+ checkConnectionSettingsSync,
68
+ checkSelectedVmSync,
69
+ } from '~/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations'
70
+ import { readyCompleteInitial } from '~/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps'
71
+
72
+ const props = withDefaults(
73
+ defineProps<{
74
+ show: boolean
75
+ isDarkMode: boolean
76
+ switchName?: string
77
+ networksList?: UI_I_Network[]
78
+ switchNetworks?: UI_I_Network[]
79
+ isMigrateAdapterLoading?: boolean
80
+ }>(),
81
+ {
82
+ switchName: '',
83
+ networksList: () => [],
84
+ switchNetworks: () => [],
85
+ isMigrateAdapterLoading: false,
86
+ }
87
+ )
88
+
89
+ const emits = defineEmits<{
90
+ (
91
+ event: 'check-network-label',
92
+ networkLabel: string,
93
+ cb: (error_message: string) => void
94
+ ): void
95
+ (event: 'hide'): void
96
+ }>()
97
+
98
+ const localization = computed<UI_I_Localization>(() => useLocal())
99
+
100
+ const wizard: Wizard = new Wizard(
101
+ stepsFunc(localization.value),
102
+ stepsSchemeInitial
103
+ )
104
+ const selectedScheme = computed<number[]>(() => wizard.selectedScheme.value)
105
+ const alertMessages = computed<string[][]>(() => wizard.alertMessages.value)
106
+
107
+ const hostname = ref<string>('')
108
+ const title = computed<string>(
109
+ () =>
110
+ `${hostname.value} - ${localization.value.common.migrateVmKernelNetworkAdapterTo} ${props.switchName}`
111
+ )
112
+
113
+ const connectionSettings = ref<UI_I_ConnectionSettings>({
114
+ networkLabel: 'VM Network',
115
+ vlanId: `${localization.value.common.none2} (0)`,
116
+ })
117
+
118
+ const vmkernelAdapter = ref<UI_I_SelectVmkernelAdapter>({
119
+ vm: '',
120
+ })
121
+
122
+ const readyCompleteData =
123
+ ref<UI_I_MigrationVmkernelAdapterReadyComplete>(readyCompleteInitial)
124
+
125
+ const validationFunc = async (
126
+ value: UI_I_WizardStep[],
127
+ currentStep: UI_I_WizardStep,
128
+ nextStep: UI_I_WizardStep
129
+ ): Promise<UI_I_ValidationReturn> => {
130
+ let stepHasError = false
131
+
132
+ if (wizard.isValidateForStep(0, currentStep.id, nextStep.id)) {
133
+ const selectVmkernelAdapterValidation = checkSelectedVmSync(
134
+ localization.value,
135
+ vmkernelAdapter.value,
136
+ wizard,
137
+ value
138
+ )
139
+
140
+ value = selectVmkernelAdapterValidation.newValue
141
+
142
+ stepHasError = stepHasError || selectVmkernelAdapterValidation.stepHasError
143
+ }
144
+
145
+ if (wizard.isValidateForStep(1, currentStep.id, nextStep.id)) {
146
+ const labelValidation = await checkNetworkAsync(
147
+ value,
148
+ connectionSettings.value.networkLabel,
149
+ 1,
150
+ UI_E_MigrationValidationFields.CONNECTION_SETTINGS_NETWORK,
151
+ emits,
152
+ localization.value,
153
+ wizard
154
+ )
155
+
156
+ value = labelValidation.newValue
157
+
158
+ const connectionSettingsValidation = checkConnectionSettingsSync(
159
+ localization.value,
160
+ connectionSettings.value,
161
+ wizard,
162
+ value
163
+ )
164
+
165
+ value = connectionSettingsValidation.newValue
166
+
167
+ stepHasError =
168
+ stepHasError ||
169
+ labelValidation.stepHasError ||
170
+ connectionSettingsValidation.stepHasError
171
+ }
172
+
173
+ return {
174
+ newValue: value,
175
+ stepHasError,
176
+ }
177
+ }
178
+
179
+ const finalValidationFunc = async (
180
+ value: UI_I_WizardStep[]
181
+ ): Promise<UI_I_ValidationReturn> => {
182
+ let stepHasError = false
183
+
184
+ // wizard.setLoader(true)
185
+
186
+ // wizard.setLoader(false)
187
+ return {
188
+ stepHasError,
189
+ newValue: value,
190
+ }
191
+ }
192
+
193
+ const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> =>
194
+ wizard.changeSteps(value, validationFunc, finalValidationFunc)
195
+
196
+ const filteredNetworksList = ref<UI_I_VmkernelAdapterTableData[]>([])
197
+
198
+ watch(
199
+ () => wizard.selectedStepId,
200
+ (newSelectedStepId: number) => {
201
+ if (newSelectedStepId !== 2) return
202
+
203
+ const from = filteredNetworksList.value.find(
204
+ (network) => network.name === vmkernelAdapter.value.vm
205
+ )
206
+
207
+ readyCompleteData.value = {
208
+ vm: vmkernelAdapter.value.vm,
209
+ currentSettings: {
210
+ switch: from?.switch || '',
211
+ network: from?.networkLabel || '',
212
+ },
213
+ newSettings: {
214
+ switch: props.switchName,
215
+ network: connectionSettings.value.networkLabel,
216
+ },
217
+ vlanId: connectionSettings.value.vlanId,
218
+ }
219
+ }
220
+ )
221
+
222
+ watch(
223
+ () => props.switchNetworks,
224
+ (netsOnSwitch: UI_I_Network[]) => {
225
+ const vmKernelNetworksIdOnSwitch = netsOnSwitch
226
+ .filter((net: UI_I_Network) => net.networkType === '1')
227
+ .map((net: UI_I_Network) => net.id)
228
+
229
+ filteredNetworksList.value = props.networksList
230
+ .filter(
231
+ (net: UI_I_Network) =>
232
+ net.networkType === '1' &&
233
+ !vmKernelNetworksIdOnSwitch.includes(net.id)
234
+ )
235
+ .map((net: UI_I_Network, index: number) => ({
236
+ name: net.sysx?.id || '',
237
+ networkLabel: net.title,
238
+ switch: net.switchName || '',
239
+ ipAddress: net.sysx?.ipv4_settings.ipv4 || '--',
240
+ tcp: net.sysx?.tcp_stack
241
+ ? localization.value[net.sysx?.tcp_stack]
242
+ : '--',
243
+ id: `${net.sysx?.id || ''}-${index}`,
244
+ }))
245
+ },
246
+ { deep: true, immediate: true }
247
+ )
248
+
249
+ const onChangeConnectionSettings = (
250
+ newFields: UI_I_ConnectionSettings
251
+ ): void => {
252
+ connectionSettings.value = newFields
253
+ }
254
+
255
+ const onChangeMigrateVmkernelAdapter = (
256
+ newFields: UI_I_SelectVmkernelAdapter
257
+ ): void => {
258
+ vmkernelAdapter.value = newFields
259
+ }
260
+
261
+ const reset = (): void => {
262
+ wizard.reset()
263
+ connectionSettings.value = {
264
+ networkLabel: 'VM Network',
265
+ vlanId: `${localization.value.common.none2} (0)`,
266
+ }
267
+ vmkernelAdapter.value = {
268
+ vm: '',
269
+ }
270
+ }
271
+
272
+ const onHideAlert = (stepId: number): void => {
273
+ wizard.hideAlertMessagesByStepId(stepId)
274
+ }
275
+
276
+ const onHide = (): void => {
277
+ emits('hide')
278
+ reset()
279
+ }
280
+
281
+ const onSubmit = (): void => {
282
+ onHide()
283
+ }
284
+
285
+ watch(
286
+ () => props.isMigrateAdapterLoading,
287
+ (newValue: boolean) => {
288
+ wizard.setLoader(newValue)
289
+ },
290
+ { immediate: true }
291
+ )
292
+
293
+ onMounted(() => {
294
+ hostname.value = location.hostname
295
+ })
296
+ </script>
297
+
298
+ <style scoped lang="scss">
299
+ .main-step-container {
300
+ display: flex;
301
+ }
302
+
303
+ :deep(.modal) {
304
+ & > .modal-dialog > .modal-content > .modal-body {
305
+ height: calc(100% - 110px);
306
+ }
307
+ }
308
+ .step-items-container {
309
+ width: 230px;
310
+ padding: 10px 5px 10px 6px;
311
+ li {
312
+ display: flex;
313
+ margin: 0;
314
+ height: 24.8px;
315
+ span {
316
+ width: 16px;
317
+ }
318
+ }
319
+
320
+ .step-item {
321
+ margin: 0;
322
+ height: 24.8px;
323
+ padding-left: 5px;
324
+ // 0-Disabled
325
+ &.status-0 {
326
+ height: 24.8px;
327
+ overflow: hidden;
328
+ text-overflow: ellipsis;
329
+ white-space: nowrap;
330
+ border-bottom: 1px solid transparent;
331
+ width: 189px;
332
+ line-height: 24px;
333
+ display: inline-block;
334
+ text-decoration: none;
335
+ font-weight: 700;
336
+ color: #999;
337
+ cursor: default;
338
+ }
339
+ // 1-Selected
340
+ &.status-1 {
341
+ background-color: #29414e;
342
+ color: #ffffff;
343
+ border-bottom: 1px solid transparent;
344
+ overflow: hidden;
345
+ text-overflow: ellipsis;
346
+ white-space: nowrap;
347
+ border-radius: 5px;
348
+ cursor: default;
349
+ width: 189px;
350
+ line-height: 24px;
351
+ display: inline-block;
352
+ text-decoration: none;
353
+ font-weight: 700;
354
+ }
355
+ // 2-Active
356
+ &.status-2 {
357
+ overflow: hidden;
358
+ text-overflow: ellipsis;
359
+ white-space: nowrap;
360
+ border-bottom: 1px solid transparent;
361
+ width: 189px;
362
+ line-height: 24px;
363
+ cursor: pointer;
364
+ display: inline-block;
365
+ text-decoration: none;
366
+ font-weight: 700;
367
+ color: #333;
368
+ &:hover {
369
+ color: #454545;
370
+ background-color: #e8e8e8;
371
+ border-bottom: 1px solid #666666;
372
+ border-radius: 5px;
373
+ }
374
+ }
375
+ // 3-Complete
376
+ &.status-3 {
377
+ overflow: hidden;
378
+ text-overflow: ellipsis;
379
+ white-space: nowrap;
380
+ border-bottom: 1px solid transparent;
381
+ width: 189px;
382
+ line-height: 24px;
383
+ display: inline-block;
384
+ text-decoration: none;
385
+ font-weight: 700;
386
+ color: #333;
387
+ cursor: pointer;
388
+ &:hover {
389
+ color: #454545;
390
+ background-color: #e8e8e8;
391
+ border-bottom: 1px solid #666666;
392
+ text-decoration: none;
393
+ border-radius: 5px;
394
+ }
395
+ }
396
+ // 4-ActiveSelected
397
+ &.status-4 {
398
+ background-color: #29414e;
399
+ color: #ffffff;
400
+ border-bottom: 1px solid transparent;
401
+ overflow: hidden;
402
+ text-overflow: ellipsis;
403
+ white-space: nowrap;
404
+ border-radius: 5px;
405
+ cursor: default;
406
+ width: 189px;
407
+ line-height: 24px;
408
+ display: inline-block;
409
+ text-decoration: none;
410
+ font-weight: 700;
411
+ }
412
+ }
413
+ }
414
+ :deep(.with-underline) {
415
+ & > .modal-dialog > .modal-content > .modal-header {
416
+ border-bottom: 1px solid #a6a6a6;
417
+ padding: 0;
418
+ }
419
+ & > .modal-dialog > .modal-content > .modal-body {
420
+ height: calc(100% - 87px);
421
+ }
422
+ }
423
+ :deep(.wizard-content-container.add-networking-step) {
424
+ .danger-not-valid {
425
+ border: 2px solid red;
426
+ border-bottom: 1px solid #db2100;
427
+ }
428
+ .tooltip-field {
429
+ margin-right: 12px;
430
+ }
431
+
432
+ .horizontal-flex-container {
433
+ margin-bottom: 5px;
434
+ min-height: 36px;
435
+ display: flex;
436
+ flex-direction: row;
437
+ }
438
+ .property-label-group {
439
+ width: 140px;
440
+ }
441
+ .disabled {
442
+ opacity: 0.4;
443
+ pointer-events: none;
444
+ }
445
+
446
+ .wizard-content-port {
447
+ .margin-left-property-value-group {
448
+ margin-left: 10px;
449
+ }
450
+
451
+ .property-value-group {
452
+ padding-left: 23px;
453
+ }
454
+ .horizontal-flex-container {
455
+ min-height: 24px;
456
+ margin-bottom: 0;
457
+ }
458
+
459
+ .radio {
460
+ min-height: 39px;
461
+ margin: 10px 0;
462
+ }
463
+
464
+ .form-block {
465
+ margin: 12px 0 24px 0;
466
+ padding-left: 23px;
467
+
468
+ &.form-block-ipv {
469
+ input[type='text'] {
470
+ width: 143px;
471
+ }
472
+
473
+ .horizontal-flex-container > label {
474
+ margin-right: 50px;
475
+ }
476
+ }
477
+ }
478
+
479
+ .edit-vmkernel-adapter-section {
480
+ padding-top: 12px;
481
+
482
+ label {
483
+ input[type='checkbox'] {
484
+ margin-right: 4px;
485
+ transform: translateY(1px);
486
+ }
487
+ }
488
+
489
+ .horizontal-flex-container {
490
+ margin-bottom: 5px;
491
+ }
492
+ }
493
+ .port-properties-network-label {
494
+ width: 280px;
495
+ }
496
+ .port-properties-padding {
497
+ padding-top: 8px;
498
+ }
499
+ .port-properties-mtu-selector {
500
+ margin-right: 12px;
501
+ }
502
+ .port-properties-mtu-container {
503
+ display: flex;
504
+ }
505
+ select {
506
+ height: 24px;
507
+ }
508
+ }
509
+ .nw-property-value-group {
510
+ display: inline;
511
+ }
512
+ }
513
+
514
+ .migrate-vm-kernel-modal.is-dark {
515
+ :deep(.wizard-content-container) {
516
+ .ready-complete-container {
517
+ background-color: var(--pannel-bg-color);
518
+ margin-top: 12px;
519
+
520
+ span {
521
+ color: var(--description-color);
522
+ }
523
+ }
524
+
525
+ .property-label-group {
526
+ color: var(--main-color-mode2);
527
+ }
528
+ .flex-property-label-group {
529
+ color: var(--main-color-mode2);
530
+ }
531
+ .flex-property-value-group {
532
+ select {
533
+ color: #fff;
534
+ }
535
+ }
536
+ .wizard-content-header-area .title {
537
+ color: #adbbc4;
538
+ }
539
+ }
540
+ }
541
+ </style>