)]}'
{"nova/api/openstack/common.py":[{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"292195418384bdad58df8d23a2ca4804ea6eb2ce","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        network_api \u003d network.API()"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"        nw_info \u003d network_api.get_instance_nw_info(context, instance)"},{"line_number":339,"context_line":"        print \"here\", nw_info"},{"line_number":340,"context_line":"        return get_networks_for_instance_from_nw_info(nw_info)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEH%2F%2F%2FyY%3D","line":339,"updated":"2012-01-23 18:10:49.000000000","message":"Debugging statement","commit_id":"e80977c7f75c52f79160559f42c610e791081644"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"be9613ae8cc54a7d8d9f8fccbfc9fb43ae60518e","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        network_api \u003d network.API()"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"        nw_info \u003d network_api.get_instance_nw_info(context, instance)"},{"line_number":339,"context_line":"        print \"here\", nw_info"},{"line_number":340,"context_line":"        return get_networks_for_instance_from_nw_info(nw_info)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEH%2F%2F%2Fow%3D","line":339,"in_reply_to":"AAAAEH%2F%2F%2FyY%3D","updated":"2012-01-23 21:23:26.000000000","message":"Done","commit_id":"e80977c7f75c52f79160559f42c610e791081644"}],"nova/compute/api.py":[{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"292195418384bdad58df8d23a2ca4804ea6eb2ce","unresolved":false,"context_lines":[{"line_number":1681,"context_line":"        # accommodate the info containing floating as well as fixed ip"},{"line_number":1682,"context_line":"        # addresses"},{"line_number":1683,"context_line":""},{"line_number":1684,"context_line":"        fail_bag \u003d _(\u0027instance |%s| has no fixed ips. \u0027"},{"line_number":1685,"context_line":"                     \u0027unable to associate floating ip\u0027) % instance_uuid"},{"line_number":1686,"context_line":""},{"line_number":1687,"context_line":"        nw_info \u003d self.network_api.get_instance_nw_info(context.elevated(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEH%2F%2F%2FyU%3D","line":1684,"updated":"2012-01-23 18:10:49.000000000","message":"What? fail_bag? ?_?","commit_id":"e80977c7f75c52f79160559f42c610e791081644"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"be9613ae8cc54a7d8d9f8fccbfc9fb43ae60518e","unresolved":false,"context_lines":[{"line_number":1681,"context_line":"        # accommodate the info containing floating as well as fixed ip"},{"line_number":1682,"context_line":"        # addresses"},{"line_number":1683,"context_line":""},{"line_number":1684,"context_line":"        fail_bag \u003d _(\u0027instance |%s| has no fixed ips. \u0027"},{"line_number":1685,"context_line":"                     \u0027unable to associate floating ip\u0027) % instance_uuid"},{"line_number":1686,"context_line":""},{"line_number":1687,"context_line":"        nw_info \u003d self.network_api.get_instance_nw_info(context.elevated(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEH%2F%2F%2Fo0%3D","line":1684,"in_reply_to":"AAAAEH%2F%2F%2FyU%3D","updated":"2012-01-23 21:23:26.000000000","message":"I will kill you.","commit_id":"e80977c7f75c52f79160559f42c610e791081644"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7742687b1c5dbd8b7bca44cae5bdf2e8b4df90c5","unresolved":false,"context_lines":[{"line_number":1684,"context_line":"        # accommodate the info containing floating as well as fixed ip"},{"line_number":1685,"context_line":"        # addresses"},{"line_number":1686,"context_line":""},{"line_number":1687,"context_line":"        fail_bag \u003d _(\u0027instance |%s| has no fixed ips. \u0027"},{"line_number":1688,"context_line":"                     \u0027unable to associate floating ip\u0027) % instance_uuid"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"        nw_info \u003d self.network_api.get_instance_nw_info(context.elevated(),"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAEH%2F%2F9CU%3D","line":1687,"updated":"2012-01-30 16:37:08.000000000","message":"Love the variable name :)","commit_id":"3e1453ff7fa09ad073a10cf07839800d561bde24"}],"nova/compute/manager.py":[{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"292195418384bdad58df8d23a2ca4804ea6eb2ce","unresolved":false,"context_lines":[{"line_number":1755,"context_line":"        # concorrent request occurs to iptables, then it complains."},{"line_number":1756,"context_line":"        network_info \u003d self._get_instance_nw_info(context, instance_ref)"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":"        # TODO(tr3buchet): figure out how on the earth this is necessary"},{"line_number":1759,"context_line":"        fixed_ips \u003d [nw_info[1][\u0027ips\u0027] for nw_info in network_info]"},{"line_number":1760,"context_line":"        if not fixed_ips:"},{"line_number":1761,"context_line":"            raise exception.FixedIpNotFoundForInstance(instance_id\u003dinstance_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEH%2F%2F%2FxM%3D","line":1758,"updated":"2012-01-23 18:10:49.000000000","message":"Perhaps yanking this and running the tests again would give you your answer?","commit_id":"e80977c7f75c52f79160559f42c610e791081644"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"be9613ae8cc54a7d8d9f8fccbfc9fb43ae60518e","unresolved":false,"context_lines":[{"line_number":1755,"context_line":"        # concorrent request occurs to iptables, then it complains."},{"line_number":1756,"context_line":"        network_info \u003d self._get_instance_nw_info(context, instance_ref)"},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":"        # TODO(tr3buchet): figure out how on the earth this is necessary"},{"line_number":1759,"context_line":"        fixed_ips \u003d [nw_info[1][\u0027ips\u0027] for nw_info in network_info]"},{"line_number":1760,"context_line":"        if not fixed_ips:"},{"line_number":1761,"context_line":"            raise exception.FixedIpNotFoundForInstance(instance_id\u003dinstance_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEH%2F%2F%2Fok%3D","line":1758,"in_reply_to":"AAAAEH%2F%2F%2FxM%3D","updated":"2012-01-23 21:23:26.000000000","message":"but then the nightmares will come back","commit_id":"e80977c7f75c52f79160559f42c610e791081644"}],"nova/compute/utils.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"bc98c79e98273968a2e875d9e8f0aa5e40ab6ca6","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"\"\"\"Compute-related Utilities and helpers.\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import netaddr"},{"line_number":20,"context_line":"from nova import context"},{"line_number":21,"context_line":"from nova import db"},{"line_number":22,"context_line":"from nova import exception"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAEH%2F%2F8lc%3D","line":19,"updated":"2012-01-31 22:26:41.000000000","message":"You need a space between this and the following \"from nova import context\"","commit_id":"bb23b613be4a819997124d8e27a8b440cac31e8b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"433ed73dd875097b33cd51d3531f2f7c7080dcaa","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"\"\"\"Compute-related Utilities and helpers.\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import netaddr"},{"line_number":20,"context_line":"from nova import context"},{"line_number":21,"context_line":"from nova import db"},{"line_number":22,"context_line":"from nova import exception"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAEH%2F%2F8jc%3D","line":19,"updated":"2012-02-01 00:01:13.000000000","message":"You need a space between this and the following \"from nova import context\"","commit_id":"afc0599cf4fd5021f4ce90524fdbcaff309ce179"}],"nova/network/model.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7742687b1c5dbd8b7bca44cae5bdf2e8b4df90c5","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def is_in_subnet(self, subnet):"},{"line_number":58,"context_line":"        if self[\u0027address\u0027] and subnet[\u0027cidr\u0027]:"},{"line_number":59,"context_line":"            return netaddr.IPAddress(self[\u0027address\u0027]) in \\"},{"line_number":60,"context_line":"                   netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":61,"context_line":"        else:"},{"line_number":62,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAEH%2F%2F9CI%3D","line":59,"updated":"2012-01-30 16:37:08.000000000","message":"I\u0027d prefer we use parentheses rather than backslash continuation, wherever possible.  Not going to delay your patch for this, though.","commit_id":"3e1453ff7fa09ad073a10cf07839800d561bde24"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"bc98c79e98273968a2e875d9e8f0aa5e40ab6ca6","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def is_in_subnet(self, subnet):"},{"line_number":58,"context_line":"        if self[\u0027address\u0027] and subnet[\u0027cidr\u0027]:"},{"line_number":59,"context_line":"            return netaddr.IPAddress(self[\u0027address\u0027]) in \\"},{"line_number":60,"context_line":"                   netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":61,"context_line":"        else:"},{"line_number":62,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAEH%2F%2F8lY%3D","line":59,"updated":"2012-01-31 22:26:41.000000000","message":"I\u0027d prefer we use parentheses rather than backslash continuation, wherever possible.","commit_id":"bb23b613be4a819997124d8e27a8b440cac31e8b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"433ed73dd875097b33cd51d3531f2f7c7080dcaa","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def is_in_subnet(self, subnet):"},{"line_number":58,"context_line":"        if self[\u0027address\u0027] and subnet[\u0027cidr\u0027]:"},{"line_number":59,"context_line":"            return netaddr.IPAddress(self[\u0027address\u0027]) in \\"},{"line_number":60,"context_line":"                   netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":61,"context_line":"        else:"},{"line_number":62,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAEH%2F%2F8jY%3D","line":59,"updated":"2012-02-01 00:01:13.000000000","message":"I\u0027d prefer we use parentheses rather than backslash continuation, wherever possible.","commit_id":"afc0599cf4fd5021f4ce90524fdbcaff309ce179"}],"nova/network/quantum/manager.py":[{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"292195418384bdad58df8d23a2ca4804ea6eb2ce","unresolved":false,"context_lines":[{"line_number":68,"context_line":"       Support for these capabilities are targted for future releases."},{"line_number":69,"context_line":"    \"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    DHCP \u003d FLAGS.quantum_use_dhcp"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__(self, q_conn\u003dNone, ipam_lib\u003dNone, *args, **kwargs):"},{"line_number":74,"context_line":"        \"\"\"Initialize two key libraries, the connection to a"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEH%2F%2F%2Fwc%3D","line":71,"updated":"2012-01-23 18:10:49.000000000","message":"Doesn\u0027t look like this is being used...?","commit_id":"e80977c7f75c52f79160559f42c610e791081644"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"be9613ae8cc54a7d8d9f8fccbfc9fb43ae60518e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"       Support for these capabilities are targted for future releases."},{"line_number":69,"context_line":"    \"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    DHCP \u003d FLAGS.quantum_use_dhcp"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__(self, q_conn\u003dNone, ipam_lib\u003dNone, *args, **kwargs):"},{"line_number":74,"context_line":"        \"\"\"Initialize two key libraries, the connection to a"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEH%2F%2F%2FoE%3D","line":71,"in_reply_to":"AAAAEH%2F%2F%2Fwc%3D","updated":"2012-01-23 21:23:26.000000000","message":"you are wrong","commit_id":"e80977c7f75c52f79160559f42c610e791081644"},{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"292195418384bdad58df8d23a2ca4804ea6eb2ce","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        instance_type \u003d instance_types.get_instance_type(instance_type_id)"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"        networks \u003d {}"},{"line_number":428,"context_line":"        for vif in vifs:"},{"line_number":429,"context_line":"            network \u003d db.network_get(context, vif[\u0027network_id\u0027])"},{"line_number":430,"context_line":"            network \u003d {\u0027id\u0027: network[\u0027id\u0027],"},{"line_number":431,"context_line":"                       \u0027uuid\u0027: network[\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEH%2F%2F%2FwM%3D","line":428,"updated":"2012-01-23 18:10:49.000000000","message":"This looks to be expensive. We need to try and figure out a way to tidy this up soon.","commit_id":"e80977c7f75c52f79160559f42c610e791081644"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"be9613ae8cc54a7d8d9f8fccbfc9fb43ae60518e","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        instance_type \u003d instance_types.get_instance_type(instance_type_id)"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"        networks \u003d {}"},{"line_number":428,"context_line":"        for vif in vifs:"},{"line_number":429,"context_line":"            network \u003d db.network_get(context, vif[\u0027network_id\u0027])"},{"line_number":430,"context_line":"            network \u003d {\u0027id\u0027: network[\u0027id\u0027],"},{"line_number":431,"context_line":"                       \u0027uuid\u0027: network[\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEH%2F%2F%2Fn8%3D","line":428,"in_reply_to":"AAAAEH%2F%2F%2FwM%3D","updated":"2012-01-23 21:23:26.000000000","message":"most everything in this branch is expensive at the moment. There are a lot of things that need to change in order to clean things up.","commit_id":"e80977c7f75c52f79160559f42c610e791081644"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"fcdc67e0399426edf3ec09771f35d4e03715283e","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"flags.DEFINE_string(\u0027xenapi_ovs_integration_bridge\u0027, \u0027xapi1\u0027,"},{"line_number":55,"context_line":"                \u0027Name of Integration Bridge used by Open vSwitch\u0027)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class QuantumManager(manager.FlatManager):"},{"line_number":59,"context_line":"    \"\"\"NetworkManager class that communicates with a Quantum service"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEH%2F%2F%2FHA%3D","line":56,"updated":"2012-01-24 08:33:02.000000000","message":"Quantum Manager is not XenServer specific, so I don\u0027t see why this XenServer specific flag should be here.  The equivalent libvirt_ovs_integration_bridge is not in this file (nor do I think it should be)","commit_id":"b8f7d9aae02d53a2504fcd07ec0f01634388062e"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"2d92d271ca5962315014e2d43e9a975a91bf1897","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"flags.DEFINE_string(\u0027xenapi_ovs_integration_bridge\u0027, \u0027xapi1\u0027,"},{"line_number":55,"context_line":"                \u0027Name of Integration Bridge used by Open vSwitch\u0027)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class QuantumManager(manager.FlatManager):"},{"line_number":59,"context_line":"    \"\"\"NetworkManager class that communicates with a Quantum service"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEH%2F%2F%2Bto%3D","line":56,"in_reply_to":"AAAAEH%2F%2F%2FHA%3D","updated":"2012-01-24 21:15:26.000000000","message":"Done","commit_id":"b8f7d9aae02d53a2504fcd07ec0f01634388062e"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"fcdc67e0399426edf3ec09771f35d4e03715283e","unresolved":false,"context_lines":[{"line_number":429,"context_line":"            network \u003d db.network_get(context, vif[\u0027network_id\u0027])"},{"line_number":430,"context_line":"            network \u003d {\u0027id\u0027: network[\u0027id\u0027],"},{"line_number":431,"context_line":"                       \u0027uuid\u0027: network[\u0027uuid\u0027],"},{"line_number":432,"context_line":"                       \u0027bridge\u0027: FLAGS.xenapi_ovs_integration_bridge,"},{"line_number":433,"context_line":"                       \u0027label\u0027: self.q_conn.get_network_name(q_tenant_id,"},{"line_number":434,"context_line":"                                                             network[\u0027uuid\u0027])}"},{"line_number":435,"context_line":"            networks[vif[\u0027uuid\u0027]] \u003d network"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEH%2F%2F%2FG4%3D","line":432,"updated":"2012-01-24 08:33:02.000000000","message":"I\u0027m pretty sure this will completely break things when we run with libvirt, as libvirt_ovs_integration_bridge should be used there.  In general, the ovs_integration_bridge flags need to be specified at the virt-layer, as they may need to be different per-compute node.  Specifying it once in the network manager does not allow this.","commit_id":"b8f7d9aae02d53a2504fcd07ec0f01634388062e"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"2d92d271ca5962315014e2d43e9a975a91bf1897","unresolved":false,"context_lines":[{"line_number":429,"context_line":"            network \u003d db.network_get(context, vif[\u0027network_id\u0027])"},{"line_number":430,"context_line":"            network \u003d {\u0027id\u0027: network[\u0027id\u0027],"},{"line_number":431,"context_line":"                       \u0027uuid\u0027: network[\u0027uuid\u0027],"},{"line_number":432,"context_line":"                       \u0027bridge\u0027: FLAGS.xenapi_ovs_integration_bridge,"},{"line_number":433,"context_line":"                       \u0027label\u0027: self.q_conn.get_network_name(q_tenant_id,"},{"line_number":434,"context_line":"                                                             network[\u0027uuid\u0027])}"},{"line_number":435,"context_line":"            networks[vif[\u0027uuid\u0027]] \u003d network"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEH%2F%2F%2Btk%3D","line":432,"in_reply_to":"AAAAEH%2F%2F%2FG4%3D","updated":"2012-01-24 21:15:26.000000000","message":"Done","commit_id":"b8f7d9aae02d53a2504fcd07ec0f01634388062e"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"3a136e07f1178d01c3b96f9a500dca23f384de11","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        ipam_tenant_id \u003d kwargs.get(\"project_id\", None)"},{"line_number":205,"context_line":"        priority \u003d kwargs.get(\"priority\", 0)"},{"line_number":206,"context_line":"        # NOTE(tr3buchet): this call creates a nova network in the nova db"},{"line_number":207,"context_line":"        self.ipam.create_subnet(context, label, ipam_tenant_id, quantum_net_id,"},{"line_number":208,"context_line":"            priority, cidr, gateway, gateway_v6,"},{"line_number":209,"context_line":"            cidr_v6, dns1, dns2)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAEH%2F%2F%2BAA%3D","line":206,"updated":"2012-01-25 21:12:23.000000000","message":"huh, yeah, that\u0027s weird and seems wrong.  Looks like Brad put this in during DHCP changes to store the DHCP start address.  Would be good if melange had a way to store such additional attributes of a subnet in melange itself.","commit_id":"02376ed71cad7d1e1ad93502cdeac1dc1eca0d8a"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"3a136e07f1178d01c3b96f9a500dca23f384de11","unresolved":false,"context_lines":[{"line_number":390,"context_line":"            # passed to the linux_net functions)."},{"line_number":391,"context_line":"            network_ref[\u0027cidr\u0027] \u003d subnet[\u0027cidr\u0027]"},{"line_number":392,"context_line":"            n \u003d IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":393,"context_line":"            # NOTE(tr3buchet): should probably not always assume first+1"},{"line_number":394,"context_line":"            network_ref[\u0027dhcp_server\u0027] \u003d IPAddress(n.first + 1)"},{"line_number":395,"context_line":"            # TODO(bgh): Melange should probably track dhcp_start"},{"line_number":396,"context_line":"            # TODO(tr3buchet): melange should store dhcp_server as well"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAEH%2F%2F9%2F4%3D","line":393,"updated":"2012-01-25 21:12:23.000000000","message":"agreed","commit_id":"02376ed71cad7d1e1ad93502cdeac1dc1eca0d8a"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"3a136e07f1178d01c3b96f9a500dca23f384de11","unresolved":false,"context_lines":[{"line_number":394,"context_line":"            network_ref[\u0027dhcp_server\u0027] \u003d IPAddress(n.first + 1)"},{"line_number":395,"context_line":"            # TODO(bgh): Melange should probably track dhcp_start"},{"line_number":396,"context_line":"            # TODO(tr3buchet): melange should store dhcp_server as well"},{"line_number":397,"context_line":"            if not \u0027dhcp_start\u0027 in network_ref or \\"},{"line_number":398,"context_line":"                    network_ref[\u0027dhcp_start\u0027] is None:"},{"line_number":399,"context_line":"                network_ref[\u0027dhcp_start\u0027] \u003d IPAddress(n.first + 2)"},{"line_number":400,"context_line":"            network_ref[\u0027broadcast\u0027] \u003d IPAddress(n.broadcast)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAEH%2F%2F9%2F0%3D","line":397,"updated":"2012-01-25 21:12:23.000000000","message":"yup","commit_id":"02376ed71cad7d1e1ad93502cdeac1dc1eca0d8a"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"3a136e07f1178d01c3b96f9a500dca23f384de11","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        q_tenant_id \u003d context.project_id or FLAGS.quantum_default_tenant_id"},{"line_number":471,"context_line":"        vifs \u003d db.virtual_interface_get_by_instance(context, instance_id)"},{"line_number":472,"context_line":"        instance_type \u003d instance_types.get_instance_type(instance_type_id)"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"        networks \u003d {}"},{"line_number":475,"context_line":"        for vif in vifs:"},{"line_number":476,"context_line":"            if vif.get(\u0027network_id\u0027) is not None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAEH%2F%2F9%2Fw%3D","line":473,"updated":"2012-01-25 21:12:23.000000000","message":"makes me happy to see all that code removed.","commit_id":"02376ed71cad7d1e1ad93502cdeac1dc1eca0d8a"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"3a136e07f1178d01c3b96f9a500dca23f384de11","unresolved":false,"context_lines":[{"line_number":543,"context_line":""},{"line_number":544,"context_line":"    # TODO(bgh): At some point we should consider merging enable_dhcp() and"},{"line_number":545,"context_line":"    # update_dhcp()"},{"line_number":546,"context_line":"    # TODO(tr3buchet): agree, i\u0027m curious why they differ even now.."},{"line_number":547,"context_line":"    def update_dhcp(self, context, ipam_tenant_id, network_ref, vif_ref,"},{"line_number":548,"context_line":"            project_id):"},{"line_number":549,"context_line":"        # Figure out what subnet corresponds to this network/vif"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAEH%2F%2F9%2Fk%3D","line":546,"updated":"2012-01-25 21:12:23.000000000","message":"we\u0027re planning a patch to clean-up the DHCP abstraction in general.","commit_id":"02376ed71cad7d1e1ad93502cdeac1dc1eca0d8a"}],"nova/network/quantum/melange_connection.py":[{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"292195418384bdad58df8d23a2ca4804ea6eb2ce","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        response \u003d self.get(url, headers\u003djson_content_type)"},{"line_number":126,"context_line":"        return json.loads(response)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def get_routes(self, block_id, project_id\u003dNone):"},{"line_number":129,"context_line":"        tenant_scope \u003d \"/tenants/%s\" % project_id if project_id else \"\""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        url \u003d \"ipam%(tenant_scope)s/ip_blocks/%(block_id)s/ip_routes\" % \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEH%2F%2F%2Fwg%3D","line":128,"updated":"2012-01-23 18:10:49.000000000","message":"We need to clean up the melange client later. There\u0027s too much repetition with setting up the resource URLs. Just a reminder for later","commit_id":"e80977c7f75c52f79160559f42c610e791081644"}],"nova/network/quantum/nova_ipam_lib.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"3a136e07f1178d01c3b96f9a500dca23f384de11","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        # nova insists on carving up IP blocks. What ends up happening is"},{"line_number":70,"context_line":"        # we create a v4 and an identically sized v6 block. The reason"},{"line_number":71,"context_line":"        # the quantum tests passed previosly is nothing prevented an"},{"line_number":72,"context_line":"        # incorrect v6 address from being assigned to the wrong subnet"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        if len(networks) !\u003d 1:"},{"line_number":75,"context_line":"            raise Exception(_(\"Error creating network entry\"))"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAEH%2F%2F%2BAc%3D","line":72,"updated":"2012-01-25 21:12:23.000000000","message":"interesting.  in general, the v6 code in QuantumManager was/is barely tested.","commit_id":"02376ed71cad7d1e1ad93502cdeac1dc1eca0d8a"}],"nova/tests/api/openstack/fakes.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7742687b1c5dbd8b7bca44cae5bdf2e8b4df90c5","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"def stub_out_nw_api_get_instance_nw_info(stubs, num_networks\u003d1, func\u003dNone):"},{"line_number":185,"context_line":"    #def get_instance_nw_info(self, context, instance):"},{"line_number":186,"context_line":"    #    return [(None, {\u0027label\u0027: \u0027public\u0027,"},{"line_number":187,"context_line":"    #                     \u0027ips\u0027: [{\u0027ip\u0027: \u0027192.168.0.3\u0027}],"},{"line_number":188,"context_line":"    #                     \u0027ip6s\u0027: []})]"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAEH%2F%2F9CA%3D","line":185,"updated":"2012-01-30 16:37:08.000000000","message":"Why leave this commented code in?  Why not simply delete it?","commit_id":"3e1453ff7fa09ad073a10cf07839800d561bde24"}],"nova/tests/test_quantum.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"5c4a4e647b3d61d6684e4b0341eccf084892025a","unresolved":false,"context_lines":[{"line_number":171,"context_line":"             \u0027dns2\u0027: \u002710.0.0.2\u0027,"},{"line_number":172,"context_line":"             \u0027vlan\u0027: None,"},{"line_number":173,"context_line":"             \u0027host\u0027: None,"},{"line_number":174,"context_line":"             \u0027project_id\u0027: \u0027fake_project1\u0027,"},{"line_number":175,"context_line":"             \u0027priority\u0027: 0},"},{"line_number":176,"context_line":"             {\u0027label\u0027: \"project2-net2\","},{"line_number":177,"context_line":"             \u0027injected\u0027: False,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEH%2F%2F%2FGg%3D","line":174,"updated":"2012-01-24 08:38:53.000000000","message":"Note: this project_id was intentionally None to test the use case when a \u0027global\u0027 (i.e., non project specific) network is created.  Doing so tests different code paths.","commit_id":"b8f7d9aae02d53a2504fcd07ec0f01634388062e"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"2d92d271ca5962315014e2d43e9a975a91bf1897","unresolved":false,"context_lines":[{"line_number":171,"context_line":"             \u0027dns2\u0027: \u002710.0.0.2\u0027,"},{"line_number":172,"context_line":"             \u0027vlan\u0027: None,"},{"line_number":173,"context_line":"             \u0027host\u0027: None,"},{"line_number":174,"context_line":"             \u0027project_id\u0027: \u0027fake_project1\u0027,"},{"line_number":175,"context_line":"             \u0027priority\u0027: 0},"},{"line_number":176,"context_line":"             {\u0027label\u0027: \"project2-net2\","},{"line_number":177,"context_line":"             \u0027injected\u0027: False,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEH%2F%2F%2Btc%3D","line":174,"in_reply_to":"AAAAEH%2F%2F%2FGg%3D","updated":"2012-01-24 21:15:26.000000000","message":"ok, i\u0027ve pulled this out.","commit_id":"b8f7d9aae02d53a2504fcd07ec0f01634388062e"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"5c4a4e647b3d61d6684e4b0341eccf084892025a","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        with session.begin():"},{"line_number":219,"context_line":"            for fip_ref in result:"},{"line_number":220,"context_line":"                session.delete(fip_ref)"},{"line_number":221,"context_line":"        self.flags(xenapi_ovs_integration_bridge\u003d\u0027br0\u0027)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def _create_network(self, n):"},{"line_number":224,"context_line":"        ctx \u003d context.RequestContext(\u0027user1\u0027, n[\u0027project_id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEH%2F%2F%2FGc%3D","line":221,"updated":"2012-01-24 08:38:53.000000000","message":"related to other comments, specifying a xenapi_ovs_integration_bridge here is unlikely to be the right thing for Quantum manager.","commit_id":"b8f7d9aae02d53a2504fcd07ec0f01634388062e"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"2d92d271ca5962315014e2d43e9a975a91bf1897","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        with session.begin():"},{"line_number":219,"context_line":"            for fip_ref in result:"},{"line_number":220,"context_line":"                session.delete(fip_ref)"},{"line_number":221,"context_line":"        self.flags(xenapi_ovs_integration_bridge\u003d\u0027br0\u0027)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def _create_network(self, n):"},{"line_number":224,"context_line":"        ctx \u003d context.RequestContext(\u0027user1\u0027, n[\u0027project_id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEH%2F%2F%2Btg%3D","line":221,"in_reply_to":"AAAAEH%2F%2F%2FGc%3D","updated":"2012-01-24 21:15:26.000000000","message":"ok i\u0027ve pulled this out.","commit_id":"b8f7d9aae02d53a2504fcd07ec0f01634388062e"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"3a136e07f1178d01c3b96f9a500dca23f384de11","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def create_and_attach_port(self, tenant_id, net_id, interface_id,"},{"line_number":76,"context_line":"                               **kwargs):"},{"line_number":77,"context_line":"        print \"create and attach\", tenant_id, net_id"},{"line_number":78,"context_line":"        if not self.network_exists(tenant_id, net_id):"},{"line_number":79,"context_line":"            raise Exception("},{"line_number":80,"context_line":"                _(\"network %(net_id)s does not exist for tenant %(tenant_id)\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAEH%2F%2F%2BBo%3D","line":77,"updated":"2012-01-25 21:12:23.000000000","message":"probably want to clean this up.","commit_id":"02376ed71cad7d1e1ad93502cdeac1dc1eca0d8a"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"3a136e07f1178d01c3b96f9a500dca23f384de11","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        for vif in nw_info:"},{"line_number":289,"context_line":"            for subnet in vif[\u0027network\u0027][\u0027subnets\u0027]:"},{"line_number":290,"context_line":"                cidr \u003d subnet[\u0027cidr\u0027].lower()"},{"line_number":291,"context_line":"                if subnet[\u0027version\u0027] \u003d\u003d 4:"},{"line_number":292,"context_line":"                    # v4 cidr"},{"line_number":293,"context_line":"                    self.assertTrue(cidr.startswith(\u002710.\u0027) or"},{"line_number":294,"context_line":"                                    cidr.startswith(\u0027192.\u0027))"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAEH%2F%2F%2BA4%3D","line":291,"updated":"2012-01-25 21:12:23.000000000","message":"same comment as below.","commit_id":"02376ed71cad7d1e1ad93502cdeac1dc1eca0d8a"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"3a136e07f1178d01c3b96f9a500dca23f384de11","unresolved":false,"context_lines":[{"line_number":353,"context_line":"                if subnet[\u0027version\u0027] \u003d\u003d 4:"},{"line_number":354,"context_line":"                    # v4 cidr"},{"line_number":355,"context_line":"                    self.assertTrue(cidr.startswith(\u00279.\u0027) or"},{"line_number":356,"context_line":"                                    cidr.startswith(\u0027192.\u0027))"},{"line_number":357,"context_line":"                    # v4 address"},{"line_number":358,"context_line":"                    address \u003d subnet[\u0027ips\u0027][0][\u0027address\u0027]"},{"line_number":359,"context_line":"                    self.assertTrue(address.startswith(\u00279.\u0027) or"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAEH%2F%2F%2BBA%3D","line":356,"updated":"2012-01-25 21:12:23.000000000","message":"I don\u0027t think this code is actually equivalent.  \n\nThe old code checks to make sure that at least one of the vifs has an IP that is 9.* and at least one of the vifs has an IP that is 192.*.  The new code just checks to make sure that the IP starts with either 192.* or 9.*.  \n\nI think a case where both vifs where 9.* would correctly fail the old test, but incorrectly pass the new test.","commit_id":"02376ed71cad7d1e1ad93502cdeac1dc1eca0d8a"}],"nova/virt/driver.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"3a136e07f1178d01c3b96f9a500dca23f384de11","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        raise NotImplementedError()"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"    def legacy_nwinfo(self):"},{"line_number":610,"context_line":"        \"\"\""},{"line_number":611,"context_line":"        Indicate if the driver requires the legacy network_info format."},{"line_number":612,"context_line":"        \"\"\""},{"line_number":613,"context_line":"        # TODO(tr3buchet): update all subclasses and remove this"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAEH%2F%2F%2BB0%3D","line":610,"updated":"2012-01-25 21:12:23.000000000","message":"Thanks for adding this.  I know at least Cisco has some \"out-of-tree\" vif drivers as well.","commit_id":"02376ed71cad7d1e1ad93502cdeac1dc1eca0d8a"}],"nova/virt/xenapi/vif.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"3a136e07f1178d01c3b96f9a500dca23f384de11","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright (c) 2011 Citrix Systems, Inc."},{"line_number":4,"context_line":"# Copyright 2011 OpenStack LLC."},{"line_number":5,"context_line":"# Copyright (C) 2011 Nicira, Inc"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAEH%2F%2F%2BCA%3D","line":2,"updated":"2012-01-25 21:12:23.000000000","message":"Is the changes in this file \"phantom changes\"?  I\u0027m not seeing any changes (which is good).","commit_id":"02376ed71cad7d1e1ad93502cdeac1dc1eca0d8a"}]}
