| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627 |
- import status from '@/locales/zh-CN'
- import { PROVIDER_MAP } from '@/constants'
- import i18n from '@/locales'
- import { DISK_TYPES, ALL_STORAGE_LABEL } from '../../../constants'
- const { disk: diskStatus, server: serverStatus } = status.status
- const _tran = (enArr, status = diskStatus, res = 'disk') => {
- return enArr.map(v => status[v] ? i18n.t(`status.${res}.${v}`) : v).filter(v => v).join(',')
- }
- const _tran2 = (enArr, status = diskStatus) => {
- return enArr.map(v => status[v] || v).filter(v => v).join(',')
- }
- // 磁盘扩容的逻辑梳理
- export const diskResizeConfig = {
- base (obj) {
- const status = ['ready']
- const validate = status.includes(obj.status)
- return {
- validate,
- tooltip: validate ? '' : i18n.t('compute.text_465', [_tran(status)]),
- }
- },
- vmware (obj) {
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- if (obj.disk_type === 'data') { // 数据盘
- const validate = obj.guest_status === 'ready' || obj.guest_status === 'running' // 开关机可以扩容
- const tooltip = validate ? '' : i18n.t('compute.text_1349', [_tran(['ready', 'running'], serverStatus, 'server')])
- return {
- validate,
- tooltip,
- }
- } else { // 系统盘
- const validate = obj.guest_status === 'ready' || obj.guest_status === 'running' // 开关机可以扩容
- const tooltip = validate ? '' : i18n.t('compute.text_1349', [_tran(['running'], serverStatus, 'server')])
- return {
- validate,
- tooltip,
- }
- }
- },
- onecloud (obj) {
- const diskType = 'data'
- const provider = obj.provider
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- if (obj.guest_status === 'running' && obj.disk_type !== diskType) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_467', [PROVIDER_MAP[provider].label]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- openstack (obj) {
- const diskType = 'data'
- const provider = obj.provider
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- if (obj.guest_status === 'running') {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_468', [PROVIDER_MAP[provider].label]),
- }
- }
- if (obj.disk_type !== diskType) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_466', [PROVIDER_MAP[provider].label, DISK_TYPES[diskType]]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- zstack (obj) {
- const guestStatus = ['ready', 'running']
- const provider = obj.provider
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- if (!guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_469', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- dstack (obj) {
- const guestStatus = ['ready', 'running']
- const provider = obj.provider
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- if (!guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_469', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- aliyun (obj) {
- const provider = obj.provider
- const diskType = 'data'
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- if (obj.disk_type !== diskType) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_466', [PROVIDER_MAP[provider].label, DISK_TYPES[diskType]]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- qcloud (obj) {
- const provider = obj.provider
- const guestStatus = ['ready', 'running']
- const diskType = 'data'
- const notInStorageType = ['local_basic', 'local_ssd']
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- if (!guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_469', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- if (obj.disk_type !== diskType) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_466', [PROVIDER_MAP[provider].label, DISK_TYPES[diskType]]),
- }
- }
- if (notInStorageType.includes(obj.storage_type)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_471', [PROVIDER_MAP[provider].label, _tran2(notInStorageType, ALL_STORAGE_LABEL)]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- aws (obj) {
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- huawei (obj) {
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- azure (obj) {
- const provider = obj.provider
- const guestStatus = ['ready']
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- const azureValid = guestStatus.includes(obj.guest_status)
- return {
- validate: azureValid,
- tooltip: azureValid ? '' : i18n.t('compute.text_469', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- },
- ucloud (obj) {
- const diskType = 'data'
- const provider = obj.provider
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- if (obj.disk_type !== diskType) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_466', [PROVIDER_MAP[provider].label, DISK_TYPES[diskType]]),
- }
- }
- if (obj.guest) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_472'),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- google (obj) {
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- ctyun (obj) {
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- volcengine (obj) {
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- if (obj.disk_type === 'data') { // 数据盘
- const validate = obj.guest_status === 'ready' || obj.guest_status === 'running' // 关机可以扩容
- const tooltip = validate ? '' : i18n.t('compute.volcengine.data_disk_resize_tip', [_tran(['ready', 'running'], serverStatus, 'server')])
- return {
- validate,
- tooltip,
- }
- } else { // 系统盘
- const validate = obj.guest_status === 'ready' // 关机可以扩容
- const tooltip = validate ? '' : i18n.t('compute.volcengine.sys_disk_resize_tip', [_tran(['ready'], serverStatus, 'server')])
- return {
- validate,
- tooltip,
- }
- }
- },
- zettakit (obj) {
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- if (obj.disk_type === 'data') { // 数据盘
- const validate = obj.guest_status === 'ready' || obj.guest_status === 'running' // 开关机可以扩容
- const tooltip = validate ? '' : i18n.t('compute.zettakit.data_disk_resize_tip', [_tran(['ready', 'running'], serverStatus, 'server')])
- return {
- validate,
- tooltip,
- }
- } else { // 系统盘
- const validate = obj.guest_status === 'ready' // 关机可以扩容
- const tooltip = validate ? '' : i18n.t('compute.zettakit.sys_disk_resize_tip', [_tran(['ready'], serverStatus, 'server')])
- return {
- validate,
- tooltip,
- }
- }
- },
- uis (obj) {
- const { validate, tooltip } = diskResizeConfig.base(obj)
- if (!validate) {
- return {
- validate: false,
- tooltip,
- }
- }
- if (obj.disk_type === 'data') { // 数据盘
- const validate = obj.guest_status === 'ready' || obj.guest_status === 'running' // 开关机可以扩容
- const tooltip = validate ? '' : i18n.t('compute.uis.data_disk_resize_tip', [_tran(['ready', 'running'], serverStatus, 'server')])
- return {
- validate,
- tooltip,
- }
- } else { // 系统盘
- const validate = obj.guest_status === 'ready' // 关机可以扩容
- const tooltip = validate ? '' : i18n.t('compute.uis.sys_disk_resize_tip', [_tran(['ready'], serverStatus, 'server')])
- return {
- validate,
- tooltip,
- }
- }
- },
- }
- // 磁盘新建快照的逻辑梳理
- export const diskCreateSnapshotConfig = {
- vmware (obj) {
- const provider = obj.provider
- return {
- validate: false,
- tooltip: i18n.t('compute.text_473', [PROVIDER_MAP[provider].label]),
- }
- },
- onecloud (obj) {
- const provider = obj.provider
- const guestStatus = ['ready', 'running']
- if (obj.guest && !guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_474', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- if (!obj.guest && obj.storage_type === 'local') {
- return {
- validate: false,
- tooltip: '',
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- openstack (obj) {
- const guestStatus = ['ready', 'running']
- const provider = obj.provider
- if (obj.storage_type === 'nova') {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_475', [PROVIDER_MAP[provider].label]),
- }
- }
- if (obj.guest_status && !guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_469', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- zstack (obj) {
- const guestStatus = ['ready', 'running']
- const provider = obj.provider
- if (!guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_469', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- dstack (obj) {
- const guestStatus = ['ready', 'running']
- const provider = obj.provider
- if (!guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_469', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- aliyun (obj) {
- const guestStatus = ['ready', 'running']
- const provider = obj.provider
- if (!guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_469', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- qcloud (obj) {
- const provider = obj.provider
- const guestStatus = ['ready', 'running']
- if (obj.guest && !guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_474', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- aws (obj) {
- const provider = obj.provider
- const guestStatus = ['ready', 'running']
- if (obj.guest && !guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_474', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- huawei (obj) {
- const provider = obj.provider
- const guestStatus = ['ready', 'running']
- if (obj.guest && !guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_474', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- azure (obj) {
- const provider = obj.provider
- const guestStatus = ['ready', 'running']
- if (obj.guest && !guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_474', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- ucloud (obj) {
- const diskType = 'data'
- const provider = obj.provider
- const notInStorageType = ['CLOUD_NORMAL']
- if (notInStorageType.includes(obj.storage_type)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_471', [PROVIDER_MAP[provider].label, _tran2(notInStorageType, ALL_STORAGE_LABEL)]),
- }
- }
- if (obj.disk_type !== diskType) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_466', [PROVIDER_MAP[provider].label, DISK_TYPES[obj.disk_type]]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- google (obj) {
- const provider = obj.provider
- const guestStatus = ['ready', 'running']
- if (obj.guest && !guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_474', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- ctyun (obj) {
- const provider = obj.provider
- const guestStatus = ['ready', 'running']
- if (obj.guest && !guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_474', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: false,
- tooltip: i18n.t('compute.text_476'),
- }
- },
- hcso (obj) {
- const provider = obj.provider
- const guestStatus = ['ready', 'running']
- if (obj.guest && !guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_474', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- hcs (obj) {
- const provider = obj.provider
- const guestStatus = ['ready', 'running']
- if (obj.guest && !guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_474', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- ksyun (obj) {
- const provider = obj.provider
- const guestStatus = ['ready', 'running']
- if (obj.guest && !guestStatus.includes(obj.guest_status)) {
- return {
- validate: false,
- tooltip: i18n.t('compute.text_474', [PROVIDER_MAP[provider].label, _tran(guestStatus, serverStatus, 'server')]),
- }
- }
- return {
- validate: true,
- tooltip: '',
- }
- },
- bingocloud (obj) {
- return {
- validate: false,
- }
- },
- volcengine (obj) {
- return {
- validate: true,
- tooltip: '',
- }
- },
- sangfor (obj) {
- return {
- validate: false,
- }
- },
- }
|