)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"b69c439b4318b67ebf3404e720b13b9f7300a746","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Cyril Roelandt \u003ccyril.roelandt@enovance.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-18 16:14:15 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Python3: use six.iteritems() instead of dict.iteritems()"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This also adds a check to tools/misc-sanity-checks.sh that should catch this"},{"line_number":10,"context_line":"error in the future."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a016987_f53dd0bb","line":7,"updated":"2015-05-18 14:24:55.000000000","message":"Is there a reason to *not* use items() instead?","commit_id":"53afea3a5063c241c47c551401f59de076f76426"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"583b8fcd5352171310fe918f230def96900b83b2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Cyril Roelandt \u003ccyril.roelandt@enovance.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-18 16:14:15 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Python3: use six.iteritems() instead of dict.iteritems()"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This also adds a check to tools/misc-sanity-checks.sh that should catch this"},{"line_number":10,"context_line":"error in the future."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a016987_d04774ba","line":7,"in_reply_to":"7a016987_4a97533a","updated":"2015-05-19 10:07:16.000000000","message":"Exactly.","commit_id":"53afea3a5063c241c47c551401f59de076f76426"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"65f42cb7d313257933a438c61beef21be4402438","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Cyril Roelandt \u003ccyril.roelandt@enovance.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-18 16:14:15 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Python3: use six.iteritems() instead of dict.iteritems()"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This also adds a check to tools/misc-sanity-checks.sh that should catch this"},{"line_number":10,"context_line":"error in the future."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a016987_4a97533a","line":7,"in_reply_to":"7a016987_f53dd0bb","updated":"2015-05-19 07:02:18.000000000","message":"In py27, dict.items() creates an item list where (six.)iteritems creates a (lazy) item iterator ... so we should prefer six.iteritems when the dictionary is \"big\" otherwise IMO we should prefer items() for readibility (and efficiency?).","commit_id":"53afea3a5063c241c47c551401f59de076f76426"}],"neutron/agent/linux/iptables_firewall.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"65f42cb7d313257933a438c61beef21be4402438","unresolved":false,"context_lines":[{"line_number":591,"context_line":"        remote_sgs_to_remove \u003d self._determine_remote_sgs_to_remove("},{"line_number":592,"context_line":"            filtered_ports)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"        for ip_version, remote_sg_ids in six.iteritems(remote_sgs_to_remove):"},{"line_number":595,"context_line":"            self._clear_sg_members(ip_version, remote_sg_ids)"},{"line_number":596,"context_line":"            if self.enable_ipset:"},{"line_number":597,"context_line":"                self._remove_ipsets_for_remote_sgs(ip_version, remote_sg_ids)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_aae2472d","line":594,"updated":"2015-05-19 07:02:18.000000000","message":"iiuc, remote_sgs_to_remove has at most 2 keys (ipv4/6), you can use directly items()","commit_id":"53afea3a5063c241c47c551401f59de076f76426"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"583b8fcd5352171310fe918f230def96900b83b2","unresolved":false,"context_lines":[{"line_number":591,"context_line":"        remote_sgs_to_remove \u003d self._determine_remote_sgs_to_remove("},{"line_number":592,"context_line":"            filtered_ports)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"        for ip_version, remote_sg_ids in six.iteritems(remote_sgs_to_remove):"},{"line_number":595,"context_line":"            self._clear_sg_members(ip_version, remote_sg_ids)"},{"line_number":596,"context_line":"            if self.enable_ipset:"},{"line_number":597,"context_line":"                self._remove_ipsets_for_remote_sgs(ip_version, remote_sg_ids)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_d0e3f4a2","line":594,"in_reply_to":"7a016987_aae2472d","updated":"2015-05-19 10:07:16.000000000","message":"Done","commit_id":"53afea3a5063c241c47c551401f59de076f76426"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"65f42cb7d313257933a438c61beef21be4402438","unresolved":false,"context_lines":[{"line_number":624,"context_line":"                                constants.IPv6: set()}"},{"line_number":625,"context_line":"        for port in filtered_ports:"},{"line_number":626,"context_line":"            remote_sg_ids \u003d self._get_remote_sg_ids(port)"},{"line_number":627,"context_line":"            for ip_version, sg_ids in six.iteritems(remote_sg_ids):"},{"line_number":628,"context_line":"                remote_group_id_sets[ip_version].update(sg_ids)"},{"line_number":629,"context_line":"        return remote_group_id_sets"},{"line_number":630,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_2acd37b7","line":627,"updated":"2015-05-19 07:02:18.000000000","message":"itto","commit_id":"53afea3a5063c241c47c551401f59de076f76426"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"583b8fcd5352171310fe918f230def96900b83b2","unresolved":false,"context_lines":[{"line_number":624,"context_line":"                                constants.IPv6: set()}"},{"line_number":625,"context_line":"        for port in filtered_ports:"},{"line_number":626,"context_line":"            remote_sg_ids \u003d self._get_remote_sg_ids(port)"},{"line_number":627,"context_line":"            for ip_version, sg_ids in six.iteritems(remote_sg_ids):"},{"line_number":628,"context_line":"                remote_group_id_sets[ip_version].update(sg_ids)"},{"line_number":629,"context_line":"        return remote_group_id_sets"},{"line_number":630,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_b0e07897","line":627,"in_reply_to":"7a016987_2acd37b7","updated":"2015-05-19 10:07:16.000000000","message":"Done","commit_id":"53afea3a5063c241c47c551401f59de076f76426"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"cf344c010951cc3da84663dacd22700e18a9494d","unresolved":false,"context_lines":[{"line_number":591,"context_line":"        remote_sgs_to_remove \u003d self._determine_remote_sgs_to_remove("},{"line_number":592,"context_line":"            filtered_ports)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"        for ip_version, remote_sg_ids in remote_sgs_to_remove.items():"},{"line_number":595,"context_line":"            self._clear_sg_members(ip_version, remote_sg_ids)"},{"line_number":596,"context_line":"            if self.enable_ipset:"},{"line_number":597,"context_line":"                self._remove_ipsets_for_remote_sgs(ip_version, remote_sg_ids)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_9e197c25","line":594,"updated":"2015-05-26 12:54:48.000000000","message":"Why not using six.iteritems() here?","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"cf344c010951cc3da84663dacd22700e18a9494d","unresolved":false,"context_lines":[{"line_number":623,"context_line":"        remote_group_id_sets \u003d {constants.IPv4: set(),"},{"line_number":624,"context_line":"                                constants.IPv6: set()}"},{"line_number":625,"context_line":"        for port in filtered_ports:"},{"line_number":626,"context_line":"            for ip_version, sg_ids in self._get_remote_sg_ids(port).items():"},{"line_number":627,"context_line":"                remote_group_id_sets[ip_version].update(sg_ids)"},{"line_number":628,"context_line":"        return remote_group_id_sets"},{"line_number":629,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_5ed2e435","line":626,"updated":"2015-05-26 12:54:48.000000000","message":"Why not using six.iteritems() here?","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"}],"neutron/hacking/checks.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3dfc477e53f5219b740f7be7ad7fbb4c97659019","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        yield(0, msg)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"def check_python3_issues(logical_line):"},{"line_number":165,"context_line":"    if re.match(r\".*\\.iteritems\\(\\)\", logical_line):"},{"line_number":166,"context_line":"        msg \u003d (\"N325: Use six.iteritems() instead of dict.iteritems().\")"},{"line_number":167,"context_line":"        yield(0, msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_876bf6f0","line":164,"updated":"2015-05-19 17:19:45.000000000","message":"I would be glad to see that hacking rule eventually in hacking project, not in neutron, since it\u0027s useful globally.","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"cf344c010951cc3da84663dacd22700e18a9494d","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        yield(0, msg)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"def check_python3_issues(logical_line):"},{"line_number":165,"context_line":"    if re.match(r\".*\\.iteritems\\(\\)\", logical_line):"},{"line_number":166,"context_line":"        msg \u003d (\"N325: Use six.iteritems() instead of dict.iteritems().\")"},{"line_number":167,"context_line":"        yield(0, msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_3e0968de","line":164,"in_reply_to":"7a016987_876bf6f0","updated":"2015-05-26 12:54:48.000000000","message":"I proposed a similar change in Nova, but there are too many false positives. In nova, SQLAlchemy still have an iteritems() method but no items() method, so the code must still call the iteritems() method.\n\nMany OpenStack applications are still not compatible with Python 3. Until all code is ported, it\u0027s better to use a check in each application. But later, we will enable python3 check jobs and make them voting, so the check will become useless...","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"}],"neutron/plugins/ml2/drivers/type_flat.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"65f42cb7d313257933a438c61beef21be4402438","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                   % physical_network)"},{"line_number":99,"context_line":"            raise exc.InvalidInput(error_message\u003dmsg)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        for key, value in six.iteritems(segment):"},{"line_number":102,"context_line":"            if value and key not in [api.NETWORK_TYPE,"},{"line_number":103,"context_line":"                                     api.PHYSICAL_NETWORK]:"},{"line_number":104,"context_line":"                msg \u003d _(\"%s prohibited for flat provider network\") % key"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_8a60aba6","line":101,"updated":"2015-05-19 07:02:18.000000000","message":"iirc, segments have 3- keys \u003d\u003e prefer items()","commit_id":"53afea3a5063c241c47c551401f59de076f76426"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"583b8fcd5352171310fe918f230def96900b83b2","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                   % physical_network)"},{"line_number":99,"context_line":"            raise exc.InvalidInput(error_message\u003dmsg)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        for key, value in six.iteritems(segment):"},{"line_number":102,"context_line":"            if value and key not in [api.NETWORK_TYPE,"},{"line_number":103,"context_line":"                                     api.PHYSICAL_NETWORK]:"},{"line_number":104,"context_line":"                msg \u003d _(\"%s prohibited for flat provider network\") % key"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_d0fad442","line":101,"in_reply_to":"7a016987_8a60aba6","updated":"2015-05-19 10:07:16.000000000","message":"Done","commit_id":"53afea3a5063c241c47c551401f59de076f76426"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"cf344c010951cc3da84663dacd22700e18a9494d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                   % physical_network)"},{"line_number":98,"context_line":"            raise exc.InvalidInput(error_message\u003dmsg)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        for key, value in segment.items():"},{"line_number":101,"context_line":"            if value and key not in [api.NETWORK_TYPE,"},{"line_number":102,"context_line":"                                     api.PHYSICAL_NETWORK]:"},{"line_number":103,"context_line":"                msg \u003d _(\"%s prohibited for flat provider network\") % key"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_9e9e1c62","line":100,"updated":"2015-05-26 12:54:48.000000000","message":"Why not using six.iteritems() here?","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"}],"neutron/plugins/ml2/drivers/type_local.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"65f42cb7d313257933a438c61beef21be4402438","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        return False"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def validate_provider_segment(self, segment):"},{"line_number":50,"context_line":"        for key, value in six.iteritems(segment):"},{"line_number":51,"context_line":"            if value and key !\u003d api.NETWORK_TYPE:"},{"line_number":52,"context_line":"                msg \u003d _(\"%s prohibited for local provider network\") % key"},{"line_number":53,"context_line":"                raise exc.InvalidInput(error_message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_2a5bf7f7","line":50,"updated":"2015-05-19 07:02:18.000000000","message":"itto","commit_id":"53afea3a5063c241c47c551401f59de076f76426"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"583b8fcd5352171310fe918f230def96900b83b2","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        return False"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def validate_provider_segment(self, segment):"},{"line_number":50,"context_line":"        for key, value in six.iteritems(segment):"},{"line_number":51,"context_line":"            if value and key !\u003d api.NETWORK_TYPE:"},{"line_number":52,"context_line":"                msg \u003d _(\"%s prohibited for local provider network\") % key"},{"line_number":53,"context_line":"                raise exc.InvalidInput(error_message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_509dc408","line":50,"in_reply_to":"7a016987_2a5bf7f7","updated":"2015-05-19 10:07:16.000000000","message":"Done","commit_id":"53afea3a5063c241c47c551401f59de076f76426"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"cf344c010951cc3da84663dacd22700e18a9494d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        return False"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def validate_provider_segment(self, segment):"},{"line_number":49,"context_line":"        for key, value in segment.items():"},{"line_number":50,"context_line":"            if value and key !\u003d api.NETWORK_TYPE:"},{"line_number":51,"context_line":"                msg \u003d _(\"%s prohibited for local provider network\") % key"},{"line_number":52,"context_line":"                raise exc.InvalidInput(error_message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_7e9b6073","line":49,"updated":"2015-05-26 12:54:48.000000000","message":"Why not using six.iteritems() here?","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"}],"neutron/plugins/ml2/managers.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"65f42cb7d313257933a438c61beef21be4402438","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            network[provider.SEGMENTATION_ID] \u003d segment[api.SEGMENTATION_ID]"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def initialize(self):"},{"line_number":168,"context_line":"        for network_type, driver in six.iteritems(self.drivers):"},{"line_number":169,"context_line":"            LOG.info(_LI(\"Initializing driver for type \u0027%s\u0027\"), network_type)"},{"line_number":170,"context_line":"            driver.obj.initialize()"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_aa67e7b5","line":168,"updated":"2015-05-19 07:02:18.000000000","message":"you can use items()","commit_id":"53afea3a5063c241c47c551401f59de076f76426"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"583b8fcd5352171310fe918f230def96900b83b2","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            network[provider.SEGMENTATION_ID] \u003d segment[api.SEGMENTATION_ID]"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def initialize(self):"},{"line_number":168,"context_line":"        for network_type, driver in six.iteritems(self.drivers):"},{"line_number":169,"context_line":"            LOG.info(_LI(\"Initializing driver for type \u0027%s\u0027\"), network_type)"},{"line_number":170,"context_line":"            driver.obj.initialize()"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_108cecd8","line":168,"in_reply_to":"7a016987_aa67e7b5","updated":"2015-05-19 10:07:16.000000000","message":"Done","commit_id":"53afea3a5063c241c47c551401f59de076f76426"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3dfc477e53f5219b740f7be7ad7fbb4c97659019","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            network[provider.SEGMENTATION_ID] \u003d segment[api.SEGMENTATION_ID]"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def initialize(self):"},{"line_number":167,"context_line":"        for network_type, driver in self.drivers.items():"},{"line_number":168,"context_line":"            LOG.info(_LI(\"Initializing driver for type \u0027%s\u0027\"), network_type)"},{"line_number":169,"context_line":"            driver.obj.initialize()"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_a76a72ec","line":167,"updated":"2015-05-19 17:19:45.000000000","message":"?","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"cf344c010951cc3da84663dacd22700e18a9494d","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            network[provider.SEGMENTATION_ID] \u003d segment[api.SEGMENTATION_ID]"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def initialize(self):"},{"line_number":167,"context_line":"        for network_type, driver in self.drivers.items():"},{"line_number":168,"context_line":"            LOG.info(_LI(\"Initializing driver for type \u0027%s\u0027\"), network_type)"},{"line_number":169,"context_line":"            driver.obj.initialize()"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_fe851007","line":167,"in_reply_to":"7a016987_a76a72ec","updated":"2015-05-26 12:54:48.000000000","message":"I guess that Ihar means: Why not using six.iteritems() here?","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"fae98ce9c2ea6625f16227ee858144ed46cc35c0","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            network[provider.SEGMENTATION_ID] \u003d segment[api.SEGMENTATION_ID]"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def initialize(self):"},{"line_number":167,"context_line":"        for network_type, driver in self.drivers.items():"},{"line_number":168,"context_line":"            LOG.info(_LI(\"Initializing driver for type \u0027%s\u0027\"), network_type)"},{"line_number":169,"context_line":"            driver.obj.initialize()"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_beac3836","line":167,"in_reply_to":"7a016987_fe851007","updated":"2015-05-26 13:00:15.000000000","message":"I\u0027m sorry, apparently gertty that I used for review here failed somehow. Yes, I was wondering why the replacement for a patch with a different intent.","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"}],"neutron/tests/api/admin/test_quotas.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3dfc477e53f5219b740f7be7ad7fbb4c97659019","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7a016987_6770fadc","updated":"2015-05-19 17:19:45.000000000","message":"?","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"cf344c010951cc3da84663dacd22700e18a9494d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7a016987_bef558cc","in_reply_to":"7a016987_6770fadc","updated":"2015-05-26 12:54:48.000000000","message":"Ihar: What is your question?","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"fae98ce9c2ea6625f16227ee858144ed46cc35c0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7a016987_5e49c48d","in_reply_to":"7a016987_bef558cc","updated":"2015-05-26 13:00:15.000000000","message":"I\u0027m sorry, apparently gertty that I used for review here failed somehow. Please ignore.","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"}],"neutron/tests/api/test_dhcp_ipv6.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3dfc477e53f5219b740f7be7ad7fbb4c97659019","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        ):"},{"line_number":128,"context_line":"            kwargs \u003d {\u0027ipv6_ra_mode\u0027: ra_mode,"},{"line_number":129,"context_line":"                      \u0027ipv6_address_mode\u0027: add_mode}"},{"line_number":130,"context_line":"            kwargs \u003d {k: v for k, v in six.iteritems(kwargs) if v}"},{"line_number":131,"context_line":"            real_ip, eui_ip \u003d self._get_ips_from_subnet(**kwargs)"},{"line_number":132,"context_line":"            self._clean_network()"},{"line_number":133,"context_line":"            self.assertEqual(eui_ip, real_ip,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_477a9ebe","line":130,"updated":"2015-05-19 17:19:45.000000000","message":"Guys, let\u0027s not mix two things: it only makes review process harder. If you think it\u0027s worth to change to .items(), please send a separate patch.","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"},{"author":{"_account_id":12561,"name":"Adrien Vergé","email":"adrienverge@gmail.com","username":"adrien.verge"},"change_message_id":"ca4e9b07ccc289974ccfb445b75a6c642bf923de","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        ):"},{"line_number":128,"context_line":"            kwargs \u003d {\u0027ipv6_ra_mode\u0027: ra_mode,"},{"line_number":129,"context_line":"                      \u0027ipv6_address_mode\u0027: add_mode}"},{"line_number":130,"context_line":"            kwargs \u003d {k: v for k, v in six.iteritems(kwargs) if v}"},{"line_number":131,"context_line":"            real_ip, eui_ip \u003d self._get_ips_from_subnet(**kwargs)"},{"line_number":132,"context_line":"            self._clean_network()"},{"line_number":133,"context_line":"            self.assertEqual(eui_ip, real_ip,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_d31bfb71","line":130,"updated":"2015-05-19 12:11:03.000000000","message":"In my opinion items() can be used here also (kwargs is a small dict).","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"cf344c010951cc3da84663dacd22700e18a9494d","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        ):"},{"line_number":128,"context_line":"            kwargs \u003d {\u0027ipv6_ra_mode\u0027: ra_mode,"},{"line_number":129,"context_line":"                      \u0027ipv6_address_mode\u0027: add_mode}"},{"line_number":130,"context_line":"            kwargs \u003d {k: v for k, v in six.iteritems(kwargs) if v}"},{"line_number":131,"context_line":"            real_ip, eui_ip \u003d self._get_ips_from_subnet(**kwargs)"},{"line_number":132,"context_line":"            self._clean_network()"},{"line_number":133,"context_line":"            self.assertEqual(eui_ip, real_ip,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_be9f984f","line":130,"in_reply_to":"7a016987_477a9ebe","updated":"2015-05-26 12:54:48.000000000","message":"Agreed. Replacing dict.iteritems() with six.iteritems(dict) can be generated by a tool like sixer. It\u0027s better to not modify a patch generated by a tool, but use a previous change or a following change to specific changes.","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"},{"author":{"_account_id":12561,"name":"Adrien Vergé","email":"adrienverge@gmail.com","username":"adrien.verge"},"change_message_id":"ca4e9b07ccc289974ccfb445b75a6c642bf923de","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        ):"},{"line_number":315,"context_line":"            kwargs \u003d {\u0027ipv6_ra_mode\u0027: ra_mode,"},{"line_number":316,"context_line":"                      \u0027ipv6_address_mode\u0027: add_mode}"},{"line_number":317,"context_line":"            kwargs \u003d {k: v for k, v in six.iteritems(kwargs) if v}"},{"line_number":318,"context_line":"            subnet \u003d self.create_subnet(self.network, **kwargs)"},{"line_number":319,"context_line":"            ip_range \u003d netaddr.IPRange(subnet[\"allocation_pools\"][0][\"start\"],"},{"line_number":320,"context_line":"                                       subnet[\"allocation_pools\"][0][\"end\"])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_b3187f76","line":317,"updated":"2015-05-19 12:11:03.000000000","message":"same here and below","commit_id":"3f09348d9f6e182770b1ca8f7f85645a399b80e9"}],"tools/misc-sanity-checks.sh":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"485c210867730a5b8780bf37ea320bca05e7e756","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    fi"},{"line_number":58,"context_line":"}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"check_python3_issues () {"},{"line_number":61,"context_line":"    git grep -q \"\\.iteritems()\" neutron"},{"line_number":62,"context_line":"    if [ \"$?\" -eq 0 ]; then"},{"line_number":63,"context_line":"        echo \"Use six.iteritems() instead of dict.iteritems()\" \u003e\u003e$FAILURES"}],"source_content_type":"text/x-sh","patch_set":2,"id":"7a016987_8adf8b0c","line":60,"updated":"2015-05-19 07:04:44.000000000","message":"why not using a hacking rule until py3K is fully supported?","commit_id":"53afea3a5063c241c47c551401f59de076f76426"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"583b8fcd5352171310fe918f230def96900b83b2","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    fi"},{"line_number":58,"context_line":"}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"check_python3_issues () {"},{"line_number":61,"context_line":"    git grep -q \"\\.iteritems()\" neutron"},{"line_number":62,"context_line":"    if [ \"$?\" -eq 0 ]; then"},{"line_number":63,"context_line":"        echo \"Use six.iteritems() instead of dict.iteritems()\" \u003e\u003e$FAILURES"}],"source_content_type":"text/x-sh","patch_set":2,"id":"7a016987_4bfcf571","line":60,"in_reply_to":"7a016987_8adf8b0c","updated":"2015-05-19 10:07:16.000000000","message":"Sure :)","commit_id":"53afea3a5063c241c47c551401f59de076f76426"}],"tox.ini":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c71f9a4dcc87154ae18d082b60ea1d84b1b394a8","unresolved":false,"context_lines":[{"line_number":99,"context_line":"[testenv:py34]"},{"line_number":100,"context_line":"commands \u003d python -m testtools.run \\"},{"line_number":101,"context_line":"    neutron.tests.fullstack.test_l3_agent \\"},{"line_number":102,"context_line":"    neutron.tests.functional.db.test_migrations \\"},{"line_number":103,"context_line":"    neutron.tests.unit.common.test_rpc"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"[flake8]"}],"source_content_type":"text/x-properties","patch_set":9,"id":"7a016987_1a42db3e","line":102,"updated":"2015-05-28 12:27:42.000000000","message":"Wasn\u0027t py34 supposed to be for unit tests only?","commit_id":"0d389525f7eae0312baa7922e991a558527c64ee"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"5ea41a26e740685e9f3399cfeededd5741e9468a","unresolved":false,"context_lines":[{"line_number":99,"context_line":"[testenv:py34]"},{"line_number":100,"context_line":"commands \u003d python -m testtools.run \\"},{"line_number":101,"context_line":"    neutron.tests.fullstack.test_l3_agent \\"},{"line_number":102,"context_line":"    neutron.tests.functional.db.test_migrations \\"},{"line_number":103,"context_line":"    neutron.tests.unit.common.test_rpc"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"[flake8]"}],"source_content_type":"text/x-properties","patch_set":9,"id":"7a016987_1a7d3b1c","line":102,"in_reply_to":"7a016987_1a42db3e","updated":"2015-05-28 12:35:53.000000000","message":"Why do you want to restict py34 to unit tests?","commit_id":"0d389525f7eae0312baa7922e991a558527c64ee"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"076284cedd522a83429d9af04b257bb50f59c2eb","unresolved":false,"context_lines":[{"line_number":99,"context_line":"[testenv:py34]"},{"line_number":100,"context_line":"commands \u003d python -m testtools.run \\"},{"line_number":101,"context_line":"    neutron.tests.fullstack.test_l3_agent \\"},{"line_number":102,"context_line":"    neutron.tests.functional.db.test_migrations \\"},{"line_number":103,"context_line":"    neutron.tests.unit.common.test_rpc"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"[flake8]"}],"source_content_type":"text/x-properties","patch_set":9,"id":"7a016987_3a5d9779","line":102,"in_reply_to":"7a016987_1a7d3b1c","updated":"2015-05-28 12:39:14.000000000","message":"Because there are different requirements for environment for different types of tests. Functional tests are not expected to run in a restricted env designed for unit tests, that\u0027s even more valid for fullstack tests.\n\nThey may either fail or apply irrecoverable changes to test runner system.","commit_id":"0d389525f7eae0312baa7922e991a558527c64ee"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"768231e6f9ef38ea7c00ea7b972f6bb4885aeaa5","unresolved":false,"context_lines":[{"line_number":99,"context_line":"[testenv:py34]"},{"line_number":100,"context_line":"commands \u003d python -m testtools.run \\"},{"line_number":101,"context_line":"    neutron.tests.fullstack.test_l3_agent \\"},{"line_number":102,"context_line":"    neutron.tests.functional.db.test_migrations \\"},{"line_number":103,"context_line":"    neutron.tests.unit.common.test_rpc"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"[flake8]"}],"source_content_type":"text/x-properties","patch_set":9,"id":"7a016987_ea916a9b","line":102,"in_reply_to":"7a016987_3a5d9779","updated":"2015-05-28 13:34:10.000000000","message":"Oh ok, it\u0027s different in all other openstack projects. But it see that testr is configured to only run unit tests in .testr.conf. py34 should behave like py27, so ok to restrict to neutron/unit/ directory.\n\nCyril, please just remove this one. Except of this line, all other changes are ok.","commit_id":"0d389525f7eae0312baa7922e991a558527c64ee"}]}
