Răsfoiți Sursa

HUE-4230 [core] Finer version number logging

Romain Rigaux 9 ani în urmă
părinte
comite
d412a8f445

+ 2 - 3
apps/about/src/about/views.py

@@ -18,13 +18,12 @@
 import json
 import logging
 
-from django.conf import settings
 from django.utils.translation import ugettext as _
 
 from desktop import appmanager
 from desktop.lib.django_util import JsonResponse, render, login_notrequired
 from desktop.log.access import access_log_level
-from desktop.models import Settings
+from desktop.models import Settings, hue_version
 from desktop.views import collect_usage
 
 
@@ -40,7 +39,7 @@ def admin_wizard(request):
   tours_and_tutorials = Settings.get_settings().tours_and_tutorials
 
   return render('admin_wizard.mako', request, {
-      'version': settings.HUE_DESKTOP_VERSION,
+      'version': hue_version(),
       'apps': dict([(app.name, app) for app in apps]),
       'app_names': app_names,
       'tours_and_tutorials': tours_and_tutorials,

+ 18 - 1
desktop/core/src/desktop/models.py

@@ -35,9 +35,12 @@ from django.db.models.query import QuerySet
 from django.template.defaultfilters import urlencode
 from django.utils.translation import ugettext as _, ugettext_lazy as _t
 
+from settings import HUE_DESKTOP_VERSION
+
 from desktop import appmanager
 from desktop.lib.i18n import force_unicode
 from desktop.lib.exceptions_renderable import PopupException
+from desktop.lib.paths import get_run_root
 from desktop.redaction import global_redaction_engine
 
 
@@ -48,11 +51,25 @@ SAMPLE_USER_INSTALL = 'hue'
 SAMPLE_USER_OWNERS = ['hue', 'sample']
 
 UTC_TIME_FORMAT = "%Y-%m-%dT%H:%MZ"
-
+HUE_VERSION = None
 
 def uuid_default():
   return str(uuid.uuid4())
 
+def hue_version():
+  global HUE_VERSION
+
+  if HUE_VERSION is None:
+    p = get_run_root('cloudera', 'cdh_version.properties')
+    if os.path.exists(p):
+      HUE_VERSION = _version_from_properties(open(p))
+    else:
+      HUE_VERSION = HUE_DESKTOP_VERSION
+
+  return HUE_VERSION
+
+def _version_from_properties(f):
+  return dict(line.strip().split('=') for line in f.readlines() if len(line.strip().split('=')) == 2).get('version', HUE_DESKTOP_VERSION)
 
 ###################################################################################################
 # Custom Settings

+ 22 - 1
desktop/core/src/desktop/tests.py

@@ -19,6 +19,7 @@
 import json
 import logging
 import os
+import StringIO
 import subprocess
 import sys
 import time
@@ -35,6 +36,8 @@ from django.core.urlresolvers import reverse
 from django.http import HttpResponse
 from django.db.models import query, CharField, SmallIntegerField
 
+from settings import HUE_DESKTOP_VERSION
+
 from beeswax.conf import HIVE_SERVER_HOST
 from pig.models import PigScript
 from useradmin.models import GroupPermission
@@ -53,7 +56,7 @@ from desktop.lib.conf import validate_path
 from desktop.lib.django_util import TruncatingModel
 from desktop.lib.exceptions_renderable import PopupException
 from desktop.lib.test_utils import grant_access
-from desktop.models import Directory, Document, Document2, get_data_link
+from desktop.models import Document, Document2, get_data_link, _version_from_properties, HUE_VERSION
 from desktop.redaction import logfilter
 from desktop.redaction.engine import RedactionPolicy, RedactionRule
 from desktop.views import check_config, home
@@ -256,6 +259,24 @@ def test_dump_config():
   assert_true('/tmp/test_hue_conf_dir' in resp.content, resp)
 
 
+def hue_version():
+  global HUE_VERSION
+  HUE_VERSION_BAK = HUE_VERSION
+
+  try:
+    assert_equal('3.9.0-cdh5.9.0-SNAPSHOT', _version_from_properties(StringIO.StringIO("""# Autogenerated build properties
+version=3.9.0-cdh5.9.0-SNAPSHOT
+git.hash=f5fbe90b6a1d0c186b0ddc6e65ce5fc8d24725c8
+cloudera.hash=f5fbe90b6a1d0c186b0ddc6e65ce5fc8d24725c8aaaaa""")))
+
+    assert_equal(HUE_DESKTOP_VERSION, _version_from_properties(StringIO.StringIO("""# Autogenerated build properties
+version=3.9.0-cdh5.9.0-SNAPSHOT git.hash=f5fbe90b6a1d0c186b0ddc6e65ce5fc8d24725c8 cloudera.hash=f5fbe90b6a1d0c186b0ddc6e65ce5fc8d24725c8aaaaa""")))
+
+    assert_equal(HUE_DESKTOP_VERSION, _version_from_properties(StringIO.StringIO('')))
+  finally:
+    HUE_VERSION = HUE_VERSION_BAK
+
+
 def test_prefs():
   c = make_logged_in_client()
 

+ 2 - 2
desktop/core/src/desktop/views.py

@@ -51,7 +51,7 @@ from desktop.lib.paths import get_desktop_root
 from desktop.lib.thread_util import dump_traceback
 from desktop.log.access import access_log_level, access_warn
 from desktop.log import set_all_debug as _set_all_debug, reset_all_debug as _reset_all_debug, get_all_debug as _get_all_debug
-from desktop.models import UserPreferences, Settings
+from desktop.models import UserPreferences, Settings, hue_version
 from desktop import appmanager
 
 
@@ -440,7 +440,7 @@ def commonfooter(request, messages=None):
   return django_mako.render_to_string("common_footer.mako", {
     'request': request,
     'messages': messages,
-    'version': settings.HUE_DESKTOP_VERSION,
+    'version': hue_version(),
     'collect_usage': collect_usage(),
     'tours_and_tutorials': hue_settings.tours_and_tutorials
   })