import PasswordFetcher from '@Compute/sections/PasswordFetcher'
import { getRegionTableColumn, getStatusTableColumn, getEnabledTableColumn, getNameDescriptionTableColumn, getCopyWithContentTableColumn, getTagTableColumn, getPublicScopeTableColumn, getProjectDomainTableColumn, getTimeTableColumn } from '@/utils/common/tableColumn'
import { sizestr } from '@/utils/utils'
import i18n from '@/locales'
import expectStatus from '@/constants/expectStatus'
import { getMaintenanceTableColumn } from '../utils/columns'
export default {
created () {
this.columns = [
getNameDescriptionTableColumn({
onManager: this.onManager,
hideField: true,
formRules: [
{ required: true, message: i18n.t('compute.text_210') },
{ validator: this.$validate('serverCreateName') },
],
slotCallback: row => {
return (
{ row.name }
)
},
cellWrapSlots: row => {
return {
append: () => {
var ret = []
if (row.is_import) {
ret.push()
}
if (row.isolated_device_count) {
ret.push()
}
return ret
},
}
},
}),
getStatusTableColumn({ statusModule: 'host', vm: this }),
getEnabledTableColumn(),
getTagTableColumn({ onManager: this.onManager, resource: 'host', columns: () => this.columns }),
{
field: 'custom_ip',
title: 'IP',
width: 200,
showOverflow: 'ellipsis',
slots: {
default: ({ row }) => {
const cellWrap = []
if (row.access_ip) {
cellWrap.push(
{ this.$t('compute.text_1319') }
,
)
}
if (row.ipmi_ip) {
cellWrap.push(
{ this.$t('compute.text_1320') }
,
)
}
return cellWrap
},
},
},
{
field: 'ipmi',
title: 'IPMI',
width: 70,
slots: {
default: ({ row }) => {
return []
},
},
},
{
field: 'login_ssh',
title: i18n.t('compute.text_566'),
width: 70,
slots: {
default: ({ row }) => {
return []
},
},
},
{
field: 'spec',
title: i18n.t('compute.text_178'),
width: 120,
showOverflow: 'ellipsis',
slots: {
default: ({ row }) => {
if (this.isPreLoad && !row.spec) return []
if (!row.spec) return '-'
const g = function (sz, prefix) {
if (!prefix || prefix.length === 0) {
prefix = ''
}
if (sz && sz > 0) {
return `${prefix}${sizestr(sz, 'M', 1024)}`
} else {
return ''
}
}
const spec = row.spec
let cpu = ''
if (spec.cpu && spec.cpu > 0) {
cpu = `${spec.cpu}C`
}
const mem = g(spec.mem)
let ssd = ''
let hdd = ''
if (spec.disk) {
if (spec.disk.SSD) {
ssd = 'SSD'
for (const key in spec.disk.SSD) {
ssd += `${g(spec.disk.SSD[key])}x${spec.disk.SSD[key]}`
}
}
if (spec.disk.HDD) {
hdd = 'HDD'
for (const key in spec.disk.HDD) {
hdd += `${g(key)}x${spec.disk.HDD[key]}`
}
}
}
let driver = ''
if (spec && spec.driver && spec.driver !== 'Linux') {
driver = 'RAID'
}
return `${cpu}${mem}${hdd}${ssd}${driver}`
},
},
},
getMaintenanceTableColumn(),
{
field: 'manufacture',
title: i18n.t('compute.text_847'),
width: 70,
slots: {
default: ({ row }) => {
if (row.sys_info && row.sys_info.oem_name) {
const icons = {
dell: { height: '25px' },
hp: { height: '25px' },
hpe: { height: '30px' },
inspur: { height: '50px' },
lenovo: { height: '10px' },
supermicro: { height: '30px' },
huawei: { height: '30px' },
}
const arr = Object.keys(icons)
if (!arr.includes(row.sys_info.oem_name)) {
return row.sys_info.oem_name
}
const imgSrc = require(`../assets/${row.sys_info.oem_name}.svg`)
return [
,
]
}
},
},
},
{
field: 'model',
title: this.$t('compute.text_580'),
formatter: ({ cellValue, row }) => {
return ((row.sys_info || {}).model) || '-'
},
},
getCopyWithContentTableColumn({
field: 'server',
title: i18n.t('compute.text_602'),
hideField: true,
slotCallback: row => {
if (!row.server) return '-'
return this.handleOpenBaremetalDetail(row.server_id)}>
{row.server}
},
}),
{
field: 'access_mac',
title: 'MAC',
width: 130,
},
getCopyWithContentTableColumn({ field: 'sn', title: 'SN' }),
getPublicScopeTableColumn({ vm: this, resource: 'hosts' }),
getProjectDomainTableColumn({ vm: this }),
getRegionTableColumn({ vm: this }),
getTimeTableColumn(),
]
},
methods: {
handleOpenBaremetalDetail (id) {
this.sidePageTriggerHandle(this, 'BaremetalSidePage', {
id,
resource: 'servers',
steadyStatus: Object.values(expectStatus.server).flat(),
}, {
list: this.list,
tab: 'baremetal-detail',
})
},
},
}