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', }) }, }, }