)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"5b934b21d6231d4550d048cc94349aa859ed368e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"get_mappings for machanism drivers return back different dicts for"},{"line_number":10,"context_line":"different machanism drivers. By adding get_standard_device_mappings"},{"line_number":11,"context_line":"method SRIOV, OVS, LinuxBridge and Macvtap mechanism drivers can return"},{"line_number":12,"context_line":"a mapping dict in a form like this one:"},{"line_number":13,"context_line":"{\u0027physnet_name\u0027: [\u0027device_or_bridge_1\u0027, \u0027device_or_bridge_2\u0027]}"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f79a3b5_d767684e","line":11,"range":{"start_line":11,"start_character":19,"end_line":11,"end_character":42},"updated":"2018-11-28 16:13:39.000000000","message":"Maybe you wanted to delete this part.","commit_id":"9999be7f62d6334ecab37c5bcb4f1ba7e824dc70"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"131ae3bc7b6caacc16ea1fdfaef0f8701027e034","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"get_mappings for machanism drivers return back different dicts for"},{"line_number":10,"context_line":"different machanism drivers. By adding get_standard_device_mappings"},{"line_number":11,"context_line":"method SRIOV, OVS, LinuxBridge and Macvtap mechanism drivers can return"},{"line_number":12,"context_line":"a mapping dict in a form like this one:"},{"line_number":13,"context_line":"{\u0027physnet_name\u0027: [\u0027device_or_bridge_1\u0027, \u0027device_or_bridge_2\u0027]}"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f79a3b5_8beffeb0","line":11,"range":{"start_line":11,"start_character":19,"end_line":11,"end_character":42},"in_reply_to":"3f79a3b5_d767684e","updated":"2018-12-05 15:33:57.000000000","message":"thanks, done","commit_id":"9999be7f62d6334ecab37c5bcb4f1ba7e824dc70"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2382a9ab6d9b839b1f031fbde90c54e3deacaf7b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"get_standard_device_mappings for mechdriver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"get_mappings for machanism drivers return back different dicts for"},{"line_number":10,"context_line":"different machanism drivers. By adding get_standard_device_mappings"},{"line_number":11,"context_line":"method SRIOV and OVS mechanism drivers can return a mapping dict in a"},{"line_number":12,"context_line":"form like this one:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3f79a3b5_c841ff90","line":9,"range":{"start_line":9,"start_character":17,"end_line":9,"end_character":26},"updated":"2018-12-11 23:13:15.000000000","message":"Nit: mechanism. No change needed unless you have to roll another patch","commit_id":"3c2ee92246c707c3079a437290634825ea185ca2"}],"neutron/plugins/ml2/drivers/linuxbridge/mech_driver/mech_linuxbridge.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e36af881f834f017ad3182787a8a3240dffacaff","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            return {k: [v] for k, v in"},{"line_number":56,"context_line":"                    agent[\u0027configurations\u0027][\u0027interface_mappings\u0027].items()}"},{"line_number":57,"context_line":"        else:"},{"line_number":58,"context_line":"            raise ValueError(_("},{"line_number":59,"context_line":"                \u0027Cannot standardize interface mappings of agent type: %s\u0027),"},{"line_number":60,"context_line":"                agent[\u0027agent_type\u0027])"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c0e061fc","line":58,"range":{"start_line":58,"start_character":29,"end_line":58,"end_character":31},"updated":"2018-11-22 14:14:20.000000000","message":"We are not translating any more the exception messages","commit_id":"e0f6caaed0189ea44329e1496ff062c1f9f21472"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4a21f9dcfb79727e89cc04cfd97dbe0704b4af00","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            return {k: [v] for k, v in"},{"line_number":56,"context_line":"                    agent[\u0027configurations\u0027][\u0027interface_mappings\u0027].items()}"},{"line_number":57,"context_line":"        else:"},{"line_number":58,"context_line":"            raise ValueError(_("},{"line_number":59,"context_line":"                \u0027Cannot standardize interface mappings of agent type: %s\u0027),"},{"line_number":60,"context_line":"                agent[\u0027agent_type\u0027])"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_54136fb1","line":58,"range":{"start_line":58,"start_character":29,"end_line":58,"end_character":31},"in_reply_to":"3f79a3b5_c0e061fc","updated":"2018-11-27 16:25:25.000000000","message":"pep8 gives back N534  Untranslated exception message.","commit_id":"e0f6caaed0189ea44329e1496ff062c1f9f21472"}],"neutron/plugins/ml2/drivers/macvtap/mech_driver/mech_macvtap.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e36af881f834f017ad3182787a8a3240dffacaff","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            return {k: [v] for k, v in"},{"line_number":56,"context_line":"                    agent[\u0027configurations\u0027][\u0027interface_mappings\u0027].items()}"},{"line_number":57,"context_line":"        else:"},{"line_number":58,"context_line":"            raise ValueError(_(\u0027Cannot standardize device mappings of agent \u0027"},{"line_number":59,"context_line":"                               \u0027type: %s\u0027), agent[\u0027agent_type\u0027])"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def check_vlan_transparency(self, context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_a0b8c5c0","line":58,"range":{"start_line":58,"start_character":29,"end_line":58,"end_character":31},"updated":"2018-11-22 14:14:20.000000000","message":"ditto","commit_id":"e0f6caaed0189ea44329e1496ff062c1f9f21472"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4a21f9dcfb79727e89cc04cfd97dbe0704b4af00","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            return {k: [v] for k, v in"},{"line_number":56,"context_line":"                    agent[\u0027configurations\u0027][\u0027interface_mappings\u0027].items()}"},{"line_number":57,"context_line":"        else:"},{"line_number":58,"context_line":"            raise ValueError(_(\u0027Cannot standardize device mappings of agent \u0027"},{"line_number":59,"context_line":"                               \u0027type: %s\u0027), agent[\u0027agent_type\u0027])"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def check_vlan_transparency(self, context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_14773709","line":58,"range":{"start_line":58,"start_character":29,"end_line":58,"end_character":31},"in_reply_to":"3f79a3b5_a0b8c5c0","updated":"2018-11-27 16:25:25.000000000","message":"pep8 gives back N534  Untranslated exception message.","commit_id":"e0f6caaed0189ea44329e1496ff062c1f9f21472"}],"neutron/plugins/ml2/drivers/mech_agent.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"0a4573aafd3ae2636630efa47e8bb2be10368b6d","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        :raises ValueError: if there is no bridge_mappings or device_mappings"},{"line_number":239,"context_line":"                            or interface_mappings key in agent[\u0027onfigurations\u0027]"},{"line_number":240,"context_line":"        \"\"\""},{"line_number":241,"context_line":"        if \u0027bridge_mappings\u0027 in agent[\u0027configurations\u0027]:"},{"line_number":242,"context_line":"            mappings \u003d {k: [v] for k, v in"},{"line_number":243,"context_line":"                        agent[\u0027configurations\u0027][\u0027bridge_mappings\u0027].items()}"},{"line_number":244,"context_line":"        elif \u0027device_mappings\u0027 in agent[\u0027configurations\u0027]:"},{"line_number":245,"context_line":"            mappings \u003d agent[\u0027configurations\u0027].get(\u0027device_mappings\u0027, {})"},{"line_number":246,"context_line":"        elif \u0027interface_mappings\u0027 in agent[\u0027configurations\u0027]:"},{"line_number":247,"context_line":"            # TODO(lajoskatona): Do the same for linuxbridge"},{"line_number":248,"context_line":"            pass"},{"line_number":249,"context_line":"        else:"},{"line_number":250,"context_line":"            raise ValueError(_(\u0027Cannot standardize device mappings of agent \u0027"},{"line_number":251,"context_line":"                               \u0027type: %s\u0027), agent[\u0027agent_type\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_768b81c0","line":248,"range":{"start_line":241,"start_character":0,"end_line":248,"end_character":16},"updated":"2018-11-20 13:16:40.000000000","message":"This code ignores the inheritence structure of the mechanism drivers. This method here should be an abstract method only. The \u0027bridge_mappings\u0027 case should be the implementation of it in the ovs mech driver. The \u0027device_mappings\u0027 case in the sriov mech driver. And so on.","commit_id":"ce228d7212dbcd221c0273952a57af4b41a26f09"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e36af881f834f017ad3182787a8a3240dffacaff","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        \"\"\""},{"line_number":227,"context_line":"        pass"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @abc.abstractmethod"},{"line_number":230,"context_line":"    def get_standard_device_mappings(self, agent):"},{"line_number":231,"context_line":"        \"\"\"Return the agent\u0027s bridge or interface mappings in a standard way."},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_60b70dd9","line":229,"range":{"start_line":229,"start_character":4,"end_line":229,"end_character":23},"updated":"2018-11-22 14:14:20.000000000","message":"Any other out-of-tree mech driver will need to implement this function. I suggest not to make this function abstract.\n\nBTW: and abstract function do not need to return anything or execute \"pass\". L227 and L243 are not needed.","commit_id":"e0f6caaed0189ea44329e1496ff062c1f9f21472"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4a21f9dcfb79727e89cc04cfd97dbe0704b4af00","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        \"\"\""},{"line_number":227,"context_line":"        pass"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @abc.abstractmethod"},{"line_number":230,"context_line":"    def get_standard_device_mappings(self, agent):"},{"line_number":231,"context_line":"        \"\"\"Return the agent\u0027s bridge or interface mappings in a standard way."},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_3446f3a9","line":229,"range":{"start_line":229,"start_character":4,"end_line":229,"end_character":23},"in_reply_to":"3f79a3b5_60b70dd9","updated":"2018-11-27 16:25:25.000000000","message":"Yeah, it was in my mind, it\u0027s safer if we change only those drivers which we really want to change, and not affect the others.\nThanks, I removed the abstract method and have the get_standard_device_mappings method only for OVS and SRIOV.","commit_id":"e0f6caaed0189ea44329e1496ff062c1f9f21472"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e36af881f834f017ad3182787a8a3240dffacaff","unresolved":false,"context_lines":[{"line_number":240,"context_line":"                            or interface_mappings key in"},{"line_number":241,"context_line":"                            agent[\u0027configurations\u0027]"},{"line_number":242,"context_line":"        \"\"\""},{"line_number":243,"context_line":"        pass"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def physnet_in_mappings(self, physnet, mappings):"},{"line_number":246,"context_line":"        \"\"\"Is the physical network part of the given mappings?\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_803ee924","line":243,"updated":"2018-11-22 14:14:20.000000000","message":"NOTE: not for this patch at all, of course. In OVS the parameter is called \"bridge_mappings\", in macvtap \"interface_mappings\" and in SRIOV \"device_mappings\". We should have a common variable.\n\nHaving this common variable, we can implement this function here, in the abstract class.\n\nAs I said, this is just a note, nothing else.","commit_id":"e0f6caaed0189ea44329e1496ff062c1f9f21472"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4a21f9dcfb79727e89cc04cfd97dbe0704b4af00","unresolved":false,"context_lines":[{"line_number":240,"context_line":"                            or interface_mappings key in"},{"line_number":241,"context_line":"                            agent[\u0027configurations\u0027]"},{"line_number":242,"context_line":"        \"\"\""},{"line_number":243,"context_line":"        pass"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def physnet_in_mappings(self, physnet, mappings):"},{"line_number":246,"context_line":"        \"\"\"Is the physical network part of the given mappings?\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_74830bab","line":243,"in_reply_to":"3f79a3b5_803ee924","updated":"2018-11-27 16:25:25.000000000","message":"Agree. The original patch worked that way, but as Bence noted, now we have to add too much specific knowledge to this base class to decide.","commit_id":"e0f6caaed0189ea44329e1496ff062c1f9f21472"}],"neutron/plugins/ml2/drivers/mech_sriov/mech_driver/mech_driver.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e36af881f834f017ad3182787a8a3240dffacaff","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if \u0027device_mappings\u0027 in agent[\u0027configurations\u0027]:"},{"line_number":95,"context_line":"            return agent[\u0027configurations\u0027].get(\u0027device_mappings\u0027, {})"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            raise ValueError(_(\u0027Cannot standardize device mappings of agent \u0027"},{"line_number":98,"context_line":"                               \u0027type: %s\u0027), agent[\u0027agent_type\u0027])"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def bind_port(self, context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_00ddf910","line":97,"range":{"start_line":97,"start_character":29,"end_line":97,"end_character":31},"updated":"2018-11-22 14:14:20.000000000","message":"ditto","commit_id":"e0f6caaed0189ea44329e1496ff062c1f9f21472"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4a21f9dcfb79727e89cc04cfd97dbe0704b4af00","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if \u0027device_mappings\u0027 in agent[\u0027configurations\u0027]:"},{"line_number":95,"context_line":"            return agent[\u0027configurations\u0027].get(\u0027device_mappings\u0027, {})"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            raise ValueError(_(\u0027Cannot standardize device mappings of agent \u0027"},{"line_number":98,"context_line":"                               \u0027type: %s\u0027), agent[\u0027agent_type\u0027])"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def bind_port(self, context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_947ee7bd","line":97,"range":{"start_line":97,"start_character":29,"end_line":97,"end_character":31},"in_reply_to":"3f79a3b5_00ddf910","updated":"2018-11-27 16:25:25.000000000","message":"pep8 gives back N534  Untranslated exception message.","commit_id":"e0f6caaed0189ea44329e1496ff062c1f9f21472"},{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"e7739c55e0742e680d1ec564a1ff5b563af1183f","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                            agent[\u0027configurations\u0027]"},{"line_number":104,"context_line":"        \"\"\""},{"line_number":105,"context_line":"        if \u0027device_mappings\u0027 in agent[\u0027configurations\u0027]:"},{"line_number":106,"context_line":"            return agent[\u0027configurations\u0027].get(\u0027device_mappings\u0027, {})"},{"line_number":107,"context_line":"        else:"},{"line_number":108,"context_line":"            raise ValueError(_(\u0027Cannot standardize device mappings of agent \u0027"},{"line_number":109,"context_line":"                               \u0027type: %s\u0027), agent[\u0027agent_type\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_7fd3df36","line":106,"range":{"start_line":106,"start_character":19,"end_line":106,"end_character":69},"updated":"2018-11-27 21:59:40.000000000","message":"nit: it can be agent[\u0027configurations\u0027][\u0027device_mappings\u0027] since you already checked \u0027device_mappings\u0027 is present.","commit_id":"f3417b7832b9423cea0a823490bad1711603645c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"c6cd1871e44f853853db4873c2cb618413849f92","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                            agent[\u0027configurations\u0027]"},{"line_number":104,"context_line":"        \"\"\""},{"line_number":105,"context_line":"        if \u0027device_mappings\u0027 in agent[\u0027configurations\u0027]:"},{"line_number":106,"context_line":"            return agent[\u0027configurations\u0027].get(\u0027device_mappings\u0027, {})"},{"line_number":107,"context_line":"        else:"},{"line_number":108,"context_line":"            raise ValueError(_(\u0027Cannot standardize device mappings of agent \u0027"},{"line_number":109,"context_line":"                               \u0027type: %s\u0027), agent[\u0027agent_type\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_3cdd6311","line":106,"range":{"start_line":106,"start_character":19,"end_line":106,"end_character":69},"in_reply_to":"3f79a3b5_7fd3df36","updated":"2018-11-28 15:32:58.000000000","message":"Done","commit_id":"f3417b7832b9423cea0a823490bad1711603645c"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2382a9ab6d9b839b1f031fbde90c54e3deacaf7b","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    def get_standard_device_mappings(self, agent):"},{"line_number":94,"context_line":"        \"\"\"Return the agent\u0027s device mappings in a standard way."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        Now each agent uses it\u0027s own format to return bridge mappings, i.e.:"},{"line_number":97,"context_line":"        sriov: \u0027device_mappings\u0027: {\u0027physnet_foo\u0027: [\u0027ensfoo\u0027, \u0027ensbar\u0027]}"},{"line_number":98,"context_line":"        ovs: \u0027bridge_mappings\u0027: {\u0027physnet_foo\u0027: \u0027br-foo\u0027,"},{"line_number":99,"context_line":"                                 \u0027physnet_bar\u0027: \u0027br-bar\u0027}"},{"line_number":100,"context_line":"        :param agent: The agent"},{"line_number":101,"context_line":"        :returns A dict in the format: {\u0027physnet_name\u0027: [\u0027bridge_or_device\u0027]}"},{"line_number":102,"context_line":"        :raises ValueError: if there is no device_mappings key in"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_e8f87b4d","line":99,"range":{"start_line":96,"start_character":8,"end_line":99,"end_character":57},"updated":"2018-12-11 23:13:15.000000000","message":"Once this code is merged, this docstring is going to be confusing, because describes the situation that was solved by this patch. Instead of describing the problem you fixed, describe the functionality implemented by this method. What you have in the release note looks good to me","commit_id":"3c2ee92246c707c3079a437290634825ea185ca2"}],"neutron/plugins/ml2/drivers/openvswitch/mech_driver/mech_openvswitch.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e36af881f834f017ad3182787a8a3240dffacaff","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            return {k: [v] for k, v in"},{"line_number":97,"context_line":"                    agent[\u0027configurations\u0027][\u0027bridge_mappings\u0027].items()}"},{"line_number":98,"context_line":"        else:"},{"line_number":99,"context_line":"            raise ValueError(_(\u0027Cannot standardize bridge mappings of agent \u0027"},{"line_number":100,"context_line":"                               \u0027type: %s\u0027), agent[\u0027agent_type\u0027])"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def check_vlan_transparency(self, context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_a03be533","line":99,"range":{"start_line":99,"start_character":29,"end_line":99,"end_character":31},"updated":"2018-11-22 14:14:20.000000000","message":"ditto","commit_id":"e0f6caaed0189ea44329e1496ff062c1f9f21472"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4a21f9dcfb79727e89cc04cfd97dbe0704b4af00","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            return {k: [v] for k, v in"},{"line_number":97,"context_line":"                    agent[\u0027configurations\u0027][\u0027bridge_mappings\u0027].items()}"},{"line_number":98,"context_line":"        else:"},{"line_number":99,"context_line":"            raise ValueError(_(\u0027Cannot standardize bridge mappings of agent \u0027"},{"line_number":100,"context_line":"                               \u0027type: %s\u0027), agent[\u0027agent_type\u0027])"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def check_vlan_transparency(self, context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_14bc1769","line":99,"range":{"start_line":99,"start_character":29,"end_line":99,"end_character":31},"in_reply_to":"3f79a3b5_a03be533","updated":"2018-11-27 16:25:25.000000000","message":"pep8 gives back N534  Untranslated exception message.","commit_id":"e0f6caaed0189ea44329e1496ff062c1f9f21472"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"2382a9ab6d9b839b1f031fbde90c54e3deacaf7b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def get_standard_device_mappings(self, agent):"},{"line_number":95,"context_line":"        \"\"\"Return the agent\u0027s bridge mappings in a standard way."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        Now each agent uses it\u0027s own format to return bridge mappings, i.e.:"},{"line_number":98,"context_line":"        sriov: \u0027device_mappings\u0027: {\u0027physnet_foo\u0027: [\u0027ensfoo\u0027, \u0027ensbar\u0027]}"},{"line_number":99,"context_line":"        ovs: \u0027bridge_mappings\u0027: {\u0027physnet_foo\u0027: \u0027br-foo\u0027,"},{"line_number":100,"context_line":"                                 \u0027physnet_bar\u0027: \u0027br-bar\u0027}"},{"line_number":101,"context_line":"        :param agent: The agent"},{"line_number":102,"context_line":"        :returns A dict in the format: {\u0027physnet_name\u0027: [\u0027bridge_or_device\u0027]}"},{"line_number":103,"context_line":"        :raises ValueError: if there is no bridge_mappings key in"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_888f87d1","line":100,"range":{"start_line":97,"start_character":1,"end_line":100,"end_character":57},"updated":"2018-12-11 23:13:15.000000000","message":"Once this code is merged, this docstring is going to be confusing, because describes the situation that was solved by this patch. Instead of describing the problem you fixed, describe the functionality implemented by this method. What you have in the release note looks good to me","commit_id":"3c2ee92246c707c3079a437290634825ea185ca2"}],"neutron/tests/unit/plugins/ml2/drivers/mech_sriov/mech_driver/test_mech_sriov_nic_switch.py":[{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"e7739c55e0742e680d1ec564a1ff5b563af1183f","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def test_standard_device_mappings(self):"},{"line_number":278,"context_line":"        mappings \u003d self.driver.get_standard_device_mappings(self.AGENTS[0])"},{"line_number":279,"context_line":"        for ph_orig, dev_orig in self.GOOD_CONFIGS[\u0027device_mappings\u0027].items():"},{"line_number":280,"context_line":"            self.assertIn(ph_orig, mappings)"},{"line_number":281,"context_line":"            self.assertEqual(dev_orig, mappings[ph_orig])"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def test_standard_device_mappings_negative(self):"},{"line_number":284,"context_line":"        fake_agent \u003d {\u0027agent_type\u0027: constants.AGENT_TYPE_NIC_SWITCH,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_3fc6c74b","line":281,"range":{"start_line":279,"start_character":0,"end_line":281,"end_character":57},"updated":"2018-11-27 21:59:40.000000000","message":"Might be better to use assertDictEqual\n\n    self.assertDictEqual(self.GOOD_CONFIGS[\u0027device_mappings\u0027], mappings)","commit_id":"f3417b7832b9423cea0a823490bad1711603645c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"c6cd1871e44f853853db4873c2cb618413849f92","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def test_standard_device_mappings(self):"},{"line_number":278,"context_line":"        mappings \u003d self.driver.get_standard_device_mappings(self.AGENTS[0])"},{"line_number":279,"context_line":"        for ph_orig, dev_orig in self.GOOD_CONFIGS[\u0027device_mappings\u0027].items():"},{"line_number":280,"context_line":"            self.assertIn(ph_orig, mappings)"},{"line_number":281,"context_line":"            self.assertEqual(dev_orig, mappings[ph_orig])"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def test_standard_device_mappings_negative(self):"},{"line_number":284,"context_line":"        fake_agent \u003d {\u0027agent_type\u0027: constants.AGENT_TYPE_NIC_SWITCH,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_fcca8b44","line":281,"range":{"start_line":279,"start_character":0,"end_line":281,"end_character":57},"in_reply_to":"3f79a3b5_3fc6c74b","updated":"2018-11-28 15:32:58.000000000","message":"Done","commit_id":"f3417b7832b9423cea0a823490bad1711603645c"}],"neutron/tests/unit/plugins/ml2/drivers/openvswitch/mech_driver/test_mech_openvswitch.py":[{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"e7739c55e0742e680d1ec564a1ff5b563af1183f","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    def test_standard_device_mappings(self):"},{"line_number":363,"context_line":"        mappings \u003d self.driver.get_standard_device_mappings(self.AGENTS[0])"},{"line_number":364,"context_line":"        for ph_orig, br_orig in self.GOOD_CONFIGS[\u0027bridge_mappings\u0027].items():"},{"line_number":365,"context_line":"            self.assertIn(ph_orig, mappings)"},{"line_number":366,"context_line":"            self.assertEqual([br_orig], mappings[ph_orig])"},{"line_number":367,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_df28f3ed","line":364,"range":{"start_line":364,"start_character":51,"end_line":364,"end_character":66},"updated":"2018-11-27 21:59:40.000000000","message":"We could aslo assert the length of mappings and self.GOOD_CONFIGS[\u0027bridge_mappings\u0027] is the same.","commit_id":"f3417b7832b9423cea0a823490bad1711603645c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"c6cd1871e44f853853db4873c2cb618413849f92","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    def test_standard_device_mappings(self):"},{"line_number":363,"context_line":"        mappings \u003d self.driver.get_standard_device_mappings(self.AGENTS[0])"},{"line_number":364,"context_line":"        for ph_orig, br_orig in self.GOOD_CONFIGS[\u0027bridge_mappings\u0027].items():"},{"line_number":365,"context_line":"            self.assertIn(ph_orig, mappings)"},{"line_number":366,"context_line":"            self.assertEqual([br_orig], mappings[ph_orig])"},{"line_number":367,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_1cc66742","line":364,"range":{"start_line":364,"start_character":51,"end_line":364,"end_character":66},"in_reply_to":"3f79a3b5_df28f3ed","updated":"2018-11-28 15:32:58.000000000","message":"Done","commit_id":"f3417b7832b9423cea0a823490bad1711603645c"}]}
