singleActions.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import i18n from '@/locales'
  2. import { GPU_DEV_TYPE_OPTION_MAP } from '@Compute/constants'
  3. import { getSetPublicAction } from '@/utils/common/tableActions'
  4. export default {
  5. created () {
  6. this.singleActions = [
  7. {
  8. label: this.$t('gpu.device_type.update'),
  9. action: obj => {
  10. this.createDialog('UpdateDeviceTypeDialog', {
  11. data: [obj],
  12. columns: this.columns,
  13. refresh: this.refresh,
  14. })
  15. },
  16. meta: obj => {
  17. const ret = { validate: true }
  18. if (obj.dev_type.indexOf('GPU') === -1) {
  19. ret.validate = false
  20. ret.tooltip = this.$t('gpu.device_type.update.validate')
  21. return ret
  22. }
  23. const gpu_types = [GPU_DEV_TYPE_OPTION_MAP['GPU-HPC'].value, GPU_DEV_TYPE_OPTION_MAP['GPU-VGA'].value]
  24. if (!gpu_types.includes(obj.dev_type)) {
  25. ret.validate = false
  26. ret.tooltip = this.$t('gpu.device_type.tooltip.check_hpc_vga_gpu')
  27. return ret
  28. }
  29. return ret
  30. },
  31. },
  32. {
  33. label: this.$t('common.more'),
  34. actions: (obj) => {
  35. return [
  36. getSetPublicAction(this, {
  37. name: this.$t('compute.text_113'),
  38. scope: 'project',
  39. resource: 'isolated_devices',
  40. }, {
  41. permission: 'isolated_devices_perform_public',
  42. }),
  43. {
  44. label: this.$t('compute.text_1028_1'),
  45. permission: 'server_perform_attach_isolated_device',
  46. action: (obj) => {
  47. this.sidePageTriggerHandle(this, 'GpuSidePage', {
  48. id: obj.id,
  49. resource: 'isolated_devices',
  50. }, { tab: 'associated-instances' })
  51. },
  52. },
  53. {
  54. key: 'SetReserveResource',
  55. label: i18n.t('compute.text_490'),
  56. permission: 'isolated_devices_update',
  57. action: obj => {
  58. this.createDialog('SetReserveResourceDialog', {
  59. onManager: this.onManager,
  60. data: [obj],
  61. columns: this.columns,
  62. refresh: this.refresh,
  63. })
  64. },
  65. meta: obj => {
  66. const { dev_type } = obj
  67. if (!dev_type) {
  68. return { validate: false }
  69. }
  70. if (dev_type.indexOf('GPU') === -1) {
  71. return {
  72. validate: false,
  73. tooltip: this.$t('compute.text_1398', [dev_type]),
  74. }
  75. }
  76. return { validate: true }
  77. },
  78. },
  79. ]
  80. },
  81. },
  82. ]
  83. },
  84. }