Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- ##----------------------------------------------------------------------
- ## System Version Report
- ##----------------------------------------------------------------------
- ## Copyright (C) 2007-2011 The NOC Project
- ## See LICENSE for details
- ##----------------------------------------------------------------------
- ## Python modules
- from __future__ import with_statement
- import os
- import sys
- import csv
- import platform
- import subprocess
- ## Third-party modules
- import pymongo
- ## NOC modules
- sys.path = [".", ".."] + sys.path
- import settings
- if hasattr(subprocess, "check_output"):
- check_output = subprocess.check_output
- else:
- def check_output(args):
- return subprocess.Popen(args, stdout=subprocess.PIPE).communicate()[0]
- def get_version():
- """
- Returns NOC version
- :return:
- """
- with open("VERSION") as f:
- v = f.read().split("\n")[0].strip()
- try:
- from mercurial import ui, localrepo
- try:
- lr = localrepo.localrepository(ui.ui(), path=".")
- rev = lr.changelog.rev(lr.changelog.tip())
- v += "r%s" % rev
- except:
- pass
- except ImportError:
- pass
- return v
- def get_pg_version():
- with os.popen("pg_config --version") as f:
- return f.read().strip()
- def get_psycopg_version():
- import psycopg2
- return psycopg2.__version__
- def get_pymongo_version():
- import pymongo
- return pymongo.version
- def get_mongo_version():
- connection_args = {}
- if settings.NOSQL_DATABASE_HOST:
- connection_args["host"] = settings.NOSQL_DATABASE_HOST
- if settings.NOSQL_DATABASE_PORT:
- connection_args["port"] = settings.NOSQL_DATABASE_PORT
- c = pymongo.Connection(**connection_args)
- i = c.server_info()
- return "%s (%dbit)" % (i["version"], i["bits"])
- def get_brand():
- """
- Get OS brand
- :return:
- """
- o = os.uname()[0].lower()
- if o == "linux":
- # First, try lsb_release -d
- try:
- 84,1 59%
- b = check_output(["lsb_release", "-d"])
- return b.split(":", 1)[1].strip()
- except OSError:
- pass
- if os.path.exists("/etc/SuSE-release"):
- # SuSE
- with open("/etc/SuSE-release") as f:
- return f.readline().strip()
- elif o == "darwin":
- # OS X
- return "Mac OS X %s" % platform.mac_ver()[0]
- return None
- def about():
- versions = [
- ["NOC", get_version()],
- ["OS", " ".join(os.uname())]
- ]
- os_brand = get_brand()
- if os_brand:
- versions += [["OS Brand", os_brand]]
- versions += [
- ["Python", sys.version],
- ["PostgreSQL", get_pg_version()],
- ["MongoDB", get_mongo_version()],
- ["Python Path", ":".join(sys.path)],
- ["psycopg2", get_psycopg_version()],
- ["pymongo", get_pymongo_version()]
- ]
- cv_path = os.path.join("contrib", "lib", "VERSION.csv")
- if os.path.exists(cv_path):
- with open(cv_path) as f:
- r = csv.reader(f)
- for row in r:
- versions += [row]
- for c, v in versions:
- print "|%s|%s|" % (c, v.replace("\n", " "))
- if __name__ == "__main__":
- about()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement