bfg-common 1.5.544 → 1.5.546
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.
- package/components/common/wizards/vm/migrate/Migrate.vue +2 -7
- package/components/common/wizards/vm/migrate/MigrateNew.vue +8 -17
- package/components/common/wizards/vm/migrate/MigrateOld.vue +1 -4
- package/components/common/wizards/vm/migrate/vmOrigin/VmOrigin.vue +18 -77
- package/components/common/wizards/vm/migrate/vmOrigin/VmOriginNew.vue +57 -0
- package/components/common/wizards/vm/migrate/vmOrigin/VmOriginOld.vue +82 -0
- package/package.json +1 -1
- package/components/common/wizards/vm/migrate/select/type/Type.vue +0 -27
- package/components/common/wizards/vm/migrate/select/type/lib/config/typeOptions.ts +0 -49
- package/components/common/wizards/vm/migrate/select/type/lib/models/interfaces.ts +0 -6
- package/components/common/wizards/vm/migrate/select/type/lib/models/types.ts +0 -5
|
@@ -99,21 +99,21 @@ const props = withDefaults(
|
|
|
99
99
|
getComputeResourceData: (payload: UI_I_TablePayload) => Promise<void>
|
|
100
100
|
datastore: UI_I_DatastoreTableItem[]
|
|
101
101
|
configurePerDisks: UI_I_StorageConfigurePerDiskItem[]
|
|
102
|
+
vmOrigin?: UI_I_VmOrigin // нужно только для сферы
|
|
102
103
|
computeResourceTableData?: any
|
|
103
104
|
computeResourceTree?: UI_I_TreeNode | null
|
|
104
105
|
vmState?: number
|
|
105
106
|
vmInfo?: any | null
|
|
106
107
|
networks?: any
|
|
107
|
-
vmOrigin?: UI_I_VmOrigin | null
|
|
108
108
|
defaultMigrateType?: UI_T_VmMigrateType
|
|
109
109
|
}>(),
|
|
110
110
|
{
|
|
111
|
+
vmOrigin: undefined,
|
|
111
112
|
computeResourceTableData: undefined,
|
|
112
113
|
computeResourceTree: null,
|
|
113
114
|
vmState: undefined,
|
|
114
115
|
vmInfo: undefined,
|
|
115
116
|
networks: undefined,
|
|
116
|
-
vmOrigin: null,
|
|
117
117
|
defaultMigrateType: undefined,
|
|
118
118
|
}
|
|
119
119
|
)
|
|
@@ -276,8 +276,6 @@ watch(
|
|
|
276
276
|
{ immediate: true, deep: true }
|
|
277
277
|
)
|
|
278
278
|
|
|
279
|
-
const loading = ref<boolean>(false)
|
|
280
|
-
|
|
281
279
|
const connectedStorageIdOnVm = computed<string>(
|
|
282
280
|
() => props.vmSettings?.storage.id || ''
|
|
283
281
|
)
|
|
@@ -286,11 +284,8 @@ const dataReadyView = computed<UI_I_TableInfoItem>(() =>
|
|
|
286
284
|
constructDataReadyViewFunc(props.vmName, form.value)
|
|
287
285
|
)
|
|
288
286
|
const onMigrateVm = (): void => {
|
|
289
|
-
loading.value = true
|
|
290
287
|
emits('finish', form.value)
|
|
291
|
-
loading.value = false
|
|
292
288
|
}
|
|
293
|
-
|
|
294
289
|
const onHideModal = (): void => {
|
|
295
290
|
emits('hide')
|
|
296
291
|
}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
>
|
|
14
14
|
<template #content="{ selectedStep, isLoading }">
|
|
15
15
|
<ui-wizard-block
|
|
16
|
-
v-if="selectedStep.id === dynamicSteps.
|
|
16
|
+
v-if="selectedStep.id === dynamicSteps.selectMigrationType"
|
|
17
17
|
:sub-title-height="height0"
|
|
18
18
|
>
|
|
19
19
|
<template #subTitle>
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
<ui-wizard-subtitle :sub-title="selectedStep.subTitle" />
|
|
23
23
|
|
|
24
24
|
<common-wizards-vm-migrate-vm-origin
|
|
25
|
+
v-if="props.vmOrigin"
|
|
25
26
|
:vm-origin="props.vmOrigin"
|
|
26
27
|
/>
|
|
27
28
|
</div>
|
|
@@ -56,9 +57,7 @@
|
|
|
56
57
|
</div>
|
|
57
58
|
</div>
|
|
58
59
|
</template>
|
|
59
|
-
<template #content>
|
|
60
|
-
Content
|
|
61
|
-
</template>
|
|
60
|
+
<template #content> Content </template>
|
|
62
61
|
</ui-wizard-block>
|
|
63
62
|
|
|
64
63
|
<ui-wizard-block
|
|
@@ -81,9 +80,7 @@
|
|
|
81
80
|
</div>
|
|
82
81
|
</div>
|
|
83
82
|
</template>
|
|
84
|
-
<template #content>
|
|
85
|
-
content
|
|
86
|
-
</template>
|
|
83
|
+
<template #content> content </template>
|
|
87
84
|
</ui-wizard-block>
|
|
88
85
|
|
|
89
86
|
<ui-wizard-block
|
|
@@ -108,9 +105,7 @@
|
|
|
108
105
|
</div>
|
|
109
106
|
</div>
|
|
110
107
|
</template>
|
|
111
|
-
<template #content>
|
|
112
|
-
Content
|
|
113
|
-
</template>
|
|
108
|
+
<template #content> Content </template>
|
|
114
109
|
</ui-wizard-block>
|
|
115
110
|
|
|
116
111
|
<ui-wizard-block
|
|
@@ -124,9 +119,7 @@
|
|
|
124
119
|
</div>
|
|
125
120
|
</div>
|
|
126
121
|
</template>
|
|
127
|
-
<template #content>
|
|
128
|
-
Content
|
|
129
|
-
</template>
|
|
122
|
+
<template #content> Content </template>
|
|
130
123
|
</ui-wizard-block>
|
|
131
124
|
</template>
|
|
132
125
|
</ui-wizard>
|
|
@@ -155,11 +148,9 @@ const props = withDefaults(
|
|
|
155
148
|
alertMessages: string[][]
|
|
156
149
|
selectedNode: UI_I_TreeNode
|
|
157
150
|
title: string
|
|
158
|
-
vmOrigin
|
|
151
|
+
vmOrigin: UI_I_VmOrigin | undefined
|
|
159
152
|
}>(),
|
|
160
|
-
{
|
|
161
|
-
vmOrigin: null,
|
|
162
|
-
}
|
|
153
|
+
{}
|
|
163
154
|
)
|
|
164
155
|
const emits = defineEmits<{
|
|
165
156
|
(event: 'change-steps', value: UI_I_WizardStep[]): void
|
|
@@ -120,6 +120,7 @@ const props = withDefaults(
|
|
|
120
120
|
alertMessages: string[][]
|
|
121
121
|
title: string
|
|
122
122
|
isScheduledTasks: boolean
|
|
123
|
+
vmOrigin: UI_I_VmOrigin | undefined
|
|
123
124
|
vmSettings: UI_I_VmSettings | null
|
|
124
125
|
vmName: string
|
|
125
126
|
getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
|
|
@@ -131,7 +132,6 @@ const props = withDefaults(
|
|
|
131
132
|
vmState?: number
|
|
132
133
|
vmInfo?: any | null
|
|
133
134
|
networks?: any
|
|
134
|
-
vmOrigin?: UI_I_VmOrigin | null
|
|
135
135
|
defaultMigrateType?: UI_T_VmMigrateType
|
|
136
136
|
}>(),
|
|
137
137
|
{
|
|
@@ -140,7 +140,6 @@ const props = withDefaults(
|
|
|
140
140
|
vmState: undefined,
|
|
141
141
|
vmInfo: undefined,
|
|
142
142
|
networks: undefined,
|
|
143
|
-
vmOrigin: null,
|
|
144
143
|
defaultMigrateType: undefined,
|
|
145
144
|
}
|
|
146
145
|
)
|
|
@@ -196,8 +195,6 @@ watch(
|
|
|
196
195
|
{ immediate: true, deep: true }
|
|
197
196
|
)
|
|
198
197
|
|
|
199
|
-
const loading = ref<boolean>(false)
|
|
200
|
-
|
|
201
198
|
const connectedStorageIdOnVm = computed<string>(
|
|
202
199
|
() => props.vmSettings?.storage.id || ''
|
|
203
200
|
)
|
|
@@ -1,45 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
height="16px"
|
|
14
|
-
fill="#0072a3"
|
|
15
|
-
/>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
<atoms-tooltip-signpost
|
|
19
|
-
v-if="isShowTooltip"
|
|
20
|
-
elem-id="vm-origin-trigger"
|
|
21
|
-
test-id="vm-origin"
|
|
22
|
-
@hide="isShowTooltip = false"
|
|
23
|
-
>
|
|
24
|
-
<slot name="content">
|
|
25
|
-
<div class="vm-origin-info-tooltip-block">
|
|
26
|
-
<template v-for="item in itemsArray" :key="item.key">
|
|
27
|
-
<div v-if="item.value.length" class="item-row">
|
|
28
|
-
<span class="title-row">{{ item.key }}</span>
|
|
29
|
-
<div
|
|
30
|
-
v-for="item2 in item.value"
|
|
31
|
-
:key="item2.name"
|
|
32
|
-
class="flex items-center"
|
|
33
|
-
>
|
|
34
|
-
<span :class="item2.iconName"></span>
|
|
35
|
-
<span class="item-name">{{ item2.name }}</span>
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
</template>
|
|
39
|
-
</div>
|
|
40
|
-
</slot>
|
|
41
|
-
</atoms-tooltip-signpost>
|
|
42
|
-
</div>
|
|
2
|
+
<common-wizards-vm-migrate-vm-origin-new
|
|
3
|
+
v-if="isNewView"
|
|
4
|
+
v-model="isShowTooltip"
|
|
5
|
+
:vm-origin="normalizedVmOriginToArray"
|
|
6
|
+
/>
|
|
7
|
+
|
|
8
|
+
<common-wizards-vm-migrate-vm-origin-old
|
|
9
|
+
v-else
|
|
10
|
+
v-model="isShowTooltip"
|
|
11
|
+
:vm-origin="normalizedVmOriginToArray"
|
|
12
|
+
/>
|
|
43
13
|
</template>
|
|
44
14
|
|
|
45
15
|
<script setup lang="ts">
|
|
@@ -50,47 +20,18 @@ import type {
|
|
|
50
20
|
} from '~/components/common/wizards/vm/migrate/vmOrigin/lib/models/interfaces'
|
|
51
21
|
import { constructOriginItems } from '~/components/common/wizards/vm/migrate/vmOrigin/lib/utils/constructItems'
|
|
52
22
|
|
|
53
|
-
const props =
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}>(),
|
|
57
|
-
{
|
|
58
|
-
vmOrigin: null,
|
|
59
|
-
}
|
|
60
|
-
)
|
|
23
|
+
const props = defineProps<{
|
|
24
|
+
vmOrigin: UI_I_VmOrigin | null
|
|
25
|
+
}>()
|
|
61
26
|
|
|
62
27
|
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
28
|
+
const { $store }: any = useNuxtApp()
|
|
29
|
+
|
|
30
|
+
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
63
31
|
|
|
64
|
-
const
|
|
32
|
+
const normalizedVmOriginToArray = computed<UI_I_VmOriginArrayItem[]>(() =>
|
|
65
33
|
constructOriginItems(props.vmOrigin, localization.value)
|
|
66
34
|
)
|
|
67
35
|
|
|
68
36
|
const isShowTooltip = ref<boolean>(false)
|
|
69
37
|
</script>
|
|
70
|
-
|
|
71
|
-
<style scoped lang="scss">
|
|
72
|
-
.vm-origin-info-tooltip {
|
|
73
|
-
:deep(.tooltip-content) {
|
|
74
|
-
background-color: #ffffff;
|
|
75
|
-
}
|
|
76
|
-
.tooltip-trigger-block {
|
|
77
|
-
cursor: pointer;
|
|
78
|
-
color: #0072a3;
|
|
79
|
-
|
|
80
|
-
&:hover {
|
|
81
|
-
text-decoration: underline;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
.vm-origin-info-tooltip-block {
|
|
86
|
-
.title-row {
|
|
87
|
-
font-weight: 700;
|
|
88
|
-
color: #565656;
|
|
89
|
-
margin-bottom: 5px;
|
|
90
|
-
}
|
|
91
|
-
.item-name {
|
|
92
|
-
margin-left: 5px;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
</style>
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="vm-origin-info-tooltip">
|
|
3
|
+
<div
|
|
4
|
+
id="vm-origin-trigger"
|
|
5
|
+
class="tooltip-trigger-block flex items-center"
|
|
6
|
+
data-id="vm-origin-trigger-btn"
|
|
7
|
+
@click="isShowTooltipLocal = !isShowTooltipLocal"
|
|
8
|
+
>
|
|
9
|
+
<span>{{ localization.common.vmOrigin }}</span>
|
|
10
|
+
<atoms-the-icon
|
|
11
|
+
name="info-circle"
|
|
12
|
+
width="16px"
|
|
13
|
+
height="16px"
|
|
14
|
+
fill="#0072a3"
|
|
15
|
+
/>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<atoms-tooltip-signpost
|
|
19
|
+
v-if="isShowTooltipLocal"
|
|
20
|
+
elem-id="vm-origin-trigger"
|
|
21
|
+
test-id="vm-origin"
|
|
22
|
+
@hide="isShowTooltipLocal = false"
|
|
23
|
+
>
|
|
24
|
+
<slot name="content">
|
|
25
|
+
<div class="vm-origin-info-tooltip-block">
|
|
26
|
+
<template v-for="item in props.vmOrigin" :key="item.key">
|
|
27
|
+
<div v-if="item.value.length" class="item-row">
|
|
28
|
+
<span class="title-row">{{ item.key }}</span>
|
|
29
|
+
<div
|
|
30
|
+
v-for="item2 in item.value"
|
|
31
|
+
:key="item2.name"
|
|
32
|
+
class="flex items-center"
|
|
33
|
+
>
|
|
34
|
+
<span :class="item2.iconName"></span>
|
|
35
|
+
<span class="item-name">{{ item2.name }}</span>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
</template>
|
|
39
|
+
</div>
|
|
40
|
+
</slot>
|
|
41
|
+
</atoms-tooltip-signpost>
|
|
42
|
+
</div>
|
|
43
|
+
</template>
|
|
44
|
+
|
|
45
|
+
<script setup lang="ts">
|
|
46
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
47
|
+
import type { UI_I_VmOriginArrayItem } from '~/components/common/wizards/vm/migrate/vmOrigin/lib/models/interfaces'
|
|
48
|
+
|
|
49
|
+
const isShowTooltipLocal = defineModel<boolean>({ required: true })
|
|
50
|
+
const props = defineProps<{
|
|
51
|
+
vmOrigin: UI_I_VmOriginArrayItem[]
|
|
52
|
+
}>()
|
|
53
|
+
|
|
54
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
55
|
+
</script>
|
|
56
|
+
|
|
57
|
+
<style scoped lang="scss"></style>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="vm-origin-info-tooltip">
|
|
3
|
+
<div
|
|
4
|
+
id="vm-origin-trigger"
|
|
5
|
+
class="tooltip-trigger-block flex items-center"
|
|
6
|
+
data-id="vm-origin-trigger-btn"
|
|
7
|
+
@click="isShowTooltipLocal = !isShowTooltipLocal"
|
|
8
|
+
>
|
|
9
|
+
<span>{{ localization.common.vmOrigin }}</span>
|
|
10
|
+
<atoms-the-icon
|
|
11
|
+
name="info-circle"
|
|
12
|
+
width="16px"
|
|
13
|
+
height="16px"
|
|
14
|
+
fill="#0072a3"
|
|
15
|
+
/>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<atoms-tooltip-signpost
|
|
19
|
+
v-if="isShowTooltipLocal"
|
|
20
|
+
elem-id="vm-origin-trigger"
|
|
21
|
+
test-id="vm-origin"
|
|
22
|
+
@hide="isShowTooltipLocal = false"
|
|
23
|
+
>
|
|
24
|
+
<slot name="content">
|
|
25
|
+
<div class="vm-origin-info-tooltip-block">
|
|
26
|
+
<template v-for="item in props.vmOrigin" :key="item.key">
|
|
27
|
+
<div v-if="item.value.length" class="item-row">
|
|
28
|
+
<span class="title-row">{{ item.key }}</span>
|
|
29
|
+
<div
|
|
30
|
+
v-for="item2 in item.value"
|
|
31
|
+
:key="item2.name"
|
|
32
|
+
class="flex items-center"
|
|
33
|
+
>
|
|
34
|
+
<span :class="item2.iconName"></span>
|
|
35
|
+
<span class="item-name">{{ item2.name }}</span>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
</template>
|
|
39
|
+
</div>
|
|
40
|
+
</slot>
|
|
41
|
+
</atoms-tooltip-signpost>
|
|
42
|
+
</div>
|
|
43
|
+
</template>
|
|
44
|
+
|
|
45
|
+
<script setup lang="ts">
|
|
46
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
47
|
+
import type { UI_I_VmOriginArrayItem } from '~/components/common/wizards/vm/migrate/vmOrigin/lib/models/interfaces'
|
|
48
|
+
|
|
49
|
+
const isShowTooltipLocal = defineModel<boolean>({ required: true })
|
|
50
|
+
const props = defineProps<{
|
|
51
|
+
vmOrigin: UI_I_VmOriginArrayItem[]
|
|
52
|
+
}>()
|
|
53
|
+
|
|
54
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
55
|
+
</script>
|
|
56
|
+
|
|
57
|
+
<style scoped lang="scss">
|
|
58
|
+
.vm-origin-info-tooltip {
|
|
59
|
+
:deep(.tooltip-content) {
|
|
60
|
+
background-color: #ffffff;
|
|
61
|
+
}
|
|
62
|
+
.tooltip-trigger-block {
|
|
63
|
+
cursor: pointer;
|
|
64
|
+
color: #0072a3;
|
|
65
|
+
|
|
66
|
+
&:hover {
|
|
67
|
+
text-decoration: underline;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.vm-origin-info-tooltip-block {
|
|
72
|
+
.title-row {
|
|
73
|
+
font-weight: 700;
|
|
74
|
+
color: #565656;
|
|
75
|
+
margin-bottom: 5px;
|
|
76
|
+
}
|
|
77
|
+
.item-name {
|
|
78
|
+
margin-left: 5px;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
</style>
|
package/package.json
CHANGED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<common-select-radio-group
|
|
3
|
-
v-model="selectedMigrateTypeLocal"
|
|
4
|
-
:options="vmMigrationTypes"
|
|
5
|
-
/>
|
|
6
|
-
</template>
|
|
7
|
-
|
|
8
|
-
<script lang="ts" setup>
|
|
9
|
-
import type { UI_T_Project } from '~/lib/models/types'
|
|
10
|
-
import type { UI_I_VmMigrateTypeOption } from '~/components/common/wizards/vm/migrate/select/type/lib/models/interfaces'
|
|
11
|
-
import type { UI_T_VmMigrateType } from '~/components/common/wizards/vm/migrate/select/type/lib/models/types'
|
|
12
|
-
import { vmMigrateTypesFunc } from '~/components/common/wizards/vm/migrate/select/type/lib/config/typeOptions'
|
|
13
|
-
|
|
14
|
-
const props = defineProps<{
|
|
15
|
-
project: UI_T_Project
|
|
16
|
-
}>()
|
|
17
|
-
const selectedMigrateTypeLocal = defineModel<UI_T_VmMigrateType>({
|
|
18
|
-
required: true,
|
|
19
|
-
})
|
|
20
|
-
const localization = computed<any>(() => useLocal())
|
|
21
|
-
|
|
22
|
-
const vmMigrationTypes = ref<UI_I_VmMigrateTypeOption[]>(
|
|
23
|
-
vmMigrateTypesFunc(localization.value, props.project)
|
|
24
|
-
)
|
|
25
|
-
</script>
|
|
26
|
-
|
|
27
|
-
<style lang="scss" scoped></style>
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
2
|
-
import type { UI_T_Project } from '~/lib/models/types'
|
|
3
|
-
import type { UI_I_VmMigrateTypeOption } from '~/components/common/wizards/vm/migrate/select/type/lib/models/interfaces'
|
|
4
|
-
|
|
5
|
-
export const vmMigrateTypesFunc = (
|
|
6
|
-
localization: UI_I_Localization,
|
|
7
|
-
project: UI_T_Project
|
|
8
|
-
): UI_I_VmMigrateTypeOption[] => {
|
|
9
|
-
const options: UI_I_VmMigrateTypeOption[] = [
|
|
10
|
-
{
|
|
11
|
-
label: localization.common.changeComputeResourceOnly,
|
|
12
|
-
value: 'resource',
|
|
13
|
-
disabled: false,
|
|
14
|
-
description: localization.common.changeComputeResourceOnlyDesc,
|
|
15
|
-
permissions: ['sphere'],
|
|
16
|
-
permission: 'VirtualMachines.MigrateHost',
|
|
17
|
-
testId: 'change-compute-resource-option',
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
label: localization.common.changeStorageOnly,
|
|
21
|
-
value: 'storage',
|
|
22
|
-
disabled: false,
|
|
23
|
-
description: localization.common.changeStorageOnlyDesc,
|
|
24
|
-
permissions: ['sphere', 'procurator'],
|
|
25
|
-
permission: 'VirtualMachines.MigrateDatastore',
|
|
26
|
-
testId: 'change-storage-option',
|
|
27
|
-
},
|
|
28
|
-
// TODO 700
|
|
29
|
-
// {
|
|
30
|
-
// label: localization.common.changeBothComputeResourceStorage,
|
|
31
|
-
// value: 'resource-storage',
|
|
32
|
-
// disabled: true,
|
|
33
|
-
// description: localization.common.changeBothComputeResourceStorageDesc,
|
|
34
|
-
// permissions: ['sphere'],
|
|
35
|
-
// testId: 'change-both-compute-resource-storage-option',
|
|
36
|
-
// },
|
|
37
|
-
// TODO 700
|
|
38
|
-
// {
|
|
39
|
-
// label: localization.common.crossVCenterServerExport,
|
|
40
|
-
// value: 'server',
|
|
41
|
-
// disabled: true,
|
|
42
|
-
// description: localization.common.crossVCenterServerExportDesc,
|
|
43
|
-
// permissions: ['sphere'],
|
|
44
|
-
// testId: 'cross-vcenter-server-export-option',
|
|
45
|
-
// },
|
|
46
|
-
]
|
|
47
|
-
|
|
48
|
-
return options.filter((option) => option.permissions.includes(project))
|
|
49
|
-
}
|