Guest User

Untitled

a guest
Jun 24th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import sys
  4. import re
  5. import collections
  6. import operator
  7.  
  8. open_indices = []
  9. closed_indices = []
  10. prefixes = collections.defaultdict(int)
  11.  
  12. with open(sys.argv[1], "r") as fp:
  13. header = fp.readline()
  14. for line in fp.readlines():
  15. parts = line[:-1].split()
  16. if len(parts) == 2 and parts[0] == "close":
  17. closed_indices.append(parts[1])
  18. else:
  19. open_indices.append({ 'index': parts[2], 'status': parts[1], 'health': parts[0], 'pri': int(parts[3]), 'rep': int(parts[4]), 'docs.count': int(parts[5]), 'docs.deleted': int(parts[6]), 'store.size': int(parts[7]), 'pri.store.size': int(parts[8]) })
  20.  
  21. dotdate_r = re.compile(r"(.+)([0-9]{4,})\.([0-9]{2,})\.([0-9]{2,})$")
  22. dashdate_r = re.compile(r"(.+)([0-9]{4,})-([0-9]{2,})-([0-9]{2,})$")
  23. dashdateym_r = re.compile(r"(.+)([0-9]{4,})-([0-9]{2,})$")
  24. numdate_r = re.compile(r"(.+)([0-9]{4,})([0-9]{2,})([0-9]{2,})$")
  25. numdateym_r = re.compile(r"(.+)([0-9]{4,})([0-9]{2,})$")
  26.  
  27. def domatch(pat, index):
  28. m = pat.match(index)
  29. if m is None:
  30. return False
  31. prefix = m.group(1)
  32. prefixes[prefix] += 1
  33. return True
  34.  
  35. for idx in open_indices:
  36. name = idx['index']
  37. v = domatch(dotdate_r, name)
  38. if v:
  39. continue
  40. v = domatch(dashdate_r, name)
  41. if v:
  42. continue
  43. v = domatch(dashdateym_r, name)
  44. if v:
  45. continue
  46. v = domatch(numdate_r, name)
  47. if v:
  48. continue
  49. v = domatch(numdateym_r, name)
  50. if v:
  51. continue
  52. prefixes[name] += 1
  53.  
  54. for idx in closed_indices:
  55. v = domatch(dotdate_r, idx)
  56. if v:
  57. continue
  58. v = domatch(dashdate_r, idx)
  59. if v:
  60. continue
  61. v = domatch(dashdateym_r, idx)
  62. if v:
  63. continue
  64. v = domatch(numdate_r, idx)
  65. if v:
  66. continue
  67. v = domatch(numdateym_r, idx)
  68. if v:
  69. continue
  70. prefixes[idx] += 1
  71.  
  72. stats = {}
  73. for pre in prefixes:
  74. closed = 0
  75. for idx in closed_indices:
  76. if idx.startswith(pre):
  77. closed += 1
  78. opened = 0
  79. green = 0
  80. yellow = 0
  81. red = 0
  82. docs = 0
  83. deleted = 0
  84. size = 0
  85. for idx in open_indices:
  86. if idx['index'].startswith(pre):
  87. opened += 1
  88. if idx['health'] == 'green':
  89. green += 1
  90. elif idx['health'] == 'yellow':
  91. yellow += 1
  92. else:
  93. assert idx['health'] == 'red'
  94. red += 1
  95. docs += idx['docs.count']
  96. deleted += idx['docs.deleted']
  97. size += idx['store.size']
  98. stats[pre] = { 'closed': closed, 'opened': opened, 'green': green, 'yellow': yellow, 'red': red, 'docs': docs, 'deleted': deleted, 'size': size }
  99.  
  100. sorted_prefixes = sorted(prefixes.items(), key=operator.itemgetter(1), reverse=True)
  101. for pre,v in sorted_prefixes:
  102. stat = stats[pre]
  103. print "%6d %5d %5d %5d %3d %3d %20d %10d %20d %s" % (v, stat['closed'], stat['opened'], stat['green'], stat['yellow'], stat['red'], stat['docs'], stat['deleted'], stat['size'], pre)
  104. if 0:
  105. for idx in open_indices:
  106. print repr(idx)
  107. for idx in closed_indices:
  108. print idx
Add Comment
Please, Sign In to add comment