)]}'
{"monasca_agent/collector/checks_d/ovs.py":[{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"fe88437ff5e19453f7592a967836c32aaa2738a8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/env python"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"import datetime"},{"line_number":6,"context_line":"import json"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_91cc5336","line":3,"range":{"start_line":3,"start_character":60,"end_line":3,"end_character":67},"updated":"2016-06-14 10:58:28.000000000","message":"remove Company from the decl.","commit_id":"14ea56af0e419e5ab747bf50b1bfb37fc16ba5e2"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"fc8aa23bf03ec827b73b54eaeab1c274488be652","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/env python"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"import datetime"},{"line_number":6,"context_line":"import json"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_f57ad1b8","line":3,"range":{"start_line":3,"start_character":60,"end_line":3,"end_character":67},"in_reply_to":"7aa08908_91cc5336","updated":"2016-06-14 15:57:13.000000000","message":"I have referred from existing collector files and they have included Company tag.","commit_id":"14ea56af0e419e5ab747bf50b1bfb37fc16ba5e2"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"fe88437ff5e19453f7592a967836c32aaa2738a8","unresolved":false,"context_lines":[{"line_number":21,"context_line":"%s --columns\u003dname,external_ids,statistics,options \\"},{"line_number":22,"context_line":"--format\u003djson --data\u003djson list Interface\\"},{"line_number":23,"context_line":"\"\"\""},{"line_number":24,"context_line":"VHU_PREFIX \u003d \u0027vhu\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"\"\"\"Monasca Agent interface for ovs router port and dhcp metrics\"\"\""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_5114abe7","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":10},"updated":"2016-06-14 10:58:28.000000000","message":"name can be more descriptive. VHOST_USER_PREFIX.\nOr DPDK_PORT_PREFIX","commit_id":"14ea56af0e419e5ab747bf50b1bfb37fc16ba5e2"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"fc8aa23bf03ec827b73b54eaeab1c274488be652","unresolved":false,"context_lines":[{"line_number":21,"context_line":"%s --columns\u003dname,external_ids,statistics,options \\"},{"line_number":22,"context_line":"--format\u003djson --data\u003djson list Interface\\"},{"line_number":23,"context_line":"\"\"\""},{"line_number":24,"context_line":"VHU_PREFIX \u003d \u0027vhu\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"\"\"\"Monasca Agent interface for ovs router port and dhcp metrics\"\"\""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_554c859d","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":10},"in_reply_to":"7aa08908_5114abe7","updated":"2016-06-14 15:57:13.000000000","message":"Done","commit_id":"14ea56af0e419e5ab747bf50b1bfb37fc16ba5e2"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"fe88437ff5e19453f7592a967836c32aaa2738a8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            if ifx not in ctr_cache:"},{"line_number":79,"context_line":"                ctr_cache[ifx] \u003d {}"},{"line_number":80,"context_line":"            for metric_name, idx in self._get_metrics_map().iteritems():"},{"line_number":81,"context_line":"                if VHU_PREFIX in ifx:"},{"line_number":82,"context_line":"                    # ovs-vsctl  does not give rx_dropped and tx_error stats for DPDK ports"},{"line_number":83,"context_line":"                    # This check is for DPDK ports."},{"line_number":84,"context_line":"                    idx \u003d self._get_idx_for_dpdk(metric_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_117a2324","line":81,"range":{"start_line":81,"start_character":19,"end_line":81,"end_character":29},"updated":"2016-06-14 10:58:28.000000000","message":"We would want to ensure the port name starts with vhu*. And not *vhu. You must have a regexp to ensure. ^vhu*","commit_id":"14ea56af0e419e5ab747bf50b1bfb37fc16ba5e2"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"fc8aa23bf03ec827b73b54eaeab1c274488be652","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            if ifx not in ctr_cache:"},{"line_number":79,"context_line":"                ctr_cache[ifx] \u003d {}"},{"line_number":80,"context_line":"            for metric_name, idx in self._get_metrics_map().iteritems():"},{"line_number":81,"context_line":"                if VHU_PREFIX in ifx:"},{"line_number":82,"context_line":"                    # ovs-vsctl  does not give rx_dropped and tx_error stats for DPDK ports"},{"line_number":83,"context_line":"                    # This check is for DPDK ports."},{"line_number":84,"context_line":"                    idx \u003d self._get_idx_for_dpdk(metric_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_95426d66","line":81,"range":{"start_line":81,"start_character":19,"end_line":81,"end_character":29},"in_reply_to":"7aa08908_117a2324","updated":"2016-06-14 15:57:13.000000000","message":"Done","commit_id":"14ea56af0e419e5ab747bf50b1bfb37fc16ba5e2"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"fe88437ff5e19453f7592a967836c32aaa2738a8","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                    # This check is for DPDK ports."},{"line_number":84,"context_line":"                    idx \u003d self._get_idx_for_dpdk(metric_name)"},{"line_number":85,"context_line":"                statistics_dict \u003d interface_data[ifx][\u0027statistics\u0027]"},{"line_number":86,"context_line":"                value \u003d statistics_dict[idx] if idx in statistics_dict else 0"},{"line_number":87,"context_line":"                if metric_name in ctr_cache[ifx]:"},{"line_number":88,"context_line":"                    cache_time \u003d ctr_cache[ifx][metric_name][\u0027timestamp\u0027]"},{"line_number":89,"context_line":"                    time_diff \u003d sample_time - float(cache_time)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_b1b86fc9","line":86,"range":{"start_line":86,"start_character":23,"end_line":86,"end_character":24},"updated":"2016-06-14 10:58:28.000000000","message":"nit: a good practice (for readability) is to hav, specially when the expression is longer.\nif idx:\n ....","commit_id":"14ea56af0e419e5ab747bf50b1bfb37fc16ba5e2"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"fc8aa23bf03ec827b73b54eaeab1c274488be652","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                    # This check is for DPDK ports."},{"line_number":84,"context_line":"                    idx \u003d self._get_idx_for_dpdk(metric_name)"},{"line_number":85,"context_line":"                statistics_dict \u003d interface_data[ifx][\u0027statistics\u0027]"},{"line_number":86,"context_line":"                value \u003d statistics_dict[idx] if idx in statistics_dict else 0"},{"line_number":87,"context_line":"                if metric_name in ctr_cache[ifx]:"},{"line_number":88,"context_line":"                    cache_time \u003d ctr_cache[ifx][metric_name][\u0027timestamp\u0027]"},{"line_number":89,"context_line":"                    time_diff \u003d sample_time - float(cache_time)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_50013304","line":86,"range":{"start_line":86,"start_character":23,"end_line":86,"end_character":24},"in_reply_to":"7aa08908_b1b86fc9","updated":"2016-06-14 15:57:13.000000000","message":"Used the original variable name and hence not modified","commit_id":"14ea56af0e419e5ab747bf50b1bfb37fc16ba5e2"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"fe88437ff5e19453f7592a967836c32aaa2738a8","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            this_dimensions.update(ifx_dimensions)"},{"line_number":174,"context_line":"            for metric_name, idx in self._get_metrics_map().iteritems():"},{"line_number":175,"context_line":"                # POST to customer project"},{"line_number":176,"context_line":"                if VHU_PREFIX in ifx:"},{"line_number":177,"context_line":"                    # This check is for DPDK ports."},{"line_number":178,"context_line":"                    idx \u003d self._get_idx_for_dpdk(metric_name)"},{"line_number":179,"context_line":"                customer_dimensions \u003d this_dimensions.copy()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_51be6bae","line":176,"range":{"start_line":176,"start_character":19,"end_line":176,"end_character":29},"updated":"2016-06-14 10:58:28.000000000","message":"Same as previous comment. Check if the port name starts with vhu.","commit_id":"14ea56af0e419e5ab747bf50b1bfb37fc16ba5e2"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"fc8aa23bf03ec827b73b54eaeab1c274488be652","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            this_dimensions.update(ifx_dimensions)"},{"line_number":174,"context_line":"            for metric_name, idx in self._get_metrics_map().iteritems():"},{"line_number":175,"context_line":"                # POST to customer project"},{"line_number":176,"context_line":"                if VHU_PREFIX in ifx:"},{"line_number":177,"context_line":"                    # This check is for DPDK ports."},{"line_number":178,"context_line":"                    idx \u003d self._get_idx_for_dpdk(metric_name)"},{"line_number":179,"context_line":"                customer_dimensions \u003d this_dimensions.copy()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_700a6f21","line":176,"range":{"start_line":176,"start_character":19,"end_line":176,"end_character":29},"in_reply_to":"7aa08908_51be6bae","updated":"2016-06-14 15:57:13.000000000","message":"Done","commit_id":"14ea56af0e419e5ab747bf50b1bfb37fc16ba5e2"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"fe88437ff5e19453f7592a967836c32aaa2738a8","unresolved":false,"context_lines":[{"line_number":487,"context_line":""},{"line_number":488,"context_line":"        return True"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    def _get_idx_for_dpdk(self, metric_name):"},{"line_number":491,"context_line":"        \"\"\"\"Get the statistics value based on type of port.\"\"\""},{"line_number":492,"context_line":"        # The reason for swapping the metric_map value is in DPDK the tx counters"},{"line_number":493,"context_line":"        # given by ovs-vsctl is actually rx counter and vice-versa."}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_f1331760","line":490,"range":{"start_line":490,"start_character":8,"end_line":490,"end_character":25},"updated":"2016-06-14 10:58:28.000000000","message":"nit: Does this name indicate what it is doing? \nAlso this function can be made static if you pass self.use_bits.","commit_id":"14ea56af0e419e5ab747bf50b1bfb37fc16ba5e2"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"fc8aa23bf03ec827b73b54eaeab1c274488be652","unresolved":false,"context_lines":[{"line_number":487,"context_line":""},{"line_number":488,"context_line":"        return True"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    def _get_idx_for_dpdk(self, metric_name):"},{"line_number":491,"context_line":"        \"\"\"\"Get the statistics value based on type of port.\"\"\""},{"line_number":492,"context_line":"        # The reason for swapping the metric_map value is in DPDK the tx counters"},{"line_number":493,"context_line":"        # given by ovs-vsctl is actually rx counter and vice-versa."}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_b0ce9757","line":490,"range":{"start_line":490,"start_character":8,"end_line":490,"end_character":25},"in_reply_to":"7aa08908_f1331760","updated":"2016-06-14 15:57:13.000000000","message":"Done","commit_id":"14ea56af0e419e5ab747bf50b1bfb37fc16ba5e2"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"fe88437ff5e19453f7592a967836c32aaa2738a8","unresolved":false,"context_lines":[{"line_number":495,"context_line":"            measure \u003d \u0027bits\u0027"},{"line_number":496,"context_line":"        else:"},{"line_number":497,"context_line":"            measure \u003d \u0027bytes\u0027"},{"line_number":498,"context_line":"        metrics_map \u003d {\"out_%s\" % measure: \"rx_bytes\","},{"line_number":499,"context_line":"                       \"in_%s\" % measure: \"tx_bytes\","},{"line_number":500,"context_line":"                       \"in_packets\": \"tx_packets\","},{"line_number":501,"context_line":"                       \"out_packets\": \"rx_packets\","}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_1124e30a","line":498,"range":{"start_line":498,"start_character":8,"end_line":498,"end_character":19},"updated":"2016-06-14 10:58:28.000000000","message":"constant declarations must be at the beginning of the function decl.","commit_id":"14ea56af0e419e5ab747bf50b1bfb37fc16ba5e2"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"bf286efaa91c249b5dfeb82aaa5c1ed7b4988501","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                    # ovs-vsctl  does not give rx_dropped and tx_error stats for DPDK ports"},{"line_number":84,"context_line":"                    # This check is for DPDK ports."},{"line_number":85,"context_line":"                    idx \u003d self._get_interface_stats_key_for_dpdk(metric_name,"},{"line_number":86,"context_line":"                                                                 measure)"},{"line_number":87,"context_line":"                statistics_dict \u003d interface_data[ifx][\u0027statistics\u0027]"},{"line_number":88,"context_line":"                value \u003d statistics_dict[idx] if idx in statistics_dict else 0"},{"line_number":89,"context_line":"                if metric_name in ctr_cache[ifx]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_c618bb20","line":86,"range":{"start_line":86,"start_character":65,"end_line":86,"end_character":72},"updated":"2016-06-14 20:32:35.000000000","message":"I think I would prefer creating a method for the above four lines, especially since it looks like very similar code is replicated at lines 178-181 below.\n\nAlso, I don\u0027t think you should replace the value of idx like you\u0027ve done. Maybe should declare a new variable, interface_stats_key or whatever is a good generic name to handle both the non and dpdk case. Then end up with code as follows:\n\ndef _get_interface_stats_key(idx):\n    if re.match(r\"^\" + DPDK_PORT_PREFIX, ifx):\n        return self._get_interface_stats_key_for_dpdk(metric_name,\n                                                                 measure)\n    else:\n        return idx","commit_id":"40a8fe0f65331db74addb33861ce091f4da114b8"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"afaf452b0123fa5cfc098e659dfabaa836a75cc6","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                    # ovs-vsctl  does not give rx_dropped and tx_error stats for DPDK ports"},{"line_number":84,"context_line":"                    # This check is for DPDK ports."},{"line_number":85,"context_line":"                    idx \u003d self._get_interface_stats_key_for_dpdk(metric_name,"},{"line_number":86,"context_line":"                                                                 measure)"},{"line_number":87,"context_line":"                statistics_dict \u003d interface_data[ifx][\u0027statistics\u0027]"},{"line_number":88,"context_line":"                value \u003d statistics_dict[idx] if idx in statistics_dict else 0"},{"line_number":89,"context_line":"                if metric_name in ctr_cache[ifx]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_14093f31","line":86,"range":{"start_line":86,"start_character":65,"end_line":86,"end_character":72},"in_reply_to":"7aa08908_c618bb20","updated":"2016-06-15 06:40:47.000000000","message":"Thanks Roland. I have addressed this in the latest patchset.\nRequest you to go through this and let me know for comments.","commit_id":"40a8fe0f65331db74addb33861ce091f4da114b8"}]}
