)]}'
{"quantum/common/constants.py":[{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"1ed6c36e1e104443bb21020859752014965e458b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"UDP_PROTOCOL \u003d 17"},{"line_number":38,"context_line":"DHCP_RESPONSE_PORT \u003d 68"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"MIN_VLAN_TAG \u003d 1"},{"line_number":41,"context_line":"MAX_VLAN_TAG \u003d 4094"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"EXT_NS \u003d \u0027_extension_ns\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F%2Bw4%3D","line":40,"updated":"2013-05-17 08:27:30.000000000","message":"the vlanID 1 is also reserved by 802.1Q as default vlan id. we might should reserved this one also , and add comment about the reserved id.","commit_id":"443afc610049817b636b51c5123a8688b41d2ecc"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":37,"context_line":"UDP_PROTOCOL \u003d 17"},{"line_number":38,"context_line":"DHCP_RESPONSE_PORT \u003d 68"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"MIN_VLAN_TAG \u003d 1"},{"line_number":41,"context_line":"MAX_VLAN_TAG \u003d 4094"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"EXT_NS \u003d \u0027_extension_ns\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F98w%3D","line":40,"in_reply_to":"AAAAPH%2F%2F%2Bew%3D","updated":"2013-05-17 15:49:01.000000000","message":"I agree 1 should be considered a valid VLAN tag.","commit_id":"443afc610049817b636b51c5123a8688b41d2ecc"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"1ed6c36e1e104443bb21020859752014965e458b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"UDP_PROTOCOL \u003d 17"},{"line_number":38,"context_line":"DHCP_RESPONSE_PORT \u003d 68"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"MIN_VLAN_TAG \u003d 1"},{"line_number":41,"context_line":"MAX_VLAN_TAG \u003d 4094"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"EXT_NS \u003d \u0027_extension_ns\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F%2Bew%3D","line":40,"in_reply_to":"AAAAPH%2F%2F%2Bw4%3D","updated":"2013-05-17 12:16:46.000000000","message":"vlan id range here should be ok. ignore my range suggestion.","commit_id":"443afc610049817b636b51c5123a8688b41d2ecc"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":38,"context_line":"DHCP_RESPONSE_PORT \u003d 68"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"MIN_VLAN_TAG \u003d 1"},{"line_number":41,"context_line":"MAX_VLAN_TAG \u003d 4094"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"EXT_NS \u003d \u0027_extension_ns\u0027"},{"line_number":44,"context_line":"XML_NS_V20 \u003d \u0027http://openstack.org/quantum/api/v2.0\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F99M%3D","line":41,"updated":"2013-05-17 15:49:01.000000000","message":"Consider updating the other plugin and agent code that uses literals or their own constants to use these constants instead.","commit_id":"443afc610049817b636b51c5123a8688b41d2ecc"}],"quantum/plugins/common/utils.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"7d7859cdd9bc13a2013eed5ded3fa2bc516116ea","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def network_vlan_ranges_overlap(range1, range2):"},{"line_number":28,"context_line":"    \"\"\"Return True if two (valid) VLAN ranges overlap.\"\"\""},{"line_number":29,"context_line":"    return (range2[0] \u003c\u003d range1[0] \u003c\u003d range2[1] or"},{"line_number":30,"context_line":"            range2[0] \u003c\u003d range1[1] \u003c\u003d range2[1])"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FTrA%3D","line":29,"updated":"2013-05-15 05:21:05.000000000","message":"you also need to check range2 within range1","commit_id":"bf3908fccb7efb028f4d68309d223f8e0455c193"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"13f57561509e47047023aa3c36d94d2a0502ee42","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def network_vlan_ranges_overlap(range1, range2):"},{"line_number":28,"context_line":"    \"\"\"Return True if two (valid) VLAN ranges overlap.\"\"\""},{"line_number":29,"context_line":"    return (range2[0] \u003c\u003d range1[0] \u003c\u003d range2[1] or"},{"line_number":30,"context_line":"            range2[0] \u003c\u003d range1[1] \u003c\u003d range2[1])"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAO3%2F%2F%2FNA%3D","line":29,"in_reply_to":"AAAAOn%2F%2FTrA%3D","updated":"2013-05-15 14:14:42.000000000","message":"Yikes! Thanks for catching that. I have now looked up the best way to do this check and added more unit tests to cover all cases (I hope).","commit_id":"bf3908fccb7efb028f4d68309d223f8e0455c193"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"7d7859cdd9bc13a2013eed5ded3fa2bc516116ea","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    \"\"\"Verify VLAN range is valid and does not overlap existing ranges.\"\"\""},{"line_number":35,"context_line":"    new_range_str \u003d \"%d:%d\" % new_range"},{"line_number":36,"context_line":"    vr_beg, vr_end \u003d new_range"},{"line_number":37,"context_line":"    bad_vlan \u003d (vr_beg if not valid_vlan(vr_beg) else"},{"line_number":38,"context_line":"                vr_end if not valid_vlan(vr_end) else"},{"line_number":39,"context_line":"                None)"},{"line_number":40,"context_line":"    if bad_vlan is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FTqo%3D","line":37,"updated":"2013-05-15 05:21:05.000000000","message":"I believe this code block till line 44 should be extracted to is_valid_vlan_range(new_range)","commit_id":"bf3908fccb7efb028f4d68309d223f8e0455c193"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"13f57561509e47047023aa3c36d94d2a0502ee42","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    \"\"\"Verify VLAN range is valid and does not overlap existing ranges.\"\"\""},{"line_number":35,"context_line":"    new_range_str \u003d \"%d:%d\" % new_range"},{"line_number":36,"context_line":"    vr_beg, vr_end \u003d new_range"},{"line_number":37,"context_line":"    bad_vlan \u003d (vr_beg if not valid_vlan(vr_beg) else"},{"line_number":38,"context_line":"                vr_end if not valid_vlan(vr_end) else"},{"line_number":39,"context_line":"                None)"},{"line_number":40,"context_line":"    if bad_vlan is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAO3%2F%2F%2FMc%3D","line":37,"in_reply_to":"AAAAOn%2F%2FTqo%3D","updated":"2013-05-15 14:14:42.000000000","message":"Good idea. I am also adding unit tests for it.","commit_id":"bf3908fccb7efb028f4d68309d223f8e0455c193"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"unresolved":false,"context_lines":[{"line_number":41,"context_line":"    new_range_str \u003d \"%d:%d\" % new_range"},{"line_number":42,"context_line":"    vr_beg, vr_end \u003d new_range"},{"line_number":43,"context_line":"    bad_vlan \u003d vlan_range_invalid_vlan(new_range)"},{"line_number":44,"context_line":"    if bad_vlan is not None:"},{"line_number":45,"context_line":"        raise q_exc.NetworkVlanRangeError("},{"line_number":46,"context_line":"            range\u003dnew_range_str,"},{"line_number":47,"context_line":"            error\u003d_(\"%s is not a valid VLAN tag\") % bad_vlan)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F%2FGE%3D","line":44,"updated":"2013-05-15 15:21:12.000000000","message":"if bad_vlan:","commit_id":"d6e8cc27df658cc6f71a32a86ba0cda5694f7679"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"13f57561509e47047023aa3c36d94d2a0502ee42","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    new_range_str \u003d \"%d:%d\" % new_range"},{"line_number":42,"context_line":"    vr_beg, vr_end \u003d new_range"},{"line_number":43,"context_line":"    bad_vlan \u003d vlan_range_invalid_vlan(new_range)"},{"line_number":44,"context_line":"    if bad_vlan is not None:"},{"line_number":45,"context_line":"        raise q_exc.NetworkVlanRangeError("},{"line_number":46,"context_line":"            range\u003dnew_range_str,"},{"line_number":47,"context_line":"            error\u003d_(\"%s is not a valid VLAN tag\") % bad_vlan)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F%2B%2Bs%3D","line":44,"in_reply_to":"AAAAO3%2F%2F%2FGE%3D","updated":"2013-05-15 15:27:09.000000000","message":"I wish I could, but unfortunately 0 (zero) is an invalid vlan tag.","commit_id":"d6e8cc27df658cc6f71a32a86ba0cda5694f7679"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"unresolved":false,"context_lines":[{"line_number":45,"context_line":"        raise q_exc.NetworkVlanRangeError("},{"line_number":46,"context_line":"            range\u003dnew_range_str,"},{"line_number":47,"context_line":"            error\u003d_(\"%s is not a valid VLAN tag\") % bad_vlan)"},{"line_number":48,"context_line":"    if vr_end \u003c vr_beg:"},{"line_number":49,"context_line":"        raise q_exc.NetworkVlanRangeError("},{"line_number":50,"context_line":"            range\u003dnew_range_str,"},{"line_number":51,"context_line":"            error\u003d_(\"End of VLAN range is less than start of VLAN range\"))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F%2FFo%3D","line":48,"updated":"2013-05-15 15:21:12.000000000","message":"In fact I suggested to move both of those checks in vlan_range_invalid_vlan (which I\u0027d name ensure_vlan_range_valid) , so in verify_network_vlan_range you would write something like:\n\nnew_range_str \u003d \"%d:%d\" % new_range\n\nensure_vlan_range_valid()\n\nif existing_networks:\n\n...\n\nIMO that will make code cleaner","commit_id":"d6e8cc27df658cc6f71a32a86ba0cda5694f7679"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"13f57561509e47047023aa3c36d94d2a0502ee42","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        raise q_exc.NetworkVlanRangeError("},{"line_number":46,"context_line":"            range\u003dnew_range_str,"},{"line_number":47,"context_line":"            error\u003d_(\"%s is not a valid VLAN tag\") % bad_vlan)"},{"line_number":48,"context_line":"    if vr_end \u003c vr_beg:"},{"line_number":49,"context_line":"        raise q_exc.NetworkVlanRangeError("},{"line_number":50,"context_line":"            range\u003dnew_range_str,"},{"line_number":51,"context_line":"            error\u003d_(\"End of VLAN range is less than start of VLAN range\"))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F%2B%2BI%3D","line":48,"in_reply_to":"AAAAO3%2F%2F%2FFo%3D","updated":"2013-05-15 15:27:09.000000000","message":"OK, let me give that a whirl and see how it looks.","commit_id":"d6e8cc27df658cc6f71a32a86ba0cda5694f7679"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":45,"context_line":"            range\u003drange_str,"},{"line_number":46,"context_line":"            error\u003d_(\"End of VLAN range is less than start of VLAN range\"))"},{"line_number":47,"context_line":"    return range_str"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def vlan_ranges_overlap(range1, range2):"},{"line_number":51,"context_line":"    \"\"\"Return True if two (valid) VLAN ranges overlap.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F%2Be4%3D","line":48,"updated":"2013-05-15 19:09:50.000000000","message":"how about\n\ndef check_vlan_tag(vlan_range)\n    range_str \u003d \"%d:%d\" % vlan_range\n    for vlan_tag in vlan_range:\n        if not  valid_vlan(vlan_tag):\n            raise ...\n    if vlan_range[1] \u003c vlan_range[0]:\n            raise ...","commit_id":"e461f0e6fef36616988f63cecfd641c185fa0e2e"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"13f57561509e47047023aa3c36d94d2a0502ee42","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            range\u003drange_str,"},{"line_number":46,"context_line":"            error\u003d_(\"End of VLAN range is less than start of VLAN range\"))"},{"line_number":47,"context_line":"    return range_str"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def vlan_ranges_overlap(range1, range2):"},{"line_number":51,"context_line":"    \"\"\"Return True if two (valid) VLAN ranges overlap.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F960%3D","line":48,"in_reply_to":"AAAAO3%2F%2F%2Be4%3D","updated":"2013-05-15 22:32:45.000000000","message":"Done","commit_id":"e461f0e6fef36616988f63cecfd641c185fa0e2e"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":60,"context_line":"            for existing_range in ranges:"},{"line_number":61,"context_line":"                if vlan_ranges_overlap(new_range, existing_range):"},{"line_number":62,"context_line":"                    old_range_str \u003d \"%d:%d\" % existing_range"},{"line_number":63,"context_line":"                    raise q_exc.NetworkVlanRangeError("},{"line_number":64,"context_line":"                        range\u003dnew_range_str,"},{"line_number":65,"context_line":"                        error\u003d(_(\"Overlaps with range %(range)s \""},{"line_number":66,"context_line":"                                 \"in network %(network)s\") %"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F%2Be0%3D","line":63,"updated":"2013-05-15 19:09:50.000000000","message":"How about let NetworkVlanRangeError get tuple of VLAN range?","commit_id":"e461f0e6fef36616988f63cecfd641c185fa0e2e"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"13f57561509e47047023aa3c36d94d2a0502ee42","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            for existing_range in ranges:"},{"line_number":61,"context_line":"                if vlan_ranges_overlap(new_range, existing_range):"},{"line_number":62,"context_line":"                    old_range_str \u003d \"%d:%d\" % existing_range"},{"line_number":63,"context_line":"                    raise q_exc.NetworkVlanRangeError("},{"line_number":64,"context_line":"                        range\u003dnew_range_str,"},{"line_number":65,"context_line":"                        error\u003d(_(\"Overlaps with range %(range)s \""},{"line_number":66,"context_line":"                                 \"in network %(network)s\") %"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F96c%3D","line":63,"in_reply_to":"AAAAO3%2F%2F%2Be0%3D","updated":"2013-05-15 22:32:45.000000000","message":"Done","commit_id":"e461f0e6fef36616988f63cecfd641c185fa0e2e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \"\"\"Verify VLAN range is valid and does not overlap existing ranges.\"\"\""},{"line_number":47,"context_line":"    verify_vlan_range(new_range)"},{"line_number":48,"context_line":"    if not existing_networks:"},{"line_number":49,"context_line":"        return"},{"line_number":50,"context_line":"    for network, ranges in existing_networks.items():"},{"line_number":51,"context_line":"        for existing_range in ranges:"},{"line_number":52,"context_line":"            if vlan_ranges_overlap(new_range, existing_range):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAO3%2F%2F9Gk%3D","line":49,"updated":"2013-05-16 07:35:21.000000000","message":"Would this not be more efficient if we had a set - say for example of bits for the allocated ranges. This would be more efficient and would save the loop.","commit_id":"4d7145bf74713a2f59f212175fea3a0e1545292c"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"13f57561509e47047023aa3c36d94d2a0502ee42","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \"\"\"Verify VLAN range is valid and does not overlap existing ranges.\"\"\""},{"line_number":47,"context_line":"    verify_vlan_range(new_range)"},{"line_number":48,"context_line":"    if not existing_networks:"},{"line_number":49,"context_line":"        return"},{"line_number":50,"context_line":"    for network, ranges in existing_networks.items():"},{"line_number":51,"context_line":"        for existing_range in ranges:"},{"line_number":52,"context_line":"            if vlan_ranges_overlap(new_range, existing_range):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAO3%2F%2F8uM%3D","line":49,"in_reply_to":"AAAAO3%2F%2F9Gk%3D","updated":"2013-05-16 12:57:59.000000000","message":"Do you mean I should build the set here, from the existing networks dict? Or keep the set in the plugin class and build it in parse? At first glance it feels to me like the work in building the set might offset the efficiency it brings in checking overlaps?","commit_id":"4d7145bf74713a2f59f212175fea3a0e1545292c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":49,"context_line":"        return"},{"line_number":50,"context_line":"    for network, ranges in existing_networks.items():"},{"line_number":51,"context_line":"        for existing_range in ranges:"},{"line_number":52,"context_line":"            if vlan_ranges_overlap(new_range, existing_range):"},{"line_number":53,"context_line":"                existing_range_str \u003d \"%d:%d\" % existing_range"},{"line_number":54,"context_line":"                raise q_exc.NetworkVlanRangeError("},{"line_number":55,"context_line":"                    vlan_range\u003dnew_range,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAO3%2F%2F70A%3D","line":52,"updated":"2013-05-16 18:59:44.000000000","message":"It looks to me like this would reject specification of overlapping VLAN ranges on two different physical networks. This is completely supported by the openvswitch and linuxbridge plugins (at least), so this should not be rejected. Multiple physical networks (i.e. multiple independent trunks) can be used to go beyond the limitation of 4094 VLANs per physical network.\n\nI\u0027m not convinced rejecting overlapping ranges on the same physical network is worthwhile. I\u0027d keep this relatively simple. Just making sure each specified range is valid should be enough in my opinion.","commit_id":"4d7145bf74713a2f59f212175fea3a0e1545292c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":"Common utilities and helper functions for Openstack Networking Plugins."},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantum.openstack.common.gettextutils import _"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from quantum.common import exceptions as q_exc"},{"line_number":24,"context_line":"from quantum.common.utils import is_valid_vlan_tag as valid_vlan"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F%2BAI%3D","line":21,"updated":"2013-05-17 15:49:01.000000000","message":"Is the import of \"_\" necessary here? It seems _() is used in many files without importing this.","commit_id":"443afc610049817b636b51c5123a8688b41d2ecc"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":27,"context_line":"def verify_vlan_range(vlan_range):"},{"line_number":28,"context_line":"    \"\"\"Raise an exception for invalid tags or malformed range.\"\"\""},{"line_number":29,"context_line":"    for vlan_tag in vlan_range:"},{"line_number":30,"context_line":"        if not valid_vlan(vlan_tag):"},{"line_number":31,"context_line":"            raise q_exc.NetworkVlanRangeError("},{"line_number":32,"context_line":"                vlan_range\u003dvlan_range,"},{"line_number":33,"context_line":"                error\u003d_(\"%s is not a valid VLAN tag\") % vlan_tag)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F960%3D","line":30,"updated":"2013-05-17 15:49:01.000000000","message":"Consider using something like \"if not (MIN_VLAN_TAG \u003c\u003d vlan_tag \u003c\u003d MAX_VLAN_TAG)\" and avoid defining and importing the is_valid_vlan_tag function, unless you think this function is likely to be used in multiple places. If you do prefer to define the function, is it necessary to rename it in the import?","commit_id":"443afc610049817b636b51c5123a8688b41d2ecc"}],"quantum/plugins/linuxbridge/lb_quantum_plugin.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":"from quantum.common import exceptions as q_exc"},{"line_number":26,"context_line":"from quantum.common import rpc as q_rpc"},{"line_number":27,"context_line":"from quantum.common import topics"},{"line_number":28,"context_line":"from quantum.common.utils import is_valid_vlan_tag"},{"line_number":29,"context_line":"from quantum.db import agents_db"},{"line_number":30,"context_line":"from quantum.db import agentschedulers_db"},{"line_number":31,"context_line":"from quantum.db import api as db_api"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPH%2F%2F8Kk%3D","line":28,"updated":"2013-05-18 16:10:06.000000000","message":"Why not import the module and then access as utils.is_valid_vlan_tag\nThis seems to be the norm.","commit_id":"0eea0b44e4cc93fad7fb2f0bbdd874e0bb070dc4"}],"quantum/plugins/mlnx/mlnx_plugin.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":24,"context_line":"from quantum.common import constants as q_const"},{"line_number":25,"context_line":"from quantum.common import exceptions as q_exc"},{"line_number":26,"context_line":"from quantum.common import topics"},{"line_number":27,"context_line":"from quantum.common.utils import is_valid_vlan_tag"},{"line_number":28,"context_line":"from quantum.db import agents_db"},{"line_number":29,"context_line":"from quantum.db import db_base_plugin_v2"},{"line_number":30,"context_line":"from quantum.db import l3_db"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPH%2F%2F8Kg%3D","line":27,"updated":"2013-05-18 16:10:06.000000000","message":"ditto","commit_id":"0eea0b44e4cc93fad7fb2f0bbdd874e0bb070dc4"}],"quantum/plugins/nicira/QuantumPlugin.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":34,"context_line":"from quantum.common import exceptions as q_exc"},{"line_number":35,"context_line":"from quantum.common import rpc as q_rpc"},{"line_number":36,"context_line":"from quantum.common import topics"},{"line_number":37,"context_line":"from quantum.common.utils import is_valid_vlan_tag"},{"line_number":38,"context_line":"from quantum import context as q_context"},{"line_number":39,"context_line":"from quantum.db import agents_db"},{"line_number":40,"context_line":"from quantum.db import agentschedulers_db"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPH%2F%2F8Kc%3D","line":37,"updated":"2013-05-18 16:10:06.000000000","message":"ditto","commit_id":"0eea0b44e4cc93fad7fb2f0bbdd874e0bb070dc4"}],"quantum/plugins/openvswitch/agent/ovs_quantum_agent.py":[{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"1ed6c36e1e104443bb21020859752014965e458b","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    \u0027\u0027\u0027"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    # Lower bound on available vlans."},{"line_number":143,"context_line":"    MIN_VLAN_TAG \u003d 1"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    # Upper bound on available vlans."},{"line_number":146,"context_line":"    MAX_VLAN_TAG \u003d 4094"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F%2Bww%3D","side":"PARENT","line":143,"updated":"2013-05-17 08:27:30.000000000","message":"1 is reserved also by 802.1Q and might can not used on many device.","commit_id":"391108a014b3e640525f3c76da248ccd555cddb1"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"1ed6c36e1e104443bb21020859752014965e458b","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    MIN_VLAN_TAG \u003d 1"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    # Upper bound on available vlans."},{"line_number":146,"context_line":"    MAX_VLAN_TAG \u003d 4094"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    # history"},{"line_number":149,"context_line":"    #   1.0 Initial version"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F%2Bw0%3D","side":"PARENT","line":146,"updated":"2013-05-17 08:27:30.000000000","message":"why re-define these constants here.","commit_id":"391108a014b3e640525f3c76da248ccd555cddb1"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"unresolved":false,"context_lines":[{"line_number":143,"context_line":"    MIN_VLAN_TAG \u003d 1"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    # Upper bound on available vlans."},{"line_number":146,"context_line":"    MAX_VLAN_TAG \u003d 4094"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    # history"},{"line_number":149,"context_line":"    #   1.0 Initial version"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F%2BeM%3D","side":"PARENT","line":146,"in_reply_to":"AAAAPH%2F%2F%2Bw0%3D","updated":"2013-05-17 12:24:39.000000000","message":"They are being deleted here and moved to quantum/common/constants.py","commit_id":"391108a014b3e640525f3c76da248ccd555cddb1"}]}
