import PasswordFetcher from '@Compute/sections/PasswordFetcher'
import SystemIcon from '@/sections/SystemIcon'
import { sizestr } from '@/utils/utils'
import { getProjectTableColumn, getStatusTableColumn, getCopyWithContentTableColumn, getIpsTableColumn, getNameDescriptionTableColumn, getTagTableColumn, getRegionTableColumn, getTimeTableColumn, getBrandTableColumn, getAccountTableColumn } from '@/utils/common/tableColumn'
import i18n from '@/locales'
export default {
created () {
this.columns = [
getNameDescriptionTableColumn({
onManager: this.onManager,
hideField: true,
addLock: true,
addBackup: true,
slotCallback: row => {
return (
this.handleOpenSidepage(row) }>{ row.name }
)
},
}),
getStatusTableColumn({ statusModule: 'server', vm: this }),
getStatusTableColumn({
field: 'power_states',
title: this.$t('compute.power_states'),
statusModule: 'server',
}),
getTagTableColumn({ onManager: this.onManager, resource: 'server', columns: () => this.columns }),
getIpsTableColumn({ field: 'ip', title: 'IP' }),
{
field: 'instance_type',
title: i18n.t('table.title.flavor'),
showOverflow: 'ellipsis',
minWidth: 120,
sortable: true,
slots: {
default: ({ row }) => {
const ret = []
if (row.instance_type) {
ret.push(
{ row.instance_type }
)
}
const config = row.vcpu_count + 'C' + sizestr(row.vmem_size, 'M', 1024) + (row.disk ? sizestr(row.disk, 'M', 1024) : '')
return ret.concat({ config }
)
},
},
},
{
field: 'os_type',
title: i18n.t('table.title.os'),
width: 50,
slots: {
default: ({ row }) => {
let name = (row.metadata && row.metadata.os_distribution) ? row.metadata.os_distribution : row.os_type || ''
if (name.includes('Windows') || name.includes('windows')) {
name = 'Windows'
}
const version = (row.metadata && row.metadata.os_version) ? `${row.metadata.os_version}` : ''
const tooltip = (version.includes(name) ? version : `${name} ${version}`) || i18n.t('compute.text_339') // 去重
return [
,
]
},
},
},
{
field: 'login_account',
title: i18n.t('table.title.init_keypair'),
width: 50,
slots: {
default: ({ row }) => {
return []
},
},
},
getCopyWithContentTableColumn({
field: 'host',
title: i18n.t('res.machine'),
hideField: true,
slotCallback: row => {
if (!row.host) return '-'
return [{ row.host }]
},
hidden: () => this.$store.getters.isProjectMode,
}),
getBrandTableColumn(),
{
field: 'host_sn',
title: 'SN',
minWidth: 70,
showOverflow: 'ellipsis',
},
getProjectTableColumn(),
getRegionTableColumn(),
getAccountTableColumn(),
getTimeTableColumn(),
]
},
}