validate.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. import status from '@/locales/zh-CN'
  2. import { BRAND_MAP } from '@/constants'
  3. import { typeClouds } from '@/utils/common/hypervisor'
  4. import i18n from '@/locales'
  5. const { snapshot: snapshotStatus } = status.status
  6. const _tran = (enArr, status = snapshotStatus) => {
  7. return enArr.map(v => status[v] || v).filter(v => v).join(',')
  8. }
  9. export const RollbackDiskValidate = {
  10. base (obj) {
  11. const ret = {
  12. validate: false,
  13. tooltip: null,
  14. }
  15. if (obj.is_sub_snapshot) {
  16. ret.tooltip = i18n.t('compute.text_1062')
  17. return ret
  18. }
  19. const supportBrands = [
  20. typeClouds.hypervisorMap.aliyun.brand,
  21. typeClouds.hypervisorMap.qcloud.brand,
  22. typeClouds.hypervisorMap.azure.brand,
  23. typeClouds.hypervisorMap.aws.brand,
  24. typeClouds.hypervisorMap.huawei.brand,
  25. typeClouds.hypervisorMap.ucloud.brand,
  26. typeClouds.hypervisorMap.apsara.brand,
  27. typeClouds.hypervisorMap.ksyun.brand,
  28. ]
  29. if (!supportBrands.includes(obj.brand)) {
  30. if (!obj.guest) {
  31. ret.tooltip = i18n.t('compute.text_1073')
  32. return ret
  33. }
  34. if (obj.guest_status && obj.guest_status !== 'ready') {
  35. ret.tooltip = i18n.t('compute.text_1074')
  36. return ret
  37. }
  38. if (obj.disk_status && obj.disk_status !== 'ready') {
  39. ret.tooltip = i18n.t('compute.text_1075')
  40. return ret
  41. }
  42. }
  43. const status = ['ready']
  44. ret.validate = status.includes(obj.status)
  45. ret.tooltip = ret.validate ? '' : i18n.t('compute.text_1076', [_tran(status)])
  46. return ret
  47. },
  48. vmware (obj) {
  49. const { validate, tooltip } = RollbackDiskValidate.base(obj)
  50. return { validate, tooltip }
  51. },
  52. onecloud (obj) {
  53. const { validate, tooltip } = RollbackDiskValidate.base(obj)
  54. return { validate, tooltip }
  55. },
  56. zstack (obj) {
  57. const { validate, tooltip } = RollbackDiskValidate.base(obj)
  58. return { validate, tooltip }
  59. },
  60. dstack (obj) {
  61. const { validate, tooltip } = RollbackDiskValidate.base(obj)
  62. return { validate, tooltip }
  63. },
  64. aliyun (obj) {
  65. const ret = RollbackDiskValidate.base(obj)
  66. if (obj.guest && obj.guest_status !== 'ready') {
  67. ret.validate = false
  68. ret.tooltip = i18n.t('compute.text_1078', [BRAND_MAP[obj.brand].label])
  69. }
  70. return ret
  71. },
  72. qcloud (obj) {
  73. const ret = RollbackDiskValidate.base(obj)
  74. if (obj.guest && obj.guest_status !== 'ready') {
  75. ret.validate = false
  76. ret.tooltip = i18n.t('compute.text_1078', [BRAND_MAP[obj.brand].label])
  77. }
  78. return ret
  79. },
  80. aws (obj) {
  81. const ret = { validate: false }
  82. ret.tooltip = i18n.t('compute.text_1077', [BRAND_MAP[obj.brand].label])
  83. return ret
  84. },
  85. huawei (obj) {
  86. const ret = RollbackDiskValidate.base(obj)
  87. if (obj.disk_type === 'data') {
  88. if (obj.guest) {
  89. ret.validate = false
  90. ret.tooltip = i18n.t('compute.text_1079', [BRAND_MAP[obj.brand].label])
  91. }
  92. }
  93. return ret
  94. },
  95. hcs (obj) {
  96. const ret = { validate: true }
  97. if (obj.disk_type === 'data') {
  98. if (obj.guest) {
  99. ret.validate = false
  100. ret.tooltip = i18n.t('compute.text_1079', [BRAND_MAP[obj.brand].label])
  101. }
  102. }
  103. return ret
  104. },
  105. azure (obj) {
  106. const ret = { validate: false }
  107. ret.tooltip = i18n.t('compute.text_1077', [BRAND_MAP[obj.brand].label])
  108. return ret
  109. },
  110. ucloud (obj) {
  111. const ret = RollbackDiskValidate.base(obj)
  112. if (obj.guest) {
  113. ret.validate = false
  114. ret.tooltip = i18n.t('compute.text_1079', [BRAND_MAP[obj.brand].label])
  115. return ret
  116. }
  117. if (obj.disk_type !== 'data') {
  118. ret.validate = false
  119. ret.tooltip = i18n.t('compute.text_1080', [BRAND_MAP[obj.brand].label])
  120. return ret
  121. }
  122. return ret
  123. },
  124. google (obj) {
  125. const ret = { validate: false }
  126. ret.tooltip = i18n.t('compute.text_1077', [BRAND_MAP[obj.brand].label])
  127. return ret
  128. },
  129. openstack (obj) {
  130. const ret = { validate: false }
  131. if (obj.disk_type !== 'data') {
  132. ret.tooltip = i18n.t('compute.text_1080', [BRAND_MAP[obj.brand].label])
  133. return ret
  134. }
  135. if (obj.disk_status && obj.disk_status !== 'ready') {
  136. ret.tooltip = i18n.t('compute.text_1075')
  137. return ret
  138. }
  139. if (obj.status && obj.status !== 'ready') {
  140. ret.tooltip = i18n.t('compute.text_1076')
  141. return ret
  142. }
  143. if (obj.guest) {
  144. ret.tooltip = i18n.t('compute.text_1079', [BRAND_MAP[obj.brand].label])
  145. return ret
  146. }
  147. },
  148. }