serverProps.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import {
  2. getNameDescriptionTableColumn,
  3. getIpsTableColumn,
  4. getProjectTableColumn,
  5. getStatusTableColumn,
  6. getRegionTableColumn,
  7. getBrandTableColumn,
  8. } from '@/utils/common/tableColumn'
  9. import {
  10. getNameFilter,
  11. getIpFilter,
  12. getBrandFilter,
  13. } from '@/utils/common/tableFilter'
  14. import i18n from '@/locales'
  15. export default {
  16. data () {
  17. const secgrp_id = this.params && this.params.data && this.params.data[0].id
  18. return {
  19. list: this.$list.createList(this, {
  20. resource: 'servers',
  21. getParams: {
  22. filter: this.params.hypervisor === 'pod' ? 'hypervisor.in(pod)' : 'hypervisor.notin(baremetal,container)',
  23. secgroup: secgrp_id,
  24. },
  25. filterOptions: {
  26. name: getNameFilter(),
  27. ips: getIpFilter(),
  28. brand: getBrandFilter('compute_engine_brands'),
  29. },
  30. }),
  31. columns: [
  32. getNameDescriptionTableColumn({
  33. hideField: true,
  34. addLock: true,
  35. addBackup: true,
  36. edit: false,
  37. editDesc: false,
  38. minWidth: 120,
  39. slotCallback: row => {
  40. return [
  41. <list-body-cell-wrap field='name' row={row} />,
  42. ]
  43. },
  44. }),
  45. getIpsTableColumn({ field: 'ip', title: 'IP' }),
  46. getBrandTableColumn({ field: 'provider' }),
  47. getStatusTableColumn({ statusModule: 'server' }),
  48. getProjectTableColumn(),
  49. getRegionTableColumn(),
  50. ],
  51. singleActions: [
  52. {
  53. label: i18n.t('compute.text_950'),
  54. width: 40,
  55. action: (obj) => {
  56. const secgrpId = secgrp_id || obj.secgrp_id
  57. this.createDialog('RevokeSecgroupDialog', {
  58. data: [obj],
  59. secgrpId,
  60. refresh: () => {
  61. this.list.refresh()
  62. this.$bus.$emit('secgroup-list-refresh')
  63. },
  64. })
  65. },
  66. meta: (obj) => {
  67. const ret = { validate: false, tooltip: null }
  68. if (obj.secgroups && obj.secgroups.length === 1) {
  69. ret.tooltip = i18n.t('compute.text_1026')
  70. return ret
  71. }
  72. return {
  73. validate: ['running', 'ready'].includes(obj.status),
  74. }
  75. },
  76. },
  77. ],
  78. }
  79. },
  80. }