bfg-common 1.6.18 → 1.6.20

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.
@@ -3790,7 +3790,8 @@
3790
3790
  "rangeDuplicate": "Працэсар {0} пазначаны больш за адзін раз",
3791
3791
  "invalidFormat": "Няправільны фармат: \"{0}\". Выкарыстоўвайце лікі (напрыклад, \"0\") або дыяпазоны (напрыклад, \"0-3\")",
3792
3792
  "encriptionPolicy": "Палітыка шыфравання",
3793
- "maxParallel": "Максімальная паралель"
3793
+ "maxParallel": "Максімальная паралель",
3794
+ "lastCloneSubtitle": "Праглядзіце дэталі перад клонаваннем віртуальнай машыны."
3794
3795
  },
3795
3796
  "feedback": {
3796
3797
  "additionalDetailsHelp": "Даведка па дадатковых звестках",
@@ -3794,7 +3794,8 @@
3794
3794
  "rangeDuplicate": "Processor {0} is specified more than once",
3795
3795
  "invalidFormat": "Invalid format: \"{0}\". Use numbers (e.g., \"0\") or ranges (e.g., \"0-3\")",
3796
3796
  "encriptionPolicy": "Encription Policy",
3797
- "maxParallel": "Max parallel"
3797
+ "maxParallel": "Max parallel",
3798
+ "lastCloneSubtitle": "Review the details before the virtual machine is cloned."
3798
3799
  },
3799
3800
  "feedback": {
3800
3801
  "additionalDetailsHelp": "Additional Details Help",
@@ -3794,7 +3794,8 @@
3794
3794
  "rangeDuplicate": "Պրոցեսոր {0}-ը նշված է մեկից ավելի անգամ",
3795
3795
  "invalidFormat": "Անվավեր ձևաչափ: \"{0}\". Օգտագործեք թվեր (օրինակ՝ \"0\") կամ տիրույթներ (օրինակ՝ \"0-3\")",
3796
3796
  "encriptionPolicy": "Կոդավորման քաղաքականություն",
3797
- "maxParallel": "Առավելագույն զուգահեռ"
3797
+ "maxParallel": "Առավելագույն զուգահեռ",
3798
+ "lastCloneSubtitle": "Վերանայեք մանրամասները նախքան վիրտուալ մեքենայի կլոնավորումը:"
3798
3799
  },
3799
3800
  "feedback": {
3800
3801
  "additionalDetailsHelp": "Լրացուցիչ մանրամասներ Օգնություն",
@@ -3793,7 +3793,8 @@
3793
3793
  "rangeDuplicate": "{0} процессоры бірнеше рет көрсетілген",
3794
3794
  "invalidFormat": "Қате пішім: \"{0}\". Сандарды (мысалы, \"0\") немесе ауқымдарды (мысалы, \"0-3\") пайдаланыңыз",
3795
3795
  "encriptionPolicy": "Шифрлау саясаты",
3796
- "maxParallel": "Максималды параллель"
3796
+ "maxParallel": "Максималды параллель",
3797
+ "lastCloneSubtitle": "Виртуалды машинаны клондау алдында мәліметтерді қарап шығыңыз."
3797
3798
  },
3798
3799
  "feedback": {
3799
3800
  "additionalDetailsHelp": "Қосымша мәліметтер анықтамасы",
@@ -3793,7 +3793,8 @@
3793
3793
  "rangeDuplicate": "Процессор {0} указан более одного раза",
3794
3794
  "invalidFormat": "Неверный формат: \"{0}\". Используйте числа (например, \"0\") или диапазоны (например, \"0-3\")",
3795
3795
  "encriptionPolicy": "Политика шифрования",
3796
- "maxParallel": "Максимальная параллель"
3796
+ "maxParallel": "Максимальная параллель",
3797
+ "lastCloneSubtitle": "Просмотрите сведения перед клонированием виртуальной машины."
3797
3798
  },
