)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b7679a11cbb5a545b9622eb1db621391d43923d7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use DictOpt for mapping options"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"oslo.config supports dictionary options from version 1.2.0a1"},{"line_number":10,"context_line":"Currently the mapping options in neuton are using ListOpts which"},{"line_number":11,"context_line":"does not well match their usage. Using DictOpt would be more intuitive."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAATn%2F%2FUFo%3D","line":9,"updated":"2013-11-11 06:20:51.000000000","message":"It is better to add a period at eol.","commit_id":"04f1a5c44fa277b66f1eb281fac7b38d65d4c221"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"94eec2a82bfea8c6c93dac0e460eeec2b7b1d504","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use DictOpt for mapping options"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"oslo.config supports dictionary options from version 1.2.0a1"},{"line_number":10,"context_line":"Currently the mapping options in neuton are using ListOpts which"},{"line_number":11,"context_line":"does not well match their usage. Using DictOpt would be more intuitive."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAATn%2F%2FUDM%3D","line":9,"in_reply_to":"AAAATn%2F%2FUFo%3D","updated":"2013-11-11 06:29:30.000000000","message":"Done","commit_id":"04f1a5c44fa277b66f1eb281fac7b38d65d4c221"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b7679a11cbb5a545b9622eb1db621391d43923d7","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Use DictOpt for mapping options"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"oslo.config supports dictionary options from version 1.2.0a1"},{"line_number":10,"context_line":"Currently the mapping options in neuton are using ListOpts which"},{"line_number":11,"context_line":"does not well match their usage. Using DictOpt would be more intuitive."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Fixes bug #1237162"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAATn%2F%2FUFw%3D","line":10,"updated":"2013-11-11 06:20:51.000000000","message":"neuton -\u003e neutron","commit_id":"04f1a5c44fa277b66f1eb281fac7b38d65d4c221"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"94eec2a82bfea8c6c93dac0e460eeec2b7b1d504","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Use DictOpt for mapping options"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"oslo.config supports dictionary options from version 1.2.0a1"},{"line_number":10,"context_line":"Currently the mapping options in neuton are using ListOpts which"},{"line_number":11,"context_line":"does not well match their usage. Using DictOpt would be more intuitive."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Fixes bug #1237162"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAATn%2F%2FUDI%3D","line":10,"in_reply_to":"AAAATn%2F%2FUFw%3D","updated":"2013-11-11 06:29:30.000000000","message":"Done","commit_id":"04f1a5c44fa277b66f1eb281fac7b38d65d4c221"}],"neutron/common/utils.py":[{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"7362c60d8cc881838de3c89969e5a45afb4fdeda","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        mapping \u003d \u0027:\u0027.join([key, value])"},{"line_number":138,"context_line":"        if \u0027:\u0027 in value:"},{"line_number":139,"context_line":"            raise ValueError(_(\"Invalid mapping: \u0027%s\u0027\") % mapping)"},{"line_number":140,"context_line":"        if not key:"},{"line_number":141,"context_line":"            raise ValueError(_(\"Missing key in mapping: \u0027%s\u0027\") % mapping)"},{"line_number":142,"context_line":"        if not value:"},{"line_number":143,"context_line":"            raise ValueError(_(\"Missing value in mapping: \u0027%s\u0027\") % mapping)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATH%2F%2Fitg%3D","line":140,"updated":"2013-10-14 18:54:57.000000000","message":"Is this possible in DictMapping?","commit_id":"04f1a5c44fa277b66f1eb281fac7b38d65d4c221"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"d2a8b64d371941687fa2d96147c78aface6cbb4e","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        mapping \u003d \u0027:\u0027.join([key, value])"},{"line_number":138,"context_line":"        if \u0027:\u0027 in value:"},{"line_number":139,"context_line":"            raise ValueError(_(\"Invalid mapping: \u0027%s\u0027\") % mapping)"},{"line_number":140,"context_line":"        if not key:"},{"line_number":141,"context_line":"            raise ValueError(_(\"Missing key in mapping: \u0027%s\u0027\") % mapping)"},{"line_number":142,"context_line":"        if not value:"},{"line_number":143,"context_line":"            raise ValueError(_(\"Missing value in mapping: \u0027%s\u0027\") % mapping)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATH%2F%2FhPk%3D","line":140,"in_reply_to":"AAAATH%2F%2Fitg%3D","updated":"2013-10-15 03:25:37.000000000","message":"What are you referring to by DictMapping?\n\nIf you meand DictOpt, then DictOpt doesn\u0027t care if the key is an empty string so neutron should check for this.","commit_id":"04f1a5c44fa277b66f1eb281fac7b38d65d4c221"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"dabbefefd610ebf4f26e2c994030bc4df56c4205","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            raise ValueError(_(\"Value %(value)s in mapping: \u0027%(mapping)s\u0027 \""},{"line_number":146,"context_line":"                               \"not unique\") % {\u0027value\u0027: value,"},{"line_number":147,"context_line":"                                                \u0027mapping\u0027: mapping})"},{"line_number":148,"context_line":"        values.append(value)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"def get_hostname():"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FKu8%3D","line":148,"updated":"2013-11-13 13:17:53.000000000","message":"why not return values?","commit_id":"ee4d8ea776f911da59c321ac100ca11df586ee10"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"dab42d0a346b3a732db12401db64fd8dae3b627e","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            raise ValueError(_(\"Value %(value)s in mapping: \u0027%(mapping)s\u0027 \""},{"line_number":146,"context_line":"                               \"not unique\") % {\u0027value\u0027: value,"},{"line_number":147,"context_line":"                                                \u0027mapping\u0027: mapping})"},{"line_number":148,"context_line":"        values.append(value)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"def get_hostname():"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2B4gE%3D","line":148,"in_reply_to":"AAAATn%2F%2FKu8%3D","updated":"2013-11-19 00:49:59.000000000","message":"because mappings is already a dict. We are just validating the dict here.","commit_id":"ee4d8ea776f911da59c321ac100ca11df586ee10"}],"neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"dabbefefd610ebf4f26e2c994030bc4df56c4205","unresolved":false,"context_lines":[{"line_number":979,"context_line":""},{"line_number":980,"context_line":"    logging_config.setup_logging(cfg.CONF)"},{"line_number":981,"context_line":"    try:"},{"line_number":982,"context_line":"        interface_mappings \u003d cfg.CONF.LINUX_BRIDGE.physical_interface_mappings"},{"line_number":983,"context_line":"        q_utils.validate_mappings(interface_mappings)"},{"line_number":984,"context_line":"    except ValueError as e:"},{"line_number":985,"context_line":"        LOG.error(_(\"Parsing physical_interface_mappings failed: %s.\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FKu4%3D","line":982,"updated":"2013-11-13 13:17:53.000000000","message":"the previous interface was more intuitive. now we have 2 lines instead of 1","commit_id":"ee4d8ea776f911da59c321ac100ca11df586ee10"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"6ff6835f3c664bda90a0bc8d4ab5bd5cdc390f7c","unresolved":false,"context_lines":[{"line_number":979,"context_line":""},{"line_number":980,"context_line":"    logging_config.setup_logging(cfg.CONF)"},{"line_number":981,"context_line":"    try:"},{"line_number":982,"context_line":"        interface_mappings \u003d cfg.CONF.LINUX_BRIDGE.physical_interface_mappings"},{"line_number":983,"context_line":"        q_utils.validate_mappings(interface_mappings)"},{"line_number":984,"context_line":"    except ValueError as e:"},{"line_number":985,"context_line":"        LOG.error(_(\"Parsing physical_interface_mappings failed: %s.\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F90mo%3D","line":982,"in_reply_to":"AAAATn%2F%2B4e8%3D","updated":"2013-12-05 15:22:21.000000000","message":"It isn\u0027t a bad idea to keep the interface the same.  You could even keep the name \"parse_mappings.\"  True, it isn\u0027t working exactly as it was before.  However, the result is exactly the same and it is backwards compatible, so why change the interface?  It would minimize the touch points in this patch.\n\nJust my $0.02 after reading Gary\u0027s comment.\n\nI gave +1 before and I\u0027ll keep it that way since I\u0027ll accept it either way.  Of course, I can\u0027t speak for Gary.  :)","commit_id":"ee4d8ea776f911da59c321ac100ca11df586ee10"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"dab42d0a346b3a732db12401db64fd8dae3b627e","unresolved":false,"context_lines":[{"line_number":979,"context_line":""},{"line_number":980,"context_line":"    logging_config.setup_logging(cfg.CONF)"},{"line_number":981,"context_line":"    try:"},{"line_number":982,"context_line":"        interface_mappings \u003d cfg.CONF.LINUX_BRIDGE.physical_interface_mappings"},{"line_number":983,"context_line":"        q_utils.validate_mappings(interface_mappings)"},{"line_number":984,"context_line":"    except ValueError as e:"},{"line_number":985,"context_line":"        LOG.error(_(\"Parsing physical_interface_mappings failed: %s.\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2B4e8%3D","line":982,"in_reply_to":"AAAATn%2F%2FKu4%3D","updated":"2013-11-19 00:49:59.000000000","message":"I don\u0027t know gary, there is not that much benefit even if this part is one line IMO. Maybe I can make validate_mappings return a dict so the interface is the same as before?","commit_id":"ee4d8ea776f911da59c321ac100ca11df586ee10"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"c818ae6c1e2952e536d720ba544c71ae8ed772f7","unresolved":false,"context_lines":[{"line_number":979,"context_line":""},{"line_number":980,"context_line":"    logging_config.setup_logging(cfg.CONF)"},{"line_number":981,"context_line":"    try:"},{"line_number":982,"context_line":"        interface_mappings \u003d cfg.CONF.LINUX_BRIDGE.physical_interface_mappings"},{"line_number":983,"context_line":"        q_utils.validate_mappings(interface_mappings)"},{"line_number":984,"context_line":"    except ValueError as e:"},{"line_number":985,"context_line":"        LOG.error(_(\"Parsing physical_interface_mappings failed: %s.\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9qto%3D","line":982,"in_reply_to":"AAAATn%2F90mo%3D","updated":"2013-12-09 01:47:33.000000000","message":"fair enough. I\u0027ll give it a try","commit_id":"ee4d8ea776f911da59c321ac100ca11df586ee10"}],"neutron/plugins/linuxbridge/common/config.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"dabbefefd610ebf4f26e2c994030bc4df56c4205","unresolved":false,"context_lines":[{"line_number":56,"context_line":"]"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"bridge_opts \u003d ["},{"line_number":59,"context_line":"    cfg.DictOpt(\u0027physical_interface_mappings\u0027,"},{"line_number":60,"context_line":"                default\u003dDEFAULT_INTERFACE_MAPPINGS,"},{"line_number":61,"context_line":"                help\u003d_(\"List of \u003cphysical_network\u003e:\u003cphysical_interface\u003e\")),"},{"line_number":62,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FKuk%3D","line":59,"updated":"2013-11-13 13:17:53.000000000","message":"question: is this something that is backward compatible?","commit_id":"ee4d8ea776f911da59c321ac100ca11df586ee10"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"dab42d0a346b3a732db12401db64fd8dae3b627e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"]"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"bridge_opts \u003d ["},{"line_number":59,"context_line":"    cfg.DictOpt(\u0027physical_interface_mappings\u0027,"},{"line_number":60,"context_line":"                default\u003dDEFAULT_INTERFACE_MAPPINGS,"},{"line_number":61,"context_line":"                help\u003d_(\"List of \u003cphysical_network\u003e:\u003cphysical_interface\u003e\")),"},{"line_number":62,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2B4fg%3D","line":59,"in_reply_to":"AAAATn%2F%2FKuk%3D","updated":"2013-11-19 00:49:59.000000000","message":"Since the conf file doesn\u0027t need any change, yes it is backwards compatible.","commit_id":"ee4d8ea776f911da59c321ac100ca11df586ee10"}],"neutron/plugins/mlnx/agent/eswitch_neutron_agent.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"dabbefefd610ebf4f26e2c994030bc4df56c4205","unresolved":false,"context_lines":[{"line_number":412,"context_line":"    logging_config.setup_logging(cfg.CONF)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    try:"},{"line_number":415,"context_line":"        interface_mappings \u003d cfg.CONF.ESWITCH.physical_interface_mappings"},{"line_number":416,"context_line":"        q_utils.validate_mappings(interface_mappings)"},{"line_number":417,"context_line":"    except ValueError as e:"},{"line_number":418,"context_line":"        LOG.error(_(\"Parsing physical_interface_mappings failed: %s.\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FKuc%3D","line":415,"updated":"2013-11-13 13:17:53.000000000","message":"ditto","commit_id":"ee4d8ea776f911da59c321ac100ca11df586ee10"}],"neutron/plugins/mlnx/common/config.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"dabbefefd610ebf4f26e2c994030bc4df56c4205","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"eswitch_opts \u003d ["},{"line_number":38,"context_line":"    cfg.DictOpt(\u0027physical_interface_mappings\u0027,"},{"line_number":39,"context_line":"                default\u003dDEFAULT_INTERFACE_MAPPINGS,"},{"line_number":40,"context_line":"                help\u003d_(\"List of \u003cphysical_network\u003e:\u003cphysical_interface\u003e\")),"},{"line_number":41,"context_line":"    cfg.StrOpt(\u0027vnic_type\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FKuY%3D","line":38,"updated":"2013-11-13 13:17:53.000000000","message":"is this backward compatible","commit_id":"ee4d8ea776f911da59c321ac100ca11df586ee10"}],"neutron/plugins/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"dabbefefd610ebf4f26e2c994030bc4df56c4205","unresolved":false,"context_lines":[{"line_number":1160,"context_line":"    \"\"\""},{"line_number":1161,"context_line":"    try:"},{"line_number":1162,"context_line":"        bridge_mappings \u003d config.OVS.bridge_mappings"},{"line_number":1163,"context_line":"        q_utils.validate_mappings(bridge_mappings)"},{"line_number":1164,"context_line":"    except ValueError as e:"},{"line_number":1165,"context_line":"        raise ValueError(_(\"Parsing bridge_mappings failed: %s.\") % e)"},{"line_number":1166,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FKuQ%3D","line":1163,"updated":"2013-11-13 13:17:53.000000000","message":"same as before","commit_id":"ee4d8ea776f911da59c321ac100ca11df586ee10"}],"neutron/plugins/openvswitch/common/config.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"dabbefefd610ebf4f26e2c994030bc4df56c4205","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                      \"bridge\")),"},{"line_number":41,"context_line":"    cfg.StrOpt(\u0027local_ip\u0027, default\u003d\u0027\u0027,"},{"line_number":42,"context_line":"               help\u003d_(\"Local IP address of GRE tunnel endpoints.\")),"},{"line_number":43,"context_line":"    cfg.DictOpt(\u0027bridge_mappings\u0027,"},{"line_number":44,"context_line":"                default\u003dDEFAULT_BRIDGE_MAPPINGS,"},{"line_number":45,"context_line":"                help\u003d_(\"List of \u003cphysical_network\u003e:\u003cbridge\u003e\")),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027tenant_network_type\u0027, default\u003d\u0027local\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FKuI%3D","line":43,"updated":"2013-11-13 13:17:53.000000000","message":"same question as before","commit_id":"ee4d8ea776f911da59c321ac100ca11df586ee10"}]}
