)]}'
{"nova/network/neutronv2/api.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"7ac4f08a013b242bb46013749a68fb3407004c6a","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        return nets"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def _ensure_port_binding_success(self, port_client, port_response):"},{"line_number":169,"context_line":"        if (port_response[\u0027port\u0027].get(\u0027binding:vif_type\u0027) \u003d\u003d"},{"line_number":170,"context_line":"            network_model.VIF_TYPE_BINDING_FAILED):"},{"line_number":171,"context_line":"            port_id \u003d port_response[\u0027port\u0027][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_b781bfc5","line":168,"range":{"start_line":168,"start_character":37,"end_line":168,"end_character":41},"updated":"2016-06-23 17:29:37.000000000","message":"nit: self is not actually used here, so we could pull it out of the class and have it be a module level check, right?","commit_id":"ad8b79370565a91b397003a95f5a89b80e77be0f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"63ba84ab5b837335d7a82655ca259ce533bb4b2a","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        return nets"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def _ensure_port_binding_success(self, port_client, port_response):"},{"line_number":169,"context_line":"        if (port_response[\u0027port\u0027].get(\u0027binding:vif_type\u0027) \u003d\u003d"},{"line_number":170,"context_line":"            network_model.VIF_TYPE_BINDING_FAILED):"},{"line_number":171,"context_line":"            port_id \u003d port_response[\u0027port\u0027][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_9507e680","line":168,"range":{"start_line":168,"start_character":37,"end_line":168,"end_character":41},"in_reply_to":"3aaa91ec_b781bfc5","updated":"2016-06-27 12:55:18.000000000","message":"yeah, not a bad plan.","commit_id":"ad8b79370565a91b397003a95f5a89b80e77be0f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ea91facdd9b4cfcf2b7898be9707cd2753a7d24b","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        if (port_response[\u0027port\u0027].get(\u0027binding:vif_type\u0027) \u003d\u003d"},{"line_number":170,"context_line":"            network_model.VIF_TYPE_BINDING_FAILED):"},{"line_number":171,"context_line":"            port_id \u003d port_response[\u0027port\u0027][\u0027id\u0027]"},{"line_number":172,"context_line":"            port_client.delete_port(port_id)"},{"line_number":173,"context_line":"            raise exception.PortBindingFailed(port_id\u003dport_id)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def _create_port(self, port_client, instance, network_id, port_req_body,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_f1febaac","line":172,"updated":"2016-06-23 15:58:57.000000000","message":"Can you indent these a few spaces farther to distinguish them from the following raise? I really thought we had a pep8 rule for that...","commit_id":"ad8b79370565a91b397003a95f5a89b80e77be0f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"63ba84ab5b837335d7a82655ca259ce533bb4b2a","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        if (port_response[\u0027port\u0027].get(\u0027binding:vif_type\u0027) \u003d\u003d"},{"line_number":170,"context_line":"            network_model.VIF_TYPE_BINDING_FAILED):"},{"line_number":171,"context_line":"            port_id \u003d port_response[\u0027port\u0027][\u0027id\u0027]"},{"line_number":172,"context_line":"            port_client.delete_port(port_id)"},{"line_number":173,"context_line":"            raise exception.PortBindingFailed(port_id\u003dport_id)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def _create_port(self, port_client, instance, network_id, port_req_body,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_5573be15","line":172,"in_reply_to":"3aaa91ec_d7d0cbf8","updated":"2016-06-27 12:55:18.000000000","message":"yeah, I will do the intermediary, this is messy.","commit_id":"ad8b79370565a91b397003a95f5a89b80e77be0f"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"7ac4f08a013b242bb46013749a68fb3407004c6a","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        if (port_response[\u0027port\u0027].get(\u0027binding:vif_type\u0027) \u003d\u003d"},{"line_number":170,"context_line":"            network_model.VIF_TYPE_BINDING_FAILED):"},{"line_number":171,"context_line":"            port_id \u003d port_response[\u0027port\u0027][\u0027id\u0027]"},{"line_number":172,"context_line":"            port_client.delete_port(port_id)"},{"line_number":173,"context_line":"            raise exception.PortBindingFailed(port_id\u003dport_id)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def _create_port(self, port_client, instance, network_id, port_req_body,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_d7d0cbf8","line":172,"in_reply_to":"3aaa91ec_f1febaac","updated":"2016-06-23 17:29:37.000000000","message":"it\u0027s E125, we disable it because it also gets in the way some times, honestly, an intermediary variable is probably just as clean as well.","commit_id":"ad8b79370565a91b397003a95f5a89b80e77be0f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ea91facdd9b4cfcf2b7898be9707cd2753a7d24b","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            port_id \u003d port_response[\u0027port\u0027][\u0027id\u0027]"},{"line_number":172,"context_line":"            port_client.delete_port(port_id)"},{"line_number":173,"context_line":"            raise exception.PortBindingFailed(port_id\u003dport_id)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def _create_port(self, port_client, instance, network_id, port_req_body,"},{"line_number":176,"context_line":"                     fixed_ip\u003dNone, security_group_ids\u003dNone):"},{"line_number":177,"context_line":"        \"\"\"Attempts to create a port for the instance on the given network."}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_51bceedb","line":174,"updated":"2016-06-23 15:58:57.000000000","message":"So I know this is functionally identical to what we had before, but part of the complaint of this code is that it\u0027s impossible to test it reasonably. This should be really easy to add a unit test for, right? Perhaps we could even simplify some of the existing tests that cover this functionality in the scope of the larger function and just make sure they call it, but not need to test all the different inputs in the scope of the larger thing?","commit_id":"ad8b79370565a91b397003a95f5a89b80e77be0f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"63ba84ab5b837335d7a82655ca259ce533bb4b2a","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            port_id \u003d port_response[\u0027port\u0027][\u0027id\u0027]"},{"line_number":172,"context_line":"            port_client.delete_port(port_id)"},{"line_number":173,"context_line":"            raise exception.PortBindingFailed(port_id\u003dport_id)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def _create_port(self, port_client, instance, network_id, port_req_body,"},{"line_number":176,"context_line":"                     fixed_ip\u003dNone, security_group_ids\u003dNone):"},{"line_number":177,"context_line":"        \"\"\"Attempts to create a port for the instance on the given network."}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_f533ca60","line":174,"in_reply_to":"3aaa91ec_51bceedb","updated":"2016-06-27 12:55:18.000000000","message":"yeah, further down the chain I have been adding tests, I should do this here too.\n\nmy cunning plan is to cover everything with new mock based tests, then remove existing mox tests at the end.","commit_id":"ad8b79370565a91b397003a95f5a89b80e77be0f"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"6d15b0bada1bb0ec98c77b15d86bedb1e9e3183c","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            LOG.debug(\u0027Successfully created port: %s\u0027, port_id,"},{"line_number":206,"context_line":"                      instance\u003dinstance)"},{"line_number":207,"context_line":"            return port_id"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        except neutron_client_exc.InvalidIpForNetworkClient:"},{"line_number":210,"context_line":"            LOG.warning(_LW(\u0027Neutron error: %(ip)s is not a valid IP address \u0027"},{"line_number":211,"context_line":"                            \u0027for network %(network_id)s.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_ff5a3982","line":208,"updated":"2016-06-22 20:38:27.000000000","message":"nit:  I don\u0027t like changing even little bits of whitespace in an unrelated place.","commit_id":"ad8b79370565a91b397003a95f5a89b80e77be0f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ea91facdd9b4cfcf2b7898be9707cd2753a7d24b","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            LOG.debug(\u0027Successfully created port: %s\u0027, port_id,"},{"line_number":206,"context_line":"                      instance\u003dinstance)"},{"line_number":207,"context_line":"            return port_id"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        except neutron_client_exc.InvalidIpForNetworkClient:"},{"line_number":210,"context_line":"            LOG.warning(_LW(\u0027Neutron error: %(ip)s is not a valid IP address \u0027"},{"line_number":211,"context_line":"                            \u0027for network %(network_id)s.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_715beaf6","line":208,"in_reply_to":"3aaa91ec_ff5a3982","updated":"2016-06-23 15:58:57.000000000","message":"Agreed.","commit_id":"ad8b79370565a91b397003a95f5a89b80e77be0f"}]}