3798
3799
  "feedback": {
3799
3800
  "additionalDetailsHelp": "Дополнительная информация Помощь",
@@ -3791,7 +3791,8 @@
3791
3791
  "rangeDuplicate": "处理器 {0} 被多次指定",
3792
3792
  "invalidFormat": "无效格式: \"{0}\"。请使用数字(例如 \"0\")或范围(例如 \"0-3\")",
3793
3793
  "encriptionPolicy": "加密策略",
3794
- "maxParallel": "最大并行"
3794
+ "maxParallel": "最大并行",
3795
+ "lastCloneSubtitle": "克隆虚拟机之前请查看详细信息。"
3795
3796
  },
3796
3797
  "feedback": {
3797
3798
  "additionalDetailsHelp": "其他详细信息帮助",
@@ -19,7 +19,7 @@ export const bodyOptions = (
19
19
  {
20
20
  col: 'col0',
21
21
  colName: 'key',
22
- text: localization.common.key,
22
+ text: localization.inventoryMonitor.chartColor,
23
23
  width: '96px',
24
24
  isSortable: false,
25
25
  sort: 'asc',
@@ -29,7 +29,7 @@ export const bodyOptions = (
29
29
  {
30
30
  col: 'col1',
31
31
  colName: 'object',
32
- text: localization.common.object,
32
+ text: localization.inventoryMonitor.metricName,
33
33
  width: '150px',
34
34
  isSortable: true,
35
35
  sort: 'asc',
@@ -39,27 +39,27 @@ export const bodyOptions = (
39
39
  {
40
40
  col: 'col2',
41
41
  colName: 'measurement',
42
- text: localization.common.measurement,
42
+ text: localization.inventoryMonitor.metricDescription,
43
43
  width: '192px',
44
44
  isSortable: true,
45
45
  sort: 'asc',
46
46
  show: true,
47
47
  filter: true,
48
48
  },
49
- {
50
- col: 'col3',
51
- colName: 'rollup',
52
- text: localization.common.rollup,
53
- width: '150px',
54
- isSortable: true,
55
- sort: 'asc',
56
- show: true,
57
- filter: true,
58
- },
49
+ // {
50
+ // col: 'col3',
51
+ // colName: 'rollup',
52
+ // text: localization.common.rollup,
53
+ // width: '150px',
54
+ // isSortable: true,
55
+ // sort: 'asc',
56
+ // show: true,
57
+ // filter: true,
58
+ // },
59
59
  {
60
60
  col: 'col4',
61
61
  colName: 'units',
62
- text: localization.common.units,
62
+ text: localization.inventoryMonitor.unitOfMeasurement,
63
63
  width: '150px',
64
64
  isSortable: true,
65
65
  sort: 'asc',
@@ -96,16 +96,16 @@ export const bodyOptions = (
96
96
  show: true,
97
97
  filter: true,
98
98
  },
99
- {
100
- col: 'col8',
101
- colName: 'average',
102
- text: localization.common.average,
103
- width: '150px',
104
- isSortable: true,
105
- sort: 'asc',
106
- show: true,
107
- filter: true,
108
- },
99
+ // {
100
+ // col: 'col8',
101
+ // colName: 'average',
102
+ // text: localization.common.average,
103
+ // width: '150px',
104
+ // isSortable: true,
105
+ // sort: 'asc',
106
+ // show: true,
107
+ // filter: true,
108
+ // },
109
109
  {
110
110
  col: 'col9',
111
111
  colName: 'default-actions',
@@ -28,15 +28,35 @@ const getItems = (
28
28
  ): [string, boolean, string, string][] => {
29
29
  const widthCol = '113px'
30
30
  return [
31
- [localization.common.key, true, widthCol, performanceTableKey[0]],
32
- [localization.common.object, true, widthCol, performanceTableKey[1]],
33
- [localization.common.measurement, true, widthCol, performanceTableKey[2]],
34
- [localization.common.rollup, true, widthCol, performanceTableKey[3]],
35
- [localization.common.units, true, widthCol, performanceTableKey[4]],
31
+ [
32
+ localization.inventoryMonitor.chartColor,
33
+ true,
34
+ widthCol,
35
+ performanceTableKey[0],
36
+ ],
37
+ [
38
+ localization.inventoryMonitor.metricName,
39
+ true,
40
+ widthCol,
41
+ performanceTableKey[1],
42
+ ],
43
+ [
44
+ localization.inventoryMonitor.metricDescription,
45
+ true,
46
+ widthCol,
47
+ performanceTableKey[2],
48
+ ],
49
+ // [localization.common.rollup, true, widthCol, performanceTableKey[3]],
50
+ [
51
+ localization.inventoryMonitor.unitOfMeasurement,
52
+ true,
53
+ widthCol,
54
+ performanceTableKey[4],
55
+ ],
36
56
  [localization.common.latest, true, widthCol, performanceTableKey[5]],
37
57
  [localization.common.maximum, true, widthCol, performanceTableKey[6]],
38
58
  [localization.common.minimum, true, widthCol, performanceTableKey[7]],
39
- [localization.common.average, true, widthCol, performanceTableKey[8]],
59
+ // [localization.common.average, true, widthCol, performanceTableKey[8]],
40
60
  ]
41
61
  }
42
62
 
@@ -2,3 +2,12 @@ export enum UI_E_SchedulerRunStatus {
2
2
  RUNNING = 'this task has been started',
3
3
  SUCCESS = 'success',
4
4
  }
5
+
6
+ export enum E_SchedulerFrequencyModeLocale {
7
+ Once = 'once',
8
+ Startup = 'afterVCenterStartup',
9
+ Hourly = 'hourly',
10
+ Daily = 'daily',
11
+ Weekly = 'weekly',
12
+ Monthly = 'monthly',
13
+ }
@@ -47,6 +47,7 @@
47
47
  :max-memory="maxMemory"
48
48
  :cpu-models="cpuModels"
49
49
  :nums="props.nums"
50
+ :selected-clone-options-keys="selectedCloneOptionsKeys"
50
51
  @get-folders-or-files="emits('get-folders-or-files', $event)"
51
52
  @change-name="onChangeName"
52
53
  @change-storage="onChangeStorage"
@@ -559,7 +560,9 @@ const onChangeStorage = (storage: UI_I_DatastoreTableItem | null): void => {
559
560
  // vmForm.value.storage = storage
560
561
  model.value.storage = storage
561
562
  }
563
+ const selectedCloneOptionsKeys = ref<string[]>([])
562
564
  const onChangeSelectOptions = (options: string[]): void => {
565
+ selectedCloneOptionsKeys.value = options
563
566
  // vmForm.value.options = options
564
567
  if (
565
568
  options.includes('customize-os') &&
@@ -44,7 +44,7 @@
44
44
  "
45
45
  :sub-title-height="height1"
46
46
  >
47
- <template #subTitle>
47
+ <template #subTitle v-if="model">
48
48
  <div ref="subTitleBlock1">
49
49
  <div class="subtitle-block flex flex-col">
50
50
  <div
@@ -57,6 +57,7 @@
57
57
  </template>
58
58
  <template #content>
59
59
  <common-wizards-common-steps-name
60
+ v-if="model"
60
61
  v-model:name="model.name"
61
62
  v-model:location="location"
62
63
  :show="
@@ -79,6 +80,7 @@
79
80
  @submit="emits('change-name', $event)"
80
81
  @has-errors="isNameAlertWrapperEmpty = $event"
81
82
  />
83
+ <common-vm-actions-clone-new-skeleton-name v-else />
82
84
  </template>
83
85
  </ui-wizard-block>
84
86
 
@@ -127,6 +129,7 @@
127
129
  <common-vm-actions-common-select-options
128
130
  :is-new-vm-from-template="props.isNewVmFromTemplate"
129
131
  :project="props.project"
132
+ :selected-clone-options-keys="props.selectedCloneOptionsKeys"
130
133
  @change="emits('change-select-options', $event)"
131
134
  @change-count="emits('change-clone-count', $event)"
132
135
  @change-max-parallel="emits('change-clone-max-parallel', $event)"
@@ -168,34 +171,40 @@
168
171
  v-if="selectedStep.id === props.dynamicSteps.customizeHardware"
169
172
  >
170
173
  <template #content>
171
- <common-vm-actions-common-customize-hardware
172
- v-model="model"
173
- :storage="model.storage"
174
- :customize-hardware-submit="props.customizeHardwareSubmit"
175
- :max-memory="props.maxMemory"
176
- :cpu-models="props.cpuModels"
177
- :selected-nav-item="props.selectedNavItem"
178
- :nodes="props.nodes"
179
- :files="props.files"
180
- :networks-table="props.networksTable"
181
- :error-validation-fields="props.errorValidationFields"
182
- :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
183
- :usb-devices="props.usbDevices"
184
- :passthrough-devices="props.passthroughDevices"
185
- :mediated-devices="props.mediatedDevices"
186
- :get-datastore-table-func="props.getDatastoreTableFunc"
187
- :datastore="props.datastore"
188
- :is-datastore-loading="props.isDatastoreLoading"
189
- :project="props.project"
190
- :nums="props.nums"
191
- is-clone
192
- @get-storage="emits('get-storage', $event)"
193
- @get-folders-or-files="emits('get-folders-or-files', $event)"
194
- @get-active-device-child="emits('get-active-device-child', $event)"
195
- @show-datastore-child="emits('show-datastore-child', $event)"
196
- @get-networks-table="emits('get-networks-table', $event)"
197
- @get-pci-devices="emits('get-pci-devices')"
198
- />
174
+ <div
175
+ class="clone-vm-select-customize-hardware-container overflow-auto h-full flex flex-col pr-8"
176
+ >
177
+ <common-vm-actions-common-customize-hardware
178
+ v-model="model"
179
+ :storage="model.storage"
180
+ :customize-hardware-submit="props.customizeHardwareSubmit"
181
+ :max-memory="props.maxMemory"
182
+ :cpu-models="props.cpuModels"
183
+ :selected-nav-item="props.selectedNavItem"
184
+ :nodes="props.nodes"
185
+ :files="props.files"
186
+ :networks-table="props.networksTable"
187
+ :error-validation-fields="props.errorValidationFields"
188
+ :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
189
+ :usb-devices="props.usbDevices"
190
+ :passthrough-devices="props.passthroughDevices"
191
+ :mediated-devices="props.mediatedDevices"
192
+ :get-datastore-table-func="props.getDatastoreTableFunc"
193
+ :datastore="props.datastore"
194
+ :is-datastore-loading="props.isDatastoreLoading"
195
+ :project="props.project"
196
+ :nums="props.nums"
197
+ is-clone
198
+ @get-storage="emits('get-storage', $event)"
199
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
200
+ @get-active-device-child="
201
+ emits('get-active-device-child', $event)
202
+ "
203
+ @show-datastore-child="emits('show-datastore-child', $event)"
204
+ @get-networks-table="emits('get-networks-table', $event)"
205
+ @get-pci-devices="emits('get-pci-devices')"
206
+ />
207
+ </div>
199
208
  </template>
200
209
  </ui-wizard-block>
201
210
 
@@ -245,9 +254,7 @@
245
254
  <template #subTitle>
246
255
  <div ref="subTitleBlockReadyComplete">
247
256
  <div class="subtitle-block">
248
- <ui-wizard-subtitle
249
- :sub-title="localization.vmWizard.lastCreateSubtitle"
250
- />
257
+ <ui-wizard-subtitle :sub-title="currentFinishStepSubtitle" />
251
258
  </div>
252
259
  </div>
253
260
  </template>
@@ -353,12 +360,14 @@ const props = withDefaults(
353
360
  compatibilityText?: [UI_T_CompatibilityStatus, string] // для сферы
354
361
  compatibilityInfo?: string
355
362
  nums?: any
363
+ selectedCloneOptionsKeys?: string[]
356
364
  }>(),
357
365
  {
358
366
  isLoadingComputeTree: false,
359
367
  computeResourceAlert: () => [],
360
368
  compatibilityText: () => ['none', ''],
361
369
  nums: null,
370
+ selectedCloneOptionsKeys: () => [],
362
371
  }
363
372
  )
364
373
 
@@ -434,6 +443,12 @@ const selectNameStepSubtitle = computed<string>(() =>
434
443
  : localization.value.common.specifyUniqueNameForVm
435
444
  )
436
445
 
446
+ const currentFinishStepSubtitle = computed<string>(() =>
447
+ props.isNewVmFromTemplate
448
+ ? localization.value.vmWizard.lastCreateSubtitle
449
+ : localization.value.vmWizard.lastCloneSubtitle
450
+ )
451
+
437
452
  const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> =>
438
453
  emits('change-steps', value)
439
454
 
@@ -478,4 +493,16 @@ const onClone = (): void => emits('finish')
478
493
  }
479
494
  }
480
495
  }
496
+ .clone-vm-select-customize-hardware-container {
497
+ :deep(.tabs-wrapper) {
498
+ overflow: auto;
499
+
500
+ .tab-item {
501
+ padding-top: 0 !important;
502
+ }
503
+ }
504
+ :deep(.ui-main-select-toggle) {
505
+ width: 100% !important;
506
+ }
507
+ }
481
508
  </style>
@@ -0,0 +1,22 @@
1
+ <template>
2
+ <div class="skeleton-clone-vm-name-step">
3
+ <ui-skeleton-item width="70%" height="16" />
4
+ <div class="bottom-container grid items-center gap-4 mt-4">
5
+ <ui-skeleton-item width="100%" height="20" />
6
+ <ui-skeleton-item width="100%" height="36" />
7
+ </div>
8
+ </div>
9
+ </template>
10
+
11
+ <script setup lang="ts"></script>
12
+
13
+ <style scoped lang="scss">
14
+ .skeleton-clone-vm-name-step {
15
+ .bottom-container {
16
+ grid-template-columns: 30% 60%;
17
+ border-top: 1px solid #e9ebed;
18
+ padding-top: 16px;
19
+ margin-top: 12px;
20
+ }
21
+ }
22
+ </style>
@@ -242,6 +242,7 @@ const localization = computed<UI_I_Localization>(() => useLocal())
242
242
  .cpu-info-block {
243
243
  :deep(.help-text) {
244
244
  margin-bottom: 12px;
245
+ color: var(--stack-block-text-color);
245
246
  }
246
247
  :deep(.cpu-more-info) {
247
248
  font-size: 13px;
@@ -17,12 +17,13 @@
17
17
  @click.stop.prevent="onToggleCustomizeOs"
18
18
  >
19
19
  <ui-checkbox
20
- v-model="isCustomizeOs"
20
+ v-model="modelValue"
21
21
  :label-text="localization.vmWizard.customizeOS"
22
22
  :title="localization.vmWizard.customizeOS"
23
23
  :disabled="props.isNewVmFromTemplate"
24
24
  test-id="customize-os"
25
25
  size="md"
26
+ value="customize-os"
26
27
  />
27
28
  <p
28
29
  :class="[
@@ -43,12 +44,13 @@
43
44
  @click.stop.prevent="onToggleCustomizeHardware"
44
45
  >
45
46
  <ui-checkbox
46
- v-model="isCustomizeHardware"
47
+ v-model="modelValue"
47
48
  :label-text="localization.common.customizeHardware"
48
49
  :title="localization.common.customizeHardware"
49
50
  :disabled="props.isNewVmFromTemplate"
50
51
  test-id="customize-hardware"
51
52
  size="md"
53
+ value="customize-hardware"
52
54
  />
53
55
  <p
54
56
  :class="[
@@ -64,10 +66,11 @@
64
66
  @click.stop.prevent="onTogglePowerOn"
65
67
  >
66
68
  <ui-checkbox
67
- v-model="isPowerOn"
69
+ v-model="modelValue"
68
70
  :label-text="localization.vmWizard.autoPowerOn"
69
71
  test-id="power-on"
70
72
  size="md"
73
+ value="power-on"
71
74
  />
72
75
  <p class="checkbox-block-description mt-2 ml-7">
73
76
  {{ localization.vmWizard.powerVMAfterCreation }}
@@ -136,16 +139,19 @@ const localization = computed<UI_I_Localization>(() => useLocal())
136
139
  const mainContainer = ref<HTMLElement | null>(null)
137
140
  const { width: mainContainerWidth } = useElementSize(mainContainer)
138
141
 
139
- const isCustomizeOs = ref<boolean>(false)
140
- const isCustomizeHardware = ref<boolean>(false)
141
- const isPowerOn = ref<boolean>(false)
142
- const isLinkedClone = ref<boolean>(false)
142
+ const isCustomizeOs = computed<boolean>(() =>
143
+ modelValue.value.includes('customize-os')
144
+ )
145
+ const isCustomizeHardware = computed<boolean>(() =>
146
+ modelValue.value.includes('customize-hardware')
147
+ )
148
+ const isPowerOn = computed<boolean>(() => modelValue.value.includes('power-on'))
149
+ // const isLinkedClone = ref<boolean>(false)
143
150
 
144
151
  const onToggleCustomizeOs = (): void => {
145
152
  if (props.isNewVmFromTemplate) return
146
153
 
147
- isCustomizeOs.value = !isCustomizeOs.value
148
- if (isCustomizeOs.value) {
154
+ if (!isCustomizeOs.value) {
149
155
  !modelValue.value.includes('customize-os') &&
150
156
  modelValue.value.push('customize-os')
151
157
  } else {
@@ -158,8 +164,7 @@ const onToggleCustomizeOs = (): void => {
158
164
  const onToggleCustomizeHardware = (): void => {
159
165
  if (props.isNewVmFromTemplate) return
160
166
 
161
- isCustomizeHardware.value = !isCustomizeHardware.value
162
- if (isCustomizeHardware.value) {
167
+ if (!isCustomizeHardware.value) {
163
168
  !modelValue.value.includes('customize-hardware') &&
164
169
  modelValue.value.push('customize-hardware')
165
170
  } else {
@@ -172,8 +177,7 @@ const onToggleCustomizeHardware = (): void => {
172
177
  const onTogglePowerOn = (): void => {
173
178
  // if (props.isNewVmFromTemplate) return
174
179
 
175
- isPowerOn.value = !isPowerOn.value
176
- if (isPowerOn.value) {
180
+ if (!isPowerOn.value) {
177
181
  !modelValue.value.includes('power-on') && modelValue.value.push('power-on')
178
182
  } else {
179
183
  modelValue.value = modelValue.value.filter((item) => item !== 'power-on')
@@ -16,10 +16,12 @@ const props = withDefaults(
16
16
  defineProps<{
17
17
  project?: UI_T_Project
18
18
  isNewVmFromTemplate?: boolean // TODO change
19
+ selectedCloneOptionsKeys?: string[]
19
20
  }>(),
20
21
  {
21
22
  project: undefined,
22
23
  isNewVmFromTemplate: undefined,
24
+ selectedCloneOptionsKeys: () => [],
23
25
  }
24
26
  )
25
27
 
@@ -39,9 +41,22 @@ const currentComponent = computed(() =>
39
41
  )
40
42
 
41
43
  const selectedOptions = ref<string[]>([])
42
- watch(selectedOptions, (newValue) => {
43
- emits('change', newValue)
44
- })
44
+ watch(
45
+ selectedOptions,
46
+ (newValue) => {
47
+ emits('change', newValue)
48
+ },
49
+ { deep: true }
50
+ )
51
+ watch(
52
+ () => props.selectedCloneOptionsKeys,
53
+ (newValue) => {
54
+ if (newValue.length) {
55
+ selectedOptions.value = newValue
56
+ }
57
+ },
58
+ { immediate: true, deep: true }
59
+ )
45
60
  const maxParallel = ref<number>(1) // For Deploy
46
61
  watch(maxParallel, (newValue) => {
47
62
  if (newValue < 1) {
@@ -4,6 +4,7 @@
4
4
  :sub-title="props.subTitle"
5
5
  :description="props.description"
6
6
  :modal-texts="props.modalTexts"
7
+ :loading="props.isLoading"
7
8
  @hide-modal="emits('hide')"
8
9
  @confirm="emits('confirm')"
9
10
  >
@@ -22,9 +23,11 @@ const props = withDefaults(
22
23
  subTitle: string
23
24
  description: string
24
25
  modalTexts?: UI_I_ModalTexts
26
+ isLoading?: boolean
25
27
  }>(),
26
28
  {
27
29
  modalTexts: undefined,
30
+ isLoading: false
28
31
  }
29
32
  )
30
33
 
@@ -158,7 +158,6 @@ export const getBodyDataFunc = (
158
158
  bodyData: UI_I_StorageConfigurePerDiskItem[],
159
159
  localization: UI_I_Localization
160
160
  ): UI_I_DataTableBody[] => {
161
-
162
161
  return bodyData.map((disk, index: number) => {
163
162
  const diskFormat =
164
163
  index === 0 ? 'N/A' : UI_E_SelectStorageDiskFormat[disk.disk_format]
@@ -184,6 +183,12 @@ export const getBodyDataFunc = (
184
183
  : 'False'
185
184
  : localization.common[diskSharingKey]
186
185
 
186
+ const diskCache = disk.extra.cache
187
+ const diskCacheValue =
188
+ !diskCache || ['none', 'n/a'].includes(diskCache.toLowerCase())
189
+ ? '--'
190
+ : disk.extra.cache
191
+
187
192
  return {
188
193
  row: index,
189
194
  collapse: false,
@@ -221,10 +226,10 @@ export const getBodyDataFunc = (
221
226
  data: diskSharingData,
222
227
  },
223
228
 
224
- { col: 'col6', text: disk.extra.target },
229
+ { col: 'col6', text: disk.extra.target || '--' },
225
230
  {
226
231
  col: 'col7',
227
- text: disk.extra.cache,
232
+ text: diskCacheValue,
228
233
  },
229
234
  { col: 'col8', text: disk.extra.io_control },
230
235
  {
@@ -79,6 +79,12 @@ export const bodyItems = (
79
79
  ? disk[vmMigrateDiskTableItemKeys[2]]
80
80
  : `${disk.extra.disk_source} (${disk.extra.disk_size} ${localization.common.mb} )`
81
81
 
82
+ const diskCache = disk.extra[vmMigrateDiskTableItemKeys[7]]
83
+ const diskCacheValue =
84
+ !diskCache || ['none', 'n/a'].includes(diskCache.toLowerCase())
85
+ ? '--'
86
+ : disk.extra[vmMigrateDiskTableItemKeys[7]]
87
+
82
88
  bodyItems.push([
83
89
  {
84
90
  key: 'col0',
@@ -124,7 +130,7 @@ export const bodyItems = (
124
130
  },
125
131
  {
126
132
  key: 'col7',
127
- text: disk.extra[vmMigrateDiskTableItemKeys[7]],
133
+ text: diskCacheValue,
128
134
  id: key,
129
135
  testId: `disk-table-${key}`,
130
136
  },
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bfg-common",
3
3
  "private": false,
4
- "version": "1.6.18",
4
+ "version": "1.6.20",
5
5
  "scripts": {
6
6
  "build": "nuxt build",
7
7
  "dev": "nuxt dev --port=3002",