diff --git a/tuskar_ui/infrastructure/nodes/views.py b/tuskar_ui/infrastructure/nodes/views.py index b8ea03a09..9903d6438 100644 --- a/tuskar_ui/infrastructure/nodes/views.py +++ b/tuskar_ui/infrastructure/nodes/views.py @@ -137,11 +137,8 @@ class PerformanceView(base.TemplateView): node_uuid = kwargs.get('node_uuid') node = api.node.Node.get(request, node_uuid) - average = used = 0 - tooltip_average = '' unit = '' series = [] - start_datetime = end_datetime = '' try: ip_addr = node.driver_info['ip_address'] @@ -212,26 +209,12 @@ class PerformanceView(base.TemplateView): util['unit'] = '%' series = [util] - if series and barchart: - average, used, tooltip_average = ( - metering_utils.get_barchart_stats(series, unit)) - - if date_from: - start_datetime = date_from.strftime("%Y-%m-%dT%H:%M:%S") - if date_to: - end_datetime = date_to.strftime("%Y-%m-%dT%H:%M:%S") - json_output = metering_utils.create_json_output( series, - start_datetime, - end_datetime) - - if series and barchart: - json_output = metering_utils.add_barchart_settings( - json_output, - average, - used, - tooltip_average) + barchart, + unit, + date_from, + date_to) return http.HttpResponse(json.dumps(json_output), mimetype='application/json') diff --git a/tuskar_ui/utils/metering.py b/tuskar_ui/utils/metering.py index dded8531d..a79f01aa5 100644 --- a/tuskar_ui/utils/metering.py +++ b/tuskar_ui/utils/metering.py @@ -11,6 +11,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +import copy from datetime import datetime # noqa from datetime import timedelta # noqa @@ -24,6 +25,39 @@ from horizon import exceptions from openstack_dashboard.api import ceilometer from openstack_dashboard.dashboards.admin.metering import views as metering +SETTINGS = { + 'settings': { + 'renderer': 'StaticAxes', + 'xMin': None, + 'xMax': None, + 'higlight_last_point': True, + 'auto_size': False, + 'auto_resize': False, + 'axes_x': False, + 'axes_y': True, + 'axes_y_label': False, + 'bar_chart_settings': { + 'orientation': 'vertical', + 'used_label_placement': 'left', + 'width': 30, + 'color_scale_domain': [0, 80, 80, 100], + 'color_scale_range': [ + '#0000FF', + '#0000FF', + '#FF0000', + '#FF0000' + ], + 'average_color_scale_domain': [0, 100], + 'average_color_scale_range': ['#0000FF', '#0000FF'] + } + }, + 'stats': { + 'average': None, + 'used': None, + 'tooltip_average': None, + } +} + #TODO(lsmola) this should probably live in Horizon common def query_data(request, @@ -159,42 +193,28 @@ def get_barchart_stats(series, unit): return average, used, tooltip_average -def create_json_output(series, start_datetime, end_datetime): - return { - 'series': series, - 'settings': { - 'renderer': 'StaticAxes', - 'yMin': 0, - 'xMin': start_datetime, - 'xMax': end_datetime, - 'higlight_last_point': True, - 'auto_size': False, - 'auto_resize': False, - 'axes_x': False, - 'axes_y': True, - 'axes_y_label': False, - }, - } +def create_json_output(series, barchart, unit, date_from, date_to): + start_datetime = end_datetime = '' + if date_from: + start_datetime = date_from.strftime("%Y-%m-%dT%H:%M:%S") + if date_to: + end_datetime = date_to.strftime("%Y-%m-%dT%H:%M:%S") + settings = copy.deepcopy(SETTINGS) + settings['settings']['xMin'] = start_datetime + settings['settings']['xMax'] = end_datetime -def add_barchart_settings(ret, average, used, tooltip_average): - ret['settings']['bar_chart_settings'] = { - 'orientation': 'vertical', - 'used_label_placement': 'left', - 'width': 30, - 'color_scale_domain': [0, 80, 80, 100], - 'color_scale_range': [ - '#0000FF', - '#0000FF', - '#FF0000', - '#FF0000' - ], - 'average_color_scale_domain': [0, 100], - 'average_color_scale_range': ['#0000FF', '#0000FF'] - } - ret['stats'] = { - 'average': average, - 'used': used, - 'tooltip_average': tooltip_average, - } - return ret + if series and barchart: + average, used, tooltip_average = get_barchart_stats(series, unit) + settings['settings']['yMin'] = 0 + settings['settings']['yMax'] = 100 + settings['stats']['average'] = average + settings['stats']['used'] = used + settings['stats']['tooltip_average'] = tooltip_average + else: + del settings['settings']['bar_chart_settings'] + del settings['stats'] + + json_output = {'series': series} + json_output = dict(json_output.items() + settings.items()) + return json_output