index.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import * as R from 'ramda'
  2. import i18n from '@/locales'
  3. import { getI18n } from '@/utils/i18n'
  4. export const isRequiredData = (data, keys) => {
  5. if (!data || R.type(data) !== 'Object' || R.isEmpty(data)) {
  6. return false
  7. }
  8. if (!keys || R.isEmpty(keys)) {
  9. return !!data
  10. }
  11. const fn = {
  12. Array: () => {
  13. for (let i = 0; i < keys.length; i++) {
  14. // 没有发现data中存在 当前循环中的k
  15. if (!data[keys[i]]) {
  16. return false
  17. }
  18. }
  19. return true
  20. },
  21. Object: () => {
  22. for (const k in keys) {
  23. const v = keys[k]
  24. // 没有发现data中存在 当前循环中的k
  25. if (!data[k]) {
  26. return false
  27. }
  28. // 没有发现data存在当前循环的k, 但是value不一致
  29. if (data[k] && data[k] !== v) {
  30. return false
  31. }
  32. }
  33. return true
  34. },
  35. }
  36. const keyType = R.type(keys)
  37. return fn[keyType] && fn[keyType]()
  38. }
  39. function isInstanceSupportSecgroup (obj, service, supportProviders) {
  40. const brand = obj.brand ? obj.brand : obj.hypervisor
  41. if (!supportProviders.includes(brand)) {
  42. return {
  43. validate: false,
  44. tooltip: i18n.t('db.action_diable_tooltip', [getI18n(`cloudPrvidersMap.${brand}`, brand)]),
  45. }
  46. }
  47. if (brand === 'Qcloud' && service === 'rds' && obj.category === 'basic') {
  48. return {
  49. validate: false,
  50. tooltip: i18n.t('db.secgroup.action_diable_tooltip', [getI18n(`cloudPrvidersMap.${brand}`, brand)]),
  51. }
  52. }
  53. return null
  54. }
  55. export const checkSecgroup = (val, service = 'rds', supportProviders = ['Huawei', 'Qcloud', 'Aliyun', 'HCS']) => {
  56. let objs = val
  57. if (!Array.isArray(val)) {
  58. objs = [val]
  59. }
  60. const errorMsgs = []
  61. objs.forEach(obj => {
  62. const ret = isInstanceSupportSecgroup(obj, service, supportProviders)
  63. if (ret) {
  64. errorMsgs.push(ret)
  65. }
  66. })
  67. if (errorMsgs.length > 0) {
  68. return errorMsgs[0]
  69. }
  70. return {
  71. validate: true,
  72. }
  73. }