← Back to team overview

graphite-dev team mailing list archive

[Question #218547]: Dashboard becomes unusable when UI configured for Tree (left navbar) after it was previously configured for Completer (top navbar)

 

New question #218547 on Graphite:
https://answers.launchpad.net/graphite/+question/218547

I have spent about 12 hours over the past two workdays building a graphite system based on CentOS 5.7.  It took a long time because most of the default system packages had to be replaced for compatibility reasons, but that is understandable given the array of functionality involved.

I finally was very happy with how I had it set up and I started poking around in the UI to take a look at the options. One of them was a Dashboard dropdown  with a "Configure UI" option. When I toggled the "Navigation Bar" setting behind that option, my whole graphite install became unusable. When I log into the dashboard the page displays only the text

"Drop To Merge"

and nothing else. I can't undo the change because the page that stopped working was the page where I could make the change.

I also had just told the intended users of the system that it was finally ready to go, so this is pretty frustrating.

Also, I found someone else's random graphite dashboard online. I haven't tried changing the setting on that to see if this is really a reproducible bug, but if it is then this might qualify as a security issue since it would allow arbitrary internet users to break anyone's graphite system. Please feel free to downgrade this to "Not a security vulnerability" if I am wrong.

Here is the list of sources I used to perform my install:
apr-1.4.6
apr-util-1.5.1
cairo-1.10.2
carbon-0.9.10
db-5.3.21
Django-1.4.3
django-tagging-0.3.1
graphite-web-0.9.10
httpd-2.2.23
libevent-2.0.21-stable
memcached-1.4.15
mod_wsgi-3.4
mysql-5.5.29
MySQL-python-1.2.4b4
openldap-2.4.33
pip-1.2.1
pixman-0.22.2
py2cairo-1.10.0
Python-2.7
python-ldap-2.4.10
python-memcached-1.48
python-txamqp-0.3
setuptools-0.6c11
Twisted-12.3.0
unixODBC-2.3.1
whisper-0.9.10
zope.interface-3.6.7



The page source of the "Drop To Merge" dashboard is:

<html>
  <head>
    <title>Graphite Dashboard</title>
    <link rel="stylesheet" type="text/css" href="/content/js/ext/resources/css/ext-all.css"/>
    <link rel="stylesheet" type="text/css" href="/content/css/dashboard.css"/>

    <script type="text/javascript">
    var schemes = [{"pattern": "<category>", "name": "Everything", "fields": [{"name": "category", "label": "Category"}]}];
    var UI_CONFIG = {"default_graph_height": 250, "automatic_variants": true, "theme": "default", "default_graph_width": 400, "merge_hover_delay": 750, "keyboard_shortcuts": {"toggle_toolbar": "ctrl-z", "completer_add_metrics": "alt-enter", "erase_all_graphs": "alt-x", "toggle_metrics_panel": "ctrl-space", "completer_del_metrics": "alt-backspace", "save_dashboard": "alt-s", "give_completer_focus": "shift-space"}, "autocomplete_delay": 375, "refresh_interval": 60};
    var CONTEXT_FIELD_WIDTH = 220;
    var AUTOCOMPLETE_DELAY = UI_CONFIG.autocomplete_delay;
    var FINDER_QUERY_DELAY = 100;
    var NEW_DASHBOARD_REMOVE_GRAPHS = false;

    var RESIZE_ICON   = '/content/js/ext/examples/shared/icons/fam/cog_edit.png';
    var REMOVE_ICON   = '/content/js/ext/examples/shared/icons/fam/cross.gif';
    var REFRESH_ICON  = '/content/js/ext/examples/shared/icons/fam/table_refresh.png';
    var SHARE_ICON    = '/content/js/ext/examples/shared/icons/fam/application_go.png';
    var CALENDAR_ICON = '/content/js/ext/resources/images/default/shared/calendar.gif';
    var CLOCK_ICON    = '/content/img/clock_16.png';
    var HELP_ICON     = '/content/js/ext/examples/shared/icons/fam/information.png';

    
    var initialState = null;
    

    
    var initialError = null;
    

    
    var queryString = {};
    
    </script>

    <!-- Theme overrides -->
    <link rel="stylesheet" type="text/css" href="/content/css/dashboard-default.css"/>

    
    <script type="text/javascript" src="/content/js/ext/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="/content/js/ext/ext-all.js"></script>
    <script type="text/javascript" src="/content/js/ext/ux/DataViewTransition.js"></script>
    <script type="text/javascript" src="/content/js/composer_widgets.js"></script>
    <script type="text/javascript" src="/content/js/dashboard.js"></script>
    

    <script type="text/javascript">
    Ext.BLANK_IMAGE_URL = '/content/js/ext/resources/images/default/s.gif';
    Ext.QuickTips.init();
    Ext.onReady(initDashboard);
    </script> 

  </head>
  <body>
    <div id='merge'>Drop To Merge</div>
  </body>
</html>

-- 
You received this question notification because you are a member of
graphite-dev, which is an answer contact for Graphite.