Advertisement
Guest User

Untitled

a guest
Sep 25th, 2012
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. ##----------------------------------------------------------------------
  4. ## System Version Report
  5. ##----------------------------------------------------------------------
  6. ## Copyright (C) 2007-2011 The NOC Project
  7. ## See LICENSE for details
  8. ##----------------------------------------------------------------------
  9.  
  10. ## Python modules
  11. from __future__ import with_statement
  12. import os
  13. import sys
  14. import csv
  15. import platform
  16. import subprocess
  17. ## Third-party modules
  18. import pymongo
  19. ## NOC modules
  20. sys.path = [".", ".."] + sys.path
  21. import settings
  22.  
  23. if hasattr(subprocess, "check_output"):
  24. check_output = subprocess.check_output
  25. else:
  26. def check_output(args):
  27. return subprocess.Popen(args, stdout=subprocess.PIPE).communicate()[0]
  28.  
  29. def get_version():
  30. """
  31. Returns NOC version
  32. :return:
  33. """
  34. with open("VERSION") as f:
  35. v = f.read().split("\n")[0].strip()
  36. try:
  37. from mercurial import ui, localrepo
  38.  
  39. try:
  40. lr = localrepo.localrepository(ui.ui(), path=".")
  41. rev = lr.changelog.rev(lr.changelog.tip())
  42. v += "r%s" % rev
  43. except:
  44. pass
  45. except ImportError:
  46. pass
  47. return v
  48.  
  49.  
  50. def get_pg_version():
  51. with os.popen("pg_config --version") as f:
  52. return f.read().strip()
  53.  
  54.  
  55. def get_psycopg_version():
  56. import psycopg2
  57. return psycopg2.__version__
  58.  
  59.  
  60. def get_pymongo_version():
  61. import pymongo
  62. return pymongo.version
  63.  
  64.  
  65. def get_mongo_version():
  66. connection_args = {}
  67. if settings.NOSQL_DATABASE_HOST:
  68. connection_args["host"] = settings.NOSQL_DATABASE_HOST
  69. if settings.NOSQL_DATABASE_PORT:
  70. connection_args["port"] = settings.NOSQL_DATABASE_PORT
  71. c = pymongo.Connection(**connection_args)
  72. i = c.server_info()
  73. return "%s (%dbit)" % (i["version"], i["bits"])
  74.  
  75.  
  76. def get_brand():
  77. """
  78. Get OS brand
  79. :return:
  80. """
  81. o = os.uname()[0].lower()
  82. if o == "linux":
  83. # First, try lsb_release -d
  84. try:
  85. 84,1 59%
  86. b = check_output(["lsb_release", "-d"])
  87. return b.split(":", 1)[1].strip()
  88. except OSError:
  89. pass
  90. if os.path.exists("/etc/SuSE-release"):
  91. # SuSE
  92. with open("/etc/SuSE-release") as f:
  93. return f.readline().strip()
  94. elif o == "darwin":
  95. # OS X
  96. return "Mac OS X %s" % platform.mac_ver()[0]
  97. return None
  98.  
  99.  
  100. def about():
  101. versions = [
  102. ["NOC", get_version()],
  103. ["OS", " ".join(os.uname())]
  104. ]
  105. os_brand = get_brand()
  106. if os_brand:
  107. versions += [["OS Brand", os_brand]]
  108. versions += [
  109. ["Python", sys.version],
  110. ["PostgreSQL", get_pg_version()],
  111. ["MongoDB", get_mongo_version()],
  112. ["Python Path", ":".join(sys.path)],
  113. ["psycopg2", get_psycopg_version()],
  114. ["pymongo", get_pymongo_version()]
  115. ]
  116. cv_path = os.path.join("contrib", "lib", "VERSION.csv")
  117. if os.path.exists(cv_path):
  118. with open(cv_path) as f:
  119. r = csv.reader(f)
  120. for row in r:
  121. versions += [row]
  122. for c, v in versions:
  123. print "|%s|%s|" % (c, v.replace("\n", " "))
  124.  
  125. if __name__ == "__main__":
  126. about()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement