)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"ae3ba4448113c1edea73d5a6a567246279c27921","unresolved":false,"context_lines":[{"line_number":17,"context_line":"retrieved."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I13bca29c3393baa85d2e121af2c065321d32b39a"},{"line_number":20,"context_line":"Closes-bug: #1337836"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_015ec212","line":20,"updated":"2014-07-28 18:39:20.000000000","message":"is this the right bug #?","commit_id":"a72f47314c13ab93e759ce73fc4a46d6544eec2a"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"14a6939d88bd936e1d6da9e2d17e36e5d89f67e1","unresolved":false,"context_lines":[{"line_number":17,"context_line":"retrieved."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I13bca29c3393baa85d2e121af2c065321d32b39a"},{"line_number":20,"context_line":"Closes-bug: #1337836"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa98f980_ef09c895","line":20,"in_reply_to":"baada198_015ec212","updated":"2014-09-15 03:07:08.000000000","message":"Seems like should be 1337837","commit_id":"a72f47314c13ab93e759ce73fc4a46d6544eec2a"}],"ceilometer/network/statistics/opencontrail/client.py":[{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"6c670f87aa186cafdc3b287f5d340f3cce78f561","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    \"\"\"Opencontrail Statistics REST API Client.\"\"\""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def get_vm_statistics(self, fqdn_uuid, data\u003dNone):"},{"line_number":113,"context_line":"        \"\"\"Get statistics of a virtual-machines"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        URL:"},{"line_number":116,"context_line":"            {endpoint}/analytics/uves/virtual-machine/{fqdn_uuid}"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9df570_93e72540","line":113,"range":{"start_line":113,"start_character":17,"end_line":113,"end_character":18},"updated":"2014-09-23 09:44:58.000000000","message":"Little nitpicking. First line in multi line doc string should end with the dot.","commit_id":"e20c9b4d771b2b0f22cf33d4d269192bbb912024"},{"author":{"_account_id":7141,"name":"Sylvain Afchain","email":"safchain@redhat.com","username":"sylvainA"},"change_message_id":"0cc73884900a18b270d79bdf2616119839a67791","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    \"\"\"Opencontrail Statistics REST API Client.\"\"\""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def get_vm_statistics(self, fqdn_uuid, data\u003dNone):"},{"line_number":113,"context_line":"        \"\"\"Get statistics of a virtual-machines"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        URL:"},{"line_number":116,"context_line":"            {endpoint}/analytics/uves/virtual-machine/{fqdn_uuid}"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9df570_07baca6d","line":113,"in_reply_to":"da9df570_01f9db7f","updated":"2014-09-25 10:28:56.000000000","message":"Done","commit_id":"e20c9b4d771b2b0f22cf33d4d269192bbb912024"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"359bd34728c373d0a49166779150056c909cc31a","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    \"\"\"Opencontrail Statistics REST API Client.\"\"\""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def get_vm_statistics(self, fqdn_uuid, data\u003dNone):"},{"line_number":113,"context_line":"        \"\"\"Get statistics of a virtual-machines"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        URL:"},{"line_number":116,"context_line":"            {endpoint}/analytics/uves/virtual-machine/{fqdn_uuid}"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9df570_01f9db7f","line":113,"range":{"start_line":113,"start_character":17,"end_line":113,"end_character":18},"in_reply_to":"da9df570_93e72540","updated":"2014-09-25 08:02:07.000000000","message":"Actually that\u0027s not strictly defined, but yeah, it\u0027s kind of good docs writing practice.","commit_id":"e20c9b4d771b2b0f22cf33d4d269192bbb912024"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"8dd2d9cd0448d970de774cb3008050516b4cd224","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import copy"},{"line_number":18,"context_line":"from oslo.config import cfg"},{"line_number":19,"context_line":"import requests"},{"line_number":20,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_57e377d8","line":17,"updated":"2014-10-16 03:18:28.000000000","message":"coding style nitpicking, here should be a blank line to separate python standard libraries and 3rd party libraries.","commit_id":"150718336145bfd74f529eff0862d5af00435978"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"cffffe6510c7176adb16f85256cfa810a043a7c3","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, endpoint, data):"},{"line_number":41,"context_line":"        self.endpoint \u003d endpoint"},{"line_number":42,"context_line":"        self.data \u003d data or {}"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def request(self, path, fqdn_uuid, data\u003dNone):"},{"line_number":45,"context_line":"        req_data \u003d copy.copy(self.data)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_8ab21f04","line":42,"updated":"2014-10-24 13:54:19.000000000","message":"Could you please clarify why do we need \u0027or {}\u0027 part in self.data while initializing of the class","commit_id":"150718336145bfd74f529eff0862d5af00435978"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"cffffe6510c7176adb16f85256cfa810a043a7c3","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.data \u003d data or {}"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def request(self, path, fqdn_uuid, data\u003dNone):"},{"line_number":45,"context_line":"        req_data \u003d copy.copy(self.data)"},{"line_number":46,"context_line":"        if data:"},{"line_number":47,"context_line":"            req_data.update(data)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_355d1416","line":45,"updated":"2014-10-24 13:54:19.000000000","message":"Are you sure that shallow copy if enough here? Probably will be better to use deepcopy?","commit_id":"150718336145bfd74f529eff0862d5af00435978"}],"ceilometer/network/statistics/opencontrail/driver.py":[{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"e69cadd5c5898c8f546aeb8bef537bc940528a73","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        ports \u003d data[\u0027n_client\u0027].port_get_all()"},{"line_number":100,"context_line":"        ports_map \u003d dict((port[\u0027id\u0027], port) for port in ports)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        if \u0027resource\u0027 in params:"},{"line_number":103,"context_line":"            resource \u003d params[\u0027resource\u0027][0]"},{"line_number":104,"context_line":"        else:"},{"line_number":105,"context_line":"            resource \u003d \u0027if_stats_list\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_b6501633","line":102,"updated":"2014-07-07 10:42:47.000000000","message":"I think it will be clearer use dict.get() instead of if ... else ... \n\nFor example: resource \u003d params.get(\u0027resource\u0027, [if_stats_list])[0]","commit_id":"6d5c42304af163581cbd6843b8e2dbf00473ed74"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"e69cadd5c5898c8f546aeb8bef537bc940528a73","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            resource \u003d params[\u0027resource\u0027][0]"},{"line_number":104,"context_line":"        else:"},{"line_number":105,"context_line":"            resource \u003d \u0027if_stats_list\u0027"},{"line_number":106,"context_line":"        if \u0027fqdn_uuid\u0027 in params:"},{"line_number":107,"context_line":"            fqdn_uuid \u003d params[\u0027fqdn_uuid\u0027][0]"},{"line_number":108,"context_line":"        else:"},{"line_number":109,"context_line":"            fqdn_uuid \u003d \u0027*\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_d63aeae5","line":106,"updated":"2014-07-07 10:42:47.000000000","message":"ditto","commit_id":"6d5c42304af163581cbd6843b8e2dbf00473ed74"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"e69cadd5c5898c8f546aeb8bef537bc940528a73","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            fqdn_uuid \u003d params[\u0027fqdn_uuid\u0027][0]"},{"line_number":108,"context_line":"        else:"},{"line_number":109,"context_line":"            fqdn_uuid \u003d \u0027*\u0027"},{"line_number":110,"context_line":"        if \u0027virtual_network\u0027 in params:"},{"line_number":111,"context_line":"            virtual_network \u003d params[\u0027virtual_network\u0027][0]"},{"line_number":112,"context_line":"        else:"},{"line_number":113,"context_line":"            virtual_network \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_f63d2ede","line":110,"updated":"2014-07-07 10:42:47.000000000","message":"ditto","commit_id":"6d5c42304af163581cbd6843b8e2dbf00473ed74"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"4bf0d54a571e7c0c0462d7c90911db3a1764c6f5","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        data \u003d {"},{"line_number":66,"context_line":"            \u0027o_client\u0027: client.Client(endpoint),"},{"line_number":67,"context_line":"            \u0027n_client\u0027: neutron_client.Client()"},{"line_number":68,"context_line":"        }"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        cache[\u0027network.statistics.opencontrail\u0027] \u003d data"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_f9550f50","line":67,"updated":"2014-09-15 11:31:56.000000000","message":"Perhaps this would belong in a separate patch, but could we avoid creating a new client each polling cycle by keeping it as a base class\u0027 attribute? Similar to how endpoint is stored in https://review.openstack.org/#/c/121104/2/ceilometer/objectstore/swift.py","commit_id":"4bd75bc9bbdc3a98094929d0fe5ca0403c9bd340"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"476aff2f5db811b7c410c6c8fc000591a8d132dd","unresolved":false,"context_lines":[{"line_number":52,"context_line":"      * if_stats_list:"},{"line_number":53,"context_line":"        Traffic on VM interfaces"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    e.g.::"},{"line_number":56,"context_line":"      opencontrail://localhost:8081/?resource\u003dfip_stats_list\u0026"},{"line_number":57,"context_line":"      virtual_network\u003ddefault-domain:openstack:public"},{"line_number":58,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_4888aee7","line":55,"updated":"2014-10-11 16:07:12.000000000","message":"An empty line is needed for the docs generator after \u0027e.g.::\u0027.","commit_id":"150718336145bfd74f529eff0862d5af00435978"},{"author":{"_account_id":11758,"name":"Igor Milovanovic","email":"igor.milovanovic@ammeon.com","username":"igor"},"change_message_id":"f725cd91542070bf8d1055f129c09678e54e1bc9","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                   virtual_network\u003dNone):"},{"line_number":170,"context_line":"        stats \u003d value[\u0027value\u0027][\u0027UveVirtualMachineAgent\u0027].get(resource, [])"},{"line_number":171,"context_line":"        for stat in stats:"},{"line_number":172,"context_line":"            if type(stat) is list:"},{"line_number":173,"context_line":"                for sub_stats, node in zip(*[iter(stat)] * 2):"},{"line_number":174,"context_line":"                    for sub_stat in sub_stats:"},{"line_number":175,"context_line":"                        result \u003d OpencontrailDriver._get_resource_meta("}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_7c33b361","line":172,"updated":"2014-11-26 11:31:13.000000000","message":"wouldn\u0027t it be better to isinstance(stat, list)?","commit_id":"2fa3f52d672f3fa0ce1d790209e6c679885f1c46"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"34e812ceb84af9680dc4f627d397f2117312d2de","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                   virtual_network\u003dNone):"},{"line_number":170,"context_line":"        stats \u003d value[\u0027value\u0027][\u0027UveVirtualMachineAgent\u0027].get(resource, [])"},{"line_number":171,"context_line":"        for stat in stats:"},{"line_number":172,"context_line":"            if type(stat) is list:"},{"line_number":173,"context_line":"                for sub_stats, node in zip(*[iter(stat)] * 2):"},{"line_number":174,"context_line":"                    for sub_stat in sub_stats:"},{"line_number":175,"context_line":"                        result \u003d OpencontrailDriver._get_resource_meta("}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_9b93f7a3","line":172,"in_reply_to":"5a890539_7c33b361","updated":"2014-12-25 07:35:50.000000000","message":"in this case does not matter I suppose. Python type() checks the exact type of object, and does not case about the inheritance (let\u0027s say, if we\u0027ll pass here something inherited from list object, this condition will be false), although is instance cares about the inheritance. Here type() looks more consistent imho.","commit_id":"2fa3f52d672f3fa0ce1d790209e6c679885f1c46"}]}
