)]}'
{"etc/quantum/plugins/midonet/midonet.ini":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45670dc0104784e3539033409fac85f44bd11992","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[midonet]"},{"line_number":2,"context_line":"midonet_uri \u003d http://localhost:8080/midonet-api"},{"line_number":3,"context_line":"username \u003d admin"},{"line_number":4,"context_line":"password \u003d passw0rd"}],"source_content_type":"text/x-properties","patch_set":1,"id":"AAAAM3%2F%2B9KI%3D","line":1,"updated":"2013-02-13 10:13:50.000000000","message":"In general the default values in the ini files are commented out. Please also provide an explanation for each value","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"}],"quantum/plugins/midonet/__init__.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45670dc0104784e3539033409fac85f44bd11992","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright (C) 2012 Midokura Japan K.K."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9KE%3D","line":3,"updated":"2013-02-13 10:13:50.000000000","message":"2013","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"}],"quantum/plugins/midonet/config.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":"#"},{"line_number":19,"context_line":"# @author: Tomoe Sugihara, Midokura Japan KK"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantum.openstack.common import cfg"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"midonet_opts \u003d ["},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027midonet_uri\u0027, default\u003d\u0027http://localhost:8080/midonet-api\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B0sA%3D","line":21,"updated":"2013-02-18 15:04:16.000000000","message":"please use: from oslo.config import cfg","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":"#"},{"line_number":19,"context_line":"# @author: Tomoe Sugihara, Midokura Japan KK"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantum.openstack.common import cfg"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"midonet_opts \u003d ["},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027midonet_uri\u0027, default\u003d\u0027http://localhost:8080/midonet-api\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B0AY%3D","line":21,"in_reply_to":"AAAAM3%2F%2B0sA%3D","updated":"2013-02-18 19:02:48.000000000","message":"Done","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt(\u0027metadata_router_id\u0027,"},{"line_number":38,"context_line":"               default\u003dNone,"},{"line_number":39,"context_line":"               help\u003d_(\u0027Virtual metadata router ID.\u0027)),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027mode\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027dev\u0027,"},{"line_number":42,"context_line":"               help\u003d_(\u0027For development mode.\u0027))"},{"line_number":43,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1LQ%3D","line":40,"updated":"2013-02-18 09:49:44.000000000","message":"This option is not listed in midonet.ini. Is it intended?","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt(\u0027metadata_router_id\u0027,"},{"line_number":38,"context_line":"               default\u003dNone,"},{"line_number":39,"context_line":"               help\u003d_(\u0027Virtual metadata router ID.\u0027)),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027mode\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027dev\u0027,"},{"line_number":42,"context_line":"               help\u003d_(\u0027For development mode.\u0027))"},{"line_number":43,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1Hw%3D","line":40,"in_reply_to":"AAAAM3%2F%2B1LQ%3D","updated":"2013-02-18 10:29:12.000000000","message":"Yes. This is internal use.","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":39,"context_line":"               help\u003d_(\u0027Virtual metadata router ID.\u0027)),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027mode\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027dev\u0027,"},{"line_number":42,"context_line":"               help\u003d_(\u0027For development mode.\u0027))"},{"line_number":43,"context_line":"]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1LM%3D","line":42,"updated":"2013-02-18 09:49:44.000000000","message":"This description looks confusing. \"Operation mode\" or similar description is better.","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":39,"context_line":"               help\u003d_(\u0027Virtual metadata router ID.\u0027)),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027mode\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027dev\u0027,"},{"line_number":42,"context_line":"               help\u003d_(\u0027For development mode.\u0027))"},{"line_number":43,"context_line":"]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1GE%3D","line":42,"in_reply_to":"AAAAM3%2F%2B1LM%3D","updated":"2013-02-18 10:29:12.000000000","message":"Makes sense. Will do.","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":"               help\u003d_(\u0027MidoNet API server URI.\u0027)),"},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027username\u0027, default\u003d\u0027admin\u0027,"},{"line_number":27,"context_line":"               help\u003d_(\u0027MidoNet admin username.\u0027)),"},{"line_number":28,"context_line":"    cfg.StrOpt(\u0027password\u0027, default\u003d\u0027passw0rd\u0027,"},{"line_number":29,"context_line":"               help\u003d_(\u0027MidoNet admin password.\u0027)),"},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027project_id\u0027,"},{"line_number":31,"context_line":"               default\u003d\u002777777777-7777-7777-7777-777777777777\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By3U%3D","line":28,"updated":"2013-02-19 02:22:10.000000000","message":"add secret\u003dTrue to prevent the password from appearing in the logs.","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":"               help\u003d_(\u0027MidoNet API server URI.\u0027)),"},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027username\u0027, default\u003d\u0027admin\u0027,"},{"line_number":27,"context_line":"               help\u003d_(\u0027MidoNet admin username.\u0027)),"},{"line_number":28,"context_line":"    cfg.StrOpt(\u0027password\u0027, default\u003d\u0027passw0rd\u0027,"},{"line_number":29,"context_line":"               help\u003d_(\u0027MidoNet admin password.\u0027)),"},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027project_id\u0027,"},{"line_number":31,"context_line":"               default\u003d\u002777777777-7777-7777-7777-777777777777\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Byr8%3D","line":28,"in_reply_to":"AAAAM3%2F%2By3U%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":"#"},{"line_number":19,"context_line":"# @author: Tomoe Sugihara, Midokura Japan KK"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantum.openstack.common import cfg"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"midonet_opts \u003d ["},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027midonet_uri\u0027, default\u003d\u0027http://localhost:8080/midonet-api\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2ByYU%3D","line":21,"updated":"2013-02-19 08:09:14.000000000","message":"Please use \"from oslo.config import cfg\"\n\nThe \"from quantum.openstack.common import cfg\" is deprecated.","commit_id":"620b867388b6a831ca3152eda72d71e204fcf2c7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":29,"context_line":"               secret\u003dTrue,"},{"line_number":30,"context_line":"               help\u003d_(\u0027MidoNet admin password.\u0027)),"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027project_id\u0027,"},{"line_number":32,"context_line":"               default\u003d\u002777777777-7777-7777-7777-777777777777\u0027,"},{"line_number":33,"context_line":"               help\u003d_(\u0027ID of the project that MidoNet admin user\u0027"},{"line_number":34,"context_line":"                      \u0027belongs to.\u0027)),"},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027provider_router_id\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxOA%3D","line":32,"updated":"2013-02-19 17:23:57.000000000","message":"Do you need a default here?","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":29,"context_line":"               secret\u003dTrue,"},{"line_number":30,"context_line":"               help\u003d_(\u0027MidoNet admin password.\u0027)),"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027project_id\u0027,"},{"line_number":32,"context_line":"               default\u003d\u002777777777-7777-7777-7777-777777777777\u0027,"},{"line_number":33,"context_line":"               help\u003d_(\u0027ID of the project that MidoNet admin user\u0027"},{"line_number":34,"context_line":"                      \u0027belongs to.\u0027)),"},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027provider_router_id\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BwC4%3D","line":32,"in_reply_to":"AAAAM3%2F%2BxOA%3D","updated":"2013-02-20 00:28:28.000000000","message":"yes, we use this mainly for dev.","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"}],"quantum/plugins/midonet/midonet_lib.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45670dc0104784e3539033409fac85f44bd11992","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright (C) 2012 Midokura Japan K.K."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9KA%3D","line":3,"updated":"2013-02-13 10:13:50.000000000","message":"2013","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"PREFIX \u003d \u0027OS_SG_\u0027"},{"line_number":29,"context_line":"SUFFIX_IN \u003d \u0027_IN\u0027"},{"line_number":30,"context_line":"SUFFIX_OUT \u003d \u0027_OUT\u0027"},{"line_number":31,"context_line":"OS_ROUTER_IN_CHAIN_NAME_FORMAT \u003d \u0027OS_ROUTER_IN_%s\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1K8%3D","line":28,"updated":"2013-02-18 09:49:44.000000000","message":"Adding SG_ prefix to L.28-30 is easier to understand. This file is not specific to security group.","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"PREFIX \u003d \u0027OS_SG_\u0027"},{"line_number":29,"context_line":"SUFFIX_IN \u003d \u0027_IN\u0027"},{"line_number":30,"context_line":"SUFFIX_OUT \u003d \u0027_OUT\u0027"},{"line_number":31,"context_line":"OS_ROUTER_IN_CHAIN_NAME_FORMAT \u003d \u0027OS_ROUTER_IN_%s\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B084%3D","line":28,"in_reply_to":"AAAAM3%2F%2B1EA%3D","updated":"2013-02-18 12:19:34.000000000","message":"This is just a suggestion. Either will do.","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"PREFIX \u003d \u0027OS_SG_\u0027"},{"line_number":29,"context_line":"SUFFIX_IN \u003d \u0027_IN\u0027"},{"line_number":30,"context_line":"SUFFIX_OUT \u003d \u0027_OUT\u0027"},{"line_number":31,"context_line":"OS_ROUTER_IN_CHAIN_NAME_FORMAT \u003d \u0027OS_ROUTER_IN_%s\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1EA%3D","line":28,"in_reply_to":"AAAAM3%2F%2B1FQ%3D","updated":"2013-02-18 10:39:23.000000000","message":"Actually, I take it back. This is not for SG, but used by our pot group as well. So, I\u0027d like to keep it. Does it make sense?","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"PREFIX \u003d \u0027OS_SG_\u0027"},{"line_number":29,"context_line":"SUFFIX_IN \u003d \u0027_IN\u0027"},{"line_number":30,"context_line":"SUFFIX_OUT \u003d \u0027_OUT\u0027"},{"line_number":31,"context_line":"OS_ROUTER_IN_CHAIN_NAME_FORMAT \u003d \u0027OS_ROUTER_IN_%s\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1FQ%3D","line":28,"in_reply_to":"AAAAM3%2F%2B1K8%3D","updated":"2013-02-18 10:29:12.000000000","message":"Will do.","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        LOG.debug(_(\"ChainManager.create_for_sg called: \""},{"line_number":63,"context_line":"                    \"tenant_id\u003d%(tenant_id)s sg_id\u003d%(sg_id)s \""},{"line_number":64,"context_line":"                    \"sg_name\u003d%(sg_name)s \"), locals())"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        cnames \u003d chain_names(sg_id, sg_name)"},{"line_number":67,"context_line":"        self.mido_api.add_chain().tenant_id(tenant_id).name("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1Kk%3D","line":64,"updated":"2013-02-18 09:49:44.000000000","message":"Using locals() is deprecated now. dict style is recommended. Please see the recent discussion on dev ML.\n\nThis also applies to locals() throughout the codes.","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        LOG.debug(_(\"ChainManager.create_for_sg called: \""},{"line_number":63,"context_line":"                    \"tenant_id\u003d%(tenant_id)s sg_id\u003d%(sg_id)s \""},{"line_number":64,"context_line":"                    \"sg_name\u003d%(sg_name)s \"), locals())"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        cnames \u003d chain_names(sg_id, sg_name)"},{"line_number":67,"context_line":"        self.mido_api.add_chain().tenant_id(tenant_id).name("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1EU%3D","line":64,"in_reply_to":"AAAAM3%2F%2B1Kk%3D","updated":"2013-02-18 10:29:12.000000000","message":"Ah, yes. Sorry, I missed this though I got this comment last time.","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"}],"quantum/plugins/midonet/plugin.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45670dc0104784e3539033409fac85f44bd11992","unresolved":false,"context_lines":[{"line_number":21,"context_line":"# @author: Ryu Ishimoto Midokura Japan KK"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import ConfigParser"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from midonetclient import api"},{"line_number":27,"context_line":"from webob import exc as w_exc"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9J4%3D","line":24,"updated":"2013-02-13 10:13:50.000000000","message":"why do we need this? why not the common cfg module?","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":32,"context_line":"from quantum.db import l3_db"},{"line_number":33,"context_line":"from quantum.db import models_v2"},{"line_number":34,"context_line":"from quantum.db import db_base_plugin_v2"},{"line_number":35,"context_line":"from quantum.db import securitygroups_db"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from quantum.extensions import securitygroup as ext_sg"},{"line_number":38,"context_line":"from quantum.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9Q8%3D","line":35,"updated":"2013-02-13 13:15:48.000000000","message":"L.31-35 needs to be alphabetical order.","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":33,"context_line":"from quantum.db import models_v2"},{"line_number":34,"context_line":"from quantum.db import db_base_plugin_v2"},{"line_number":35,"context_line":"from quantum.db import securitygroups_db"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from quantum.extensions import securitygroup as ext_sg"},{"line_number":38,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":39,"context_line":"from quantum.plugins.midonet import midonet_lib"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9Q4%3D","line":36,"updated":"2013-02-13 13:15:48.000000000","message":"Remove the blank line here","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45670dc0104784e3539033409fac85f44bd11992","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                      l3_db.L3_NAT_db_mixin,"},{"line_number":60,"context_line":"                      securitygroups_db.SecurityGroupDbMixin):"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    supported_extension_aliases \u003d [\u0027router\u0027, \u0027security-group\u0027]"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def __init__(self):"},{"line_number":65,"context_line":"        # Read plugin config file"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9Jw%3D","line":62,"updated":"2013-02-13 10:13:50.000000000","message":"please not that for latest nova changes you may need the binding extension","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45670dc0104784e3539033409fac85f44bd11992","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def __init__(self):"},{"line_number":65,"context_line":"        # Read plugin config file"},{"line_number":66,"context_line":"        config \u003d ConfigParser.RawConfigParser()"},{"line_number":67,"context_line":"        config_file \u003d find_config_file({\"plugin\": \"midonet\"}, \"midonet.ini\")"},{"line_number":68,"context_line":"        if not config_file:"},{"line_number":69,"context_line":"            raise Exception(_(\"Configuration file midonet.ini doesn\u0027t exist\"))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9Js%3D","line":66,"updated":"2013-02-13 10:13:50.000000000","message":"please use cfg module","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def __init__(self):"},{"line_number":65,"context_line":"        # Read plugin config file"},{"line_number":66,"context_line":"        config \u003d ConfigParser.RawConfigParser()"},{"line_number":67,"context_line":"        config_file \u003d find_config_file({\"plugin\": \"midonet\"}, \"midonet.ini\")"},{"line_number":68,"context_line":"        if not config_file:"},{"line_number":69,"context_line":"            raise Exception(_(\"Configuration file midonet.ini doesn\u0027t exist\"))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B89c%3D","line":66,"in_reply_to":"AAAAM3%2F%2B9Js%3D","updated":"2013-02-13 13:15:48.000000000","message":"Now quantum service takes multiple config-file options \nquantum server is usually run with \"--config-file /etc/quantum.conf --config-file \u003cplugin.ini\u003e\". We don\u0027t need to analyze plugin specific configuration here.","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":132,"context_line":"            sn_entry \u003d super(MidonetPluginV2, self).create_subnet(context,"},{"line_number":133,"context_line":"                                                                  subnet)"},{"line_number":134,"context_line":"            try:"},{"line_number":135,"context_line":"                bridge \u003d self.mido_api.get_bridge(sn_entry[\u0027network_id\u0027])"},{"line_number":136,"context_line":"            except w_exc.HTTPNotFound:"},{"line_number":137,"context_line":"                raise MidonetResourceNotFound(resource_type\u003d\u0027Bridge\u0027,"},{"line_number":138,"context_line":"                                              id\u003dsn_entry[\u0027network_id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9QQ%3D","line":135,"updated":"2013-02-13 13:15:48.000000000","message":"db session contains an access to the external controller. It leads to a long db transaction. it should be avoided. The similar bug is reported to NVP plugin.","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45670dc0104784e3539033409fac85f44bd11992","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            bridge.add_dhcp_subnet().default_gateway(gateway_ip).subnet_prefix("},{"line_number":143,"context_line":"                network_address).subnet_length(prefix).create()"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"            # If the network is externel, link the bridge to MidoNet provider"},{"line_number":146,"context_line":"            # router"},{"line_number":147,"context_line":"            self._extend_network_dict_l3(context, net)"},{"line_number":148,"context_line":"            if net[\u0027router:external\u0027]:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9Jc%3D","line":145,"updated":"2013-02-13 10:13:50.000000000","message":"typo externel  \u003d\u003e external","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45670dc0104784e3539033409fac85f44bd11992","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        data stored in MidoNet."},{"line_number":179,"context_line":"        \"\"\""},{"line_number":180,"context_line":"        LOG.debug(_(\"MidonetPluginV2.get_subnet called: id\u003d%(id)s \""},{"line_number":181,"context_line":"                    \"fields\u003d%(fields)s\"), locals())"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        qsubnet \u003d super(MidonetPluginV2, self).get_subnet(context, id)"},{"line_number":184,"context_line":"        bridge_id \u003d qsubnet[\u0027network_id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9JY%3D","line":181,"updated":"2013-02-13 10:13:50.000000000","message":"please refrain from locals. in understand that this is now taboo","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45670dc0104784e3539033409fac85f44bd11992","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        Create a new Quantum network and its corresponding MidoNet bridge."},{"line_number":291,"context_line":"        \"\"\""},{"line_number":292,"context_line":"        LOG.debug(_(\"MidonetPluginV2.delete_subnet called: id\u003d%s\"), id)"},{"line_number":293,"context_line":"        LOG.debug(_(\u0027MidonetPluginV2.create_network called: network\u003d%r\u0027),"},{"line_number":294,"context_line":"                  network)"},{"line_number":295,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9JM%3D","line":292,"updated":"2013-02-13 10:13:50.000000000","message":"invalid log message","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":5950,"name":"Ilya Shakhat","email":"shakhat@gmail.com","username":"shakhat"},"change_message_id":"0c2402a5147e47f5ef14a5574d8de9a7a32d7775","unresolved":false,"context_lines":[{"line_number":604,"context_line":"            assert len(qports) \u003d\u003d 1"},{"line_number":605,"context_line":"            qport \u003d qports[0]"},{"line_number":606,"context_line":"            snat_ip \u003d qport[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"},{"line_number":607,"context_line":"            qport[\u0027network_id\u0027]"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        session \u003d context.session"},{"line_number":610,"context_line":"        with session.begin(subtransactions\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9HU%3D","line":607,"updated":"2013-02-13 10:50:43.000000000","message":"seems like this statement have no effect","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":31,"context_line":"from quantum.db import models_v2"},{"line_number":32,"context_line":"from quantum.db import securitygroups_db"},{"line_number":33,"context_line":"from quantum.extensions import securitygroup as ext_sg"},{"line_number":34,"context_line":"from quantum.openstack.common import cfg"},{"line_number":35,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":36,"context_line":"from quantum.plugins.midonet import config"},{"line_number":37,"context_line":"from quantum.plugins.midonet import midonet_lib"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B0r0%3D","line":34,"updated":"2013-02-18 15:04:16.000000000","message":"please use: from oslo.config import cfg\nthis import should be after line 23","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":95,"context_line":"        self.pg_manager \u003d midonet_lib.PortGroupManager(self.mido_api)"},{"line_number":96,"context_line":"        self.rule_manager \u003d midonet_lib.RuleManager(self.mido_api)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        db.configure_db()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def create_subnet(self, context, subnet):"},{"line_number":101,"context_line":"        \"\"\"Create Quantum subnet."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B0rg%3D","line":98,"updated":"2013-02-18 15:04:16.000000000","message":"The ini file has a missing DATABASE section. This is usually managed with each plugin.","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":426,"context_line":"            self._extend_port_dict_security_group(context, port_db_entry)"},{"line_number":427,"context_line":"            if is_compute_interface:"},{"line_number":428,"context_line":"                # Create a DHCP entry if needed."},{"line_number":429,"context_line":"                if len(port_db_entry[\u0027fixed_ips\u0027]) \u003e 0 and \u0027ip_address\u0027 in \\"},{"line_number":430,"context_line":"                        port_db_entry[\u0027fixed_ips\u0027][0]:"},{"line_number":431,"context_line":"                    # get ip and mac from DB record, assuming one IP address"},{"line_number":432,"context_line":"                    # at most since we only support one subnet per network now."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By2k%3D","line":429,"updated":"2013-02-19 02:22:10.000000000","message":"This can be simplified:\n\nif \u0027ip_address\u0027 in (port_db_entry[\u0027fixed_ips\u0027] or [{}])[0]:","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":426,"context_line":"            self._extend_port_dict_security_group(context, port_db_entry)"},{"line_number":427,"context_line":"            if is_compute_interface:"},{"line_number":428,"context_line":"                # Create a DHCP entry if needed."},{"line_number":429,"context_line":"                if len(port_db_entry[\u0027fixed_ips\u0027]) \u003e 0 and \u0027ip_address\u0027 in \\"},{"line_number":430,"context_line":"                        port_db_entry[\u0027fixed_ips\u0027][0]:"},{"line_number":431,"context_line":"                    # get ip and mac from DB record, assuming one IP address"},{"line_number":432,"context_line":"                    # at most since we only support one subnet per network now."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2ByrQ%3D","line":429,"in_reply_to":"AAAAM3%2F%2By2k%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":434,"context_line":"                    mac \u003d port_db_entry[\u0027mac_address\u0027]"},{"line_number":435,"context_line":"                    # create dhcp host entry under the bridge."},{"line_number":436,"context_line":"                    dhcp_subnets \u003d bridge.get_dhcp_subnets()"},{"line_number":437,"context_line":"                    if len(dhcp_subnets) \u003e 0:"},{"line_number":438,"context_line":"                        dhcp_subnets[0].add_dhcp_host().ip_addr("},{"line_number":439,"context_line":"                            fixed_ip).mac_addr(mac).create()"},{"line_number":440,"context_line":"        LOG.debug(_(\"MidonetPluginV2.create_port exiting: port_db_entry\u003d%r\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By2g%3D","line":437,"updated":"2013-02-19 02:22:10.000000000","message":"if dhcp_subnets:","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":434,"context_line":"                    mac \u003d port_db_entry[\u0027mac_address\u0027]"},{"line_number":435,"context_line":"                    # create dhcp host entry under the bridge."},{"line_number":436,"context_line":"                    dhcp_subnets \u003d bridge.get_dhcp_subnets()"},{"line_number":437,"context_line":"                    if len(dhcp_subnets) \u003e 0:"},{"line_number":438,"context_line":"                        dhcp_subnets[0].add_dhcp_host().ip_addr("},{"line_number":439,"context_line":"                            fixed_ip).mac_addr(mac).create()"},{"line_number":440,"context_line":"        LOG.debug(_(\"MidonetPluginV2.create_port exiting: port_db_entry\u003d%r\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2ByrM%3D","line":437,"in_reply_to":"AAAAM3%2F%2By2g%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":476,"context_line":"                                                                filters,"},{"line_number":477,"context_line":"                                                                fields)"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"        if len(ports_db_entry) \u003e 0:"},{"line_number":480,"context_line":"            try:"},{"line_number":481,"context_line":"                for port in ports_db_entry:"},{"line_number":482,"context_line":"                    self.mido_api.get_port(port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By2Y%3D","line":479,"updated":"2013-02-19 02:22:10.000000000","message":"if ports_db_entry:","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":476,"context_line":"                                                                filters,"},{"line_number":477,"context_line":"                                                                fields)"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"        if len(ports_db_entry) \u003e 0:"},{"line_number":480,"context_line":"            try:"},{"line_number":481,"context_line":"                for port in ports_db_entry:"},{"line_number":482,"context_line":"                    self.mido_api.get_port(port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2ByrI%3D","line":479,"in_reply_to":"AAAAM3%2F%2By2Y%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":502,"context_line":"                                                                  id, None)"},{"line_number":503,"context_line":"            bridge \u003d self.mido_api.get_bridge(port_db_entry[\u0027network_id\u0027])"},{"line_number":504,"context_line":"            # Clean up dhcp host entry if needed."},{"line_number":505,"context_line":"            if len(port_db_entry[\u0027fixed_ips\u0027]) \u003e 0 and \u0027ip_address\u0027 in \\"},{"line_number":506,"context_line":"                    port_db_entry[\u0027fixed_ips\u0027][0]:"},{"line_number":507,"context_line":"                # get ip and mac from DB record."},{"line_number":508,"context_line":"                ip \u003d port_db_entry[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By2s%3D","line":505,"updated":"2013-02-19 02:22:10.000000000","message":"This can be simplified:\n\nif \u0027ip_address\u0027 in (port_db_entry[\u0027fixed_ips\u0027] or [{}])[0]:","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":502,"context_line":"                                                                  id, None)"},{"line_number":503,"context_line":"            bridge \u003d self.mido_api.get_bridge(port_db_entry[\u0027network_id\u0027])"},{"line_number":504,"context_line":"            # Clean up dhcp host entry if needed."},{"line_number":505,"context_line":"            if len(port_db_entry[\u0027fixed_ips\u0027]) \u003e 0 and \u0027ip_address\u0027 in \\"},{"line_number":506,"context_line":"                    port_db_entry[\u0027fixed_ips\u0027][0]:"},{"line_number":507,"context_line":"                # get ip and mac from DB record."},{"line_number":508,"context_line":"                ip \u003d port_db_entry[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2ByrA%3D","line":505,"in_reply_to":"AAAAM3%2F%2By2s%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":510,"context_line":""},{"line_number":511,"context_line":"                # create dhcp host entry under the bridge."},{"line_number":512,"context_line":"                dhcp_subnets \u003d bridge.get_dhcp_subnets()"},{"line_number":513,"context_line":"                if len(dhcp_subnets) \u003e 0:"},{"line_number":514,"context_line":"                    for dh in dhcp_subnets[0].get_dhcp_hosts():"},{"line_number":515,"context_line":"                        if dh.get_mac_addr() \u003d\u003d mac and dh.get_ip_addr() \u003d\u003d ip:"},{"line_number":516,"context_line":"                            dh.delete()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By2o%3D","line":513,"updated":"2013-02-19 02:22:10.000000000","message":"if dhcp_subnets:","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":510,"context_line":""},{"line_number":511,"context_line":"                # create dhcp host entry under the bridge."},{"line_number":512,"context_line":"                dhcp_subnets \u003d bridge.get_dhcp_subnets()"},{"line_number":513,"context_line":"                if len(dhcp_subnets) \u003e 0:"},{"line_number":514,"context_line":"                    for dh in dhcp_subnets[0].get_dhcp_hosts():"},{"line_number":515,"context_line":"                        if dh.get_mac_addr() \u003d\u003d mac and dh.get_ip_addr() \u003d\u003d ip:"},{"line_number":516,"context_line":"                            dh.delete()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2ByrE%3D","line":513,"in_reply_to":"AAAAM3%2F%2By2o%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":57,"context_line":"                      l3_db.L3_NAT_db_mixin,"},{"line_number":58,"context_line":"                      securitygroups_db.SecurityGroupDbMixin):"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    supported_extension_aliases \u003d [\u0027router\u0027, \u0027security-group\u0027]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def __init__(self):"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxMU%3D","line":60,"updated":"2013-02-19 17:23:57.000000000","message":"please not that with the current nova vif plugin for libvirt this wil not work without the \u0027binding\u0027 extension.","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":57,"context_line":"                      l3_db.L3_NAT_db_mixin,"},{"line_number":58,"context_line":"                      securitygroups_db.SecurityGroupDbMixin):"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    supported_extension_aliases \u003d [\u0027router\u0027, \u0027security-group\u0027]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def __init__(self):"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BwBs%3D","line":60,"in_reply_to":"AAAAM3%2F%2BxMU%3D","updated":"2013-02-20 00:28:28.000000000","message":"Noted. Thanks for the heads up again. Unfortunately, current upstream Nova\u0027s vif driver doesn\u0027t work for us and we need our custom vif driver atm as we described here: https://wiki.openstack.org/wiki/Spec-QuantumMidoNetPlugin\n\nWe\u0027ll start a discussion in the community for this issue separately.","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":282,"context_line":"                  network)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        if network[\u0027network\u0027][\u0027admin_state_up\u0027] is False:"},{"line_number":285,"context_line":"            LOG.warning(_(\u0027Ignoring admin_state_up\u003dFalse for network\u003d%r\u0027),"},{"line_number":286,"context_line":"                        network)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        tenant_id \u003d self._get_tenant_id_for_create(context, network[\u0027network\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxL8%3D","line":285,"updated":"2013-02-19 17:23:57.000000000","message":"do you want to override or have an exception here. this will be maintained in the database and could be confusing for a user - similar to what you have on 319","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":282,"context_line":"                  network)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        if network[\u0027network\u0027][\u0027admin_state_up\u0027] is False:"},{"line_number":285,"context_line":"            LOG.warning(_(\u0027Ignoring admin_state_up\u003dFalse for network\u003d%r\u0027),"},{"line_number":286,"context_line":"                        network)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        tenant_id \u003d self._get_tenant_id_for_create(context, network[\u0027network\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BwAQ%3D","line":285,"in_reply_to":"AAAAM3%2F%2BxL8%3D","updated":"2013-02-20 00:28:28.000000000","message":"This was similar behavior to some other plugins, but changed to override it as your idea makes more sense.","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":383,"context_line":"        self.mido_api.get_bridge(id).delete()"},{"line_number":384,"context_line":"        try:"},{"line_number":385,"context_line":"            super(MidonetPluginV2, self).delete_network(context, id)"},{"line_number":386,"context_line":"        except Exception as e:"},{"line_number":387,"context_line":"            LOG.error(_(\u0027Failed to delete quantum db, while Midonet bridge\u003d%r\u0027"},{"line_number":388,"context_line":"                      \u0027had been deleted\u0027), id)"},{"line_number":389,"context_line":"            raise e"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxLU%3D","line":386,"updated":"2013-02-19 17:23:57.000000000","message":"e is not used so you can remove it i guess","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":383,"context_line":"        self.mido_api.get_bridge(id).delete()"},{"line_number":384,"context_line":"        try:"},{"line_number":385,"context_line":"            super(MidonetPluginV2, self).delete_network(context, id)"},{"line_number":386,"context_line":"        except Exception as e:"},{"line_number":387,"context_line":"            LOG.error(_(\u0027Failed to delete quantum db, while Midonet bridge\u003d%r\u0027"},{"line_number":388,"context_line":"                      \u0027had been deleted\u0027), id)"},{"line_number":389,"context_line":"            raise e"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BwAM%3D","line":386,"in_reply_to":"AAAAM3%2F%2BxLU%3D","updated":"2013-02-20 00:28:28.000000000","message":"Actually e was used, but removed.","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":388,"context_line":"                      \u0027had been deleted\u0027), id)"},{"line_number":389,"context_line":"            raise e"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"    def create_port(self, context, port):"},{"line_number":392,"context_line":"        \"\"\"Create a L2 port in Quantum/MidoNet.\"\"\""},{"line_number":393,"context_line":"        LOG.debug(_(\"MidonetPluginV2.create_port called: port\u003d%r\"), port)"},{"line_number":394,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxJI%3D","line":391,"updated":"2013-02-19 17:23:57.000000000","message":"do you support admin_state_up?","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":388,"context_line":"                      \u0027had been deleted\u0027), id)"},{"line_number":389,"context_line":"            raise e"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"    def create_port(self, context, port):"},{"line_number":392,"context_line":"        \"\"\"Create a L2 port in Quantum/MidoNet.\"\"\""},{"line_number":393,"context_line":"        LOG.debug(_(\"MidonetPluginV2.create_port called: port\u003d%r\"), port)"},{"line_number":394,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2Bv%2FM%3D","line":391,"in_reply_to":"AAAAM3%2F%2BxJI%3D","updated":"2013-02-20 00:28:28.000000000","message":"Currently no. I\u0027d like to add more careful handling later on when we support the state.","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":408,"context_line":"            bridge_port \u003d bridge.add_exterior_port().create()"},{"line_number":409,"context_line":"        elif device_owner \u003d\u003d l3_db.DEVICE_OWNER_ROUTER_INTF:"},{"line_number":410,"context_line":"            bridge_port \u003d bridge.add_interior_port().create()"},{"line_number":411,"context_line":"        elif device_owner \u003d\u003d l3_db.DEVICE_OWNER_ROUTER_GW or \\"},{"line_number":412,"context_line":"                device_owner \u003d\u003d l3_db.DEVICE_OWNER_FLOATINGIP:"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"            # This is a dummy port to make l3_db happy."}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxJA%3D","line":411,"updated":"2013-02-19 17:23:57.000000000","message":"please do elif (device_owner \u003d\u003d l3_db.DEVICE_OWNER_ROUTER_GW or \n                          device_owner \u003d\u003d l3_db.DEVICE_OWNER_FLOATINGIP):","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":408,"context_line":"            bridge_port \u003d bridge.add_exterior_port().create()"},{"line_number":409,"context_line":"        elif device_owner \u003d\u003d l3_db.DEVICE_OWNER_ROUTER_INTF:"},{"line_number":410,"context_line":"            bridge_port \u003d bridge.add_interior_port().create()"},{"line_number":411,"context_line":"        elif device_owner \u003d\u003d l3_db.DEVICE_OWNER_ROUTER_GW or \\"},{"line_number":412,"context_line":"                device_owner \u003d\u003d l3_db.DEVICE_OWNER_FLOATINGIP:"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"            # This is a dummy port to make l3_db happy."}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2Bv%2F8%3D","line":411,"in_reply_to":"AAAAM3%2F%2BxJA%3D","updated":"2013-02-20 00:28:28.000000000","message":"Done","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":441,"context_line":"        return port_db_entry"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"    def update_port(self, context, id, port):"},{"line_number":444,"context_line":"        \"\"\"Update port.\"\"\""},{"line_number":445,"context_line":"        LOG.debug(_(\"MidonetPluginV2.update_port called: id\u003d%(id)s \""},{"line_number":446,"context_line":"                    \"port\u003d%(port)r\"), {\u0027id\u0027: id, \u0027port\u0027: port})"},{"line_number":447,"context_line":"        return super(MidonetPluginV2, self).update_port(context, id, port)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxKo%3D","line":444,"updated":"2013-02-19 17:23:57.000000000","message":"do you need to implement this method or was this just for debugging","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":441,"context_line":"        return port_db_entry"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"    def update_port(self, context, id, port):"},{"line_number":444,"context_line":"        \"\"\"Update port.\"\"\""},{"line_number":445,"context_line":"        LOG.debug(_(\"MidonetPluginV2.update_port called: id\u003d%(id)s \""},{"line_number":446,"context_line":"                    \"port\u003d%(port)r\"), {\u0027id\u0027: id, \u0027port\u0027: port})"},{"line_number":447,"context_line":"        return super(MidonetPluginV2, self).update_port(context, id, port)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2Bv%2FY%3D","line":444,"in_reply_to":"AAAAM3%2F%2BxKo%3D","updated":"2013-02-20 00:28:28.000000000","message":"We first thought we would implement but didn\u0027t, but leaving it for debugging.","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        if router[\u0027router\u0027][\u0027admin_state_up\u0027] is False:"},{"line_number":526,"context_line":"            LOG.warning(_(\u0027Ignoreing admin_state_up\u003dFalse for router\u003d%r\u0027),"},{"line_number":527,"context_line":"                        router)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        tenant_id \u003d self._get_tenant_id_for_create(context, router[\u0027router\u0027])"},{"line_number":530,"context_line":"        session \u003d context.session"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxKM%3D","line":527,"updated":"2013-02-19 17:23:57.000000000","message":"mabe have an exception like 319","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        if router[\u0027router\u0027][\u0027admin_state_up\u0027] is False:"},{"line_number":526,"context_line":"            LOG.warning(_(\u0027Ignoreing admin_state_up\u003dFalse for router\u003d%r\u0027),"},{"line_number":527,"context_line":"                        router)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        tenant_id \u003d self._get_tenant_id_for_create(context, router[\u0027router\u0027])"},{"line_number":530,"context_line":"        session \u003d context.session"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2Bv%2FA%3D","line":527,"in_reply_to":"AAAAM3%2F%2BxKM%3D","updated":"2013-02-20 00:28:28.000000000","message":"Done with overriding it.","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":582,"context_line":"        # figure out which operation it is in"},{"line_number":583,"context_line":"        if \u0027external_gateway_info\u0027 in router["},{"line_number":584,"context_line":"            \u0027router\u0027] and \u0027network_id\u0027 in router[\u0027router\u0027]["},{"line_number":585,"context_line":"                \u0027external_gateway_info\u0027]:"},{"line_number":586,"context_line":"            op_gateway_set \u003d True"},{"line_number":587,"context_line":"        elif \u0027external_gateway_info\u0027 in router["},{"line_number":588,"context_line":"            \u0027router\u0027] and router[\u0027router\u0027][\u0027external_gateway_info\u0027] \u003d\u003d {}:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxEE%3D","line":585,"updated":"2013-02-19 17:47:55.000000000","message":"Using () makes it easier to read the condition.\nIf (\u0027external_gateway_info\u0027 in router[\u0027router\u0027] and\n    \u0027network\u0027 ....):","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":582,"context_line":"        # figure out which operation it is in"},{"line_number":583,"context_line":"        if \u0027external_gateway_info\u0027 in router["},{"line_number":584,"context_line":"            \u0027router\u0027] and \u0027network_id\u0027 in router[\u0027router\u0027]["},{"line_number":585,"context_line":"                \u0027external_gateway_info\u0027]:"},{"line_number":586,"context_line":"            op_gateway_set \u003d True"},{"line_number":587,"context_line":"        elif \u0027external_gateway_info\u0027 in router["},{"line_number":588,"context_line":"            \u0027router\u0027] and router[\u0027router\u0027][\u0027external_gateway_info\u0027] \u003d\u003d {}:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2Bv%2B0%3D","line":585,"in_reply_to":"AAAAM3%2F%2BxEE%3D","updated":"2013-02-20 00:28:28.000000000","message":"Done","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":585,"context_line":"                \u0027external_gateway_info\u0027]:"},{"line_number":586,"context_line":"            op_gateway_set \u003d True"},{"line_number":587,"context_line":"        elif \u0027external_gateway_info\u0027 in router["},{"line_number":588,"context_line":"            \u0027router\u0027] and router[\u0027router\u0027][\u0027external_gateway_info\u0027] \u003d\u003d {}:"},{"line_number":589,"context_line":"            op_gateway_clear \u003d True"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"            qports \u003d super(MidonetPluginV2, self).get_ports("}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxEA%3D","line":588,"updated":"2013-02-19 17:47:55.000000000","message":"Ditto","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":585,"context_line":"                \u0027external_gateway_info\u0027]:"},{"line_number":586,"context_line":"            op_gateway_set \u003d True"},{"line_number":587,"context_line":"        elif \u0027external_gateway_info\u0027 in router["},{"line_number":588,"context_line":"            \u0027router\u0027] and router[\u0027router\u0027][\u0027external_gateway_info\u0027] \u003d\u003d {}:"},{"line_number":589,"context_line":"            op_gateway_clear \u003d True"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"            qports \u003d super(MidonetPluginV2, self).get_ports("}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2Bv%2Bw%3D","line":588,"in_reply_to":"AAAAM3%2F%2BxEA%3D","updated":"2013-02-20 00:28:28.000000000","message":"Done","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":673,"context_line":""},{"line_number":674,"context_line":"                # delete default route"},{"line_number":675,"context_line":"                for r in tenant_router.get_routes():"},{"line_number":676,"context_line":"                    if r.get_dst_network_addr() \u003d\u003d \u00270.0.0.0\u0027 and \\"},{"line_number":677,"context_line":"                            r.get_dst_network_length() \u003d\u003d 0:"},{"line_number":678,"context_line":"                        r.delete()"},{"line_number":679,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxIw%3D","line":676,"updated":"2013-02-19 17:23:57.000000000","message":"Please use () instead of the \\","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":673,"context_line":""},{"line_number":674,"context_line":"                # delete default route"},{"line_number":675,"context_line":"                for r in tenant_router.get_routes():"},{"line_number":676,"context_line":"                    if r.get_dst_network_addr() \u003d\u003d \u00270.0.0.0\u0027 and \\"},{"line_number":677,"context_line":"                            r.get_dst_network_length() \u003d\u003d 0:"},{"line_number":678,"context_line":"                        r.delete()"},{"line_number":679,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2Bv%2Bs%3D","line":676,"in_reply_to":"AAAAM3%2F%2BxIw%3D","updated":"2013-02-20 00:28:28.000000000","message":"Done","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":862,"context_line":"        # delete the route for the subnet in the metadata router"},{"line_number":863,"context_line":"        found \u003d False"},{"line_number":864,"context_line":"        for r in self.metadata_router.get_routes():"},{"line_number":865,"context_line":"            if r.get_dst_network_addr() \u003d\u003d network_addr and \\"},{"line_number":866,"context_line":"                r.get_dst_network_length() \u003d\u003d network_length:"},{"line_number":867,"context_line":"                LOG.debug(_(\u0027Deleting route\u003d%r ...\u0027), r)"},{"line_number":868,"context_line":"                r.delete()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxIs%3D","line":865,"updated":"2013-02-19 17:23:57.000000000","message":"please use () instead of the \\","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":862,"context_line":"        # delete the route for the subnet in the metadata router"},{"line_number":863,"context_line":"        found \u003d False"},{"line_number":864,"context_line":"        for r in self.metadata_router.get_routes():"},{"line_number":865,"context_line":"            if r.get_dst_network_addr() \u003d\u003d network_addr and \\"},{"line_number":866,"context_line":"                r.get_dst_network_length() \u003d\u003d network_length:"},{"line_number":867,"context_line":"                LOG.debug(_(\u0027Deleting route\u003d%r ...\u0027), r)"},{"line_number":868,"context_line":"                r.delete()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2Bv%2Bc%3D","line":865,"in_reply_to":"AAAAM3%2F%2BxIs%3D","updated":"2013-02-20 00:28:28.000000000","message":"Done","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":946,"context_line":""},{"line_number":947,"context_line":"                # delete the route for this floating ip"},{"line_number":948,"context_line":"                for r in self.provider_router.get_routes():"},{"line_number":949,"context_line":"                    if r.get_dst_network_addr() \u003d\u003d floating_address and \\"},{"line_number":950,"context_line":"                            r.get_dst_network_length() \u003d\u003d 32:"},{"line_number":951,"context_line":"                        r.delete()"},{"line_number":952,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxIg%3D","line":949,"updated":"2013-02-19 17:23:57.000000000","message":"please use () insteda of the \\","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":946,"context_line":""},{"line_number":947,"context_line":"                # delete the route for this floating ip"},{"line_number":948,"context_line":"                for r in self.provider_router.get_routes():"},{"line_number":949,"context_line":"                    if r.get_dst_network_addr() \u003d\u003d floating_address and \\"},{"line_number":950,"context_line":"                            r.get_dst_network_length() \u003d\u003d 32:"},{"line_number":951,"context_line":"                        r.delete()"},{"line_number":952,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2Bv%2BY%3D","line":949,"in_reply_to":"AAAAM3%2F%2BxIg%3D","updated":"2013-02-20 00:28:28.000000000","message":"Done","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"}],"quantum/tests/unit/midonet/test_midonet_lib.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from quantum.plugins.midonet import midonet_lib"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"logging.basicConfig(level\u003dlogging.DEBUG)"},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(\"test_midonet_lib\")"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1Js%3D","line":24,"updated":"2013-02-18 09:49:44.000000000","message":"Use common logging.\nfrom quantum.openstack.common import log as logging","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from quantum.plugins.midonet import midonet_lib"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"logging.basicConfig(level\u003dlogging.DEBUG)"},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(\"test_midonet_lib\")"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1FA%3D","line":24,"in_reply_to":"AAAAM3%2F%2B1Js%3D","updated":"2013-02-18 10:29:12.000000000","message":"Will do soon.","commit_id":"20b693a4d388d957ab03d3a12d2d14047d00e9d6"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import logging"},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":"import unittest"},{"line_number":20,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By2U%3D","line":17,"updated":"2013-02-19 02:22:10.000000000","message":"logging is unused you can remove it\n\nAlso import ordering should be:\n\nimport unittest\n\nimport uuid\n\n(blank line)\n\nimport mock","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import logging"},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":"import unittest"},{"line_number":20,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Byqs%3D","line":17,"in_reply_to":"AAAAM3%2F%2By2U%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.mock_api.assert_has_calls(mock.call.get_chains("},{"line_number":111,"context_line":"            {\"tenant_id\": tenant_id}))"},{"line_number":112,"context_line":"        self.assertTrue(len(chains) \u003d\u003d 2)"},{"line_number":113,"context_line":"        self.assertTrue(chains[\u0027in\u0027] \u003d\u003d in_chain)"},{"line_number":114,"context_line":"        self.assertTrue(chains[\u0027out\u0027] \u003d\u003d out_chain)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By18%3D","line":112,"updated":"2013-02-19 02:22:10.000000000","message":"self.assertEqual(len(chains), 2)","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.mock_api.assert_has_calls(mock.call.get_chains("},{"line_number":111,"context_line":"            {\"tenant_id\": tenant_id}))"},{"line_number":112,"context_line":"        self.assertTrue(len(chains) \u003d\u003d 2)"},{"line_number":113,"context_line":"        self.assertTrue(chains[\u0027in\u0027] \u003d\u003d in_chain)"},{"line_number":114,"context_line":"        self.assertTrue(chains[\u0027out\u0027] \u003d\u003d out_chain)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Byqk%3D","line":112,"in_reply_to":"AAAAM3%2F%2By18%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.mock_api.assert_has_calls(mock.call.get_chains("},{"line_number":111,"context_line":"            {\"tenant_id\": tenant_id}))"},{"line_number":112,"context_line":"        self.assertTrue(len(chains) \u003d\u003d 2)"},{"line_number":113,"context_line":"        self.assertTrue(chains[\u0027in\u0027] \u003d\u003d in_chain)"},{"line_number":114,"context_line":"        self.assertTrue(chains[\u0027out\u0027] \u003d\u003d out_chain)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_create_router_chains(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By14%3D","line":113,"updated":"2013-02-19 02:22:10.000000000","message":"self.assertEqual(chains[\u0027in\u0027], in_chain)","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.mock_api.assert_has_calls(mock.call.get_chains("},{"line_number":111,"context_line":"            {\"tenant_id\": tenant_id}))"},{"line_number":112,"context_line":"        self.assertTrue(len(chains) \u003d\u003d 2)"},{"line_number":113,"context_line":"        self.assertTrue(chains[\u0027in\u0027] \u003d\u003d in_chain)"},{"line_number":114,"context_line":"        self.assertTrue(chains[\u0027out\u0027] \u003d\u003d out_chain)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_create_router_chains(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Byqg%3D","line":113,"in_reply_to":"AAAAM3%2F%2By14%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":111,"context_line":"            {\"tenant_id\": tenant_id}))"},{"line_number":112,"context_line":"        self.assertTrue(len(chains) \u003d\u003d 2)"},{"line_number":113,"context_line":"        self.assertTrue(chains[\u0027in\u0027] \u003d\u003d in_chain)"},{"line_number":114,"context_line":"        self.assertTrue(chains[\u0027out\u0027] \u003d\u003d out_chain)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_create_router_chains(self):"},{"line_number":117,"context_line":"        tenant_id \u003d \u0027test_tenant\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By10%3D","line":114,"updated":"2013-02-19 02:22:10.000000000","message":"self.assertEqual(chains[\u0027out\u0027], out_chain)","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":111,"context_line":"            {\"tenant_id\": tenant_id}))"},{"line_number":112,"context_line":"        self.assertTrue(len(chains) \u003d\u003d 2)"},{"line_number":113,"context_line":"        self.assertTrue(chains[\u0027in\u0027] \u003d\u003d in_chain)"},{"line_number":114,"context_line":"        self.assertTrue(chains[\u0027out\u0027] \u003d\u003d out_chain)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_create_router_chains(self):"},{"line_number":117,"context_line":"        tenant_id \u003d \u0027test_tenant\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Byqc%3D","line":114,"in_reply_to":"AAAAM3%2F%2By10%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        self.mock_api.assert_has_calls(mock.call.get_chains("},{"line_number":136,"context_line":"            {\"tenant_id\": tenant_id}))"},{"line_number":137,"context_line":"        self.assertTrue(len(chains) \u003d\u003d 2)"},{"line_number":138,"context_line":"        self.assertTrue(chains[\u0027in\u0027] \u003d\u003d in_chain)"},{"line_number":139,"context_line":"        self.assertTrue(chains[\u0027out\u0027] \u003d\u003d out_chain)"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By1w%3D","line":137,"updated":"2013-02-19 02:22:10.000000000","message":"same as above","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        self.mock_api.assert_has_calls(mock.call.get_chains("},{"line_number":136,"context_line":"            {\"tenant_id\": tenant_id}))"},{"line_number":137,"context_line":"        self.assertTrue(len(chains) \u003d\u003d 2)"},{"line_number":138,"context_line":"        self.assertTrue(chains[\u0027in\u0027] \u003d\u003d in_chain)"},{"line_number":139,"context_line":"        self.assertTrue(chains[\u0027out\u0027] \u003d\u003d out_chain)"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2ByqQ%3D","line":137,"in_reply_to":"AAAAM3%2F%2By1w%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        pg \u003d self.mgr.get_for_sg(tenant_id, sg_id)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        self.assertTrue(pg \u003d\u003d pg_mock)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"class MidonetRuleManagerTestCase(MidonetLibTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By1s%3D","line":187,"updated":"2013-02-19 02:22:10.000000000","message":"self.assertEqual(pg, pg_mock)","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        pg \u003d self.mgr.get_for_sg(tenant_id, sg_id)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        self.assertTrue(pg \u003d\u003d pg_mock)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"class MidonetRuleManagerTestCase(MidonetLibTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2ByqI%3D","line":187,"in_reply_to":"AAAAM3%2F%2By1s%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":19,"context_line":"# @author: Ryu Ishimoto, Midokura Japan KK"},{"line_number":20,"context_line":"# @author: Tomoe Sugihara, Midokura Japan KK"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import unittest"},{"line_number":23,"context_line":"import uuid"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"import mock"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxJ0%3D","line":22,"updated":"2013-02-19 17:23:57.000000000","message":"please use unittest2 (import unittest2 as unittest)","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":19,"context_line":"# @author: Ryu Ishimoto, Midokura Japan KK"},{"line_number":20,"context_line":"# @author: Tomoe Sugihara, Midokura Japan KK"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import unittest"},{"line_number":23,"context_line":"import uuid"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"import mock"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2Bv%2BM%3D","line":22,"in_reply_to":"AAAAM3%2F%2BxJ0%3D","updated":"2013-02-20 00:28:28.000000000","message":"Done","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":156,"context_line":"        sg_id \u003d str(uuid.uuid4())"},{"line_number":157,"context_line":"        sg_name \u003d \u0027test_sg\u0027"},{"line_number":158,"context_line":"        pg_mock \u003d self._create_mock_port_group(sg_id, sg_name)"},{"line_number":159,"context_line":"        self.mock_api.add_port_group.return_value.tenant_id.return_value.name\\"},{"line_number":160,"context_line":"            .return_value \u003d pg_mock"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        self.mgr.create(tenant_id, sg_id, sg_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2BxJc%3D","line":159,"updated":"2013-02-19 17:23:57.000000000","message":"is it possible to do without the \\?","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":156,"context_line":"        sg_id \u003d str(uuid.uuid4())"},{"line_number":157,"context_line":"        sg_name \u003d \u0027test_sg\u0027"},{"line_number":158,"context_line":"        pg_mock \u003d self._create_mock_port_group(sg_id, sg_name)"},{"line_number":159,"context_line":"        self.mock_api.add_port_group.return_value.tenant_id.return_value.name\\"},{"line_number":160,"context_line":"            .return_value \u003d pg_mock"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        self.mgr.create(tenant_id, sg_id, sg_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2Bv90%3D","line":159,"in_reply_to":"AAAAM3%2F%2BxJc%3D","updated":"2013-02-20 00:28:28.000000000","message":"Yes and Done.","commit_id":"804911083b5ca8180ea1694a1ce20b40d4ac9c1f"}],"quantum/tests/unit/midonet/test_midonet_plugin.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 OpenStack, LLC."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B888%3D","line":1,"updated":"2013-02-13 13:15:48.000000000","message":"Midonet copyright and OpenStack LLC copyright are both used. Any intention?","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":"import mox"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9P4%3D","line":16,"updated":"2013-02-13 13:15:48.000000000","message":"Don\u0027t we need unit tests for midonet_lib? Or does this test already cover midonet_lib functions?","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"45670dc0104784e3539033409fac85f44bd11992","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def tearDown(self):"},{"line_number":46,"context_line":"        super(MidonetPluginV2TestCase, self).tearDown()"},{"line_number":47,"context_line":"        self.mock_api.stop()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"class TestMidonetNetworksV2(test_plugin.TestNetworksV2,"},{"line_number":51,"context_line":"                            MidonetPluginV2TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B9JI%3D","line":48,"updated":"2013-02-13 10:13:50.000000000","message":"Any reason not to have the port and subnet tests here too? Guess maybe due to the multiple subnet, but it may still be worth adding.","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def tearDown(self):"},{"line_number":46,"context_line":"        super(MidonetPluginV2TestCase, self).tearDown()"},{"line_number":47,"context_line":"        self.mock_api.stop()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"class TestMidonetNetworksV2(test_plugin.TestNetworksV2,"},{"line_number":51,"context_line":"                            MidonetPluginV2TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B89U%3D","line":48,"in_reply_to":"AAAAM3%2F%2B9JI%3D","updated":"2013-02-13 13:15:48.000000000","message":"In addition, midonet plugin provides its original router and security group methods, so unit tests for router and security groups are also required. At least tests for db plugin should be passed.","commit_id":"840e98a256b20487a9a46bf16fd93e0149805dd3"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":20,"context_line":"# @author: Ryu Ishimoto, Midokura Japan KK"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":"import mock"},{"line_number":25,"context_line":"import mox"},{"line_number":26,"context_line":"from quantum.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By1k%3D","line":23,"updated":"2013-02-19 02:22:10.000000000","message":"import ordering needs to be fixed:\n\nimport sys\n\nimport uuid\n\n(blank line)\n\nimport mock\nimport webob import exc as w_exc","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":20,"context_line":"# @author: Ryu Ishimoto, Midokura Japan KK"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":"import mock"},{"line_number":25,"context_line":"import mox"},{"line_number":26,"context_line":"from quantum.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2ByoI%3D","line":23,"in_reply_to":"AAAAM3%2F%2By1k%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":"import mock"},{"line_number":25,"context_line":"import mox"},{"line_number":26,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":27,"context_line":"import os"},{"line_number":28,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By1o%3D","line":25,"updated":"2013-02-19 02:22:10.000000000","message":"unused import","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":"import mock"},{"line_number":25,"context_line":"import mox"},{"line_number":26,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":27,"context_line":"import os"},{"line_number":28,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Bypg%3D","line":25,"in_reply_to":"AAAAM3%2F%2By1o%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":"import mock"},{"line_number":25,"context_line":"import mox"},{"line_number":26,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":27,"context_line":"import os"},{"line_number":28,"context_line":"import uuid"},{"line_number":29,"context_line":"from webob import exc as w_exc"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By1g%3D","line":26,"updated":"2013-02-19 02:22:10.000000000","message":"unused import","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":"import mock"},{"line_number":25,"context_line":"import mox"},{"line_number":26,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":27,"context_line":"import os"},{"line_number":28,"context_line":"import uuid"},{"line_number":29,"context_line":"from webob import exc as w_exc"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Bypc%3D","line":26,"in_reply_to":"AAAAM3%2F%2By1g%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":24,"context_line":"import mock"},{"line_number":25,"context_line":"import mox"},{"line_number":26,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":27,"context_line":"import os"},{"line_number":28,"context_line":"import uuid"},{"line_number":29,"context_line":"from webob import exc as w_exc"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By1c%3D","line":27,"updated":"2013-02-19 02:22:10.000000000","message":"unused import","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":24,"context_line":"import mock"},{"line_number":25,"context_line":"import mox"},{"line_number":26,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":27,"context_line":"import os"},{"line_number":28,"context_line":"import uuid"},{"line_number":29,"context_line":"from webob import exc as w_exc"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2BypU%3D","line":27,"in_reply_to":"AAAAM3%2F%2By1c%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":85,"context_line":"        port.get_id.return_value \u003d port_id"},{"line_number":86,"context_line":"        self.instance.return_value.create_port.return_value \u003d port"},{"line_number":87,"context_line":"        self.instance.return_value.get_port.return_value \u003d port"},{"line_number":88,"context_line":"        bridge.add_exterior_port.return_value.create\\"},{"line_number":89,"context_line":"            .return_value \u003d port"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        dhcp_host \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By1Q%3D","line":88,"updated":"2013-02-19 02:22:10.000000000","message":"remember Quantum style guidelines (found in HACKING.rst) do not allow the use of line continuations.  Consider:\n\nbridge.add_exterior_port.return_value.create.return_value \u003d (\n    port\n)","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":85,"context_line":"        port.get_id.return_value \u003d port_id"},{"line_number":86,"context_line":"        self.instance.return_value.create_port.return_value \u003d port"},{"line_number":87,"context_line":"        self.instance.return_value.get_port.return_value \u003d port"},{"line_number":88,"context_line":"        bridge.add_exterior_port.return_value.create\\"},{"line_number":89,"context_line":"            .return_value \u003d port"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        dhcp_host \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2BypM%3D","line":88,"in_reply_to":"AAAAM3%2F%2By1Q%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":89,"context_line":"            .return_value \u003d port"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        dhcp_host \u003d mock.Mock()"},{"line_number":92,"context_line":"        subnet.add_dhcp_host.return_value.ip_addr.return_value.mac_addr\\"},{"line_number":93,"context_line":"            .return_value.create.return_value \u003d dhcp_host"},{"line_number":94,"context_line":"        subnet.get_dhcp_hosts.return_value \u003d [dhcp_host]"},{"line_number":95,"context_line":"        return (bridge, subnet, port, dhcp_host)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2By1M%3D","line":92,"updated":"2013-02-19 02:22:10.000000000","message":"Consider assigning to temp var to break the line up into two lines.","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":89,"context_line":"            .return_value \u003d port"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        dhcp_host \u003d mock.Mock()"},{"line_number":92,"context_line":"        subnet.add_dhcp_host.return_value.ip_addr.return_value.mac_addr\\"},{"line_number":93,"context_line":"            .return_value.create.return_value \u003d dhcp_host"},{"line_number":94,"context_line":"        subnet.get_dhcp_hosts.return_value \u003d [dhcp_host]"},{"line_number":95,"context_line":"        return (bridge, subnet, port, dhcp_host)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2ByoY%3D","line":92,"in_reply_to":"AAAAM3%2F%2By1M%3D","updated":"2013-02-19 05:15:46.000000000","message":"Done","commit_id":"3dbdb14cb86d040d1bae74043375099676c41e6b"}]}
