)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"08d13dc83cbc42835374f9271478a6c9dca75c1b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"that it is possible to compare existing hosts with all hosts in DB. And"},{"line_number":17,"context_line":"delete stale records if there is any. It is applied at [1]."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"[1] https://review.openstack.org/337685"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I53863c9983e933872fb0adbc964e5a88d0238bf2"},{"line_number":22,"context_line":"Partially-implements: blueprint routed-networks"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_17518e36","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":39},"updated":"2016-07-06 17:36:58.000000000","message":"I\u0027m not really sure this needs to be a separate patch.  But, I don\u0027t feel strongly either way.  I\u0027m ok with this.","commit_id":"9428272d29d3c7f04e30fa1e1fb31bb78963301e"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f661cd625ac309b8e561c99ff403fd1e98c31bf6","unresolved":false,"context_lines":[{"line_number":16,"context_line":"that it is possible to compare existing hosts with all hosts in DB. And"},{"line_number":17,"context_line":"delete stale records if there is any. It is applied at [1]."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"[1] https://review.openstack.org/337685"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I53863c9983e933872fb0adbc964e5a88d0238bf2"},{"line_number":22,"context_line":"Partially-implements: blueprint routed-networks"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_1ccebc62","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":39},"in_reply_to":"1aa78d24_17518e36","updated":"2016-07-07 03:32:38.000000000","message":"This should be in one patch, but [1] is in networking-ovn. I don\u0027t know a way to put code in 2 code repositories in one patch, so I made it separately.","commit_id":"9428272d29d3c7f04e30fa1e1fb31bb78963301e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"fe3eeaa6e562cdad04a309eb98bcd7f1933274cf","unresolved":false,"context_lines":[{"line_number":16,"context_line":"that it is possible to compare existing hosts with all hosts in DB. And"},{"line_number":17,"context_line":"delete stale records if there is any. It is applied at [1]."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"[1] https://review.openstack.org/337685"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I53863c9983e933872fb0adbc964e5a88d0238bf2"},{"line_number":22,"context_line":"Partially-implements: blueprint routed-networks"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_898d27d5","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":39},"in_reply_to":"1aa78d24_1ccebc62","updated":"2016-07-07 16:06:24.000000000","message":"I\u0027m obviously asleep at the proverbial reviewers wheel.","commit_id":"9428272d29d3c7f04e30fa1e1fb31bb78963301e"}],"neutron/services/segments/db.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"eb4c9a54af2f5575972e53217699a85a7c3706e2","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    and then delete the stale SegmentHostMapping."},{"line_number":176,"context_line":"    \"\"\""},{"line_number":177,"context_line":"    query \u003d context.session.query(SegmentHostMapping.host)"},{"line_number":178,"context_line":"    return {host for host, in query.all()}"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"def _get_phys_nets(agent):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_9cf4c3f2","line":178,"updated":"2016-07-05 16:47:54.000000000","message":"just do \u0027{host for host, in query}\u0027. adding .all() causes the construction of a full data structure of the results when you are just going to throw it away after constructing a set anyway","commit_id":"0b23bafcda4fa50537b1c17d814f5b6335bcdc02"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"dec122d5083fd5590cd612b8086562805d6257e2","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    and then delete the stale SegmentHostMapping."},{"line_number":176,"context_line":"    \"\"\""},{"line_number":177,"context_line":"    query \u003d context.session.query(SegmentHostMapping.host)"},{"line_number":178,"context_line":"    return {host for host, in query.all()}"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"def _get_phys_nets(agent):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_0fb88529","line":178,"in_reply_to":"1aa78d24_9cf4c3f2","updated":"2016-07-06 00:34:40.000000000","message":"Done","commit_id":"0b23bafcda4fa50537b1c17d814f5b6335bcdc02"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"08d13dc83cbc42835374f9271478a6c9dca75c1b","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    and then delete the stale SegmentHostMapping."},{"line_number":176,"context_line":"    \"\"\""},{"line_number":177,"context_line":"    query \u003d context.session.query(SegmentHostMapping.host)"},{"line_number":178,"context_line":"    return {host for host, in query}"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"def _get_phys_nets(agent):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_f71e82b9","line":178,"range":{"start_line":178,"start_character":25,"end_line":178,"end_character":26},"updated":"2016-07-06 17:36:58.000000000","message":"nit:  What is the comma for?","commit_id":"9428272d29d3c7f04e30fa1e1fb31bb78963301e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"fe3eeaa6e562cdad04a309eb98bcd7f1933274cf","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    and then delete the stale SegmentHostMapping."},{"line_number":176,"context_line":"    \"\"\""},{"line_number":177,"context_line":"    query \u003d context.session.query(SegmentHostMapping.host)"},{"line_number":178,"context_line":"    return {host for host, in query}"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"def _get_phys_nets(agent):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_e965cb1d","line":178,"range":{"start_line":178,"start_character":25,"end_line":178,"end_character":26},"in_reply_to":"1aa78d24_7fbc12bb","updated":"2016-07-07 16:06:24.000000000","message":"I guess that makes sense.  I don\u0027t object to it but I think the row.host version is what I see more commonly.","commit_id":"9428272d29d3c7f04e30fa1e1fb31bb78963301e"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f661cd625ac309b8e561c99ff403fd1e98c31bf6","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    and then delete the stale SegmentHostMapping."},{"line_number":176,"context_line":"    \"\"\""},{"line_number":177,"context_line":"    query \u003d context.session.query(SegmentHostMapping.host)"},{"line_number":178,"context_line":"    return {host for host, in query}"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"def _get_phys_nets(agent):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_7fbc12bb","line":178,"range":{"start_line":178,"start_character":25,"end_line":178,"end_character":26},"in_reply_to":"1aa78d24_f71e82b9","updated":"2016-07-07 03:32:38.000000000","message":"It is actually one element tuple in the iteration of query. So use the comma to extract the host from tuple. I will change it to {row.host for row in query} to eliminate the confusion.","commit_id":"9428272d29d3c7f04e30fa1e1fb31bb78963301e"}],"neutron/tests/unit/extensions/test_segment.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"08d13dc83cbc42835374f9271478a6c9dca75c1b","unresolved":false,"context_lines":[{"line_number":350,"context_line":"            segmentation_id\u003d200, network_type\u003dp_constants.TYPE_VLAN)[\u0027segment\u0027]"},{"line_number":351,"context_line":"        db.update_segment_host_mapping(ctx, hosts[0], {segment1[\u0027id\u0027]})"},{"line_number":352,"context_line":"        segment2 \u003d self._test_create_segment("},{"line_number":353,"context_line":"            network_id\u003dnetwork[\u0027id\u0027], physical_network\u003d\u0027phys_net1\u0027,"},{"line_number":354,"context_line":"            segmentation_id\u003d201, network_type\u003dp_constants.TYPE_VLAN)[\u0027segment\u0027]"},{"line_number":355,"context_line":"        db.update_segment_host_mapping(ctx, hosts[1], {segment2[\u0027id\u0027]})"},{"line_number":356,"context_line":"        # Now they are 2 hosts with segment being mapped."}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_d78ee6ce","line":353,"range":{"start_line":353,"start_character":56,"end_line":353,"end_character":65},"updated":"2016-07-06 17:36:58.000000000","message":"I know it really doesn\u0027t matter in this test, but multiple segments in a routed network are assumed to have different physnets.  It actually might work with OVN but won\u0027t work with agent-based plugins because of the way we\u0027re doing the mapping.","commit_id":"9428272d29d3c7f04e30fa1e1fb31bb78963301e"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f661cd625ac309b8e561c99ff403fd1e98c31bf6","unresolved":false,"context_lines":[{"line_number":350,"context_line":"            segmentation_id\u003d200, network_type\u003dp_constants.TYPE_VLAN)[\u0027segment\u0027]"},{"line_number":351,"context_line":"        db.update_segment_host_mapping(ctx, hosts[0], {segment1[\u0027id\u0027]})"},{"line_number":352,"context_line":"        segment2 \u003d self._test_create_segment("},{"line_number":353,"context_line":"            network_id\u003dnetwork[\u0027id\u0027], physical_network\u003d\u0027phys_net1\u0027,"},{"line_number":354,"context_line":"            segmentation_id\u003d201, network_type\u003dp_constants.TYPE_VLAN)[\u0027segment\u0027]"},{"line_number":355,"context_line":"        db.update_segment_host_mapping(ctx, hosts[1], {segment2[\u0027id\u0027]})"},{"line_number":356,"context_line":"        # Now they are 2 hosts with segment being mapped."}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_5fdb161b","line":353,"range":{"start_line":353,"start_character":56,"end_line":353,"end_character":65},"in_reply_to":"1aa78d24_d78ee6ce","updated":"2016-07-07 03:32:38.000000000","message":"Yes, this is a bit tricky here, I will change it.","commit_id":"9428272d29d3c7f04e30fa1e1fb31bb78963301e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"08d13dc83cbc42835374f9271478a6c9dca75c1b","unresolved":false,"context_lines":[{"line_number":345,"context_line":"        hosts \u003d [\u0027host1\u0027, \u0027host2\u0027]"},{"line_number":346,"context_line":"        with self.network() as network:"},{"line_number":347,"context_line":"            network \u003d network[\u0027network\u0027]"},{"line_number":348,"context_line":"        segment1 \u003d self._test_create_segment("},{"line_number":349,"context_line":"            network_id\u003dnetwork[\u0027id\u0027], physical_network\u003d\u0027phys_net1\u0027,"},{"line_number":350,"context_line":"            segmentation_id\u003d200, network_type\u003dp_constants.TYPE_VLAN)[\u0027segment\u0027]"},{"line_number":351,"context_line":"        db.update_segment_host_mapping(ctx, hosts[0], {segment1[\u0027id\u0027]})"},{"line_number":352,"context_line":"        segment2 \u003d self._test_create_segment("},{"line_number":353,"context_line":"            network_id\u003dnetwork[\u0027id\u0027], physical_network\u003d\u0027phys_net1\u0027,"},{"line_number":354,"context_line":"            segmentation_id\u003d201, network_type\u003dp_constants.TYPE_VLAN)[\u0027segment\u0027]"},{"line_number":355,"context_line":"        db.update_segment_host_mapping(ctx, hosts[1], {segment2[\u0027id\u0027]})"},{"line_number":356,"context_line":"        # Now they are 2 hosts with segment being mapped."},{"line_number":357,"context_line":"        actual_hosts \u003d db.get_hosts_mapped_with_segments(ctx)"},{"line_number":358,"context_line":"        self.assertEqual(set(hosts), actual_hosts)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_b704fa49","line":355,"range":{"start_line":348,"start_character":8,"end_line":355,"end_character":71},"updated":"2016-07-06 17:36:58.000000000","message":"nit:  This could easily be converted to a loop over hosts.  But, with only two, I wouldn\u0027t insist.\n\n  for index, host in enumerate(hosts):\n      ... I\u0027m sure you can figure out the rest.","commit_id":"9428272d29d3c7f04e30fa1e1fb31bb78963301e"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f661cd625ac309b8e561c99ff403fd1e98c31bf6","unresolved":false,"context_lines":[{"line_number":345,"context_line":"        hosts \u003d [\u0027host1\u0027, \u0027host2\u0027]"},{"line_number":346,"context_line":"        with self.network() as network:"},{"line_number":347,"context_line":"            network \u003d network[\u0027network\u0027]"},{"line_number":348,"context_line":"        segment1 \u003d self._test_create_segment("},{"line_number":349,"context_line":"            network_id\u003dnetwork[\u0027id\u0027], physical_network\u003d\u0027phys_net1\u0027,"},{"line_number":350,"context_line":"            segmentation_id\u003d200, network_type\u003dp_constants.TYPE_VLAN)[\u0027segment\u0027]"},{"line_number":351,"context_line":"        db.update_segment_host_mapping(ctx, hosts[0], {segment1[\u0027id\u0027]})"},{"line_number":352,"context_line":"        segment2 \u003d self._test_create_segment("},{"line_number":353,"context_line":"            network_id\u003dnetwork[\u0027id\u0027], physical_network\u003d\u0027phys_net1\u0027,"},{"line_number":354,"context_line":"            segmentation_id\u003d201, network_type\u003dp_constants.TYPE_VLAN)[\u0027segment\u0027]"},{"line_number":355,"context_line":"        db.update_segment_host_mapping(ctx, hosts[1], {segment2[\u0027id\u0027]})"},{"line_number":356,"context_line":"        # Now they are 2 hosts with segment being mapped."},{"line_number":357,"context_line":"        actual_hosts \u003d db.get_hosts_mapped_with_segments(ctx)"},{"line_number":358,"context_line":"        self.assertEqual(set(hosts), actual_hosts)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_1ffcee6e","line":355,"range":{"start_line":348,"start_character":8,"end_line":355,"end_character":71},"in_reply_to":"1aa78d24_b704fa49","updated":"2016-07-07 03:32:38.000000000","message":"Done","commit_id":"9428272d29d3c7f04e30fa1e1fb31bb78963301e"}]}
