)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"da7dde53d623e31fd3eac7454480ab9f45d1ab35","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added comments to quantum api"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Ammended:  recheck bug 1020184"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Added a few comments as stated in bug 1020184 for review as I was"},{"line_number":12,"context_line":"browsing, please let me know what you think"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAOn%2F%2F8gs%3D","line":9,"updated":"2013-04-10 18:36:15.000000000","message":"The recheck needs to be a comment on the patch set, but in this case you don\u0027t need to do it because the new patch set automatically triggers Jenkins to run again.","commit_id":"529c4ffb49c8e0b4a1ffe5fd7b610e07ae4a1427"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"fd03cfd220bf28037482cb137d4dd52b36c8f547","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Added comments to quantum api client"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added a few comments for bug 1020184"},{"line_number":10,"context_line":"recheck bug 1020184"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I6bc59b5b8b57685aae461e5b1111d8dbd168123d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAOn%2F%2F8Q4%3D","line":10,"updated":"2013-04-10 19:15:50.000000000","message":"The recheck info is only useful in gerrit, not the commit message","commit_id":"b64960203ab69ad867279a6f95b284a96e88f7b0"}],"nova/network/quantumv2/api.py":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"83b3f69e42b2d1e7a4bffba425ee905c2550f8ea","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def allocate_for_instance(self, context, instance, **kwargs):"},{"line_number":130,"context_line":"        \"\"\"Allocate network resources for the instance."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        :param requested_networks: optional value containing network_id, fixed_ip, and port_id"},{"line_number":133,"context_line":"        :param security_groups: security groups to allocate for instance"},{"line_number":134,"context_line":"        :param conductor_api:"},{"line_number":135,"context_line":"        :param macs: None or a set of MAC addresses that the instance"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F8yM%3D","line":132,"updated":"2013-04-10 15:25:31.000000000","message":"Needs to be wrapped.","commit_id":"f1fcb55b2369f9b74d95e29958b9f4b3f68a0810"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"83b3f69e42b2d1e7a4bffba425ee905c2550f8ea","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                                                           touched_port_ids])"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    def _refresh_quantum_extensions_cache(self):"},{"line_number":297,"context_line":"        \"\"\"Refresh the quantum extensions cache.\"\"\""},{"line_number":298,"context_line":"        if (not self.last_quantum_extension_sync or"},{"line_number":299,"context_line":"            ((time.time() - self.last_quantum_extension_sync)"},{"line_number":300,"context_line":"             \u003e\u003d CONF.quantum_extension_sync_interval)):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F81I%3D","line":297,"updated":"2013-04-10 15:25:31.000000000","message":"I would prefer that this not just restate the function name.  Maybe \"Refresh the quantum extensions cache if necessary\" since it doesn\u0027t always do it?  Minor nit-pick, I know. :-)","commit_id":"f1fcb55b2369f9b74d95e29958b9f4b3f68a0810"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"83b3f69e42b2d1e7a4bffba425ee905c2550f8ea","unresolved":false,"context_lines":[{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def _populate_quantum_extension_values(self, instance, port_req_body):"},{"line_number":309,"context_line":"        \"\"\"Populate quantum extension values for the instance."},{"line_number":310,"context_line":"           if the extention contains nvp-qos then get the rxtx_factor"},{"line_number":311,"context_line":"        \"\"\""},{"line_number":312,"context_line":"        self._refresh_quantum_extensions_cache()"},{"line_number":313,"context_line":"        if \u0027nvp-qos\u0027 in self.extensions:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F808%3D","line":310,"updated":"2013-04-10 15:25:31.000000000","message":"extention -\u003e extension.  Also, I think \"if\" should be capitalized and a period added.","commit_id":"f1fcb55b2369f9b74d95e29958b9f4b3f68a0810"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"83b3f69e42b2d1e7a4bffba425ee905c2550f8ea","unresolved":false,"context_lines":[{"line_number":343,"context_line":"    @refresh_cache"},{"line_number":344,"context_line":"    def deallocate_port_for_instance(self, context, instance, port_id,"},{"line_number":345,"context_line":"                                     conductor_api\u003dNone):"},{"line_number":346,"context_line":"        \"\"\"Remove a specified port from the instance.\"\"\""},{"line_number":347,"context_line":"        try:"},{"line_number":348,"context_line":"            quantumv2.get_client(context).delete_port(port_id)"},{"line_number":349,"context_line":"        except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F8xw%3D","line":346,"updated":"2013-04-10 15:25:31.000000000","message":"Maybe add something about the return value?","commit_id":"f1fcb55b2369f9b74d95e29958b9f4b3f68a0810"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"83b3f69e42b2d1e7a4bffba425ee905c2550f8ea","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        return self._get_instance_nw_info(context, instance)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    def list_ports(self, context, **search_opts):"},{"line_number":359,"context_line":"        \"\"\"list ports for the client based on search options.\"\"\""},{"line_number":360,"context_line":"        return quantumv2.get_client(context).list_ports(**search_opts)"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    def show_port(self, context, port_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F8yg%3D","line":359,"updated":"2013-04-10 15:25:31.000000000","message":"List should probably be capitalized for consistency.","commit_id":"f1fcb55b2369f9b74d95e29958b9f4b3f68a0810"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"83b3f69e42b2d1e7a4bffba425ee905c2550f8ea","unresolved":false,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"    def get_instance_nw_info(self, context, instance, conductor_api\u003dNone,"},{"line_number":367,"context_line":"                             networks\u003dNone):"},{"line_number":368,"context_line":"        \"\"\"Return network information for specified instance and update cache.\"\"\""},{"line_number":369,"context_line":"        result \u003d self._get_instance_nw_info(context, instance, networks)"},{"line_number":370,"context_line":"        update_instance_info_cache(self, context, instance, result,"},{"line_number":371,"context_line":"                                   conductor_api)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F8yE%3D","line":368,"updated":"2013-04-10 15:25:31.000000000","message":"Line \u003e 80 characters.","commit_id":"f1fcb55b2369f9b74d95e29958b9f4b3f68a0810"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"83b3f69e42b2d1e7a4bffba425ee905c2550f8ea","unresolved":false,"context_lines":[{"line_number":529,"context_line":""},{"line_number":530,"context_line":"    def _get_port_id_by_fixed_address(self, client,"},{"line_number":531,"context_line":"                                      instance, address):"},{"line_number":532,"context_line":"        \"\"\"Returns port_id from a fixed address\"\"\""},{"line_number":533,"context_line":"        zone \u003d \u0027compute:%s\u0027 % instance[\u0027availability_zone\u0027]"},{"line_number":534,"context_line":"        search_opts \u003d {\u0027device_id\u0027: instance[\u0027uuid\u0027],"},{"line_number":535,"context_line":"                       \u0027device_owner\u0027: zone}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F8yc%3D","line":532,"updated":"2013-04-10 15:25:31.000000000","message":"Period needed.","commit_id":"f1fcb55b2369f9b74d95e29958b9f4b3f68a0810"},{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"bb6bc24c6c7c81c38e16819d3c40e0767f80b28b","unresolved":false,"context_lines":[{"line_number":682,"context_line":"                for fip in fips]"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"    def get_floating_ips_by_fixed_address(self, context, fixed_address):"},{"line_number":685,"context_line":"        ##(vichoward) - should this be raised as not implemented?"},{"line_number":686,"context_line":"        return []"},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"    def get_instance_id_by_floating_address(self, context, address):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F8v8%3D","line":685,"updated":"2013-04-10 15:37:37.000000000","message":"Hopefully not. I think this is deliberate","commit_id":"f1fcb55b2369f9b74d95e29958b9f4b3f68a0810"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"da7dde53d623e31fd3eac7454480ab9f45d1ab35","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def allocate_for_instance(self, context, instance, **kwargs):"},{"line_number":130,"context_line":"        \"\"\"Allocate network resources for the instance."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        :param requested_networks: optional value containing "},{"line_number":133,"context_line":"            network_id, fixed_ip, and port_id"},{"line_number":134,"context_line":"        :param security_groups: security groups to allocate for instance"},{"line_number":135,"context_line":"        :param conductor_api:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2F8gg%3D","line":132,"updated":"2013-04-10 18:36:15.000000000","message":"Extra trailing whitespace","commit_id":"529c4ffb49c8e0b4a1ffe5fd7b610e07ae4a1427"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"da7dde53d623e31fd3eac7454480ab9f45d1ab35","unresolved":false,"context_lines":[{"line_number":671,"context_line":"        return result"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    def get_floating_ip_by_address(self, context, address):"},{"line_number":674,"context_line":"        \"\"\"Returns a dictionary of floating ips given an address.\"\"\""},{"line_number":675,"context_line":"        client \u003d quantumv2.get_client(context)"},{"line_number":676,"context_line":"        fip \u003d self._get_floating_ip_by_address(client, address)"},{"line_number":677,"context_line":"        pool_dict \u003d self._setup_net_dict(client,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2F8eg%3D","line":674,"updated":"2013-04-10 18:36:15.000000000","message":"I think this only deals with a single floating ip.  See here: https://github.com/openstack/nova/blob/master/nova/network/quantumv2/api.py#L626","commit_id":"529c4ffb49c8e0b4a1ffe5fd7b610e07ae4a1427"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d7580dcfaf3fc61bd010b203b66cbe5b16ea763","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def _refresh_quantum_extensions_cache(self):"},{"line_number":298,"context_line":"        \"\"\"Refresh the quantum extensions cache"},{"line_number":299,"context_line":"           when necessary."},{"line_number":300,"context_line":"        \"\"\""},{"line_number":301,"context_line":"        if (not self.last_quantum_extension_sync or"},{"line_number":302,"context_line":"            ((time.time() - self.last_quantum_extension_sync)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2F7m0%3D","line":299,"updated":"2013-04-11 01:27:10.000000000","message":"One line is enough for this docstring.","commit_id":"d7a948d7c759e7758e703c4af816533697b5a570"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d7580dcfaf3fc61bd010b203b66cbe5b16ea763","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def _populate_quantum_extension_values(self, instance, port_req_body):"},{"line_number":312,"context_line":"        \"\"\"Populate quantum extension values for the instance."},{"line_number":313,"context_line":"           If the extension contains nvp-qos then get the rxtx_factor."},{"line_number":314,"context_line":"        \"\"\""},{"line_number":315,"context_line":"        self._refresh_quantum_extensions_cache()"},{"line_number":316,"context_line":"        if \u0027nvp-qos\u0027 in self.extensions:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2F7mk%3D","line":313,"updated":"2013-04-11 01:27:10.000000000","message":"leave one empty line after the first sentence, and then begin without no white spaces.","commit_id":"d7a948d7c759e7758e703c4af816533697b5a570"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d7580dcfaf3fc61bd010b203b66cbe5b16ea763","unresolved":false,"context_lines":[{"line_number":338,"context_line":"    def allocate_port_for_instance(self, context, instance, port_id,"},{"line_number":339,"context_line":"                                   network_id\u003dNone, requested_ip\u003dNone,"},{"line_number":340,"context_line":"                                   conductor_api\u003dNone):"},{"line_number":341,"context_line":"        \"\"\"Allocates a port for the instance.\"\"\""},{"line_number":342,"context_line":"        return self.allocate_for_instance(context, instance,"},{"line_number":343,"context_line":"                requested_networks\u003d[(network_id, requested_ip, port_id)],"},{"line_number":344,"context_line":"                conductor_api\u003dconductor_api)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2F7mg%3D","line":341,"updated":"2013-04-11 01:27:10.000000000","message":"Use imperative form: Allocate instead of Allocates. make it consistent at least in this file.","commit_id":"d7a948d7c759e7758e703c4af816533697b5a570"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d7580dcfaf3fc61bd010b203b66cbe5b16ea763","unresolved":false,"context_lines":[{"line_number":347,"context_line":"    def deallocate_port_for_instance(self, context, instance, port_id,"},{"line_number":348,"context_line":"                                     conductor_api\u003dNone):"},{"line_number":349,"context_line":"        \"\"\"Remove a specified port from the instance"},{"line_number":350,"context_line":"           returns network information for instance"},{"line_number":351,"context_line":"        \"\"\""},{"line_number":352,"context_line":"        try:"},{"line_number":353,"context_line":"            quantumv2.get_client(context).delete_port(port_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2F7mA%3D","line":350,"updated":"2013-04-11 01:27:10.000000000","message":"http://www.python.org/dev/peps/pep-0008/#comments","commit_id":"d7a948d7c759e7758e703c4af816533697b5a570"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d7580dcfaf3fc61bd010b203b66cbe5b16ea763","unresolved":false,"context_lines":[{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def _get_port_id_by_fixed_address(self, client,"},{"line_number":538,"context_line":"                                      instance, address):"},{"line_number":539,"context_line":"        \"\"\"Returns port_id from a fixed address.\"\"\""},{"line_number":540,"context_line":"        zone \u003d \u0027compute:%s\u0027 % instance[\u0027availability_zone\u0027]"},{"line_number":541,"context_line":"        search_opts \u003d {\u0027device_id\u0027: instance[\u0027uuid\u0027],"},{"line_number":542,"context_line":"                       \u0027device_owner\u0027: zone}"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2F7l8%3D","line":539,"updated":"2013-04-11 01:27:10.000000000","message":"Return?","commit_id":"d7a948d7c759e7758e703c4af816533697b5a570"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d7580dcfaf3fc61bd010b203b66cbe5b16ea763","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        raise NotImplementedError()"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"    def get_fixed_ip_by_address(self, context, address):"},{"line_number":601,"context_line":"        \"\"\"Returns instance uuids given an address.\"\"\""},{"line_number":602,"context_line":"        uuid_maps \u003d self._get_instance_uuids_by_ip(context, address)"},{"line_number":603,"context_line":"        if len(uuid_maps) \u003d\u003d 1:"},{"line_number":604,"context_line":"            return uuid_maps[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2F7l4%3D","line":601,"updated":"2013-04-11 01:27:10.000000000","message":"Return?","commit_id":"d7a948d7c759e7758e703c4af816533697b5a570"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d7580dcfaf3fc61bd010b203b66cbe5b16ea763","unresolved":false,"context_lines":[{"line_number":646,"context_line":"        return data[\u0027networks\u0027]"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"    def get_floating_ip_pools(self, context):"},{"line_number":649,"context_line":"        \"\"\"Return floating ip pools for the client.\"\"\""},{"line_number":650,"context_line":"        client \u003d quantumv2.get_client(context)"},{"line_number":651,"context_line":"        pools \u003d self._get_floating_ip_pools(client)"},{"line_number":652,"context_line":"        return [{\u0027name\u0027: n[\u0027name\u0027] or n[\u0027id\u0027]} for n in pools]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2F7ls%3D","line":649,"updated":"2013-04-11 01:27:10.000000000","message":"If we use \u0027the client\u0027, we should use it consistently in this file.","commit_id":"d7a948d7c759e7758e703c4af816533697b5a570"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0d7580dcfaf3fc61bd010b203b66cbe5b16ea763","unresolved":false,"context_lines":[{"line_number":671,"context_line":"        return result"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    def get_floating_ip_by_address(self, context, address):"},{"line_number":674,"context_line":"        \"\"\"Returns a floating ip given an address.\"\"\""},{"line_number":675,"context_line":"        client \u003d quantumv2.get_client(context)"},{"line_number":676,"context_line":"        fip \u003d self._get_floating_ip_by_address(client, address)"},{"line_number":677,"context_line":"        pool_dict \u003d self._setup_net_dict(client,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2F7l0%3D","line":674,"updated":"2013-04-11 01:27:10.000000000","message":"Return?","commit_id":"d7a948d7c759e7758e703c4af816533697b5a570"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"f2566e401059ce763f9b738d5b4f66ecde1085cd","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                                     conductor_api\u003dNone):"},{"line_number":348,"context_line":"        \"\"\"Remove a specified port from the instance."},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        returns network information for the instance"},{"line_number":351,"context_line":"        \"\"\""},{"line_number":352,"context_line":"        try:"},{"line_number":353,"context_line":"            quantumv2.get_client(context).delete_port(port_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2F60I%3D","line":350,"updated":"2013-04-11 16:25:33.000000000","message":"Needs capitalization and punctuation.  Also change \"returns\" to \"Return\" to match the rest.","commit_id":"a3f4d742f8f24285c5dafe74b2327dff2ac1c3d2"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"db909e245b19307b629cc722c7e9ca25d041e828","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        :param requested_networks: optional value containing"},{"line_number":133,"context_line":"            network_id, fixed_ip, and port_id"},{"line_number":134,"context_line":"        :param security_groups: security groups to allocate for instance"},{"line_number":135,"context_line":"        :param conductor_api:"},{"line_number":136,"context_line":"        :param macs: None or a set of MAC addresses that the instance"},{"line_number":137,"context_line":"            should use. macs is supplied by the hypervisor driver (contrast"},{"line_number":138,"context_line":"            with requested_networks which is user supplied)."}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2F3ZM%3D","line":135,"updated":"2013-04-16 17:37:59.000000000","message":"Maybe I\u0027m missing something, but I don\u0027t see this parameter being used anywhere.","commit_id":"82947c76aa7c3a9bd6786cfa320eaac17fda6afb"}]}
