)]}'
{"quantum/common/utils.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":152,"context_line":"            continue"},{"line_number":153,"context_line":"        split_result \u003d mapping.split(\u0027:\u0027)"},{"line_number":154,"context_line":"        if len(split_result) !\u003d 2:"},{"line_number":155,"context_line":"            raise ValueError(\u0027Invalid %(key_name)s to %(value_name)s mapping:\u0027"},{"line_number":156,"context_line":"                             \u0027 %(mapping)s.\u0027 % locals())"},{"line_number":157,"context_line":"        key \u003d split_result[0].strip()"},{"line_number":158,"context_line":"        if not key:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F4S8%3D","line":155,"updated":"2012-11-18 06:48:18.000000000","message":"Consider using the _() format. This will help translators in the future.","commit_id":"fe492c9d808c99899663577d06666e5d556dd02a"},{"author":{"_account_id":2649,"name":"Zhang Hua","email":"zhuadl@cn.ibm.com","username":"zhang-hare"},"unresolved":false,"context_lines":[{"line_number":156,"context_line":"                             \u0027 %(mapping)s.\u0027 % locals())"},{"line_number":157,"context_line":"        key \u003d split_result[0].strip()"},{"line_number":158,"context_line":"        if not key:"},{"line_number":159,"context_line":"            raise ValueError(\u0027Missing %(key_name)s in %(key_name)s to\u0027"},{"line_number":160,"context_line":"                             \u0027 %(value_name)s mapping: %(mapping)s\u0027 % locals())"},{"line_number":161,"context_line":"        value \u003d split_result[1].strip()"},{"line_number":162,"context_line":"        if not value:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F24o%3D","line":159,"updated":"2012-11-19 21:54:53.000000000","message":"please use _() function to enable i18n.","commit_id":"fe492c9d808c99899663577d06666e5d556dd02a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cc064e53cd133e2c39ccfdb20e3d31fced466f00","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        key \u003d split_result[0].strip()"},{"line_number":158,"context_line":"        if not key:"},{"line_number":159,"context_line":"            raise ValueError(\u0027Missing %(key_name)s in %(key_name)s to\u0027"},{"line_number":160,"context_line":"                             \u0027 %(value_name)s mapping: %(mapping)s\u0027 % locals())"},{"line_number":161,"context_line":"        value \u003d split_result[1].strip()"},{"line_number":162,"context_line":"        if not value:"},{"line_number":163,"context_line":"            raise ValueError(\u0027Missing %(value_name)s in %(key_name)s to\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F4uY%3D","line":160,"updated":"2012-11-17 00:49:26.000000000","message":"We pass params \u0027key_name\u0027 and \u0027value_name\u0027 just for logging message that a little confuse.\nHow about this, we raise exception as below:\n\nraise ValueError(\u0027Missing key in %(mapping)s of %(mapping_list)s\u0027 % (mapping, mapping_list))\n\nThen we print specific message out of this function:\ntry:\n   parse_mapping(...)\nexcept ValueError as e:\n   LOG.error(\"Parsing physical network mapping failed:\", e)\n   sys.exit(1)","commit_id":"fe492c9d808c99899663577d06666e5d556dd02a"},{"author":{"_account_id":2649,"name":"Zhang Hua","email":"zhuadl@cn.ibm.com","username":"zhang-hare"},"unresolved":false,"context_lines":[{"line_number":161,"context_line":"        value \u003d split_result[1].strip()"},{"line_number":162,"context_line":"        if not value:"},{"line_number":163,"context_line":"            raise ValueError(\u0027Missing %(value_name)s in %(key_name)s to\u0027"},{"line_number":164,"context_line":"                             \u0027 %(value_name)s mapping: %(mapping)s\u0027 % locals())"},{"line_number":165,"context_line":"        if key in mappings:"},{"line_number":166,"context_line":"            raise ValueError(\u0027Duplicate %(key_name)s to %(value_name)s mapping\u0027"},{"line_number":167,"context_line":"                             \u0027 for %(key_name)s: %(key)s.\u0027 % locals())"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F24M%3D","line":164,"updated":"2012-11-19 21:54:53.000000000","message":"please use _() function to enable i18n.","commit_id":"fe492c9d808c99899663577d06666e5d556dd02a"},{"author":{"_account_id":2649,"name":"Zhang Hua","email":"zhuadl@cn.ibm.com","username":"zhang-hare"},"unresolved":false,"context_lines":[{"line_number":164,"context_line":"                             \u0027 %(value_name)s mapping: %(mapping)s\u0027 % locals())"},{"line_number":165,"context_line":"        if key in mappings:"},{"line_number":166,"context_line":"            raise ValueError(\u0027Duplicate %(key_name)s to %(value_name)s mapping\u0027"},{"line_number":167,"context_line":"                             \u0027 for %(key_name)s: %(key)s.\u0027 % locals())"},{"line_number":168,"context_line":"        if unique_values and value in mappings.itervalues():"},{"line_number":169,"context_line":"            raise ValueError(\u0027Duplicate %(key_name)s to %(value_name)s mapping\u0027"},{"line_number":170,"context_line":"                             \u0027 to %(value_name)s: %(value)s.\u0027 % locals())"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F24U%3D","line":167,"updated":"2012-11-19 21:54:53.000000000","message":"please use _() function to enable i18n.","commit_id":"fe492c9d808c99899663577d06666e5d556dd02a"},{"author":{"_account_id":2649,"name":"Zhang Hua","email":"zhuadl@cn.ibm.com","username":"zhang-hare"},"unresolved":false,"context_lines":[{"line_number":167,"context_line":"                             \u0027 for %(key_name)s: %(key)s.\u0027 % locals())"},{"line_number":168,"context_line":"        if unique_values and value in mappings.itervalues():"},{"line_number":169,"context_line":"            raise ValueError(\u0027Duplicate %(key_name)s to %(value_name)s mapping\u0027"},{"line_number":170,"context_line":"                             \u0027 to %(value_name)s: %(value)s.\u0027 % locals())"},{"line_number":171,"context_line":"        mappings[key] \u003d value"},{"line_number":172,"context_line":"    return mappings"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F24c%3D","line":170,"updated":"2012-11-19 21:54:53.000000000","message":"please use _() function to enable i18n.","commit_id":"fe492c9d808c99899663577d06666e5d556dd02a"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":150,"context_line":"            continue"},{"line_number":151,"context_line":"        split_result \u003d mapping.split(\u0027:\u0027)"},{"line_number":152,"context_line":"        if len(split_result) !\u003d 2:"},{"line_number":153,"context_line":"            raise ValueError(_(\u0027Invalid mapping: \\\u0027%s\\\u0027\u0027) % mapping)"},{"line_number":154,"context_line":"        key \u003d split_result[0].strip()"},{"line_number":155,"context_line":"        if not key:"},{"line_number":156,"context_line":"            raise ValueError(_(\u0027Missing key in mapping: \\\u0027%s\\\u0027\u0027) % mapping)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2F2Sg%3D","line":153,"updated":"2012-11-20 07:14:19.000000000","message":"Do we need the \\\u0027%s\\\u0027?\nHow about \"Invalid mapping: \u0027%s\u0027\u0027\u0027?","commit_id":"9d139cd00d4ac67a06dd4ef9e5e64dc2357e95a2"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":150,"context_line":"            continue"},{"line_number":151,"context_line":"        split_result \u003d mapping.split(\u0027:\u0027)"},{"line_number":152,"context_line":"        if len(split_result) !\u003d 2:"},{"line_number":153,"context_line":"            raise ValueError(_(\u0027Invalid mapping: \\\u0027%s\\\u0027\u0027) % mapping)"},{"line_number":154,"context_line":"        key \u003d split_result[0].strip()"},{"line_number":155,"context_line":"        if not key:"},{"line_number":156,"context_line":"            raise ValueError(_(\u0027Missing key in mapping: \\\u0027%s\\\u0027\u0027) % mapping)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2F15k%3D","line":153,"in_reply_to":"AAAAMH%2F%2F2EU%3D","updated":"2012-11-20 15:41:04.000000000","message":"Done","commit_id":"9d139cd00d4ac67a06dd4ef9e5e64dc2357e95a2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":150,"context_line":"            continue"},{"line_number":151,"context_line":"        split_result \u003d mapping.split(\u0027:\u0027)"},{"line_number":152,"context_line":"        if len(split_result) !\u003d 2:"},{"line_number":153,"context_line":"            raise ValueError(_(\u0027Invalid mapping: \\\u0027%s\\\u0027\u0027) % mapping)"},{"line_number":154,"context_line":"        key \u003d split_result[0].strip()"},{"line_number":155,"context_line":"        if not key:"},{"line_number":156,"context_line":"            raise ValueError(_(\u0027Missing key in mapping: \\\u0027%s\\\u0027\u0027) % mapping)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2F2EU%3D","line":153,"in_reply_to":"AAAAMH%2F%2F2I4%3D","updated":"2012-11-20 13:59:22.000000000","message":"I understand but why not do:\nraise ValueError(_(\"Invalid mapping: \u0027%s\u0027\") % mapping)\nIt is the same but the code is a little prettier. This should work. No?","commit_id":"9d139cd00d4ac67a06dd4ef9e5e64dc2357e95a2"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":150,"context_line":"            continue"},{"line_number":151,"context_line":"        split_result \u003d mapping.split(\u0027:\u0027)"},{"line_number":152,"context_line":"        if len(split_result) !\u003d 2:"},{"line_number":153,"context_line":"            raise ValueError(_(\u0027Invalid mapping: \\\u0027%s\\\u0027\u0027) % mapping)"},{"line_number":154,"context_line":"        key \u003d split_result[0].strip()"},{"line_number":155,"context_line":"        if not key:"},{"line_number":156,"context_line":"            raise ValueError(_(\u0027Missing key in mapping: \\\u0027%s\\\u0027\u0027) % mapping)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2F2I4%3D","line":153,"in_reply_to":"AAAAMH%2F%2F2Sg%3D","updated":"2012-11-20 11:55:33.000000000","message":"I put quotes around the mapping because otherwise its hard to distinguish between the \":\" at the and of \"mapping:\" and whatever \":\" characters are in the actual mapping. I\u0027d prefer to keep this as is.","commit_id":"9d139cd00d4ac67a06dd4ef9e5e64dc2357e95a2"}],"quantum/plugins/linuxbridge/agent/linuxbridge_quantum_agent.py":[{"author":{"_account_id":2649,"name":"Zhang Hua","email":"zhuadl@cn.ibm.com","username":"zhang-hare"},"unresolved":false,"context_lines":[{"line_number":600,"context_line":"            cfg.CONF.LINUX_BRIDGE.physical_interface_mappings,"},{"line_number":601,"context_line":"            \u0027physical network\u0027, \u0027interface\u0027)"},{"line_number":602,"context_line":"    except ValueError as e:"},{"line_number":603,"context_line":"        LOG.error(\"%s Agent terminated!\", e)"},{"line_number":604,"context_line":"        sys.exit(1)"},{"line_number":605,"context_line":"    LOG.info(\"Interface mappings: %s\" % interface_mappings)"},{"line_number":606,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F25A%3D","line":603,"updated":"2012-11-19 21:54:53.000000000","message":"please use _() function to enable i18n.","commit_id":"fe492c9d808c99899663577d06666e5d556dd02a"},{"author":{"_account_id":2649,"name":"Zhang Hua","email":"zhuadl@cn.ibm.com","username":"zhang-hare"},"unresolved":false,"context_lines":[{"line_number":602,"context_line":"    except ValueError as e:"},{"line_number":603,"context_line":"        LOG.error(\"%s Agent terminated!\", e)"},{"line_number":604,"context_line":"        sys.exit(1)"},{"line_number":605,"context_line":"    LOG.info(\"Interface mappings: %s\" % interface_mappings)"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"    polling_interval \u003d cfg.CONF.AGENT.polling_interval"},{"line_number":608,"context_line":"    root_helper \u003d cfg.CONF.AGENT.root_helper"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F244%3D","line":605,"updated":"2012-11-19 21:54:53.000000000","message":"please use _() function to enable i18n.","commit_id":"fe492c9d808c99899663577d06666e5d556dd02a"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":599,"context_line":"        interface_mappings \u003d q_utils.parse_mappings("},{"line_number":600,"context_line":"            cfg.CONF.LINUX_BRIDGE.physical_interface_mappings)"},{"line_number":601,"context_line":"    except ValueError as e:"},{"line_number":602,"context_line":"        LOG.error(\"Parsing physical_interface_mappings failed: %s.\""},{"line_number":603,"context_line":"                  \" Agent terminated!\", e)"},{"line_number":604,"context_line":"        sys.exit(1)"},{"line_number":605,"context_line":"    LOG.info(\"Interface mappings: %s\" % interface_mappings)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2F2Sw%3D","line":602,"updated":"2012-11-20 07:14:19.000000000","message":"This should be localized.","commit_id":"9d139cd00d4ac67a06dd4ef9e5e64dc2357e95a2"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":599,"context_line":"        interface_mappings \u003d q_utils.parse_mappings("},{"line_number":600,"context_line":"            cfg.CONF.LINUX_BRIDGE.physical_interface_mappings)"},{"line_number":601,"context_line":"    except ValueError as e:"},{"line_number":602,"context_line":"        LOG.error(\"Parsing physical_interface_mappings failed: %s.\""},{"line_number":603,"context_line":"                  \" Agent terminated!\", e)"},{"line_number":604,"context_line":"        sys.exit(1)"},{"line_number":605,"context_line":"    LOG.info(\"Interface mappings: %s\" % interface_mappings)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2F15c%3D","line":602,"in_reply_to":"AAAAMH%2F%2F2Is%3D","updated":"2012-11-20 15:41:04.000000000","message":"OK, I internationalized all the log messages in this function, but not the rest of the module.","commit_id":"9d139cd00d4ac67a06dd4ef9e5e64dc2357e95a2"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":599,"context_line":"        interface_mappings \u003d q_utils.parse_mappings("},{"line_number":600,"context_line":"            cfg.CONF.LINUX_BRIDGE.physical_interface_mappings)"},{"line_number":601,"context_line":"    except ValueError as e:"},{"line_number":602,"context_line":"        LOG.error(\"Parsing physical_interface_mappings failed: %s.\""},{"line_number":603,"context_line":"                  \" Agent terminated!\", e)"},{"line_number":604,"context_line":"        sys.exit(1)"},{"line_number":605,"context_line":"    LOG.info(\"Interface mappings: %s\" % interface_mappings)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2F2Is%3D","line":602,"in_reply_to":"AAAAMH%2F%2F2Sw%3D","updated":"2012-11-20 11:55:33.000000000","message":"None of the existing LOG statements in this module are internationalized, so I would think this should be done to all of them in a separate patch, rather than mixing it in with this unrelated change (which might be merged to folsom-stable).","commit_id":"9d139cd00d4ac67a06dd4ef9e5e64dc2357e95a2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":602,"context_line":"        LOG.error(\"Parsing physical_interface_mappings failed: %s.\""},{"line_number":603,"context_line":"                  \" Agent terminated!\", e)"},{"line_number":604,"context_line":"        sys.exit(1)"},{"line_number":605,"context_line":"    LOG.info(\"Interface mappings: %s\" % interface_mappings)"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"    polling_interval \u003d cfg.CONF.AGENT.polling_interval"},{"line_number":608,"context_line":"    root_helper \u003d cfg.CONF.AGENT.root_helper"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2F2Ss%3D","line":605,"updated":"2012-11-20 07:14:19.000000000","message":"Ditto","commit_id":"9d139cd00d4ac67a06dd4ef9e5e64dc2357e95a2"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":602,"context_line":"        LOG.error(\"Parsing physical_interface_mappings failed: %s.\""},{"line_number":603,"context_line":"                  \" Agent terminated!\", e)"},{"line_number":604,"context_line":"        sys.exit(1)"},{"line_number":605,"context_line":"    LOG.info(\"Interface mappings: %s\" % interface_mappings)"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"    polling_interval \u003d cfg.CONF.AGENT.polling_interval"},{"line_number":608,"context_line":"    root_helper \u003d cfg.CONF.AGENT.root_helper"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2F15U%3D","line":605,"in_reply_to":"AAAAMH%2F%2F2Ss%3D","updated":"2012-11-20 15:41:04.000000000","message":"Done","commit_id":"9d139cd00d4ac67a06dd4ef9e5e64dc2357e95a2"}],"quantum/plugins/openvswitch/agent/ovs_quantum_agent.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"6c4ead1e26274417485f399ef00eb919043008e7","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        :param integ_br: name of the integration bridge."},{"line_number":141,"context_line":"        :param tun_br: name of the tunnel bridge."},{"line_number":142,"context_line":"        :param local_ip: local IP address of this hypervisor."},{"line_number":143,"context_line":"        :param bridge_mappings: mappings from physical interface to bridge."},{"line_number":144,"context_line":"        :param root_helper: utility to use when running shell cmds."},{"line_number":145,"context_line":"        :param polling_interval: interval (secs) to poll DB."},{"line_number":146,"context_line":"        :param enable_tunneling: if True enable GRE networks."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F8ws%3D","line":143,"updated":"2012-11-14 17:31:34.000000000","message":"would it be more clear to say \"from physical network name to bridge name\"?","commit_id":"01e498eaa97a21c76a1c6545c3dd7b4de3ad1067"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"9eb9b580b5beaec266304a3ca2574f4570f119d6","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        :param integ_br: name of the integration bridge."},{"line_number":141,"context_line":"        :param tun_br: name of the tunnel bridge."},{"line_number":142,"context_line":"        :param local_ip: local IP address of this hypervisor."},{"line_number":143,"context_line":"        :param bridge_mappings: mappings from physical interface to bridge."},{"line_number":144,"context_line":"        :param root_helper: utility to use when running shell cmds."},{"line_number":145,"context_line":"        :param polling_interval: interval (secs) to poll DB."},{"line_number":146,"context_line":"        :param enable_tunneling: if True enable GRE networks."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F4%2Bo%3D","line":143,"in_reply_to":"AAAAMH%2F%2F8pI%3D","updated":"2012-11-16 21:10:11.000000000","message":"Done","commit_id":"01e498eaa97a21c76a1c6545c3dd7b4de3ad1067"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"9eb9b580b5beaec266304a3ca2574f4570f119d6","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        :param integ_br: name of the integration bridge."},{"line_number":141,"context_line":"        :param tun_br: name of the tunnel bridge."},{"line_number":142,"context_line":"        :param local_ip: local IP address of this hypervisor."},{"line_number":143,"context_line":"        :param bridge_mappings: mappings from physical interface to bridge."},{"line_number":144,"context_line":"        :param root_helper: utility to use when running shell cmds."},{"line_number":145,"context_line":"        :param polling_interval: interval (secs) to poll DB."},{"line_number":146,"context_line":"        :param enable_tunneling: if True enable GRE networks."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F8pI%3D","line":143,"in_reply_to":"AAAAMH%2F%2F8ws%3D","updated":"2012-11-14 20:26:53.000000000","message":"Not only more clear, but more correct. I\u0027ll fix it.","commit_id":"01e498eaa97a21c76a1c6545c3dd7b4de3ad1067"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"6c4ead1e26274417485f399ef00eb919043008e7","unresolved":false,"context_lines":[{"line_number":662,"context_line":"                             \u0027 %s.\u0027 % physical_network)"},{"line_number":663,"context_line":"        if bridge in bridge_mappings.itervalues():"},{"line_number":664,"context_line":"            raise ValueError(\u0027Duplicate bridge mapping to bridge: %s.\u0027"},{"line_number":665,"context_line":"                             % bridge)"},{"line_number":666,"context_line":"        bridge_mappings[physical_network] \u003d bridge"},{"line_number":667,"context_line":"    LOG.info(\"Bridge mappings: %s\" % bridge_mappings)"},{"line_number":668,"context_line":"    return bridge_mappings"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F8wU%3D","line":665,"updated":"2012-11-14 17:31:34.000000000","message":"these two error messages make sense if you parse them carefully, but at a glance seem very similar. \n\nI might say \"physical network X cannot be mapped to two different bridges Y and Z\" and \"physical networks X and Y cannot be mapped to the same bridge Z\"","commit_id":"01e498eaa97a21c76a1c6545c3dd7b4de3ad1067"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"9eb9b580b5beaec266304a3ca2574f4570f119d6","unresolved":false,"context_lines":[{"line_number":662,"context_line":"                             \u0027 %s.\u0027 % physical_network)"},{"line_number":663,"context_line":"        if bridge in bridge_mappings.itervalues():"},{"line_number":664,"context_line":"            raise ValueError(\u0027Duplicate bridge mapping to bridge: %s.\u0027"},{"line_number":665,"context_line":"                             % bridge)"},{"line_number":666,"context_line":"        bridge_mappings[physical_network] \u003d bridge"},{"line_number":667,"context_line":"    LOG.info(\"Bridge mappings: %s\" % bridge_mappings)"},{"line_number":668,"context_line":"    return bridge_mappings"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F490%3D","line":665,"in_reply_to":"AAAAMH%2F%2F8jM%3D","updated":"2012-11-16 21:10:11.000000000","message":"I clarified them a bit, without adding complexity.","commit_id":"01e498eaa97a21c76a1c6545c3dd7b4de3ad1067"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"9eb9b580b5beaec266304a3ca2574f4570f119d6","unresolved":false,"context_lines":[{"line_number":662,"context_line":"                             \u0027 %s.\u0027 % physical_network)"},{"line_number":663,"context_line":"        if bridge in bridge_mappings.itervalues():"},{"line_number":664,"context_line":"            raise ValueError(\u0027Duplicate bridge mapping to bridge: %s.\u0027"},{"line_number":665,"context_line":"                             % bridge)"},{"line_number":666,"context_line":"        bridge_mappings[physical_network] \u003d bridge"},{"line_number":667,"context_line":"    LOG.info(\"Bridge mappings: %s\" % bridge_mappings)"},{"line_number":668,"context_line":"    return bridge_mappings"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F8jM%3D","line":665,"in_reply_to":"AAAAMH%2F%2F8wU%3D","updated":"2012-11-14 20:26:53.000000000","message":"I\u0027ll reword them to be more clear.","commit_id":"01e498eaa97a21c76a1c6545c3dd7b4de3ad1067"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"6c4ead1e26274417485f399ef00eb919043008e7","unresolved":false,"context_lines":[{"line_number":664,"context_line":"            raise ValueError(\u0027Duplicate bridge mapping to bridge: %s.\u0027"},{"line_number":665,"context_line":"                             % bridge)"},{"line_number":666,"context_line":"        bridge_mappings[physical_network] \u003d bridge"},{"line_number":667,"context_line":"    LOG.info(\"Bridge mappings: %s\" % bridge_mappings)"},{"line_number":668,"context_line":"    return bridge_mappings"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F8wk%3D","line":667,"updated":"2012-11-14 17:31:34.000000000","message":"I\u0027m guessing this is identical logic to the linux-bridge parsing code?  Could these two share a library?  This might be a good first step toward figuring out if we should combine them, or just have two plugins that share a lot of library code.","commit_id":"01e498eaa97a21c76a1c6545c3dd7b4de3ad1067"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"9eb9b580b5beaec266304a3ca2574f4570f119d6","unresolved":false,"context_lines":[{"line_number":664,"context_line":"            raise ValueError(\u0027Duplicate bridge mapping to bridge: %s.\u0027"},{"line_number":665,"context_line":"                             % bridge)"},{"line_number":666,"context_line":"        bridge_mappings[physical_network] \u003d bridge"},{"line_number":667,"context_line":"    LOG.info(\"Bridge mappings: %s\" % bridge_mappings)"},{"line_number":668,"context_line":"    return bridge_mappings"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F494%3D","line":667,"in_reply_to":"AAAAMH%2F%2F8ig%3D","updated":"2012-11-16 21:10:11.000000000","message":"Done","commit_id":"01e498eaa97a21c76a1c6545c3dd7b4de3ad1067"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"9eb9b580b5beaec266304a3ca2574f4570f119d6","unresolved":false,"context_lines":[{"line_number":664,"context_line":"            raise ValueError(\u0027Duplicate bridge mapping to bridge: %s.\u0027"},{"line_number":665,"context_line":"                             % bridge)"},{"line_number":666,"context_line":"        bridge_mappings[physical_network] \u003d bridge"},{"line_number":667,"context_line":"    LOG.info(\"Bridge mappings: %s\" % bridge_mappings)"},{"line_number":668,"context_line":"    return bridge_mappings"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F8ig%3D","line":667,"in_reply_to":"AAAAMH%2F%2F8wk%3D","updated":"2012-11-14 20:26:53.000000000","message":"Yes. I\u0027ll re-factor both of these into a quantum.common.utils.parse_mappings function.","commit_id":"01e498eaa97a21c76a1c6545c3dd7b4de3ad1067"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":651,"context_line":"    try:"},{"line_number":652,"context_line":"        bridge_mappings \u003d q_utils.parse_mappings(config.OVS.bridge_mappings)"},{"line_number":653,"context_line":"    except ValueError as e:"},{"line_number":654,"context_line":"        raise ValueError(\u0027Parsing bridge_mappings failed: %s.\u0027 % e)"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"    kwargs \u003d dict("},{"line_number":657,"context_line":"        integ_br\u003dconfig.OVS.integration_bridge,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2F2So%3D","line":654,"updated":"2012-11-20 07:14:19.000000000","message":"Localized","commit_id":"9d139cd00d4ac67a06dd4ef9e5e64dc2357e95a2"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":651,"context_line":"    try:"},{"line_number":652,"context_line":"        bridge_mappings \u003d q_utils.parse_mappings(config.OVS.bridge_mappings)"},{"line_number":653,"context_line":"    except ValueError as e:"},{"line_number":654,"context_line":"        raise ValueError(\u0027Parsing bridge_mappings failed: %s.\u0027 % e)"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"    kwargs \u003d dict("},{"line_number":657,"context_line":"        integ_br\u003dconfig.OVS.integration_bridge,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2F15o%3D","line":654,"in_reply_to":"AAAAMH%2F%2F2So%3D","updated":"2012-11-20 15:41:04.000000000","message":"Done","commit_id":"9d139cd00d4ac67a06dd4ef9e5e64dc2357e95a2"}],"quantum/tests/unit/openvswitch/test_ovs_quantum_agent.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"change_message_id":"6c4ead1e26274417485f399ef00eb919043008e7","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                         {\u0027net\u0027: \u0027br\u0027, \u0027net1\u0027: \u0027br1\u0027})"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_parse_bridge_mappings_succeeds_for_no_mappings(self):"},{"line_number":54,"context_line":"        self.assertEqual(self.parse([\u0027\u0027]), {})"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class CreateAgentConfigMap(unittest.TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F8wQ%3D","line":54,"updated":"2012-11-14 17:31:34.000000000","message":"Same comment here, as this code could probably be shared.","commit_id":"01e498eaa97a21c76a1c6545c3dd7b4de3ad1067"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"9eb9b580b5beaec266304a3ca2574f4570f119d6","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                         {\u0027net\u0027: \u0027br\u0027, \u0027net1\u0027: \u0027br1\u0027})"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_parse_bridge_mappings_succeeds_for_no_mappings(self):"},{"line_number":54,"context_line":"        self.assertEqual(self.parse([\u0027\u0027]), {})"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class CreateAgentConfigMap(unittest.TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F49w%3D","line":54,"in_reply_to":"AAAAMH%2F%2F8iE%3D","updated":"2012-11-16 21:10:11.000000000","message":"Done","commit_id":"01e498eaa97a21c76a1c6545c3dd7b4de3ad1067"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"9eb9b580b5beaec266304a3ca2574f4570f119d6","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                         {\u0027net\u0027: \u0027br\u0027, \u0027net1\u0027: \u0027br1\u0027})"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_parse_bridge_mappings_succeeds_for_no_mappings(self):"},{"line_number":54,"context_line":"        self.assertEqual(self.parse([\u0027\u0027]), {})"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class CreateAgentConfigMap(unittest.TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F8iE%3D","line":54,"in_reply_to":"AAAAMH%2F%2F8wQ%3D","updated":"2012-11-14 20:26:53.000000000","message":"Yes, these will become unit tests for the new quantum.common.utils.parse_mappings function.","commit_id":"01e498eaa97a21c76a1c6545c3dd7b4de3ad1067"}]}
