| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- import status from '@/locales/zh-CN'
- import { BRAND_MAP } from '@/constants'
- import { typeClouds } from '@/utils/common/hypervisor'
- import i18n from '@/locales'
- const { snapshot: snapshotStatus } = status.status
- const _tran = (enArr, status = snapshotStatus) => {
- return enArr.map(v => status[v] || v).filter(v => v).join(',')
- }
- export const RollbackDiskValidate = {
- base (obj) {
- const ret = {
- validate: false,
- tooltip: null,
- }
- if (obj.is_sub_snapshot) {
- ret.tooltip = i18n.t('compute.text_1062')
- return ret
- }
- const supportBrands = [
- typeClouds.hypervisorMap.aliyun.brand,
- typeClouds.hypervisorMap.qcloud.brand,
- typeClouds.hypervisorMap.azure.brand,
- typeClouds.hypervisorMap.aws.brand,
- typeClouds.hypervisorMap.huawei.brand,
- typeClouds.hypervisorMap.ucloud.brand,
- typeClouds.hypervisorMap.apsara.brand,
- typeClouds.hypervisorMap.ksyun.brand,
- ]
- if (!supportBrands.includes(obj.brand)) {
- if (!obj.guest) {
- ret.tooltip = i18n.t('compute.text_1073')
- return ret
- }
- if (obj.guest_status && obj.guest_status !== 'ready') {
- ret.tooltip = i18n.t('compute.text_1074')
- return ret
- }
- if (obj.disk_status && obj.disk_status !== 'ready') {
- ret.tooltip = i18n.t('compute.text_1075')
- return ret
- }
- }
- const status = ['ready']
- ret.validate = status.includes(obj.status)
- ret.tooltip = ret.validate ? '' : i18n.t('compute.text_1076', [_tran(status)])
- return ret
- },
- vmware (obj) {
- const { validate, tooltip } = RollbackDiskValidate.base(obj)
- return { validate, tooltip }
- },
- onecloud (obj) {
- const { validate, tooltip } = RollbackDiskValidate.base(obj)
- return { validate, tooltip }
- },
- zstack (obj) {
- const { validate, tooltip } = RollbackDiskValidate.base(obj)
- return { validate, tooltip }
- },
- dstack (obj) {
- const { validate, tooltip } = RollbackDiskValidate.base(obj)
- return { validate, tooltip }
- },
- aliyun (obj) {
- const ret = RollbackDiskValidate.base(obj)
- if (obj.guest && obj.guest_status !== 'ready') {
- ret.validate = false
- ret.tooltip = i18n.t('compute.text_1078', [BRAND_MAP[obj.brand].label])
- }
- return ret
- },
- qcloud (obj) {
- const ret = RollbackDiskValidate.base(obj)
- if (obj.guest && obj.guest_status !== 'ready') {
- ret.validate = false
- ret.tooltip = i18n.t('compute.text_1078', [BRAND_MAP[obj.brand].label])
- }
- return ret
- },
- aws (obj) {
- const ret = { validate: false }
- ret.tooltip = i18n.t('compute.text_1077', [BRAND_MAP[obj.brand].label])
- return ret
- },
- huawei (obj) {
- const ret = RollbackDiskValidate.base(obj)
- if (obj.disk_type === 'data') {
- if (obj.guest) {
- ret.validate = false
- ret.tooltip = i18n.t('compute.text_1079', [BRAND_MAP[obj.brand].label])
- }
- }
- return ret
- },
- hcs (obj) {
- const ret = { validate: true }
- if (obj.disk_type === 'data') {
- if (obj.guest) {
- ret.validate = false
- ret.tooltip = i18n.t('compute.text_1079', [BRAND_MAP[obj.brand].label])
- }
- }
- return ret
- },
- azure (obj) {
- const ret = { validate: false }
- ret.tooltip = i18n.t('compute.text_1077', [BRAND_MAP[obj.brand].label])
- return ret
- },
- ucloud (obj) {
- const ret = RollbackDiskValidate.base(obj)
- if (obj.guest) {
- ret.validate = false
- ret.tooltip = i18n.t('compute.text_1079', [BRAND_MAP[obj.brand].label])
- return ret
- }
- if (obj.disk_type !== 'data') {
- ret.validate = false
- ret.tooltip = i18n.t('compute.text_1080', [BRAND_MAP[obj.brand].label])
- return ret
- }
- return ret
- },
- google (obj) {
- const ret = { validate: false }
- ret.tooltip = i18n.t('compute.text_1077', [BRAND_MAP[obj.brand].label])
- return ret
- },
- openstack (obj) {
- const ret = { validate: false }
- if (obj.disk_type !== 'data') {
- ret.tooltip = i18n.t('compute.text_1080', [BRAND_MAP[obj.brand].label])
- return ret
- }
- if (obj.disk_status && obj.disk_status !== 'ready') {
- ret.tooltip = i18n.t('compute.text_1075')
- return ret
- }
- if (obj.status && obj.status !== 'ready') {
- ret.tooltip = i18n.t('compute.text_1076')
- return ret
- }
- if (obj.guest) {
- ret.tooltip = i18n.t('compute.text_1079', [BRAND_MAP[obj.brand].label])
- return ret
- }
- },
- }
|