)]}'
{"docs/Ovs.md":[{"author":{"_account_id":11670,"name":"Alok Kumar Maurya","email":"alok.maurya88@gmail.com","username":"alokmaurya"},"change_message_id":"986d93a45f502e0f700049ba8c4f238aca4acfa7","unresolved":false,"context_lines":[{"line_number":92,"context_line":"| vswitch.port.transmit.dropped  | Drops transmitted on port                                               |"},{"line_number":93,"context_line":"| vswitch.port.receive.dropped   | Drops received on port\t\t\t\t                   |"},{"line_number":94,"context_line":"| vswitch.port.transmit.error    | Errors transmitted on port\t\t\t\t\t\t   |"},{"line_number":95,"context_line":"| vswitch.port.receive.error     | Errors received on port\t\t\t\t\t\t   |\t"},{"line_number":96,"context_line":"| vswitch.port.transmit.util     | Utilization of transmitted port\t\t\t\t           |"},{"line_number":97,"context_line":"| vswitch.port.receive.util      | Utilization of received port                                            |"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":2,"id":"9abb7d3a_b902b63c","line":95,"updated":"2016-05-28 03:33:18.000000000","message":"Please remove  extra  space  and  TABs","commit_id":"d407099873a1dfe7139410d7ef1e68d0dfa7060c"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"935aa68fbc3735d9934063ffec5304c2f6bf2b36","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"| Name                        | Description"},{"line_number":87,"context_line":"| --------------------------- | ------------------------------------|"},{"line_number":88,"context_line":"| vswitch.port.transmit.bytes    | Bytes transmitted on port        |"},{"line_number":89,"context_line":"| vswitch.port.receive.bytes     | Bytes received on port           |"},{"line_number":90,"context_line":"| vswitch.port.transmit.packets  | Packets transmitted on port      |"},{"line_number":91,"context_line":"| vswitch.port.receive.packets   | Packets received on port         |"},{"line_number":92,"context_line":"| vswitch.port.transmit.dropped  | Drops transmitted on port        |"},{"line_number":93,"context_line":"| vswitch.port.receive.dropped   | Drops received on port           |"},{"line_number":94,"context_line":"| vswitch.port.transmit.error    | Errors transmitted on port       |"},{"line_number":95,"context_line":"| vswitch.port.receive.error     | Errors received on port          |"},{"line_number":96,"context_line":"| vswitch.port.transmit.util     | Utilization of transmitted port  |"},{"line_number":97,"context_line":"| vswitch.port.receive.util      | Utilization of received port     |"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"## Router Metric Dimensions"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":6,"id":"9abb7d3a_94dceb75","line":97,"range":{"start_line":88,"start_character":0,"end_line":97,"end_character":28},"updated":"2016-06-02 15:40:10.000000000","message":"To be consistent with other Monasca metrics, these should have a single period after vswitch and then use underscores rather than periods as delimiters after that. For example, switch.port_transmit_bytes","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"e3d4a5a1f5690c2bf50481e43fcaecd88ef3f75c","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"| Name                        | Description"},{"line_number":87,"context_line":"| --------------------------- | ------------------------------------|"},{"line_number":88,"context_line":"| vswitch.port.transmit.bytes    | Bytes transmitted on port        |"},{"line_number":89,"context_line":"| vswitch.port.receive.bytes     | Bytes received on port           |"},{"line_number":90,"context_line":"| vswitch.port.transmit.packets  | Packets transmitted on port      |"},{"line_number":91,"context_line":"| vswitch.port.receive.packets   | Packets received on port         |"},{"line_number":92,"context_line":"| vswitch.port.transmit.dropped  | Drops transmitted on port        |"},{"line_number":93,"context_line":"| vswitch.port.receive.dropped   | Drops received on port           |"},{"line_number":94,"context_line":"| vswitch.port.transmit.error    | Errors transmitted on port       |"},{"line_number":95,"context_line":"| vswitch.port.receive.error     | Errors received on port          |"},{"line_number":96,"context_line":"| vswitch.port.transmit.util     | Utilization of transmitted port  |"},{"line_number":97,"context_line":"| vswitch.port.receive.util      | Utilization of received port     |"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"## Router Metric Dimensions"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":6,"id":"9abb7d3a_c8dc0a77","line":97,"range":{"start_line":88,"start_character":0,"end_line":97,"end_character":28},"in_reply_to":"9abb7d3a_94dceb75","updated":"2016-06-03 03:29:27.000000000","message":"Along the same lines of conventions, we have been using in/out for metric names. For example, see, https://github.com/openstack/monasca-agent/blob/master/docs/Plugins.md#network and the per-router metrics listed up above. I think we should use the same convention, rather than introducing transmit/receive.\n\nAre the metrics the cumulative/total number of bytes sent/received, or are they gauges, as in the number of bytes sent/received per second.\n\nAlso, why the prefix name change from \"vrouter\" to \"vswitch\"? Should we be using the same \"vswitch\" prefix as up above?","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"| Name                        | Description"},{"line_number":87,"context_line":"| --------------------------- | ------------------------------------|"},{"line_number":88,"context_line":"| vswitch.port.transmit.bytes    | Bytes transmitted on port        |"},{"line_number":89,"context_line":"| vswitch.port.receive.bytes     | Bytes received on port           |"},{"line_number":90,"context_line":"| vswitch.port.transmit.packets  | Packets transmitted on port      |"},{"line_number":91,"context_line":"| vswitch.port.receive.packets   | Packets received on port         |"},{"line_number":92,"context_line":"| vswitch.port.transmit.dropped  | Drops transmitted on port        |"},{"line_number":93,"context_line":"| vswitch.port.receive.dropped   | Drops received on port           |"},{"line_number":94,"context_line":"| vswitch.port.transmit.error    | Errors transmitted on port       |"},{"line_number":95,"context_line":"| vswitch.port.receive.error     | Errors received on port          |"},{"line_number":96,"context_line":"| vswitch.port.transmit.util     | Utilization of transmitted port  |"},{"line_number":97,"context_line":"| vswitch.port.receive.util      | Utilization of received port     |"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"## Router Metric Dimensions"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":6,"id":"9abb7d3a_7beac1ad","line":97,"range":{"start_line":88,"start_character":0,"end_line":97,"end_character":28},"in_reply_to":"9abb7d3a_94dceb75","updated":"2016-06-03 20:06:23.000000000","message":"Done","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"| Name                        | Description"},{"line_number":87,"context_line":"| --------------------------- | ------------------------------------|"},{"line_number":88,"context_line":"| vswitch.port.transmit.bytes    | Bytes transmitted on port        |"},{"line_number":89,"context_line":"| vswitch.port.receive.bytes     | Bytes received on port           |"},{"line_number":90,"context_line":"| vswitch.port.transmit.packets  | Packets transmitted on port      |"},{"line_number":91,"context_line":"| vswitch.port.receive.packets   | Packets received on port         |"},{"line_number":92,"context_line":"| vswitch.port.transmit.dropped  | Drops transmitted on port        |"},{"line_number":93,"context_line":"| vswitch.port.receive.dropped   | Drops received on port           |"},{"line_number":94,"context_line":"| vswitch.port.transmit.error    | Errors transmitted on port       |"},{"line_number":95,"context_line":"| vswitch.port.receive.error     | Errors received on port          |"},{"line_number":96,"context_line":"| vswitch.port.transmit.util     | Utilization of transmitted port  |"},{"line_number":97,"context_line":"| vswitch.port.receive.util      | Utilization of received port     |"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"## Router Metric Dimensions"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":6,"id":"9abb7d3a_db6dad33","line":97,"range":{"start_line":88,"start_character":0,"end_line":97,"end_character":28},"in_reply_to":"9abb7d3a_c8dc0a77","updated":"2016-06-03 20:06:23.000000000","message":"vrouter is implemented by TWC for the router port . vswitch.* is for qr, qg and dhcp ports. Also vswitch metrics are different from vrouter","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"4742833d98c5328b7a7b443b295aad45bed56f14","unresolved":false,"context_lines":[{"line_number":93,"context_line":"| vswitch.port_in_dropped     | Drops received on port              |"},{"line_number":94,"context_line":"| vswitch.port_out_error      | Errors transmitted on port          |"},{"line_number":95,"context_line":"| vswitch.port_in_error       | Errors received on port             |"},{"line_number":96,"context_line":"| vswitch.port_out_util       | Utilization of transmitted port     |"},{"line_number":97,"context_line":"| vswitch.port_in_util        | Utilization of received port        |"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"## Router Metric Dimensions"}],"source_content_type":"text/x-markdown","patch_set":7,"id":"9abb7d3a_9ecaf39f","line":96,"range":{"start_line":96,"start_character":32,"end_line":96,"end_character":63},"updated":"2016-06-05 17:07:52.000000000","message":"How is utilization measured? Is it a percentage? A better description would be helpful","commit_id":"f3d1c3d3d7d0c48a4ec745a6f3ad6f1f49b5ad60"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"ed42a1ee8dc412b115c92ee22f72fbfb4902726e","unresolved":false,"context_lines":[{"line_number":93,"context_line":"| vswitch.port_in_dropped     | Drops received on port              |"},{"line_number":94,"context_line":"| vswitch.port_out_error      | Errors transmitted on port          |"},{"line_number":95,"context_line":"| vswitch.port_in_error       | Errors received on port             |"},{"line_number":96,"context_line":"| vswitch.port_out_util       | Utilization of transmitted port     |"},{"line_number":97,"context_line":"| vswitch.port_in_util        | Utilization of received port        |"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"## Router Metric Dimensions"}],"source_content_type":"text/x-markdown","patch_set":7,"id":"7aa08908_3c4d1a73","line":96,"range":{"start_line":96,"start_character":32,"end_line":96,"end_character":63},"in_reply_to":"9abb7d3a_9ecaf39f","updated":"2016-06-06 12:22:56.000000000","message":"Yes I will modify it with full description.","commit_id":"f3d1c3d3d7d0c48a4ec745a6f3ad6f1f49b5ad60"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2cee67fffff709f5a6000cc4e04155d18c755b94","unresolved":false,"context_lines":[{"line_number":94,"context_line":"| vswitch.port_out_error      | Errors transmitted on port          |"},{"line_number":95,"context_line":"| vswitch.port_in_error       | Errors received on port             |"},{"line_number":96,"context_line":"| vswitch.port_out_util       | Utilization of outgoing port        | "},{"line_number":97,"context_line":"|                       \t  | in percentage.It is calculated      |"},{"line_number":98,"context_line":"|\t\t\t\t\t\t\t  |\tbased on the port speed.            |"},{"line_number":99,"context_line":"| vswitch.port_in_util        | Utilization of incoming port        |"},{"line_number":100,"context_line":"|                             | in percentage. It is calculated     |"},{"line_number":101,"context_line":"|                               based on the port speed.            |"}],"source_content_type":"text/x-markdown","patch_set":9,"id":"7aa08908_0fe8d3e1","line":98,"range":{"start_line":97,"start_character":0,"end_line":98,"end_character":12},"updated":"2016-06-06 13:49:34.000000000","message":"Looks like you have some tabs in here instead of spaces","commit_id":"e08464d840b6546fd4163010498fe9ebc6b6042c"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"3d0bd28675b336045c35aba32e6143c3e12bdae3","unresolved":false,"context_lines":[{"line_number":94,"context_line":"| vswitch.port_out_error      | Errors transmitted on port          |"},{"line_number":95,"context_line":"| vswitch.port_in_error       | Errors received on port             |"},{"line_number":96,"context_line":"| vswitch.port_out_util       | Utilization of outgoing port        | "},{"line_number":97,"context_line":"|                       \t  | in percentage.It is calculated      |"},{"line_number":98,"context_line":"|\t\t\t\t\t\t\t  |\tbased on the port speed.            |"},{"line_number":99,"context_line":"| vswitch.port_in_util        | Utilization of incoming port        |"},{"line_number":100,"context_line":"|                             | in percentage. It is calculated     |"},{"line_number":101,"context_line":"|                               based on the port speed.            |"}],"source_content_type":"text/x-markdown","patch_set":9,"id":"7aa08908_7bee768c","line":98,"range":{"start_line":97,"start_character":0,"end_line":98,"end_character":12},"in_reply_to":"7aa08908_0fe8d3e1","updated":"2016-06-06 15:33:16.000000000","message":"Done","commit_id":"e08464d840b6546fd4163010498fe9ebc6b6042c"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"1457590c0e2f4bb797d49e5eb023d01ecf9376b1","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"| Name                        | Description"},{"line_number":101,"context_line":"| --------------------------- | ------------------------------------|"},{"line_number":102,"context_line":"| vswitch.out_bytes           | Bytes transmitted on port           |"},{"line_number":103,"context_line":"| vswitch.in_bytes            | Bytes received on port              |"},{"line_number":104,"context_line":"| vswitch.out_packets         | Packets transmitted on port         |"},{"line_number":105,"context_line":"| vswitch.in_packets          | Packets received on port            |"},{"line_number":106,"context_line":"| vswitch.out_dropped         | Drops transmitted on port           |"}],"source_content_type":"text/x-markdown","patch_set":14,"id":"7aa08908_3a439a6d","line":103,"range":{"start_line":102,"start_character":0,"end_line":103,"end_character":69},"updated":"2016-06-08 23:03:54.000000000","message":"Why don\u0027t these follow the vrouter metrics and use network_use_bits?","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"1457590c0e2f4bb797d49e5eb023d01ecf9376b1","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"| Name                       | Description"},{"line_number":114,"context_line":"| ---------------------------|-------------------------------------------|"},{"line_number":115,"context_line":"| vswitch.out_bytes_sec      | Outgoing Bytes per second on DHCP port    |"},{"line_number":116,"context_line":"| vswitch.in_bytes_sec       | Incoming Bytes per second on DHCP port    |"},{"line_number":117,"context_line":"| vswitch.out_packets_sec    | Outgoing packets per second on DHCP port  |"},{"line_number":118,"context_line":"| vswitch.in_packets_sec     | Incoming Packets per second  on DHCP port |"},{"line_number":119,"context_line":"| vswitch.out_dropped_sec    | Outgoing Drops per second on DHCP port    |"}],"source_content_type":"text/x-markdown","patch_set":14,"id":"7aa08908_5a5ca64a","line":116,"range":{"start_line":115,"start_character":0,"end_line":116,"end_character":74},"updated":"2016-06-08 23:03:54.000000000","message":"See above","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"ed01f15a9e5ef9088175fd8822a2282eff2d532d","unresolved":false,"context_lines":[{"line_number":118,"context_line":"| vswitch.in_bits_sec        | Incoming Bits per second on DHCP port(if `network_use_bits` is true)      |"},{"line_number":119,"context_line":"| vswitch.out_packets_sec    | Outgoing packets per second on DHCP port                                  |"},{"line_number":120,"context_line":"| vswitch.in_packets_sec     | Incoming Packets per second  on DHCP port                                 |"},{"line_number":121,"context_line":"| vswitch.out_dropped_sec    | Outgoing Drops per second on DHCP port                                    |"},{"line_number":122,"context_line":"| vswitch.in_dropped_sec     | Incoming Drops per second on DHCP port                                    |"},{"line_number":123,"context_line":"| vswitch.out_error_sec      | Outgoing Errors per second  on DHCP port                                  |"},{"line_number":124,"context_line":"| vswitch.in_error_sec       | Incoming Errors per second  on DHCP port                                  |"}],"source_content_type":"text/x-markdown","patch_set":16,"id":"7aa08908_4b883ac7","line":121,"range":{"start_line":121,"start_character":46,"end_line":121,"end_character":49},"updated":"2016-06-09 12:57:54.000000000","message":"might want to modify this to say \"dropped packets\", instead of \"Drops\"","commit_id":"d68af21e8b10560e431f1a906e12393fc344ecd9"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"15bac4eaaee7a97662dfe23417f419e4579a7c95","unresolved":false,"context_lines":[{"line_number":118,"context_line":"| vswitch.in_bits_sec        | Incoming Bits per second on DHCP port(if `network_use_bits` is true)      |"},{"line_number":119,"context_line":"| vswitch.out_packets_sec    | Outgoing packets per second on DHCP port                                  |"},{"line_number":120,"context_line":"| vswitch.in_packets_sec     | Incoming Packets per second  on DHCP port                                 |"},{"line_number":121,"context_line":"| vswitch.out_dropped_sec    | Outgoing Drops per second on DHCP port                                    |"},{"line_number":122,"context_line":"| vswitch.in_dropped_sec     | Incoming Drops per second on DHCP port                                    |"},{"line_number":123,"context_line":"| vswitch.out_error_sec      | Outgoing Errors per second  on DHCP port                                  |"},{"line_number":124,"context_line":"| vswitch.in_error_sec       | Incoming Errors per second  on DHCP port                                  |"}],"source_content_type":"text/x-markdown","patch_set":16,"id":"7aa08908_5ac3e28a","line":121,"range":{"start_line":121,"start_character":46,"end_line":121,"end_character":49},"in_reply_to":"7aa08908_4b883ac7","updated":"2016-06-09 14:00:12.000000000","message":"Done","commit_id":"d68af21e8b10560e431f1a906e12393fc344ecd9"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"505cc9a3eb9d098377bacc22eb85c64a9f7af9e6","unresolved":false,"context_lines":[{"line_number":139,"context_line":"| Dimension Name | Customer Value             | Operations Value            |"},{"line_number":140,"context_line":"| -------------- | -------------------------- | --------------------------- |"},{"line_number":141,"context_line":"| hostname       | (N/A)                      | hostname hosting the ports  |"},{"line_number":142,"context_line":"| resource_id    | resource ID of port        | device id of the port       |"},{"line_number":143,"context_line":"| service        | \"networking\"               | \"networking\"                |"},{"line_number":144,"context_line":"| component      | \"ovs\"                      | \"ovs\"                       |"},{"line_number":145,"context_line":"| tenant_id      | (N/A)                      | project owner of the port   |"}],"source_content_type":"text/x-markdown","patch_set":16,"id":"7aa08908_abf1de6c","line":142,"range":{"start_line":142,"start_character":19,"end_line":142,"end_character":27},"updated":"2016-06-09 12:56:54.000000000","message":"I think it should be resource ID in both the customer and operations case.","commit_id":"d68af21e8b10560e431f1a906e12393fc344ecd9"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"15bac4eaaee7a97662dfe23417f419e4579a7c95","unresolved":false,"context_lines":[{"line_number":139,"context_line":"| Dimension Name | Customer Value             | Operations Value            |"},{"line_number":140,"context_line":"| -------------- | -------------------------- | --------------------------- |"},{"line_number":141,"context_line":"| hostname       | (N/A)                      | hostname hosting the ports  |"},{"line_number":142,"context_line":"| resource_id    | resource ID of port        | device id of the port       |"},{"line_number":143,"context_line":"| service        | \"networking\"               | \"networking\"                |"},{"line_number":144,"context_line":"| component      | \"ovs\"                      | \"ovs\"                       |"},{"line_number":145,"context_line":"| tenant_id      | (N/A)                      | project owner of the port   |"}],"source_content_type":"text/x-markdown","patch_set":16,"id":"7aa08908_ba3ac696","line":142,"range":{"start_line":142,"start_character":19,"end_line":142,"end_character":27},"in_reply_to":"7aa08908_abf1de6c","updated":"2016-06-09 14:00:12.000000000","message":"Done","commit_id":"d68af21e8b10560e431f1a906e12393fc344ecd9"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"b6530000520d91779cfce9d4c2a84626d2ef5b12","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"7aa08908_4cbf7bfc","updated":"2016-06-10 10:39:27.000000000","message":"typically measure for DHCP ports dont make a great sense. Do we want to filter them off in collection?","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"b6530000520d91779cfce9d4c2a84626d2ef5b12","unresolved":false,"context_lines":[{"line_number":65,"context_line":" - {}"},{"line_number":66,"context_line":"```"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"## Per-Router Rate Metrics"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"| Name                        | Description                                                                |"},{"line_number":71,"context_line":"| --------------------------- | -------------------------------------------------------------------------- |"}],"source_content_type":"text/x-markdown","patch_set":18,"id":"7aa08908_e978d9fa","line":68,"range":{"start_line":68,"start_character":14,"end_line":68,"end_character":18},"updated":"2016-06-10 10:39:27.000000000","message":"nit: rate","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"b6530000520d91779cfce9d4c2a84626d2ef5b12","unresolved":false,"context_lines":[{"line_number":95,"context_line":"| vrouter.in_errors        | Number of incoming errors for the router                        |"},{"line_number":96,"context_line":"| vrouter.out_errors       | Number of outgoing errors for the router                        |"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"## Per-DHCP port Metrics"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"| Name                     | Description"},{"line_number":101,"context_line":"| -------------------------|---------------------------------------------------------------------|"}],"source_content_type":"text/x-markdown","patch_set":18,"id":"7aa08908_29b6618a","line":98,"range":{"start_line":98,"start_character":17,"end_line":98,"end_character":24},"updated":"2016-06-10 10:39:27.000000000","message":"Do we collect this unless being told?","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"b6530000520d91779cfce9d4c2a84626d2ef5b12","unresolved":false,"context_lines":[{"line_number":141,"context_line":"| Dimension Name | Customer Value             | Operations Value            |"},{"line_number":142,"context_line":"| -------------- | -------------------------- | --------------------------- |"},{"line_number":143,"context_line":"| hostname       | (N/A)                      | hostname hosting the ports  |"},{"line_number":144,"context_line":"| resource_id    | resource ID of port        | resource id of the port     |"},{"line_number":145,"context_line":"| service        | \"networking\"               | \"networking\"                |"},{"line_number":146,"context_line":"| component      | \"ovs\"                      | \"ovs\"                       |"},{"line_number":147,"context_line":"| tenant_id      | (N/A)                      | project owner of the port   |"}],"source_content_type":"text/x-markdown","patch_set":18,"id":"7aa08908_6c3a37cf","line":144,"range":{"start_line":144,"start_character":59,"end_line":144,"end_character":60},"updated":"2016-06-10 10:39:27.000000000","message":"Description needs to be changed. It should be the device ID of the VM for VNIC ports, and Router Id for router ports.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":11671,"name":"Ashish Kumar Gupta","email":"guptaas@vmware.com","username":"ashish-kumar-gupta"},"change_message_id":"66e5ba00ba0e60525ca892ce70178f113e28a23d","unresolved":false,"context_lines":[{"line_number":141,"context_line":"| Dimension Name | Customer Value             | Operations Value            |"},{"line_number":142,"context_line":"| -------------- | -------------------------- | --------------------------- |"},{"line_number":143,"context_line":"| hostname       | (N/A)                      | hostname hosting the ports  |"},{"line_number":144,"context_line":"| resource_id    | resource ID of port        | resource id of the port     |"},{"line_number":145,"context_line":"| service        | \"networking\"               | \"networking\"                |"},{"line_number":146,"context_line":"| component      | \"ovs\"                      | \"ovs\"                       |"},{"line_number":147,"context_line":"| tenant_id      | (N/A)                      | project owner of the port   |"}],"source_content_type":"text/x-markdown","patch_set":18,"id":"7aa08908_0a955e3f","line":144,"updated":"2016-06-10 06:20:50.000000000","message":"what is resource id of the port ? \nWe donot have any field as resource id when we perform neutron port_show.\nShouldn\u0027t be this should be device_id?","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":11671,"name":"Ashish Kumar Gupta","email":"guptaas@vmware.com","username":"ashish-kumar-gupta"},"change_message_id":"1cda14b72a80c5579751609036d13c33cfc15e73","unresolved":false,"context_lines":[{"line_number":145,"context_line":"| service        | \"networking\"               | \"networking\"                |"},{"line_number":146,"context_line":"| component      | \"ovs\"                      | \"ovs\"                       |"},{"line_number":147,"context_line":"| tenant_id      | (N/A)                      | project owner of the port   |"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"# License"},{"line_number":151,"context_line":"(C) Copyright 2015-2016 Hewlett Packard Enterprise Development Company LP"}],"source_content_type":"text/x-markdown","patch_set":18,"id":"7aa08908_aa9d2a5b","line":148,"updated":"2016-06-10 06:22:46.000000000","message":"Port id seems missing in the metric dimensions list.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"b6530000520d91779cfce9d4c2a84626d2ef5b12","unresolved":false,"context_lines":[{"line_number":145,"context_line":"| service        | \"networking\"               | \"networking\"                |"},{"line_number":146,"context_line":"| component      | \"ovs\"                      | \"ovs\"                       |"},{"line_number":147,"context_line":"| tenant_id      | (N/A)                      | project owner of the port   |"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"# License"},{"line_number":151,"context_line":"(C) Copyright 2015-2016 Hewlett Packard Enterprise Development Company LP"}],"source_content_type":"text/x-markdown","patch_set":18,"id":"7aa08908_cc4feb68","line":148,"in_reply_to":"7aa08908_aa9d2a5b","updated":"2016-06-10 10:39:27.000000000","message":"ditto","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":8126,"name":"Bradley Klein","email":"bradley.klein@charter.com","username":"bklei"},"change_message_id":"fd1762578320f7d86f4913562d618c346fe5c7b2","unresolved":false,"context_lines":[{"line_number":58,"context_line":"  region_name: \u0027region1\u0027"},{"line_number":59,"context_line":"  cache_dir: /dev/shm"},{"line_number":60,"context_line":"  network_use_bits: true"},{"line_number":61,"context_line":"  use_absolute_metrics: true"},{"line_number":62,"context_line":"  ovs_cmd: \u0027sudo /usr/bin/ovs-vsctl\u0027 "},{"line_number":63,"context_line":"  included_interface_re: tap.*|qr.*|qg.*"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":21,"id":"7aa08908_28e43bde","line":61,"updated":"2016-06-13 16:33:11.000000000","message":"can you add a description of each of these above?","commit_id":"80699d23e867b3519fd3f8171645dad8c6ec11d3"}],"monasca_agent/collector/checks_d/ovs.py":[{"author":{"_account_id":11670,"name":"Alok Kumar Maurya","email":"alok.maurya88@gmail.com","username":"alokmaurya"},"change_message_id":"986d93a45f502e0f700049ba8c4f238aca4acfa7","unresolved":false,"context_lines":[{"line_number":373,"context_line":"            self.log.error(\"Cannot write to {0}: {1}\"."},{"line_number":374,"context_line":"                           format(self.vswitch_cache_file, e))"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"    def _update_port_cache(self):"},{"line_number":377,"context_line":"        if not hasattr(self, \u0027neutron_client\u0027):"},{"line_number":378,"context_line":"            self.neutron_client \u003d self._get_neutron_client()"},{"line_number":379,"context_line":"        port_cache \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_79e84e7d","line":376,"updated":"2016-05-28 03:33:18.000000000","message":"I  think  we  should merge _update_port_cache  and _update_router_cache into  one  method , we can  maintain one  cache  which  has  info  needed  by  old  and  new  metrics.","commit_id":"d407099873a1dfe7139410d7ef1e68d0dfa7060c"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"88e015643c7fa8a178163764e5edc5b8e074b868","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/env python"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"import datetime"},{"line_number":4,"context_line":"import json"},{"line_number":5,"context_line":"import logging"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_aaf8b0c5","line":2,"updated":"2016-06-02 15:43:37.000000000","message":"make sure you add the HPE copyright here","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"1faee6f00d9c131b8b7441c51ec4683854711938","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/env python"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"import datetime"},{"line_number":4,"context_line":"import json"},{"line_number":5,"context_line":"import logging"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_b4ec76c8","line":2,"in_reply_to":"9abb7d3a_aaf8b0c5","updated":"2016-06-06 13:43:16.000000000","message":"Done","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"e3d4a5a1f5690c2bf50481e43fcaecd88ef3f75c","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        cache_dir \u003d self.init_config.get(\u0027cache_dir\u0027)"},{"line_number":36,"context_line":"        self.ctr_cache_file \u003d os.path.join(cache_dir, \u0027ovs_metrics.json\u0027)"},{"line_number":37,"context_line":"        self.rtr_cache_file \u003d os.path.join(cache_dir, \u0027ovs_routers.json\u0027)"},{"line_number":38,"context_line":"        self.port_cache_file \u003d os.path.join(cache_dir, \u0027ports_metrics.json\u0027)"},{"line_number":39,"context_line":"        self.use_bits \u003d self.init_config.get(\u0027network_use_bits\u0027)"},{"line_number":40,"context_line":"        self.check_router_ha \u003d self.init_config.get(\u0027check_router_ha\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_7a81524d","line":37,"range":{"start_line":37,"start_character":13,"end_line":37,"end_character":27},"updated":"2016-06-03 03:29:27.000000000","message":"I guess rtr_cache_file is short for router cache file, and ctr_cahche_file is for counter cache file. It might be better to use a fully qualified name, rather than an acronym that isn\u0027t directly associated with a name. It took me a while to figure out what ctr_cache_file was for.","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        cache_dir \u003d self.init_config.get(\u0027cache_dir\u0027)"},{"line_number":36,"context_line":"        self.ctr_cache_file \u003d os.path.join(cache_dir, \u0027ovs_metrics.json\u0027)"},{"line_number":37,"context_line":"        self.rtr_cache_file \u003d os.path.join(cache_dir, \u0027ovs_routers.json\u0027)"},{"line_number":38,"context_line":"        self.port_cache_file \u003d os.path.join(cache_dir, \u0027ports_metrics.json\u0027)"},{"line_number":39,"context_line":"        self.use_bits \u003d self.init_config.get(\u0027network_use_bits\u0027)"},{"line_number":40,"context_line":"        self.check_router_ha \u003d self.init_config.get(\u0027check_router_ha\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_9b5a0582","line":37,"range":{"start_line":37,"start_character":13,"end_line":37,"end_character":27},"in_reply_to":"9abb7d3a_7a81524d","updated":"2016-06-03 20:06:23.000000000","message":"Done","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"1faee6f00d9c131b8b7441c51ec4683854711938","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        cache_dir \u003d self.init_config.get(\u0027cache_dir\u0027)"},{"line_number":36,"context_line":"        self.ctr_cache_file \u003d os.path.join(cache_dir, \u0027ovs_metrics.json\u0027)"},{"line_number":37,"context_line":"        self.rtr_cache_file \u003d os.path.join(cache_dir, \u0027ovs_routers.json\u0027)"},{"line_number":38,"context_line":"        self.port_cache_file \u003d os.path.join(cache_dir, \u0027ports_metrics.json\u0027)"},{"line_number":39,"context_line":"        self.use_bits \u003d self.init_config.get(\u0027network_use_bits\u0027)"},{"line_number":40,"context_line":"        self.check_router_ha \u003d self.init_config.get(\u0027check_router_ha\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_d40ca296","line":37,"range":{"start_line":37,"start_character":13,"end_line":37,"end_character":27},"in_reply_to":"9abb7d3a_9b5a0582","updated":"2016-06-06 13:43:16.000000000","message":"Done","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"e3d4a5a1f5690c2bf50481e43fcaecd88ef3f75c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        cache_dir \u003d self.init_config.get(\u0027cache_dir\u0027)"},{"line_number":36,"context_line":"        self.ctr_cache_file \u003d os.path.join(cache_dir, \u0027ovs_metrics.json\u0027)"},{"line_number":37,"context_line":"        self.rtr_cache_file \u003d os.path.join(cache_dir, \u0027ovs_routers.json\u0027)"},{"line_number":38,"context_line":"        self.port_cache_file \u003d os.path.join(cache_dir, \u0027ports_metrics.json\u0027)"},{"line_number":39,"context_line":"        self.use_bits \u003d self.init_config.get(\u0027network_use_bits\u0027)"},{"line_number":40,"context_line":"        self.check_router_ha \u003d self.init_config.get(\u0027check_router_ha\u0027)"},{"line_number":41,"context_line":"        self.ovs_cmd \u003d OVS_CMD % self.init_config.get(\u0027ovs_cmd\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_c8a24a9a","line":38,"range":{"start_line":38,"start_character":56,"end_line":38,"end_character":69},"updated":"2016-06-03 03:29:27.000000000","message":"Would changing the default to \"ovs_port_counters.json\" or \"ovs_port_metrics.json\" be preferable to match the naming convention up above?","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        cache_dir \u003d self.init_config.get(\u0027cache_dir\u0027)"},{"line_number":36,"context_line":"        self.ctr_cache_file \u003d os.path.join(cache_dir, \u0027ovs_metrics.json\u0027)"},{"line_number":37,"context_line":"        self.rtr_cache_file \u003d os.path.join(cache_dir, \u0027ovs_routers.json\u0027)"},{"line_number":38,"context_line":"        self.port_cache_file \u003d os.path.join(cache_dir, \u0027ports_metrics.json\u0027)"},{"line_number":39,"context_line":"        self.use_bits \u003d self.init_config.get(\u0027network_use_bits\u0027)"},{"line_number":40,"context_line":"        self.check_router_ha \u003d self.init_config.get(\u0027check_router_ha\u0027)"},{"line_number":41,"context_line":"        self.ovs_cmd \u003d OVS_CMD % self.init_config.get(\u0027ovs_cmd\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_7b5da178","line":38,"range":{"start_line":38,"start_character":56,"end_line":38,"end_character":69},"in_reply_to":"9abb7d3a_c8a24a9a","updated":"2016-06-03 20:06:23.000000000","message":"Done","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":11670,"name":"Alok Kumar Maurya","email":"alok.maurya88@gmail.com","username":"alokmaurya"},"change_message_id":"b251dfe14fa3c7a795383fd964b0ce614d5c420d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            #"},{"line_number":52,"context_line":"            return"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        rtr_cache \u003d self._load_router_cache()"},{"line_number":55,"context_line":"        ctr_cache \u003d self._load_counter_cache()"},{"line_number":56,"context_line":"        port_cache \u003d self._load_port_cache()"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_c48b3767","line":54,"updated":"2016-06-03 09:36:31.000000000","message":"rtr_cache  does not  contain  the cache  of  other  ports tha  router ports .\n\n_update_router_cache method need  to be  modified /need to be made more  genric  to  make  sure  it  can  contain cache  of  other  type  of  port as well.\n \nAnother  approach  which was  used  in earlier  patchset  to maintain independent cache  which  contains  all port info was  a  costly  one , as  both of  these  make  similar neutron calls .","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            #"},{"line_number":52,"context_line":"            return"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        rtr_cache \u003d self._load_router_cache()"},{"line_number":55,"context_line":"        ctr_cache \u003d self._load_counter_cache()"},{"line_number":56,"context_line":"        port_cache \u003d self._load_port_cache()"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_1b4f35be","line":54,"in_reply_to":"9abb7d3a_c48b3767","updated":"2016-06-03 20:06:23.000000000","message":"Done","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"e3d4a5a1f5690c2bf50481e43fcaecd88ef3f75c","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        ifx_deltas \u003d {}"},{"line_number":63,"context_line":"        include_re \u003d self.init_config.get(\u0027included_interface_re\u0027, None)"},{"line_number":64,"context_line":"        speed \u003d self.init_config.get(\u0027speed\u0027, None)"},{"line_number":65,"context_line":"        if include_re:"},{"line_number":66,"context_line":"            include_iface_re \u003d re.compile(include_re)"},{"line_number":67,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_5a2f2ef6","line":64,"range":{"start_line":64,"start_character":14,"end_line":64,"end_character":15},"updated":"2016-06-03 03:29:27.000000000","message":"Is this the port speed. If yes, then maybe port_speed would be more descriptive.","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        ifx_deltas \u003d {}"},{"line_number":63,"context_line":"        include_re \u003d self.init_config.get(\u0027included_interface_re\u0027, None)"},{"line_number":64,"context_line":"        speed \u003d self.init_config.get(\u0027speed\u0027, None)"},{"line_number":65,"context_line":"        if include_re:"},{"line_number":66,"context_line":"            include_iface_re \u003d re.compile(include_re)"},{"line_number":67,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_3bcaf91a","line":64,"range":{"start_line":64,"start_character":14,"end_line":64,"end_character":15},"in_reply_to":"9abb7d3a_5a2f2ef6","updated":"2016-06-03 20:06:23.000000000","message":"Done","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"e3d4a5a1f5690c2bf50481e43fcaecd88ef3f75c","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        include_re \u003d self.init_config.get(\u0027included_interface_re\u0027, None)"},{"line_number":64,"context_line":"        speed \u003d self.init_config.get(\u0027speed\u0027, None)"},{"line_number":65,"context_line":"        if include_re:"},{"line_number":66,"context_line":"            include_iface_re \u003d re.compile(include_re)"},{"line_number":67,"context_line":"        else:"},{"line_number":68,"context_line":"            include_iface_re \u003d None"},{"line_number":69,"context_line":"        for ifx in interface_data:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_9a87d6d6","line":66,"range":{"start_line":66,"start_character":12,"end_line":66,"end_character":28},"updated":"2016-06-03 03:29:27.000000000","message":"Is it possible to compile this regex at initialization time and save it once, rather than compiling everytime check is invoked?","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        include_re \u003d self.init_config.get(\u0027included_interface_re\u0027, None)"},{"line_number":64,"context_line":"        speed \u003d self.init_config.get(\u0027speed\u0027, None)"},{"line_number":65,"context_line":"        if include_re:"},{"line_number":66,"context_line":"            include_iface_re \u003d re.compile(include_re)"},{"line_number":67,"context_line":"        else:"},{"line_number":68,"context_line":"            include_iface_re \u003d None"},{"line_number":69,"context_line":"        for ifx in interface_data:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_7bd481bc","line":66,"range":{"start_line":66,"start_character":12,"end_line":66,"end_character":28},"in_reply_to":"9abb7d3a_9a87d6d6","updated":"2016-06-03 20:06:23.000000000","message":"Done","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"88e015643c7fa8a178163764e5edc5b8e074b868","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        if include_re:"},{"line_number":66,"context_line":"            include_iface_re \u003d re.compile(include_re)"},{"line_number":67,"context_line":"        else:"},{"line_number":68,"context_line":"            include_iface_re \u003d None"},{"line_number":69,"context_line":"        for ifx in interface_data:"},{"line_number":70,"context_line":"            if not re.match(include_iface_re, ifx):"},{"line_number":71,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_007d5de7","line":68,"range":{"start_line":68,"start_character":31,"end_line":68,"end_character":35},"updated":"2016-06-02 15:43:37.000000000","message":"this could be \n\ninclude_iface_re \u003d re.compile(include_re) if include_re else None","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"2a57db445a410f462b483047b3bf05eb71e27acf","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        if include_re:"},{"line_number":66,"context_line":"            include_iface_re \u003d re.compile(include_re)"},{"line_number":67,"context_line":"        else:"},{"line_number":68,"context_line":"            include_iface_re \u003d None"},{"line_number":69,"context_line":"        for ifx in interface_data:"},{"line_number":70,"context_line":"            if not re.match(include_iface_re, ifx):"},{"line_number":71,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_837b057b","line":68,"range":{"start_line":68,"start_character":31,"end_line":68,"end_character":35},"in_reply_to":"9abb7d3a_007d5de7","updated":"2016-06-02 20:10:53.000000000","message":"It could be but do we really want it to be?  I find the existing form easier to read.","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        if include_re:"},{"line_number":66,"context_line":"            include_iface_re \u003d re.compile(include_re)"},{"line_number":67,"context_line":"        else:"},{"line_number":68,"context_line":"            include_iface_re \u003d None"},{"line_number":69,"context_line":"        for ifx in interface_data:"},{"line_number":70,"context_line":"            if not re.match(include_iface_re, ifx):"},{"line_number":71,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_5b953de2","line":68,"range":{"start_line":68,"start_character":31,"end_line":68,"end_character":35},"in_reply_to":"9abb7d3a_837b057b","updated":"2016-06-03 20:06:23.000000000","message":"moved to above as per Roland suggestion. But we have provided the flexibilty for reading the counter for tap*, qr and qg ports.","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"e3d4a5a1f5690c2bf50481e43fcaecd88ef3f75c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        for ifx in interface_data:"},{"line_number":70,"context_line":"            if not re.match(include_iface_re, ifx):"},{"line_number":71,"context_line":"                continue"},{"line_number":72,"context_line":"            port_uuid \u003d interface_data[ifx][\u0027external_ids\u0027][\u0027iface-id\u0027]"},{"line_number":73,"context_line":"            port_info \u003d rtr_cache.get(port_uuid)"},{"line_number":74,"context_line":"            if port_info:"},{"line_number":75,"context_line":"                tenant_id \u003d port_info[\u0027tenant_id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_9187c611","line":72,"range":{"start_line":72,"start_character":24,"end_line":72,"end_character":38},"updated":"2016-06-03 03:29:27.000000000","message":"Is interface_data[ifx][\u0027external_ids\u0027][\u0027iface-id\u0027] always guaranteed to be provided, or could this result in an exception that should be handled?","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        for ifx in interface_data:"},{"line_number":70,"context_line":"            if not re.match(include_iface_re, ifx):"},{"line_number":71,"context_line":"                continue"},{"line_number":72,"context_line":"            port_uuid \u003d interface_data[ifx][\u0027external_ids\u0027][\u0027iface-id\u0027]"},{"line_number":73,"context_line":"            port_info \u003d rtr_cache.get(port_uuid)"},{"line_number":74,"context_line":"            if port_info:"},{"line_number":75,"context_line":"                tenant_id \u003d port_info[\u0027tenant_id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_1babb51e","line":72,"range":{"start_line":72,"start_character":24,"end_line":72,"end_character":38},"in_reply_to":"9abb7d3a_9187c611","updated":"2016-06-03 20:06:23.000000000","message":"Roland , for all the ovs ports  interface_data[ifx][\u0027external_ids\u0027][\u0027iface-id\u0027] always returns the value if we provide proper ifx, I have ensured that it is working fine","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"e3d4a5a1f5690c2bf50481e43fcaecd88ef3f75c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                port_cache[ifx] \u003d {}"},{"line_number":84,"context_line":"            for metric_name, idx in self._get_vswitch_metrics_map().iteritems():"},{"line_number":85,"context_line":"                if not port_info:"},{"line_number":86,"context_line":"                    continue"},{"line_number":87,"context_line":"                value \u003d interface_data[ifx][\u0027statistics\u0027][idx]"},{"line_number":88,"context_line":"                if metric_name \u003d\u003d \u0027vswitch.port.transmit.util\u0027:"},{"line_number":89,"context_line":"                    value \u003d self._get_tx_rx_utilization(True, ifx, speed,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_115e3645","line":86,"range":{"start_line":86,"start_character":20,"end_line":86,"end_character":28},"updated":"2016-06-03 03:29:27.000000000","message":"On line number 74, there is a check for if port_info exists, and if it does assignments are made to a couple of local variables. \n\nThen at this line you start a for loop, and just iterate over the items and do nothing if port_info doesn\u0027t exist. Should this check be moved outside of the for loop?","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                port_cache[ifx] \u003d {}"},{"line_number":84,"context_line":"            for metric_name, idx in self._get_vswitch_metrics_map().iteritems():"},{"line_number":85,"context_line":"                if not port_info:"},{"line_number":86,"context_line":"                    continue"},{"line_number":87,"context_line":"                value \u003d interface_data[ifx][\u0027statistics\u0027][idx]"},{"line_number":88,"context_line":"                if metric_name \u003d\u003d \u0027vswitch.port.transmit.util\u0027:"},{"line_number":89,"context_line":"                    value \u003d self._get_tx_rx_utilization(True, ifx, speed,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_fba51147","line":86,"range":{"start_line":86,"start_character":20,"end_line":86,"end_character":28},"in_reply_to":"9abb7d3a_115e3645","updated":"2016-06-03 20:06:23.000000000","message":"Done","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"e3d4a5a1f5690c2bf50481e43fcaecd88ef3f75c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                if metric_name \u003d\u003d \u0027vswitch.port.transmit.util\u0027:"},{"line_number":89,"context_line":"                    value \u003d self._get_tx_rx_utilization(True, ifx, speed,"},{"line_number":90,"context_line":"                                                        port_cache)"},{"line_number":91,"context_line":"                if metric_name \u003d\u003d \u0027vswitch.port.receive.util\u0027:"},{"line_number":92,"context_line":"                    value \u003d self._get_tx_rx_utilization(False, ifx, speed,"},{"line_number":93,"context_line":"                                                        port_cache)"},{"line_number":94,"context_line":"                customer_dimensions \u003d this_dimensions.copy()"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_ac2431af","line":91,"range":{"start_line":91,"start_character":16,"end_line":91,"end_character":18},"updated":"2016-06-03 03:29:27.000000000","message":"Do you want to use an elif for this block?","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                if metric_name \u003d\u003d \u0027vswitch.port.transmit.util\u0027:"},{"line_number":89,"context_line":"                    value \u003d self._get_tx_rx_utilization(True, ifx, speed,"},{"line_number":90,"context_line":"                                                        port_cache)"},{"line_number":91,"context_line":"                if metric_name \u003d\u003d \u0027vswitch.port.receive.util\u0027:"},{"line_number":92,"context_line":"                    value \u003d self._get_tx_rx_utilization(False, ifx, speed,"},{"line_number":93,"context_line":"                                                        port_cache)"},{"line_number":94,"context_line":"                customer_dimensions \u003d this_dimensions.copy()"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_5b637d1a","line":91,"range":{"start_line":91,"start_character":16,"end_line":91,"end_character":18},"in_reply_to":"9abb7d3a_ac2431af","updated":"2016-06-03 20:06:23.000000000","message":"Done","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"e3d4a5a1f5690c2bf50481e43fcaecd88ef3f75c","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                self.gauge(metric_name, float(value),"},{"line_number":97,"context_line":"                           dimensions\u003dcustomer_dimensions,"},{"line_number":98,"context_line":"                           delegated_tenant\u003dtenant_id,"},{"line_number":99,"context_line":"                           hostname\u003d\u0027SUPPRESS\u0027)"},{"line_number":100,"context_line":"                ops_dimensions \u003d this_dimensions.copy()"},{"line_number":101,"context_line":"                ops_dimensions.update({\u0027tenant_id\u0027: tenant_id})"},{"line_number":102,"context_line":"                self.gauge(\"ovs.{0}\".format(metric_name), float(value),"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_ecabd9d4","line":99,"range":{"start_line":99,"start_character":27,"end_line":99,"end_character":35},"updated":"2016-06-03 03:29:27.000000000","message":"Why are you assigning a hostname of SUPPRESS? Is this used somewhere else in the Agent to remove the \"hostname\" metric, which is what I\u0027m assuming you want.","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                self.gauge(metric_name, float(value),"},{"line_number":97,"context_line":"                           dimensions\u003dcustomer_dimensions,"},{"line_number":98,"context_line":"                           delegated_tenant\u003dtenant_id,"},{"line_number":99,"context_line":"                           hostname\u003d\u0027SUPPRESS\u0027)"},{"line_number":100,"context_line":"                ops_dimensions \u003d this_dimensions.copy()"},{"line_number":101,"context_line":"                ops_dimensions.update({\u0027tenant_id\u0027: tenant_id})"},{"line_number":102,"context_line":"                self.gauge(\"ovs.{0}\".format(metric_name), float(value),"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_fb7cf1b6","line":99,"range":{"start_line":99,"start_character":27,"end_line":99,"end_character":35},"in_reply_to":"9abb7d3a_ecabd9d4","updated":"2016-06-03 20:06:23.000000000","message":"yes we want to suppress the hostname for customer dimension as TWC did earlier for vrouter","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"e3d4a5a1f5690c2bf50481e43fcaecd88ef3f75c","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            if ifx not in ctr_cache:"},{"line_number":110,"context_line":"                ctr_cache[ifx] \u003d {}"},{"line_number":111,"context_line":"            for metric_name, idx in self._get_vrouter_metrics_map().iteritems():"},{"line_number":112,"context_line":"                if not re.match(r\"^qg-\", ifx):"},{"line_number":113,"context_line":"                    continue"},{"line_number":114,"context_line":"                value \u003d interface_data[ifx][\u0027statistics\u0027][idx]"},{"line_number":115,"context_line":"                if metric_name in ctr_cache[ifx]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_3f2fbca2","line":112,"range":{"start_line":112,"start_character":26,"end_line":112,"end_character":31},"updated":"2016-06-03 03:29:27.000000000","message":"I\u0027m assuming you are looking from some prefix in ifx. It might be better to declare a variable, like IFX_PREFIX, of whatever this regulare expression is supposed to be checking for. Additionally, it might be able to move this into a private method.","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            if ifx not in ctr_cache:"},{"line_number":110,"context_line":"                ctr_cache[ifx] \u003d {}"},{"line_number":111,"context_line":"            for metric_name, idx in self._get_vrouter_metrics_map().iteritems():"},{"line_number":112,"context_line":"                if not re.match(r\"^qg-\", ifx):"},{"line_number":113,"context_line":"                    continue"},{"line_number":114,"context_line":"                value \u003d interface_data[ifx][\u0027statistics\u0027][idx]"},{"line_number":115,"context_line":"                if metric_name in ctr_cache[ifx]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_1b59f55a","line":112,"range":{"start_line":112,"start_character":26,"end_line":112,"end_character":31},"in_reply_to":"9abb7d3a_3f2fbca2","updated":"2016-06-03 20:06:23.000000000","message":"anyways I have handled for qg, qr and dhcp by reading from yaml file","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"e3d4a5a1f5690c2bf50481e43fcaecd88ef3f75c","unresolved":false,"context_lines":[{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        return ctr_cache"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def _load_port_cache(self):"},{"line_number":320,"context_line":"        \"\"\"Load the port metrics from the previous collection iteration"},{"line_number":321,"context_line":"        \"\"\""},{"line_number":322,"context_line":"        port_cache \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_5abe0ed5","line":319,"range":{"start_line":319,"start_character":8,"end_line":319,"end_character":24},"updated":"2016-06-03 03:29:27.000000000","message":"This method is almost exactly the same as _load_counter_cache in the super class. \n\nIt might be better to add the name of the cache file as a parameter to the method in the base class AgentCheck and pass in a different file name for each one, rather than copying the method over locally, and just using a different file variable, such as self.port_cache_file, internally.","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":11670,"name":"Alok Kumar Maurya","email":"alok.maurya88@gmail.com","username":"alokmaurya"},"change_message_id":"3f670f019a6668eb4e4999babe57b17c494f4abb","unresolved":false,"context_lines":[{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        return ctr_cache"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def _load_port_cache(self):"},{"line_number":320,"context_line":"        \"\"\"Load the port metrics from the previous collection iteration"},{"line_number":321,"context_line":"        \"\"\""},{"line_number":322,"context_line":"        port_cache \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_3847081f","line":319,"updated":"2016-06-02 10:01:11.000000000","message":"_load_port_counter_cache  or  _load_port_metrics_cache\n\nshould be more  appropriate","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"e3d4a5a1f5690c2bf50481e43fcaecd88ef3f75c","unresolved":false,"context_lines":[{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        return ctr_cache"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def _load_port_cache(self):"},{"line_number":320,"context_line":"        \"\"\"Load the port metrics from the previous collection iteration"},{"line_number":321,"context_line":"        \"\"\""},{"line_number":322,"context_line":"        port_cache \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_dad95e85","line":319,"in_reply_to":"9abb7d3a_3847081f","updated":"2016-06-03 03:29:27.000000000","message":"I agree with Alok. Seems like if this cache is for counting port metrics, then port_counter_cache might be a little more descriptive.","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        return ctr_cache"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def _load_port_cache(self):"},{"line_number":320,"context_line":"        \"\"\"Load the port metrics from the previous collection iteration"},{"line_number":321,"context_line":"        \"\"\""},{"line_number":322,"context_line":"        port_cache \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_5b31bd0a","line":319,"in_reply_to":"9abb7d3a_dad95e85","updated":"2016-06-03 20:06:23.000000000","message":"Done","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":11670,"name":"Alok Kumar Maurya","email":"alok.maurya88@gmail.com","username":"alokmaurya"},"change_message_id":"3f670f019a6668eb4e4999babe57b17c494f4abb","unresolved":false,"context_lines":[{"line_number":351,"context_line":"            self.log.error(\"Cannot write to {0}: {1}\"."},{"line_number":352,"context_line":"                           format(self.ctr_cache_file, e))"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def _update_port_cache(self, port_cache, run_time):"},{"line_number":355,"context_line":"        write_port_cache \u003d deepcopy(port_cache)"},{"line_number":356,"context_line":"        # Grab the first metric name and see if it\u0027s in the cache."},{"line_number":357,"context_line":"        metric_name \u003d self._get_vswitch_metrics_map().keys()[0]"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_986b9485","line":354,"updated":"2016-06-02 10:01:11.000000000","message":"_update_port_counter_cache  or  _update_port_metrics_cache\nshould be more  appropriate","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"e3d4a5a1f5690c2bf50481e43fcaecd88ef3f75c","unresolved":false,"context_lines":[{"line_number":397,"context_line":"                       \"vswitch.port.receive.errors\": \"rx_errors\","},{"line_number":398,"context_line":"                       \"vswitch.port.transmit.errors\": \"tx_errors\","},{"line_number":399,"context_line":"                       \"vswitch.port.transmit.util\": \"tx_bytes\","},{"line_number":400,"context_line":"                       \"vswitch.port.receive.util\": \"rx_bytes\","},{"line_number":401,"context_line":"                       }"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        return metrics_map"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_d53db1bc","line":400,"range":{"start_line":400,"start_character":31,"end_line":400,"end_character":32},"updated":"2016-06-03 03:29:27.000000000","message":"See comment on naming convention in the docs.","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"72a9d225406e4a26239171173087b969e63e6440","unresolved":false,"context_lines":[{"line_number":397,"context_line":"                       \"vswitch.port.receive.errors\": \"rx_errors\","},{"line_number":398,"context_line":"                       \"vswitch.port.transmit.errors\": \"tx_errors\","},{"line_number":399,"context_line":"                       \"vswitch.port.transmit.util\": \"tx_bytes\","},{"line_number":400,"context_line":"                       \"vswitch.port.receive.util\": \"rx_bytes\","},{"line_number":401,"context_line":"                       }"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        return metrics_map"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_7b3e41db","line":400,"range":{"start_line":400,"start_character":31,"end_line":400,"end_character":32},"in_reply_to":"9abb7d3a_d53db1bc","updated":"2016-06-03 20:06:23.000000000","message":"Done","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"a20212dd0305f7ce74f6a5986e8bb42e309a1b65","unresolved":false,"context_lines":[{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        return True"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"    def _get_tx_rx_utilization(self, is_tx_bytes, ifx, speed, port_cache):"},{"line_number":521,"context_line":"        \"\"\"Get Transmit/Receive bytes utilization based on vNIC speed.\"\"\""},{"line_number":522,"context_line":"        try:"},{"line_number":523,"context_line":"            self.log.debug(\"_get_tx_rx_utilization called \")"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_aa49a7d2","line":520,"range":{"start_line":520,"start_character":4,"end_line":520,"end_character":7},"updated":"2016-06-03 06:17:21.000000000","message":"I would like if this can be a common interface in AgentCheck similar to self.gauge(...).\n\nPreferably, self.util(...). I am ok to cover this in separate patch after checking the feasibility.","commit_id":"e5c18e93be238254c61be6ffa552f0d7a52cf377"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"4742833d98c5328b7a7b443b295aad45bed56f14","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.check_router_ha \u003d self.init_config.get(\u0027check_router_ha\u0027)"},{"line_number":42,"context_line":"        self.ovs_cmd \u003d OVS_CMD % self.init_config.get(\u0027ovs_cmd\u0027)"},{"line_number":43,"context_line":"        self.include_re \u003d self.init_config.get(\u0027included_interface_re\u0027, None)"},{"line_number":44,"context_line":"        self.include_iface_re \u003d re.compile(self.include_re)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def check(self, instance):"},{"line_number":47,"context_line":"        time_start \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_be6d379b","line":44,"range":{"start_line":44,"start_character":32,"end_line":44,"end_character":59},"updated":"2016-06-05 17:07:52.000000000","message":"This will cause a TypeError if self.include_re is None","commit_id":"f3d1c3d3d7d0c48a4ec745a6f3ad6f1f49b5ad60"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"4742833d98c5328b7a7b443b295aad45bed56f14","unresolved":false,"context_lines":[{"line_number":322,"context_line":"    def _load_vswitch_counter_cache(self):"},{"line_number":323,"context_line":"        \"\"\"Load the vswitch counter from the previous collection iteration"},{"line_number":324,"context_line":"        \"\"\""},{"line_number":325,"context_line":"        vswitch_port_cache \u003d {}"},{"line_number":326,"context_line":"        try:"},{"line_number":327,"context_line":"            with open(self.vswitch_metrics_file, \u0027r\u0027) as cache_json:"},{"line_number":328,"context_line":"                vswitch_port_cache \u003d json.load(cache_json)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_1ec9e378","line":325,"range":{"start_line":325,"start_character":0,"end_line":325,"end_character":31},"updated":"2016-06-05 17:07:52.000000000","message":"This line is not needed. vswitch_port_cache is set in the try and in the except","commit_id":"f3d1c3d3d7d0c48a4ec745a6f3ad6f1f49b5ad60"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"ed42a1ee8dc412b115c92ee22f72fbfb4902726e","unresolved":false,"context_lines":[{"line_number":322,"context_line":"    def _load_vswitch_counter_cache(self):"},{"line_number":323,"context_line":"        \"\"\"Load the vswitch counter from the previous collection iteration"},{"line_number":324,"context_line":"        \"\"\""},{"line_number":325,"context_line":"        vswitch_port_cache \u003d {}"},{"line_number":326,"context_line":"        try:"},{"line_number":327,"context_line":"            with open(self.vswitch_metrics_file, \u0027r\u0027) as cache_json:"},{"line_number":328,"context_line":"                vswitch_port_cache \u003d json.load(cache_json)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_fc771200","line":325,"range":{"start_line":325,"start_character":0,"end_line":325,"end_character":31},"in_reply_to":"9abb7d3a_1ec9e378","updated":"2016-06-06 12:22:56.000000000","message":"Done","commit_id":"f3d1c3d3d7d0c48a4ec745a6f3ad6f1f49b5ad60"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"4742833d98c5328b7a7b443b295aad45bed56f14","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        for ifx in port_cache:"},{"line_number":363,"context_line":"            if metric_name not in port_cache[ifx]:"},{"line_number":364,"context_line":"                self.log.info(\"Expiring old/empty {0} from cache\".format(metric_name))"},{"line_number":365,"context_line":"                del(write_vswitch_port_cache[ifx])"},{"line_number":366,"context_line":"        try:"},{"line_number":367,"context_line":"            with open(self.vswitch_metrics_file, \u0027w\u0027) as cache_json:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_f0258aae","line":364,"range":{"start_line":364,"start_character":31,"end_line":364,"end_character":43},"updated":"2016-06-05 17:07:52.000000000","message":"I don\u0027t see any code that expires based on time. Where is it?","commit_id":"f3d1c3d3d7d0c48a4ec745a6f3ad6f1f49b5ad60"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"ed42a1ee8dc412b115c92ee22f72fbfb4902726e","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        for ifx in port_cache:"},{"line_number":363,"context_line":"            if metric_name not in port_cache[ifx]:"},{"line_number":364,"context_line":"                self.log.info(\"Expiring old/empty {0} from cache\".format(metric_name))"},{"line_number":365,"context_line":"                del(write_vswitch_port_cache[ifx])"},{"line_number":366,"context_line":"        try:"},{"line_number":367,"context_line":"            with open(self.vswitch_metrics_file, \u0027w\u0027) as cache_json:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_6d9eca57","line":364,"range":{"start_line":364,"start_character":31,"end_line":364,"end_character":43},"in_reply_to":"7aa08908_f0258aae","updated":"2016-06-06 12:22:56.000000000","message":"Line 474:478 I have handled if the time difference is greater than neutron_refresh interface then only update ovs_ports_cache .\n\nLine 365: condition is for delete the entry from cache for the interface when the metric name is not there.","commit_id":"f3d1c3d3d7d0c48a4ec745a6f3ad6f1f49b5ad60"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2cee67fffff709f5a6000cc4e04155d18c755b94","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        ifx_deltas \u003d {}"},{"line_number":70,"context_line":"        port_speed \u003d self.init_config.get(\u0027port_speed\u0027, None)"},{"line_number":71,"context_line":"        for ifx in interface_data:"},{"line_number":72,"context_line":"            if not re.match(self.include_iface_re, ifx):"},{"line_number":73,"context_line":"                continue"},{"line_number":74,"context_line":"            port_uuid \u003d interface_data[ifx][\u0027external_ids\u0027][\u0027iface-id\u0027]"},{"line_number":75,"context_line":"            port_info \u003d ovs_ports_cache.get(port_uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_0f3bb3d2","line":72,"range":{"start_line":72,"start_character":28,"end_line":72,"end_character":49},"updated":"2016-06-06 13:49:34.000000000","message":"Note that self.include_iface_re may not have been set in __init__ so this will fail","commit_id":"e08464d840b6546fd4163010498fe9ebc6b6042c"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"3d0bd28675b336045c35aba32e6143c3e12bdae3","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        ifx_deltas \u003d {}"},{"line_number":70,"context_line":"        port_speed \u003d self.init_config.get(\u0027port_speed\u0027, None)"},{"line_number":71,"context_line":"        for ifx in interface_data:"},{"line_number":72,"context_line":"            if not re.match(self.include_iface_re, ifx):"},{"line_number":73,"context_line":"                continue"},{"line_number":74,"context_line":"            port_uuid \u003d interface_data[ifx][\u0027external_ids\u0027][\u0027iface-id\u0027]"},{"line_number":75,"context_line":"            port_info \u003d ovs_ports_cache.get(port_uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_bb9f3e02","line":72,"range":{"start_line":72,"start_character":28,"end_line":72,"end_character":49},"in_reply_to":"7aa08908_0f3bb3d2","updated":"2016-06-06 15:33:16.000000000","message":"Thanks Bryant. I will address this in next patch.","commit_id":"e08464d840b6546fd4163010498fe9ebc6b6042c"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"27cac95c91c01cd1b0c0e64540a4f4de122ffafa","unresolved":false,"context_lines":[{"line_number":545,"context_line":"                idx \u003d \u0027rx_bytes\u0027"},{"line_number":546,"context_line":"                cache_dict \u003d port_cache[ifx][\u0027vswitch.port_in_bytes\u0027]"},{"line_number":547,"context_line":"        except Exception:"},{"line_number":548,"context_line":"            self.log.error(\"Error in fetching the keys from port_cache\")"},{"line_number":549,"context_line":"            return"},{"line_number":550,"context_line":"        interface_data_t2 \u003d self._get_ovs_data()"},{"line_number":551,"context_line":"        if not interface_data_t2:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7aa08908_2daf8695","line":548,"range":{"start_line":548,"start_character":12,"end_line":548,"end_character":16},"updated":"2016-06-06 18:55:23.000000000","message":"I believe that this occurs just the first time, but there are error messages that are being reported as below. I don\u0027t think that this is an error the first time through, so is it possible to detect this condition and just continue. If this occurs the second time around or greater, then it would be an error message, so the log messages would be correct in that case.\n\n2016-06-06 18:45:36,246 | ERROR | collector | monasca_agent.collector.checks.check.ovs(ovs.py:542) | Error in fetching the keys from port_cache\n2016-06-06 18:45:36,258 | ERROR | collector | monasca_agent.collector.checks.check.ovs(ovs.py:542) | Error in fetching the keys from port_cache\n2016-06-06 18:45:36,269 | ERROR | collector | monasca_agent.collector.checks.check.ovs(ovs.py:542) | Error in fetching the keys from port_cache\n2016-06-06 18:45:36,282 | ERROR | collector | monasca_agent.collector.checks.check.ovs(ovs.py:542) | Error in fetching the keys from port_cache\n2016-06-06 18:45:36,294 | ERROR | collector | monasca_agent.collector.checks.check.ovs(ovs.py:542) | Error in fetching the keys from port_cache","commit_id":"37ec4950d4d2d8da45e976626b2efc9f5c1314b9"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"7ddbd612ed305633d4f256304c126f35a85253c5","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                # POST to operations project with \"ovs.\" prefix"},{"line_number":191,"context_line":"                ops_dimensions \u003d this_dimensions.copy()"},{"line_number":192,"context_line":"                ops_dimensions.update({\u0027tenant_id\u0027: tenant_id})"},{"line_number":193,"context_line":"                self.gauge(\"ovs.{0}\".format(metric_name), value[idx],"},{"line_number":194,"context_line":"                           dimensions\u003dops_dimensions)"},{"line_number":195,"context_line":"        self._update_vswitch_port_ctr_cache(vswitch_counter_cache,"},{"line_number":196,"context_line":"                                            math.ceil(time.time() - time_start))"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_ebdead0f","line":193,"range":{"start_line":193,"start_character":28,"end_line":193,"end_character":31},"updated":"2016-06-08 04:15:38.000000000","message":"Why prefix with ovs? Why not vswitch?","commit_id":"09307ce95d158c485df99e56605eef32741aba15"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"8569a0abf2162fd1f36a24aa8b2cbcd6c32fe138","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                # POST to operations project with \"ovs.\" prefix"},{"line_number":191,"context_line":"                ops_dimensions \u003d this_dimensions.copy()"},{"line_number":192,"context_line":"                ops_dimensions.update({\u0027tenant_id\u0027: tenant_id})"},{"line_number":193,"context_line":"                self.gauge(\"ovs.{0}\".format(metric_name), value[idx],"},{"line_number":194,"context_line":"                           dimensions\u003dops_dimensions)"},{"line_number":195,"context_line":"        self._update_vswitch_port_ctr_cache(vswitch_counter_cache,"},{"line_number":196,"context_line":"                                            math.ceil(time.time() - time_start))"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_6008da28","line":193,"range":{"start_line":193,"start_character":28,"end_line":193,"end_character":31},"in_reply_to":"7aa08908_ebdead0f","updated":"2016-06-09 11:03:44.000000000","message":"Done","commit_id":"09307ce95d158c485df99e56605eef32741aba15"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"7ddbd612ed305633d4f256304c126f35a85253c5","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        return metrics_map"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    def _get_vswitch_metrics_map(self):"},{"line_number":391,"context_line":"        metrics_map \u003d {\"vswitch.port_out_bytes\": \"tx_bytes\","},{"line_number":392,"context_line":"                       \"vswitch.port_in_bytes\": \"rx_bytes\","},{"line_number":393,"context_line":"                       \"vswitch.port_in_packets\": \"rx_packets\","},{"line_number":394,"context_line":"                       \"vswitch.port_out_packets\": \"tx_packets\","}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_0bb339ea","line":391,"range":{"start_line":391,"start_character":32,"end_line":391,"end_character":46},"updated":"2016-06-08 04:15:38.000000000","message":"Can we follow a consistent naming convention. the metric name could be vswitch.in_bytes, vswitch.out_bytes etc.","commit_id":"09307ce95d158c485df99e56605eef32741aba15"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"8569a0abf2162fd1f36a24aa8b2cbcd6c32fe138","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        return metrics_map"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    def _get_vswitch_metrics_map(self):"},{"line_number":391,"context_line":"        metrics_map \u003d {\"vswitch.port_out_bytes\": \"tx_bytes\","},{"line_number":392,"context_line":"                       \"vswitch.port_in_bytes\": \"rx_bytes\","},{"line_number":393,"context_line":"                       \"vswitch.port_in_packets\": \"rx_packets\","},{"line_number":394,"context_line":"                       \"vswitch.port_out_packets\": \"tx_packets\","}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_80118654","line":391,"range":{"start_line":391,"start_character":32,"end_line":391,"end_character":46},"in_reply_to":"7aa08908_0bb339ea","updated":"2016-06-09 11:03:44.000000000","message":"Done","commit_id":"09307ce95d158c485df99e56605eef32741aba15"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"1457590c0e2f4bb797d49e5eb023d01ecf9376b1","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.use_bits \u003d self.init_config.get(\u0027network_use_bits\u0027)"},{"line_number":42,"context_line":"        self.check_router_ha \u003d self.init_config.get(\u0027check_router_ha\u0027)"},{"line_number":43,"context_line":"        self.ovs_cmd \u003d OVS_CMD % self.init_config.get(\u0027ovs_cmd\u0027)"},{"line_number":44,"context_line":"        self.include_re \u003d self.init_config.get(\u0027included_interface_re\u0027, None)"},{"line_number":45,"context_line":"        if self.include_re:"},{"line_number":46,"context_line":"            self.include_iface_re \u003d re.compile(self.include_re)"},{"line_number":47,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_dae256d4","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":23},"updated":"2016-06-08 23:03:54.000000000","message":"This can just be include_re, self.include_re is not used outside of __init__","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"8d44f3545b7a120722def88c9a48e89bff4c3e38","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.use_bits \u003d self.init_config.get(\u0027network_use_bits\u0027)"},{"line_number":42,"context_line":"        self.check_router_ha \u003d self.init_config.get(\u0027check_router_ha\u0027)"},{"line_number":43,"context_line":"        self.ovs_cmd \u003d OVS_CMD % self.init_config.get(\u0027ovs_cmd\u0027)"},{"line_number":44,"context_line":"        self.include_re \u003d self.init_config.get(\u0027included_interface_re\u0027, None)"},{"line_number":45,"context_line":"        if self.include_re:"},{"line_number":46,"context_line":"            self.include_iface_re \u003d re.compile(self.include_re)"},{"line_number":47,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_7199c0c3","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":23},"in_reply_to":"7aa08908_dae256d4","updated":"2016-06-09 04:44:32.000000000","message":"Done","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":11670,"name":"Alok Kumar Maurya","email":"alok.maurya88@gmail.com","username":"alokmaurya"},"change_message_id":"01fe983d8e0df289e9eb582e82662dd7a3f85342","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        ifx_deltas \u003d {}"},{"line_number":70,"context_line":"        if not self.include_iface_re:"},{"line_number":71,"context_line":"            return"},{"line_number":72,"context_line":"        if len(port_cache) - 1 !\u003d len(ctr_cache):"},{"line_number":73,"context_line":"                ctr_cache \u003d {}"},{"line_number":74,"context_line":"        for ifx in interface_data:"},{"line_number":75,"context_line":"            if not re.match(self.include_iface_re, ifx):"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_eedf8d0a","line":72,"updated":"2016-06-09 03:56:08.000000000","message":"I am not  sure if  this  will work ,  as  port_cache  will have  more  number  of  ports  than  ctr_cache ,  because  we  are not  filter  as  of  now  ports  based  on  the  host.","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"8d44f3545b7a120722def88c9a48e89bff4c3e38","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        ifx_deltas \u003d {}"},{"line_number":70,"context_line":"        if not self.include_iface_re:"},{"line_number":71,"context_line":"            return"},{"line_number":72,"context_line":"        if len(port_cache) - 1 !\u003d len(ctr_cache):"},{"line_number":73,"context_line":"                ctr_cache \u003d {}"},{"line_number":74,"context_line":"        for ifx in interface_data:"},{"line_number":75,"context_line":"            if not re.match(self.include_iface_re, ifx):"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_3125785b","line":72,"in_reply_to":"7aa08908_eedf8d0a","updated":"2016-06-09 04:44:32.000000000","message":"It will work because , we are making even with  ovs_ports.json and ovs_metrics.json except the last_update key in the dict. I am subtracting -1 for the exta \"last_update\" key.","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"1457590c0e2f4bb797d49e5eb023d01ecf9376b1","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                ctr_cache \u003d {}"},{"line_number":74,"context_line":"        for ifx in interface_data:"},{"line_number":75,"context_line":"            if not re.match(self.include_iface_re, ifx):"},{"line_number":76,"context_line":"                continue"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"            if ifx not in ctr_cache:"},{"line_number":79,"context_line":"                ctr_cache[ifx] \u003d {}"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_3afd5a6e","line":76,"range":{"start_line":76,"start_character":16,"end_line":76,"end_character":24},"updated":"2016-06-08 23:03:54.000000000","message":"This would be a great place for a log.debug giving ifx.","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"8d44f3545b7a120722def88c9a48e89bff4c3e38","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                ctr_cache \u003d {}"},{"line_number":74,"context_line":"        for ifx in interface_data:"},{"line_number":75,"context_line":"            if not re.match(self.include_iface_re, ifx):"},{"line_number":76,"context_line":"                continue"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"            if ifx not in ctr_cache:"},{"line_number":79,"context_line":"                ctr_cache[ifx] \u003d {}"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_71238056","line":76,"range":{"start_line":76,"start_character":16,"end_line":76,"end_character":24},"in_reply_to":"7aa08908_3afd5a6e","updated":"2016-06-09 04:44:32.000000000","message":"Done","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":11670,"name":"Alok Kumar Maurya","email":"alok.maurya88@gmail.com","username":"alokmaurya"},"change_message_id":"01fe983d8e0df289e9eb582e82662dd7a3f85342","unresolved":false,"context_lines":[{"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":"                value \u003d interface_data[ifx][\u0027statistics\u0027][idx]"},{"line_number":82,"context_line":"                metric_name \u003d self._get_metric_name(ifx, metric_name)"},{"line_number":83,"context_line":"                if metric_name in ctr_cache[ifx]:"},{"line_number":84,"context_line":"                    cache_time \u003d ctr_cache[ifx][metric_name][\u0027timestamp\u0027]"},{"line_number":85,"context_line":"                    time_diff \u003d sample_time - float(cache_time)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_aedaa514","line":82,"updated":"2016-06-09 03:56:08.000000000","message":"The  is to  have  metric names  as  in_packets , out_packets  etc..  in the  cache ,  without  adding prefix , only  while  publishing   metrics ,  we  update  the  name ,  so  we  should  not  change  metric  name  here .","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"8d44f3545b7a120722def88c9a48e89bff4c3e38","unresolved":false,"context_lines":[{"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":"                value \u003d interface_data[ifx][\u0027statistics\u0027][idx]"},{"line_number":82,"context_line":"                metric_name \u003d self._get_metric_name(ifx, metric_name)"},{"line_number":83,"context_line":"                if metric_name in ctr_cache[ifx]:"},{"line_number":84,"context_line":"                    cache_time \u003d ctr_cache[ifx][metric_name][\u0027timestamp\u0027]"},{"line_number":85,"context_line":"                    time_diff \u003d sample_time - float(cache_time)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_51e5a406","line":82,"in_reply_to":"7aa08908_aedaa514","updated":"2016-06-09 04:44:32.000000000","message":"This metric_name is prefixed to update the cache file and make the consistency with the original implementation .","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"1457590c0e2f4bb797d49e5eb023d01ecf9376b1","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                port_cache \u003d self._update_port_cache()"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"            port_info \u003d port_cache.get(port_uuid)"},{"line_number":142,"context_line":"            device_uuid \u003d port_info[\u0027device_uuid\u0027]"},{"line_number":143,"context_line":"            is_router_port \u003d port_info[\u0027is_router_port\u0027]"},{"line_number":144,"context_line":"            tenant_id \u003d port_info[\u0027tenant_id\u0027]"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_f52be37f","line":142,"range":{"start_line":142,"start_character":26,"end_line":142,"end_character":35},"updated":"2016-06-08 23:03:54.000000000","message":"If self._update_port_cache() failed, then port_info may be None.","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"8d44f3545b7a120722def88c9a48e89bff4c3e38","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                port_cache \u003d self._update_port_cache()"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"            port_info \u003d port_cache.get(port_uuid)"},{"line_number":142,"context_line":"            device_uuid \u003d port_info[\u0027device_uuid\u0027]"},{"line_number":143,"context_line":"            is_router_port \u003d port_info[\u0027is_router_port\u0027]"},{"line_number":144,"context_line":"            tenant_id \u003d port_info[\u0027tenant_id\u0027]"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_f1bc90dd","line":142,"range":{"start_line":142,"start_character":26,"end_line":142,"end_character":35},"in_reply_to":"7aa08908_f52be37f","updated":"2016-06-09 04:44:32.000000000","message":"Thanks Bryant , I will fix it.","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"1457590c0e2f4bb797d49e5eb023d01ecf9376b1","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                        self._update_port_cache()"},{"line_number":413,"context_line":"        except (IOError, TypeError, ValueError):"},{"line_number":414,"context_line":"            # The file may not exist yet, or is corrupt.  Rebuild it now."},{"line_number":415,"context_line":"            self.log.warning(\"Router cache missing or corrupt, rebuilding.\")"},{"line_number":416,"context_line":"            port_cache \u003d self._update_port_cache()"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        return port_cache"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_7a70820b","line":415,"range":{"start_line":415,"start_character":12,"end_line":415,"end_character":76},"updated":"2016-06-08 23:03:54.000000000","message":"This will cause a warning the first time the plugin is ever run which might confuse the user. It is expected that the cache does not exist on the first run","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"8d44f3545b7a120722def88c9a48e89bff4c3e38","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                        self._update_port_cache()"},{"line_number":413,"context_line":"        except (IOError, TypeError, ValueError):"},{"line_number":414,"context_line":"            # The file may not exist yet, or is corrupt.  Rebuild it now."},{"line_number":415,"context_line":"            self.log.warning(\"Router cache missing or corrupt, rebuilding.\")"},{"line_number":416,"context_line":"            port_cache \u003d self._update_port_cache()"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        return port_cache"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_11e95cb7","line":415,"range":{"start_line":415,"start_character":12,"end_line":415,"end_character":76},"in_reply_to":"7aa08908_7a70820b","updated":"2016-06-09 04:44:32.000000000","message":"I will modify the warning message.","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"1457590c0e2f4bb797d49e5eb023d01ecf9376b1","unresolved":false,"context_lines":[{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def _is_update_required_for_ovs_ports(self, ifx_deltas, port_cache):"},{"line_number":465,"context_line":"            \"\"\"Compares the ovs-vsctl ports and the port_cache dict"},{"line_number":466,"context_line":"            and returns the update port_cache is required or not."},{"line_number":467,"context_line":"            \"\"\""},{"line_number":468,"context_line":"            port_uuid_list \u003d []"},{"line_number":469,"context_line":"            if not port_cache:"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_ba4dcac5","line":466,"range":{"start_line":466,"start_character":24,"end_line":466,"end_character":27},"updated":"2016-06-08 23:03:54.000000000","message":"whether","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"8d44f3545b7a120722def88c9a48e89bff4c3e38","unresolved":false,"context_lines":[{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def _is_update_required_for_ovs_ports(self, ifx_deltas, port_cache):"},{"line_number":465,"context_line":"            \"\"\"Compares the ovs-vsctl ports and the port_cache dict"},{"line_number":466,"context_line":"            and returns the update port_cache is required or not."},{"line_number":467,"context_line":"            \"\"\""},{"line_number":468,"context_line":"            port_uuid_list \u003d []"},{"line_number":469,"context_line":"            if not port_cache:"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_d1a6b4bf","line":466,"range":{"start_line":466,"start_character":24,"end_line":466,"end_character":27},"in_reply_to":"7aa08908_ba4dcac5","updated":"2016-06-09 04:44:32.000000000","message":"Done","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"1457590c0e2f4bb797d49e5eb023d01ecf9376b1","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                port_uuid_list.append(port_uuid)"},{"line_number":474,"context_line":"            if not port_uuid_list:"},{"line_number":475,"context_line":"                return True"},{"line_number":476,"context_line":"            if len(port_cache) - 1 \u003d\u003d len(port_uuid_list):"},{"line_number":477,"context_line":"                return False"},{"line_number":478,"context_line":"            else:"},{"line_number":479,"context_line":"                return True"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_daf37671","line":476,"range":{"start_line":476,"start_character":31,"end_line":476,"end_character":34},"updated":"2016-06-08 23:03:54.000000000","message":"Why -1? Might be a good place for comment","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"8d44f3545b7a120722def88c9a48e89bff4c3e38","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                port_uuid_list.append(port_uuid)"},{"line_number":474,"context_line":"            if not port_uuid_list:"},{"line_number":475,"context_line":"                return True"},{"line_number":476,"context_line":"            if len(port_cache) - 1 \u003d\u003d len(port_uuid_list):"},{"line_number":477,"context_line":"                return False"},{"line_number":478,"context_line":"            else:"},{"line_number":479,"context_line":"                return True"}],"source_content_type":"text/x-python","patch_set":14,"id":"7aa08908_f1b810ca","line":476,"range":{"start_line":476,"start_character":31,"end_line":476,"end_character":34},"in_reply_to":"7aa08908_daf37671","updated":"2016-06-09 04:44:32.000000000","message":"I am checking for -1 , for the below reason.\nAs you know there are two cache files we are using for collecting the metrics which are ovs_ports.json and ovs_metrics.json .\novs_metrics.json - stores the exact counter values for each ports .\novs_ports.json maintains the tenant_id , device_uuid for each port with extra key as \"last_update\"\n\nAt any time we expect the length of both cache json file should be equal after excluding the \"last_update\" field. If the length mismatches , then we update the cache.\nI have given the sample cache file for the reference.\n ovs_metrics.json:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n{\"tapdbf2e2cc-93\": {\"vswitch.in_errors\": {\"timestamp\": 1465446791.202051, \"value\": 0}, \"vswitch.in_dropped\": {\"timestamp\": 1465446791.202051, \"value\": 0}, \"vswitch.out_packets\": {\"timestamp\": 1465446791.202051, \"value\": 0}, \"vswitch.out_bits\": {\"timestamp\": 1465446791.202051, \"value\": 0}, \"vswitch.in_bits\": {\"timestamp\": 1465446791.202051, \"value\": 758}, \"vswitch.out_errors\": {\"timestamp\": 1465446791.202051, \"value\": 0}, \"vswitch.out_dropped\": {\"timestamp\": 1465446791.202051, \"value\": 0}, \"vswitch.in_packets\": {\"timestamp\": 1465446791.202051, \"value\": 9}}}stack@selvakumar:/dev/shm$\n\n\novs_ports.json\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n{\"dbf2e2cc-9399-47e0-a68e-3f1c76045a6e\": {\"is_router_port\": false, \"tenant_id\": \"ca58baec612b47d3b53f8b92d801604f\", \"router_name\": \"\", \"device_uuid\": \"dhcp2e711f28-1555-5af3-9350-4ea3ddcea1e5-fff39f29-cafc-44ff-b243-f077656528f8\"}, \"last_update\": 1465441823}stack@selvakumar:/dev/shm$","commit_id":"af2b777771f5bb7480ac5dea90a519f172749339"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"b6530000520d91779cfce9d4c2a84626d2ef5b12","unresolved":false,"context_lines":[{"line_number":22,"context_line":"--format\u003djson --data\u003djson list Interface\\"},{"line_number":23,"context_line":"\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"\"\"\"Monasca Agent interface for ovs router port and dhcp metrics\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class OvsCheck(AgentCheck):"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_6cca3751","line":25,"range":{"start_line":25,"start_character":51,"end_line":25,"end_character":55},"updated":"2016-06-10 10:39:27.000000000","message":"Do we need measure of DHCP ports? In Neutron there  could be 2 or 3 dhcp agents per network, and the number of DHCP ports could grow large. \n\nIf there is a definite use case to measure DHCP port performance, I would say skip DHCP ports for performance measurement.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"b6530000520d91779cfce9d4c2a84626d2ef5b12","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        if include_re:"},{"line_number":46,"context_line":"            self.include_iface_re \u003d re.compile(include_re)"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            self.log.warn(\"included_interface_re is not configured in ovs.yaml\")"},{"line_number":49,"context_line":"            self.include_iface_re \u003d None"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def check(self, instance):"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_2f578103","line":48,"range":{"start_line":48,"start_character":27,"end_line":48,"end_character":48},"updated":"2016-06-10 10:39:27.000000000","message":"Nit: why can\u0027t we assume default to collect only vrouter interfaces? We shouldn\u0027t mandate the config in my opinion. \n\nFor collecting VNIC ports it must be specified in included_interface_re filter expression.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":8126,"name":"Bradley Klein","email":"bradley.klein@charter.com","username":"bklei"},"change_message_id":"a96b797e0553c1c984192351c656f90be93a516e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            self.include_iface_re \u003d re.compile(include_re)"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            self.log.warn(\"included_interface_re is not configured in ovs.yaml\")"},{"line_number":49,"context_line":"            self.include_iface_re \u003d None"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def check(self, instance):"},{"line_number":52,"context_line":"        time_start \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_5ae27f30","line":49,"updated":"2016-06-10 14:41:31.000000000","message":"Agree with sonu here, if we default to existing behavior, that would be preferable (but not mandatory).","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"f4c5b245969afa99ddd6fae05963584ceeadbe3e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            self.include_iface_re \u003d re.compile(include_re)"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            self.log.warn(\"included_interface_re is not configured in ovs.yaml\")"},{"line_number":49,"context_line":"            self.include_iface_re \u003d None"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def check(self, instance):"},{"line_number":52,"context_line":"        time_start \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_802f49a0","line":49,"in_reply_to":"7aa08908_5ae27f30","updated":"2016-06-10 18:33:33.000000000","message":"Done","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"b6530000520d91779cfce9d4c2a84626d2ef5b12","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        ifx_deltas \u003d {}"},{"line_number":70,"context_line":"        if not self.include_iface_re:"},{"line_number":71,"context_line":"            return"},{"line_number":72,"context_line":"        for ifx in interface_data:"},{"line_number":73,"context_line":"            if not re.match(self.include_iface_re, ifx):"},{"line_number":74,"context_line":"                self.log.debug(\"include_iface_re {0} does not match with \""}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_4f9e4d55","line":71,"range":{"start_line":71,"start_character":12,"end_line":71,"end_character":18},"updated":"2016-06-10 10:39:27.000000000","message":"See the comment above.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"b6530000520d91779cfce9d4c2a84626d2ef5b12","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            return"},{"line_number":72,"context_line":"        for ifx in interface_data:"},{"line_number":73,"context_line":"            if not re.match(self.include_iface_re, ifx):"},{"line_number":74,"context_line":"                self.log.debug(\"include_iface_re {0} does not match with \""},{"line_number":75,"context_line":"                               \"ovs-vsctl interface {1} \".format(self.include_iface_re.pattern, ifx))"},{"line_number":76,"context_line":"                continue"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_4ff3ed9f","line":74,"range":{"start_line":74,"start_character":24,"end_line":74,"end_character":25},"updated":"2016-06-10 10:39:27.000000000","message":"nit: This log seems un-neccessary if we print the filter at once.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":8126,"name":"Bradley Klein","email":"bradley.klein@charter.com","username":"bklei"},"change_message_id":"a96b797e0553c1c984192351c656f90be93a516e","unresolved":false,"context_lines":[{"line_number":158,"context_line":"            if is_router_port:"},{"line_number":159,"context_line":"                router_name \u003d port_info[\u0027router_name\u0027]"},{"line_number":160,"context_line":"                ifx_dimensions \u003d {\u0027resource_id\u0027: device_uuid,"},{"line_number":161,"context_line":"                                  \u0027port_id\u0027: port_uuid,"},{"line_number":162,"context_line":"                                  \u0027router_name\u0027: router_name}"},{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                ifx_dimensions \u003d {\u0027resource_id\u0027: device_uuid,"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_5a9a7f6f","line":161,"updated":"2016-06-10 14:41:31.000000000","message":"I don\u0027t mind adding port_id for router ports -- but we should only publish that dimension for the operations project.  only admins have visibility to the ovs specifics -- non-admins only know what neutron tells them, which is router_uuid.  this will bloat data and confuse customers.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"ebb51d49af39faed2c8cfc6a52b2dca8ab65f8d9","unresolved":false,"context_lines":[{"line_number":158,"context_line":"            if is_router_port:"},{"line_number":159,"context_line":"                router_name \u003d port_info[\u0027router_name\u0027]"},{"line_number":160,"context_line":"                ifx_dimensions \u003d {\u0027resource_id\u0027: device_uuid,"},{"line_number":161,"context_line":"                                  \u0027port_id\u0027: port_uuid,"},{"line_number":162,"context_line":"                                  \u0027router_name\u0027: router_name}"},{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                ifx_dimensions \u003d {\u0027resource_id\u0027: device_uuid,"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_cf1dcf63","line":161,"in_reply_to":"7aa08908_5a9a7f6f","updated":"2016-06-13 09:21:29.000000000","message":"@Brad,\nwe continue to maintain the same ifx_dimensions dict from original code Refer: (https://github.com/openstack/monasca-agent/blob/master/monasca_agent/collector/checks_d/ovs.py#L147) for posting to operations project .\nwe add only port_id on top of this which is required to uniquely identify the measurement resource for the various ovs ports. we have a requirement from our customer to have port_id is required in the dimensions for the project metrics.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"f4c5b245969afa99ddd6fae05963584ceeadbe3e","unresolved":false,"context_lines":[{"line_number":158,"context_line":"            if is_router_port:"},{"line_number":159,"context_line":"                router_name \u003d port_info[\u0027router_name\u0027]"},{"line_number":160,"context_line":"                ifx_dimensions \u003d {\u0027resource_id\u0027: device_uuid,"},{"line_number":161,"context_line":"                                  \u0027port_id\u0027: port_uuid,"},{"line_number":162,"context_line":"                                  \u0027router_name\u0027: router_name}"},{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                ifx_dimensions \u003d {\u0027resource_id\u0027: device_uuid,"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_0044f971","line":161,"in_reply_to":"7aa08908_5a9a7f6f","updated":"2016-06-10 18:33:33.000000000","message":"Done","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"92ae541e29361b1991cd267c5f76c830448037cb","unresolved":false,"context_lines":[{"line_number":158,"context_line":"            if is_router_port:"},{"line_number":159,"context_line":"                router_name \u003d port_info[\u0027router_name\u0027]"},{"line_number":160,"context_line":"                ifx_dimensions \u003d {\u0027resource_id\u0027: device_uuid,"},{"line_number":161,"context_line":"                                  \u0027port_id\u0027: port_uuid,"},{"line_number":162,"context_line":"                                  \u0027router_name\u0027: router_name}"},{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                ifx_dimensions \u003d {\u0027resource_id\u0027: device_uuid,"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_3ed8407f","line":161,"in_reply_to":"7aa08908_5a9a7f6f","updated":"2016-06-10 16:25:41.000000000","message":"Yes. I Would agree.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":8126,"name":"Bradley Klein","email":"bradley.klein@charter.com","username":"bklei"},"change_message_id":"a96b797e0553c1c984192351c656f90be93a516e","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                                  \u0027port_id\u0027: port_uuid,"},{"line_number":162,"context_line":"                                  \u0027router_name\u0027: router_name}"},{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                ifx_dimensions \u003d {\u0027resource_id\u0027: device_uuid,"},{"line_number":165,"context_line":"                                  \u0027port_id\u0027: port_uuid}"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"            this_dimensions \u003d dims_base.copy()"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_1a8477af","line":164,"updated":"2016-06-10 14:41:31.000000000","message":"i\u0027m not sure if this belongs here or not -- but i don\u0027t think we should publish the new vswitch metrics to customer projects.  only the operations project.  doing so exposes the ovs guts to customers that will likely just confuse them.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"f4c5b245969afa99ddd6fae05963584ceeadbe3e","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                                  \u0027port_id\u0027: port_uuid,"},{"line_number":162,"context_line":"                                  \u0027router_name\u0027: router_name}"},{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                ifx_dimensions \u003d {\u0027resource_id\u0027: device_uuid,"},{"line_number":165,"context_line":"                                  \u0027port_id\u0027: port_uuid}"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"            this_dimensions \u003d dims_base.copy()"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_e0460d7a","line":164,"in_reply_to":"7aa08908_1a8477af","updated":"2016-06-10 18:33:33.000000000","message":"Done","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"92ae541e29361b1991cd267c5f76c830448037cb","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                                  \u0027port_id\u0027: port_uuid,"},{"line_number":162,"context_line":"                                  \u0027router_name\u0027: router_name}"},{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                ifx_dimensions \u003d {\u0027resource_id\u0027: device_uuid,"},{"line_number":165,"context_line":"                                  \u0027port_id\u0027: port_uuid}"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"            this_dimensions \u003d dims_base.copy()"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_9e905497","line":164,"in_reply_to":"7aa08908_1a8477af","updated":"2016-06-10 16:25:41.000000000","message":"I think this is a good suggestion. Operations do not need abs metrics.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"b6530000520d91779cfce9d4c2a84626d2ef5b12","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                customer_dimensions \u003d this_dimensions.copy()"},{"line_number":172,"context_line":"                del customer_dimensions[\u0027hostname\u0027]"},{"line_number":173,"context_line":"                if is_router_port:"},{"line_number":174,"context_line":"                    metric_name_rate \u003d \"vrouter.{0}_sec\".format(metric_name)"},{"line_number":175,"context_line":"                    metric_name_abs \u003d \"vrouter.{0}\".format(metric_name)"},{"line_number":176,"context_line":"                else:"},{"line_number":177,"context_line":"                    metric_name_rate \u003d \"vswitch.{0}_sec\".format(metric_name)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_ba2f31a0","line":174,"range":{"start_line":174,"start_character":40,"end_line":174,"end_character":47},"updated":"2016-06-10 10:39:27.000000000","message":"nit: a more clean way is define a function that would return you a metric name based on port-type.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":8126,"name":"Bradley Klein","email":"bradley.klein@charter.com","username":"bklei"},"change_message_id":"a96b797e0553c1c984192351c656f90be93a516e","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                del customer_dimensions[\u0027hostname\u0027]"},{"line_number":173,"context_line":"                if is_router_port:"},{"line_number":174,"context_line":"                    metric_name_rate \u003d \"vrouter.{0}_sec\".format(metric_name)"},{"line_number":175,"context_line":"                    metric_name_abs \u003d \"vrouter.{0}\".format(metric_name)"},{"line_number":176,"context_line":"                else:"},{"line_number":177,"context_line":"                    metric_name_rate \u003d \"vswitch.{0}_sec\".format(metric_name)"},{"line_number":178,"context_line":"                    metric_name_abs \u003d \"vswitch.{0}\".format(metric_name)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_7a493bd0","line":175,"updated":"2016-06-10 14:41:31.000000000","message":"i\u0027m concerned about data bloat.  i think whether or not the abs metrics are posted should be configurable.  i like that you\u0027ve made whether vswitch metrics are posted dependent on the new regular expression.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"f4c5b245969afa99ddd6fae05963584ceeadbe3e","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                del customer_dimensions[\u0027hostname\u0027]"},{"line_number":173,"context_line":"                if is_router_port:"},{"line_number":174,"context_line":"                    metric_name_rate \u003d \"vrouter.{0}_sec\".format(metric_name)"},{"line_number":175,"context_line":"                    metric_name_abs \u003d \"vrouter.{0}\".format(metric_name)"},{"line_number":176,"context_line":"                else:"},{"line_number":177,"context_line":"                    metric_name_rate \u003d \"vswitch.{0}_sec\".format(metric_name)"},{"line_number":178,"context_line":"                    metric_name_abs \u003d \"vswitch.{0}\".format(metric_name)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_2059355c","line":175,"in_reply_to":"7aa08908_7a493bd0","updated":"2016-06-10 18:33:33.000000000","message":"Done","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"b6530000520d91779cfce9d4c2a84626d2ef5b12","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        try:"},{"line_number":370,"context_line":"            self.log.debug(\"Retrieving Neutron port data\")"},{"line_number":371,"context_line":"            all_ports_data \u003d self.neutron_client.list_ports()"},{"line_number":372,"context_line":"            self.log.debug(\"Retrieving Neutron router data\")"},{"line_number":373,"context_line":"            all_routers_data \u003d self.neutron_client.list_routers()"},{"line_number":374,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_15f616f9","line":371,"range":{"start_line":371,"start_character":12,"end_line":371,"end_character":26},"updated":"2016-06-10 10:39:27.000000000","message":"This will list all ports defined on the controller. Can you check if we can only store those ports that belong to the current host where the plugin is running?\n\nJust a thought to save some space on the compute.","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":11671,"name":"Ashish Kumar Gupta","email":"guptaas@vmware.com","username":"ashish-kumar-gupta"},"change_message_id":"7b0da875a56e1032025ac81defe1bed03e7d7ccd","unresolved":false,"context_lines":[{"line_number":425,"context_line":"                        self._update_port_cache()"},{"line_number":426,"context_line":"        except (IOError, TypeError, ValueError):"},{"line_number":427,"context_line":"            # The file may not exist yet, or is corrupt.  Rebuild it now."},{"line_number":428,"context_line":"            self.log.warning(\"Router cache doesn\u0027t exists , rebuilding.\")"},{"line_number":429,"context_line":"            port_cache \u003d self._update_port_cache()"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        return port_cache"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_8ae82e18","line":428,"updated":"2016-06-10 06:13:20.000000000","message":"Router cache does not exist any more right ?","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"c4d59170597d019018206e568840a9341e476b3b","unresolved":false,"context_lines":[{"line_number":425,"context_line":"                        self._update_port_cache()"},{"line_number":426,"context_line":"        except (IOError, TypeError, ValueError):"},{"line_number":427,"context_line":"            # The file may not exist yet, or is corrupt.  Rebuild it now."},{"line_number":428,"context_line":"            self.log.warning(\"Router cache doesn\u0027t exists , rebuilding.\")"},{"line_number":429,"context_line":"            port_cache \u003d self._update_port_cache()"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        return port_cache"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_55841eb0","line":428,"in_reply_to":"7aa08908_8ae82e18","updated":"2016-06-10 11:12:30.000000000","message":"Done","commit_id":"d6f50d4ceffdbf145085921bcc445db2ca1b1fe8"}]}
