)]}'
{"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"a5a9f722ac98eaa41ec7a7207d756aac0a61241f","unresolved":false,"context_lines":[{"line_number":1307,"context_line":"            #"},{"line_number":1308,"context_line":"            # This code could extract just the port binding host here and pass"},{"line_number":1309,"context_line":"            # that in.  The problem is that db_base_plugin_common shouldn\u0027t"},{"line_number":1310,"context_line":"            # know anything about port binding.  This comprimise sends IPAM a"},{"line_number":1311,"context_line":"            # port_dict with all of the extension data loaded."},{"line_number":1312,"context_line":"            changes \u003d self.ipam.update_port("},{"line_number":1313,"context_line":"                context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_dcd2f55a","line":1310,"range":{"start_line":1310,"start_character":54,"end_line":1310,"end_character":64},"updated":"2016-05-24 21:29:54.000000000","message":"*compromise","commit_id":"cb314089fb4e16315c9c6b0bb30d079e0b08bbd5"}],"neutron/db/ipam_backend_mixin.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"ae8061a1f6a707e2283c7528e3f29da1d9c85211","unresolved":false,"context_lines":[{"line_number":608,"context_line":"                                            new_port,"},{"line_number":609,"context_line":"                                            new_port.get(\u0027mac_address\u0027))"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"        deferred_ip_allocation \u003d (host and not old_host"},{"line_number":612,"context_line":"                                  and not port_dict.get(\u0027fixed_ips\u0027))"},{"line_number":613,"context_line":"        if not deferred_ip_allocation:"},{"line_number":614,"context_line":"            return changes"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_cb4f1f90","line":611,"range":{"start_line":611,"start_character":8,"end_line":611,"end_character":30},"updated":"2016-06-02 00:32:17.000000000","message":"It occurred to me that this should also check to see if fixed_ips are specified on the new port.  If not, it shouldn\u0027t be considered deferred ip in this sense.","commit_id":"ee578956ab40b4aadd9d40988a8ba6e104c58a9d"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"75cfcfdde1e47fab3b12352a0d598b0cdfb412c2","unresolved":false,"context_lines":[{"line_number":610,"context_line":""},{"line_number":611,"context_line":"        deferred_ip_allocation \u003d (host and not old_host"},{"line_number":612,"context_line":"                                  and not port_dict.get(\u0027fixed_ips\u0027)"},{"line_number":613,"context_line":"                                  and not new_port.get(\u0027fixed_ips\u0027))"},{"line_number":614,"context_line":"        if not deferred_ip_allocation:"},{"line_number":615,"context_line":"            return changes"},{"line_number":616,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_adc9d85c","line":613,"range":{"start_line":613,"start_character":38,"end_line":613,"end_character":67},"updated":"2016-06-02 19:37:09.000000000","message":"I wonder if this particular one should be:\n\n  is_attr_set(new_port.get(\u0027fixed_ips\u0027))","commit_id":"bc273189c0b2b6a3d622bd36bd9e206f5c760e9a"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"4b9294ce47bffdb37f972a1f78538797694e0e40","unresolved":false,"context_lines":[{"line_number":597,"context_line":"            args[\u0027segment_id\u0027] \u003d subnet[segment.SEGMENT_ID]"},{"line_number":598,"context_line":"        return args"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"    def update_port(self, context, new_port, db_port, port_dict):"},{"line_number":601,"context_line":"        old_host \u003d port_dict.get(portbindings.HOST_ID)"},{"line_number":602,"context_line":"        new_host \u003d new_port.get(portbindings.HOST_ID)"},{"line_number":603,"context_line":"        host \u003d new_host if validators.is_attr_set(new_host) else old_host"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_5419b678","line":600,"range":{"start_line":600,"start_character":54,"end_line":600,"end_character":63},"updated":"2016-06-06 21:34:30.000000000","message":"since this is a public method, i wonder if a better name could be created for this here, or even better a well written docstring.","commit_id":"f5b5bdc40557ec6b1748a36854ffed3b57b69416"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"375bc75e5f07e6b094bab70e85018d6d6c534555","unresolved":false,"context_lines":[{"line_number":597,"context_line":"            args[\u0027segment_id\u0027] \u003d subnet[segment.SEGMENT_ID]"},{"line_number":598,"context_line":"        return args"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"    def update_port(self, context, new_port, db_port, port_dict):"},{"line_number":601,"context_line":"        old_host \u003d port_dict.get(portbindings.HOST_ID)"},{"line_number":602,"context_line":"        new_host \u003d new_port.get(portbindings.HOST_ID)"},{"line_number":603,"context_line":"        host \u003d new_host if validators.is_attr_set(new_host) else old_host"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_37034c44","line":600,"range":{"start_line":600,"start_character":54,"end_line":600,"end_character":63},"in_reply_to":"7aa08908_5419b678","updated":"2016-06-06 22:42:27.000000000","message":"Fair enough.  Done.","commit_id":"f5b5bdc40557ec6b1748a36854ffed3b57b69416"}],"neutron/tests/unit/extensions/test_segment.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"718e03c2ee4e78b153b1e6be11c730663efc720b","unresolved":false,"context_lines":[{"line_number":663,"context_line":"                network_id\u003dnetwork[\u0027network\u0027][\u0027id\u0027],"},{"line_number":664,"context_line":"                physical_network\u003d\u0027physnet\u0027)"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"        # Create a port with no IP address (since there is not subnet)"},{"line_number":667,"context_line":"        response \u003d self._create_port(self.fmt,"},{"line_number":668,"context_line":"                                     net_id\u003dnetwork[\u0027network\u0027][\u0027id\u0027],"},{"line_number":669,"context_line":"                                     tenant_id\u003dnetwork[\u0027network\u0027][\u0027tenant_id\u0027])"},{"line_number":670,"context_line":"        port \u003d self.deserialize(self.fmt, response)"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        # Create the subnet and try to update the port to get an IP"},{"line_number":673,"context_line":"        with self.subnet(network\u003dnetwork,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_32a35d51","line":670,"range":{"start_line":666,"start_character":7,"end_line":670,"end_character":51},"updated":"2016-06-06 21:32:29.000000000","message":"couldn\u0027t you just call the self._create_deferred_ip_port method below?","commit_id":"f5b5bdc40557ec6b1748a36854ffed3b57b69416"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"375bc75e5f07e6b094bab70e85018d6d6c534555","unresolved":false,"context_lines":[{"line_number":663,"context_line":"                network_id\u003dnetwork[\u0027network\u0027][\u0027id\u0027],"},{"line_number":664,"context_line":"                physical_network\u003d\u0027physnet\u0027)"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"        # Create a port with no IP address (since there is not subnet)"},{"line_number":667,"context_line":"        response \u003d self._create_port(self.fmt,"},{"line_number":668,"context_line":"                                     net_id\u003dnetwork[\u0027network\u0027][\u0027id\u0027],"},{"line_number":669,"context_line":"                                     tenant_id\u003dnetwork[\u0027network\u0027][\u0027tenant_id\u0027])"},{"line_number":670,"context_line":"        port \u003d self.deserialize(self.fmt, response)"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        # Create the subnet and try to update the port to get an IP"},{"line_number":673,"context_line":"        with self.subnet(network\u003dnetwork,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_9a29878c","line":670,"range":{"start_line":666,"start_character":7,"end_line":670,"end_character":51},"in_reply_to":"7aa08908_32a35d51","updated":"2016-06-06 22:42:27.000000000","message":"I thought I got all of those.  Good catch!","commit_id":"f5b5bdc40557ec6b1748a36854ffed3b57b69416"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"718e03c2ee4e78b153b1e6be11c730663efc720b","unresolved":false,"context_lines":[{"line_number":738,"context_line":"        port_req \u003d self.new_update_request(\u0027ports\u0027, data, port_id)"},{"line_number":739,"context_line":"        response \u003d port_req.get_response(self.api)"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"        # Gets bad request because there are no eligible subnets."},{"line_number":742,"context_line":"        self.assertEqual(webob.exc.HTTPOk.code, response.status_int)"},{"line_number":743,"context_line":"        self._assert_one_ip_in_subnet(response, subnet[\u0027subnet\u0027][\u0027cidr\u0027])"},{"line_number":744,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_7247a51d","line":741,"range":{"start_line":741,"start_character":8,"end_line":741,"end_character":65},"updated":"2016-06-06 21:32:29.000000000","message":"forgot to change this comment","commit_id":"f5b5bdc40557ec6b1748a36854ffed3b57b69416"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"375bc75e5f07e6b094bab70e85018d6d6c534555","unresolved":false,"context_lines":[{"line_number":738,"context_line":"        port_req \u003d self.new_update_request(\u0027ports\u0027, data, port_id)"},{"line_number":739,"context_line":"        response \u003d port_req.get_response(self.api)"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"        # Gets bad request because there are no eligible subnets."},{"line_number":742,"context_line":"        self.assertEqual(webob.exc.HTTPOk.code, response.status_int)"},{"line_number":743,"context_line":"        self._assert_one_ip_in_subnet(response, subnet[\u0027subnet\u0027][\u0027cidr\u0027])"},{"line_number":744,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_37b18c90","line":741,"range":{"start_line":741,"start_character":8,"end_line":741,"end_character":65},"in_reply_to":"7aa08908_7247a51d","updated":"2016-06-06 22:42:27.000000000","message":"Good catch, done.","commit_id":"f5b5bdc40557ec6b1748a36854ffed3b57b69416"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"718e03c2ee4e78b153b1e6be11c730663efc720b","unresolved":false,"context_lines":[{"line_number":829,"context_line":""},{"line_number":830,"context_line":"        port \u003d self._create_deferred_ip_port(network)"},{"line_number":831,"context_line":""},{"line_number":832,"context_line":"        # This host is bound to multiple hosts"},{"line_number":833,"context_line":"        self._setup_host_mappings([(segments[0][\u0027segment\u0027][\u0027id\u0027], \u0027fakehost\u0027),"},{"line_number":834,"context_line":"                                   (segments[1][\u0027segment\u0027][\u0027id\u0027], \u0027fakehost\u0027)])"},{"line_number":835,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_d2a019a2","line":832,"range":{"start_line":832,"start_character":41,"end_line":832,"end_character":46},"updated":"2016-06-06 21:32:29.000000000","message":"do you mean segments here?","commit_id":"f5b5bdc40557ec6b1748a36854ffed3b57b69416"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"375bc75e5f07e6b094bab70e85018d6d6c534555","unresolved":false,"context_lines":[{"line_number":829,"context_line":""},{"line_number":830,"context_line":"        port \u003d self._create_deferred_ip_port(network)"},{"line_number":831,"context_line":""},{"line_number":832,"context_line":"        # This host is bound to multiple hosts"},{"line_number":833,"context_line":"        self._setup_host_mappings([(segments[0][\u0027segment\u0027][\u0027id\u0027], \u0027fakehost\u0027),"},{"line_number":834,"context_line":"                                   (segments[1][\u0027segment\u0027][\u0027id\u0027], \u0027fakehost\u0027)])"},{"line_number":835,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_f73b84e9","line":832,"range":{"start_line":832,"start_character":41,"end_line":832,"end_character":46},"in_reply_to":"7aa08908_d2a019a2","updated":"2016-06-06 22:42:27.000000000","message":"No, I\u0027m really going for binding hosts to hosts.  I was hoping they\u0027d run more efficiently that way.  You know, like yoking two oxen together.  ;)","commit_id":"f5b5bdc40557ec6b1748a36854ffed3b57b69416"}]}
