)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"56472c716b3b06f153ba983d7304f7ff76a23ee7","unresolved":false,"context_lines":[{"line_number":10,"context_line":"* Update the unit test"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"Closes-Bug: 1434667"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ic551475ed7b64aad9627a57abb0df41acc19bfc1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baa041b7_753a3938","line":13,"updated":"2015-04-02 17:40:32.000000000","message":"This didn\u0027t show up in LP, I think it needed a \"#\" in front. I\u0027ve manually added it.","commit_id":"ebcff4d3e17ea959a0a8a2ed8c9edcd7f4fb53f4"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"d064ff2b51db1887c55e97b053d898dbf343fc14","unresolved":false,"context_lines":[{"line_number":10,"context_line":"* Update the unit test"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"Closes-Bug: 1434667"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ic551475ed7b64aad9627a57abb0df41acc19bfc1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baa041b7_9bba60bf","line":13,"in_reply_to":"baa041b7_753a3938","updated":"2015-04-04 02:01:38.000000000","message":"Done","commit_id":"ebcff4d3e17ea959a0a8a2ed8c9edcd7f4fb53f4"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"330707b455eccb41d7fd4375da168b134b56285c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"* Update the unit test"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"Closes-Bug: 1434667"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ic551475ed7b64aad9627a57abb0df41acc19bfc1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baa041b7_956dbd06","line":13,"in_reply_to":"baa041b7_753a3938","updated":"2015-04-02 17:43:34.000000000","message":"ok sorry about that, will add it in the re-spin.","commit_id":"ebcff4d3e17ea959a0a8a2ed8c9edcd7f4fb53f4"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"0b2f732acc351c19b33f2fa82340e0cae05b53c5","unresolved":false,"context_lines":[{"line_number":942,"context_line":"                    \u0027admin_state_up\u0027: n[\u0027admin_state_up\u0027],"},{"line_number":943,"context_line":"                    \u0027mtu\u0027: n.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":944,"context_line":"                    \u0027shared\u0027: n[\u0027shared\u0027],"},{"line_number":945,"context_line":"                    \u0027vlan_transparent\u0027: n.get(\u0027vlan_transparent\u0027, False),"},{"line_number":946,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":947,"context_line":"            network \u003d models_v2.Network(**args)"},{"line_number":948,"context_line":"            context.session.add(network)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9b358b_d2c9e079","side":"PARENT","line":945,"updated":"2015-04-01 03:33:23.000000000","message":"who stores the attribute into db instead?","commit_id":"5616315abc39753d95cdd635067fe8a1c31dd45c"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"5f481479de618a45dbbb5a4a94d37bf7ec3cd089","unresolved":false,"context_lines":[{"line_number":942,"context_line":"                    \u0027admin_state_up\u0027: n[\u0027admin_state_up\u0027],"},{"line_number":943,"context_line":"                    \u0027mtu\u0027: n.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":944,"context_line":"                    \u0027shared\u0027: n[\u0027shared\u0027],"},{"line_number":945,"context_line":"                    \u0027vlan_transparent\u0027: n.get(\u0027vlan_transparent\u0027, False),"},{"line_number":946,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":947,"context_line":"            network \u003d models_v2.Network(**args)"},{"line_number":948,"context_line":"            context.session.add(network)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baa041b7_91bebfd2","side":"PARENT","line":945,"in_reply_to":"da9b358b_d2c9e079","updated":"2015-04-04 07:03:58.000000000","message":"Done","commit_id":"5616315abc39753d95cdd635067fe8a1c31dd45c"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"0b2f732acc351c19b33f2fa82340e0cae05b53c5","unresolved":false,"context_lines":[{"line_number":953,"context_line":"            # validate \u0027shared\u0027 parameter"},{"line_number":954,"context_line":"            if \u0027shared\u0027 in n:"},{"line_number":955,"context_line":"                self._validate_shared_update(context, id, network, n)"},{"line_number":956,"context_line":"            network.update(n)"},{"line_number":957,"context_line":"            # also update shared in all the subnets for this network"},{"line_number":958,"context_line":"            subnets \u003d self._get_subnets_by_network(context, id)"},{"line_number":959,"context_line":"            for subnet in subnets:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9b358b_1256285c","line":956,"updated":"2015-04-01 03:33:23.000000000","message":"is there anything which prevents vlan_transparent attribute from being updated for plugins without the extension?","commit_id":"fda7234890861d85f4a07844617ae9969bc4e6bd"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a7862cbcd1c9ccd467c790d90b42dccb25446c19","unresolved":false,"context_lines":[{"line_number":954,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":955,"context_line":"            if (\u0027vlan_transparent\u0027 in n and n[\u0027vlan_transparent\u0027] !\u003d"},{"line_number":956,"context_line":"                attributes.ATTR_NOT_SPECIFIED):"},{"line_number":957,"context_line":"                args.update({\u0027vlan_transparent\u0027: n[\u0027vlan_transparent\u0027]})"},{"line_number":958,"context_line":"            network \u003d models_v2.Network(**args)"},{"line_number":959,"context_line":"            context.session.add(network)"},{"line_number":960,"context_line":"        return self._make_network_dict(network, process_extensions\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa041b7_2a6f7c93","line":957,"updated":"2015-04-04 17:54:08.000000000","message":"\"args\" is a simple dict, so you can do just:\n\n  args[\u0027vlan_transparent\u0027] \u003d n[\u0027vlan_transparent\u0027]","commit_id":"60bcba763fa9b106378dc19aec18e893292917b4"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"6ffb7073e2d1ef3438709636bdf35e4605145cb8","unresolved":false,"context_lines":[{"line_number":954,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":955,"context_line":"            if (\u0027vlan_transparent\u0027 in n and n[\u0027vlan_transparent\u0027] !\u003d"},{"line_number":956,"context_line":"                attributes.ATTR_NOT_SPECIFIED):"},{"line_number":957,"context_line":"                args.update({\u0027vlan_transparent\u0027: n[\u0027vlan_transparent\u0027]})"},{"line_number":958,"context_line":"            network \u003d models_v2.Network(**args)"},{"line_number":959,"context_line":"            context.session.add(network)"},{"line_number":960,"context_line":"        return self._make_network_dict(network, process_extensions\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa041b7_ea7d14b2","line":957,"in_reply_to":"baa041b7_2a6f7c93","updated":"2015-04-04 20:39:38.000000000","message":"Done","commit_id":"60bcba763fa9b106378dc19aec18e893292917b4"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6d82c623fbb259a2d7f72e7079c3ff126eeb6122","unresolved":false,"context_lines":[{"line_number":844,"context_line":"               \u0027mtu\u0027: network.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":845,"context_line":"               \u0027status\u0027: network[\u0027status\u0027],"},{"line_number":846,"context_line":"               \u0027shared\u0027: network[\u0027shared\u0027],"},{"line_number":847,"context_line":"               \u0027vlan_transparent\u0027: network[\u0027vlan_transparent\u0027],"},{"line_number":848,"context_line":"               \u0027subnets\u0027: [subnet[\u0027id\u0027]"},{"line_number":849,"context_line":"                           for subnet in network[\u0027subnets\u0027]]}"},{"line_number":850,"context_line":"        # Call auxiliary extend functions, if any"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_b5ed24f1","line":847,"updated":"2015-04-06 02:25:54.000000000","message":"why do you need both of this and Vlantransparent_db_mixin ?","commit_id":"1186f1ce8e46ecdd24670c001539b206f8d26fd2"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"830f7bce7403e1100392112c3d72c449f8456083","unresolved":false,"context_lines":[{"line_number":844,"context_line":"               \u0027mtu\u0027: network.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":845,"context_line":"               \u0027status\u0027: network[\u0027status\u0027],"},{"line_number":846,"context_line":"               \u0027shared\u0027: network[\u0027shared\u0027],"},{"line_number":847,"context_line":"               \u0027vlan_transparent\u0027: network[\u0027vlan_transparent\u0027],"},{"line_number":848,"context_line":"               \u0027subnets\u0027: [subnet[\u0027id\u0027]"},{"line_number":849,"context_line":"                           for subnet in network[\u0027subnets\u0027]]}"},{"line_number":850,"context_line":"        # Call auxiliary extend functions, if any"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_555b7887","line":847,"in_reply_to":"baa041b7_b5ed24f1","updated":"2015-04-06 04:07:05.000000000","message":"because create network calls this function with process extension as false and thus it doesn\u0027t trigger extension as far as my understanding goes.","commit_id":"1186f1ce8e46ecdd24670c001539b206f8d26fd2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6d82c623fbb259a2d7f72e7079c3ff126eeb6122","unresolved":false,"context_lines":[{"line_number":954,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":955,"context_line":"            if (\u0027vlan_transparent\u0027 in n and n[\u0027vlan_transparent\u0027] !\u003d"},{"line_number":956,"context_line":"                attributes.ATTR_NOT_SPECIFIED):"},{"line_number":957,"context_line":"                args[\u0027vlan_transparent\u0027] \u003d n[\u0027vlan_transparent\u0027]"},{"line_number":958,"context_line":"            network \u003d models_v2.Network(**args)"},{"line_number":959,"context_line":"            context.session.add(network)"},{"line_number":960,"context_line":"        return self._make_network_dict(network, process_extensions\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_b5ff64a9","line":957,"updated":"2015-04-06 02:25:54.000000000","message":"attr \u003d n.get(\u0027vlan_transparent\u0027)\nif attributes.is_attr_set(attr):\n args[\u0027vlan_transparent\u0027] \u003d attr","commit_id":"1186f1ce8e46ecdd24670c001539b206f8d26fd2"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"830f7bce7403e1100392112c3d72c449f8456083","unresolved":false,"context_lines":[{"line_number":954,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":955,"context_line":"            if (\u0027vlan_transparent\u0027 in n and n[\u0027vlan_transparent\u0027] !\u003d"},{"line_number":956,"context_line":"                attributes.ATTR_NOT_SPECIFIED):"},{"line_number":957,"context_line":"                args[\u0027vlan_transparent\u0027] \u003d n[\u0027vlan_transparent\u0027]"},{"line_number":958,"context_line":"            network \u003d models_v2.Network(**args)"},{"line_number":959,"context_line":"            context.session.add(network)"},{"line_number":960,"context_line":"        return self._make_network_dict(network, process_extensions\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_f5504c60","line":957,"in_reply_to":"baa041b7_b5ff64a9","updated":"2015-04-06 04:07:05.000000000","message":"here is_attr_set catches ATTR_NOT_SPECIFIED and None both, while i need to catch just ATTR_NOT_SPECIFIED, because for plugins which don\u0027t support vlan transparency, None is a valid choice and should reflect that way in the database.","commit_id":"1186f1ce8e46ecdd24670c001539b206f8d26fd2"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"43e5cc9443121d478901e6f641584190f754506e","unresolved":false,"context_lines":[{"line_number":843,"context_line":"               \u0027admin_state_up\u0027: network[\u0027admin_state_up\u0027],"},{"line_number":844,"context_line":"               \u0027mtu\u0027: network.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":845,"context_line":"               \u0027status\u0027: network[\u0027status\u0027],"},{"line_number":846,"context_line":"               \u0027shared\u0027: network[\u0027shared\u0027],"},{"line_number":847,"context_line":"               \u0027vlan_transparent\u0027: network[\u0027vlan_transparent\u0027],"},{"line_number":848,"context_line":"               \u0027subnets\u0027: [subnet[\u0027id\u0027]"},{"line_number":849,"context_line":"                           for subnet in network[\u0027subnets\u0027]]}"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa53dc9_a592f855","side":"PARENT","line":846,"updated":"2015-04-06 20:59:38.000000000","message":"Unless I am mistaken, this would need to be removed since as an API extension not every plugin will implement this attribute?","commit_id":"4c01903c44dedfefa213006f78618cf16ad77504"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"00546742f6f9c99fdb4592eb5a19872e74af8f0e","unresolved":false,"context_lines":[{"line_number":844,"context_line":"               \u0027mtu\u0027: network.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":845,"context_line":"               \u0027status\u0027: network[\u0027status\u0027],"},{"line_number":846,"context_line":"               \u0027shared\u0027: network[\u0027shared\u0027],"},{"line_number":847,"context_line":"               \u0027vlan_transparent\u0027: network[\u0027vlan_transparent\u0027],"},{"line_number":848,"context_line":"               \u0027subnets\u0027: [subnet[\u0027id\u0027]"},{"line_number":849,"context_line":"                           for subnet in network[\u0027subnets\u0027]]}"},{"line_number":850,"context_line":"        # Call auxiliary extend functions, if any"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa53dc9_25bb88c6","side":"PARENT","line":847,"updated":"2015-04-06 21:00:26.000000000","message":"Sorry, clicked the wrong line, I mean this line.","commit_id":"4c01903c44dedfefa213006f78618cf16ad77504"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"6c1090ad46f7b814c28decf69164f69d5316613c","unresolved":false,"context_lines":[{"line_number":844,"context_line":"               \u0027mtu\u0027: network.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":845,"context_line":"               \u0027status\u0027: network[\u0027status\u0027],"},{"line_number":846,"context_line":"               \u0027shared\u0027: network[\u0027shared\u0027],"},{"line_number":847,"context_line":"               \u0027vlan_transparent\u0027: network[\u0027vlan_transparent\u0027],"},{"line_number":848,"context_line":"               \u0027subnets\u0027: [subnet[\u0027id\u0027]"},{"line_number":849,"context_line":"                           for subnet in network[\u0027subnets\u0027]]}"},{"line_number":850,"context_line":"        # Call auxiliary extend functions, if any"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa53dc9_e0458e17","side":"PARENT","line":847,"in_reply_to":"9aa53dc9_25bb88c6","updated":"2015-04-06 21:39:19.000000000","message":"here it is updating the db, currently i couldn\u0027t find a better or alternative to update this in db, if you know and could point it to me, i would be more then happy to move it there.","commit_id":"4c01903c44dedfefa213006f78618cf16ad77504"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"96320763390ca8b7b3fa069b11c3b067a55f2f99","unresolved":false,"context_lines":[{"line_number":952,"context_line":"                    \u0027mtu\u0027: n.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":953,"context_line":"                    \u0027shared\u0027: n[\u0027shared\u0027],"},{"line_number":954,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":955,"context_line":"            if (\u0027vlan_transparent\u0027 in n and n[\u0027vlan_transparent\u0027] !\u003d"},{"line_number":956,"context_line":"                attributes.ATTR_NOT_SPECIFIED):"},{"line_number":957,"context_line":"                args[\u0027vlan_transparent\u0027] \u003d n[\u0027vlan_transparent\u0027]"},{"line_number":958,"context_line":"            network \u003d models_v2.Network(**args)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_7d8fe023","line":955,"updated":"2015-04-07 00:41:44.000000000","message":"have you considered using:\n\nhttps://github.com/openstack/neutron/blob/master/neutron/api/v2/attributes.py#L75\n\nThis could become:\n\nif attr.is_attr_set(n.get(\u0027vlan_transparent\u0027)):\n  args[\u0027vlan_transparent\u0027] \u003d n[\u0027vlan_transparent\u0027]\n\nHowever, since this is becoming an ML2 supported attributed, shouldn\u0027t this move to create_network in [1]?\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/plugin.py#L607","commit_id":"9830f6b230a10e2a6b0718505bfc8c57df744891"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"c951c087aa6da96892a2d202941d8ff17803731b","unresolved":false,"context_lines":[{"line_number":952,"context_line":"                    \u0027mtu\u0027: n.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":953,"context_line":"                    \u0027shared\u0027: n[\u0027shared\u0027],"},{"line_number":954,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":955,"context_line":"            if (\u0027vlan_transparent\u0027 in n and n[\u0027vlan_transparent\u0027] !\u003d"},{"line_number":956,"context_line":"                attributes.ATTR_NOT_SPECIFIED):"},{"line_number":957,"context_line":"                args[\u0027vlan_transparent\u0027] \u003d n[\u0027vlan_transparent\u0027]"},{"line_number":958,"context_line":"            network \u003d models_v2.Network(**args)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_734a7185","line":955,"in_reply_to":"9aa53dc9_7d8fe023","updated":"2015-04-07 02:56:54.000000000","message":"like i said in [1] here: the is_attr_set catches ATTR_NOT_SPECIFIED and None both, while i need to catch just ATTR_NOT_SPECIFIED, because for plugins which don\u0027t support vlan transparency, None is a valid choice and should reflect that way in the database.\n\nthis is not ml2 only attribute i am adding support for other plugins but since plugin are not in core any more the patches are not posted here yet.\n\n[1]: https://review.openstack.org/#/c/169569/7/neutron/db/db_base_plugin_v2.py","commit_id":"9830f6b230a10e2a6b0718505bfc8c57df744891"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"66f44b4262de87b51fd6f10f3c9bae9cfe004b83","unresolved":false,"context_lines":[{"line_number":952,"context_line":"                    \u0027mtu\u0027: n.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":953,"context_line":"                    \u0027shared\u0027: n[\u0027shared\u0027],"},{"line_number":954,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":955,"context_line":"            if (\u0027vlan_transparent\u0027 in n and n[\u0027vlan_transparent\u0027] !\u003d"},{"line_number":956,"context_line":"                attributes.ATTR_NOT_SPECIFIED):"},{"line_number":957,"context_line":"                args[\u0027vlan_transparent\u0027] \u003d n[\u0027vlan_transparent\u0027]"},{"line_number":958,"context_line":"            network \u003d models_v2.Network(**args)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_1b6e972f","line":955,"updated":"2015-04-07 06:53:06.000000000","message":"this could have been moved to the extension module as well.\nHowever, just to help future coders understand what is going on here, please add a comment stating that vlan_transparent is an extension and will only be added to the response if the corresponding extension is enabled.","commit_id":"80a2258c67ba2befcbb5cf48cfaf0a36e8705d0c"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"870e4b8ba69c8aa8d73230578d3852980fc8346c","unresolved":false,"context_lines":[{"line_number":952,"context_line":"                    \u0027mtu\u0027: n.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":953,"context_line":"                    \u0027shared\u0027: n[\u0027shared\u0027],"},{"line_number":954,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":955,"context_line":"            if (\u0027vlan_transparent\u0027 in n and n[\u0027vlan_transparent\u0027] !\u003d"},{"line_number":956,"context_line":"                attributes.ATTR_NOT_SPECIFIED):"},{"line_number":957,"context_line":"                args[\u0027vlan_transparent\u0027] \u003d n[\u0027vlan_transparent\u0027]"},{"line_number":958,"context_line":"            network \u003d models_v2.Network(**args)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_1e6e852f","line":955,"in_reply_to":"9aa53dc9_1b6e972f","updated":"2015-04-07 07:23:33.000000000","message":"Done","commit_id":"80a2258c67ba2befcbb5cf48cfaf0a36e8705d0c"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"8197a329320fd6f174ba65d4372997793fc0514e","unresolved":false,"context_lines":[{"line_number":843,"context_line":"               \u0027admin_state_up\u0027: network[\u0027admin_state_up\u0027],"},{"line_number":844,"context_line":"               \u0027mtu\u0027: network.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":845,"context_line":"               \u0027status\u0027: network[\u0027status\u0027],"},{"line_number":846,"context_line":"               \u0027shared\u0027: network[\u0027shared\u0027],"},{"line_number":847,"context_line":"               \u0027vlan_transparent\u0027: network[\u0027vlan_transparent\u0027],"},{"line_number":848,"context_line":"               \u0027subnets\u0027: [subnet[\u0027id\u0027]"},{"line_number":849,"context_line":"                           for subnet in network[\u0027subnets\u0027]]}"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_b6e8d07d","side":"PARENT","line":846,"updated":"2015-04-07 14:10:35.000000000","message":"This still needs removal - or at least a TODO like the other one in this file","commit_id":"21bef562c23d96fe41daeedeb43c0bb2d1c53ed0"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"dbb632a647b842511b9085ad186110890bc27c5f","unresolved":false,"context_lines":[{"line_number":843,"context_line":"               \u0027admin_state_up\u0027: network[\u0027admin_state_up\u0027],"},{"line_number":844,"context_line":"               \u0027mtu\u0027: network.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":845,"context_line":"               \u0027status\u0027: network[\u0027status\u0027],"},{"line_number":846,"context_line":"               \u0027shared\u0027: network[\u0027shared\u0027],"},{"line_number":847,"context_line":"               \u0027vlan_transparent\u0027: network[\u0027vlan_transparent\u0027],"},{"line_number":848,"context_line":"               \u0027subnets\u0027: [subnet[\u0027id\u0027]"},{"line_number":849,"context_line":"                           for subnet in network[\u0027subnets\u0027]]}"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_464e6470","side":"PARENT","line":846,"in_reply_to":"9aa53dc9_1a4e7196","updated":"2015-04-07 19:43:29.000000000","message":"removing this never passes vlan_transparent to _check_vlan_transparency in managers.py, so need to dig into it more, but for now, made it conditional like the one below if it helps?","commit_id":"21bef562c23d96fe41daeedeb43c0bb2d1c53ed0"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"91cc191ca5bf86e055f565eeb583d267eb669c37","unresolved":false,"context_lines":[{"line_number":843,"context_line":"               \u0027admin_state_up\u0027: network[\u0027admin_state_up\u0027],"},{"line_number":844,"context_line":"               \u0027mtu\u0027: network.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":845,"context_line":"               \u0027status\u0027: network[\u0027status\u0027],"},{"line_number":846,"context_line":"               \u0027shared\u0027: network[\u0027shared\u0027],"},{"line_number":847,"context_line":"               \u0027vlan_transparent\u0027: network[\u0027vlan_transparent\u0027],"},{"line_number":848,"context_line":"               \u0027subnets\u0027: [subnet[\u0027id\u0027]"},{"line_number":849,"context_line":"                           for subnet in network[\u0027subnets\u0027]]}"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_85dd8b44","side":"PARENT","line":846,"in_reply_to":"9aa53dc9_36aba01f","updated":"2015-04-07 17:36:56.000000000","message":"will add a todo here as well and clean it up simultaneously with #955 below.","commit_id":"21bef562c23d96fe41daeedeb43c0bb2d1c53ed0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"20c64a92c7a37cbb934dd0df116aaedcd2da3059","unresolved":false,"context_lines":[{"line_number":843,"context_line":"               \u0027admin_state_up\u0027: network[\u0027admin_state_up\u0027],"},{"line_number":844,"context_line":"               \u0027mtu\u0027: network.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":845,"context_line":"               \u0027status\u0027: network[\u0027status\u0027],"},{"line_number":846,"context_line":"               \u0027shared\u0027: network[\u0027shared\u0027],"},{"line_number":847,"context_line":"               \u0027vlan_transparent\u0027: network[\u0027vlan_transparent\u0027],"},{"line_number":848,"context_line":"               \u0027subnets\u0027: [subnet[\u0027id\u0027]"},{"line_number":849,"context_line":"                           for subnet in network[\u0027subnets\u0027]]}"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_da380940","side":"PARENT","line":846,"in_reply_to":"9aa53dc9_85dd8b44","updated":"2015-04-07 18:04:55.000000000","message":"Okay, but by this addition of TODO, we now MUST do the follow-up patch in Kilo :-( \n\nFrom the above reason, honestly I hope this change in this patch.","commit_id":"21bef562c23d96fe41daeedeb43c0bb2d1c53ed0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"414a8feeee59692e797a2e1a91c1eb599b6e3530","unresolved":false,"context_lines":[{"line_number":843,"context_line":"               \u0027admin_state_up\u0027: network[\u0027admin_state_up\u0027],"},{"line_number":844,"context_line":"               \u0027mtu\u0027: network.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":845,"context_line":"               \u0027status\u0027: network[\u0027status\u0027],"},{"line_number":846,"context_line":"               \u0027shared\u0027: network[\u0027shared\u0027],"},{"line_number":847,"context_line":"               \u0027vlan_transparent\u0027: network[\u0027vlan_transparent\u0027],"},{"line_number":848,"context_line":"               \u0027subnets\u0027: [subnet[\u0027id\u0027]"},{"line_number":849,"context_line":"                           for subnet in network[\u0027subnets\u0027]]}"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_36aba01f","side":"PARENT","line":846,"in_reply_to":"9aa53dc9_b6e8d07d","updated":"2015-04-07 14:12:39.000000000","message":"Thanks for the catch. We can remove L.847 safely.","commit_id":"21bef562c23d96fe41daeedeb43c0bb2d1c53ed0"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"58fba34144f687f711830e76a71f822505e0b27b","unresolved":false,"context_lines":[{"line_number":843,"context_line":"               \u0027admin_state_up\u0027: network[\u0027admin_state_up\u0027],"},{"line_number":844,"context_line":"               \u0027mtu\u0027: network.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":845,"context_line":"               \u0027status\u0027: network[\u0027status\u0027],"},{"line_number":846,"context_line":"               \u0027shared\u0027: network[\u0027shared\u0027],"},{"line_number":847,"context_line":"               \u0027vlan_transparent\u0027: network[\u0027vlan_transparent\u0027],"},{"line_number":848,"context_line":"               \u0027subnets\u0027: [subnet[\u0027id\u0027]"},{"line_number":849,"context_line":"                           for subnet in network[\u0027subnets\u0027]]}"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_1a4e7196","side":"PARENT","line":846,"in_reply_to":"9aa53dc9_da380940","updated":"2015-04-07 18:11:58.000000000","message":"for some reason removing this fails all tests and i am still debugging it and thus the todo, if i figure it out in next hour or so, i will post an updated patch, else will try a follow up patch.","commit_id":"21bef562c23d96fe41daeedeb43c0bb2d1c53ed0"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"51e24d8b541fcbfc173703473fd1df6a3393637f","unresolved":false,"context_lines":[{"line_number":952,"context_line":"                    \u0027mtu\u0027: n.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":953,"context_line":"                    \u0027shared\u0027: n[\u0027shared\u0027],"},{"line_number":954,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":955,"context_line":"            # TODO(pritesh): Move vlan_transparent to the extesnion module."},{"line_number":956,"context_line":"            # vlan_transparent here is only added if the vlantransparent"},{"line_number":957,"context_line":"            # extension is enabled."},{"line_number":958,"context_line":"            if (\u0027vlan_transparent\u0027 in n and n[\u0027vlan_transparent\u0027] !\u003d"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_5921b04c","line":955,"updated":"2015-04-07 16:06:33.000000000","message":"extesnion -\u003e extension","commit_id":"5485bcff7d3e610a592028b15c58f884d1d39561"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"91cc191ca5bf86e055f565eeb583d267eb669c37","unresolved":false,"context_lines":[{"line_number":952,"context_line":"                    \u0027mtu\u0027: n.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":953,"context_line":"                    \u0027shared\u0027: n[\u0027shared\u0027],"},{"line_number":954,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":955,"context_line":"            # TODO(pritesh): Move vlan_transparent to the extesnion module."},{"line_number":956,"context_line":"            # vlan_transparent here is only added if the vlantransparent"},{"line_number":957,"context_line":"            # extension is enabled."},{"line_number":958,"context_line":"            if (\u0027vlan_transparent\u0027 in n and n[\u0027vlan_transparent\u0027] !\u003d"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_65e28705","line":955,"in_reply_to":"9aa53dc9_5921b04c","updated":"2015-04-07 17:36:56.000000000","message":"Done","commit_id":"5485bcff7d3e610a592028b15c58f884d1d39561"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"577898a4ca4c82086eb866baedc5c440c502dcbd","unresolved":false,"context_lines":[{"line_number":954,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":955,"context_line":"            # TODO(pritesh): Move vlan_transparent to the extesnion module."},{"line_number":956,"context_line":"            # vlan_transparent here is only added if the vlantransparent"},{"line_number":957,"context_line":"            # extension is enabled."},{"line_number":958,"context_line":"            if (\u0027vlan_transparent\u0027 in n and n[\u0027vlan_transparent\u0027] !\u003d"},{"line_number":959,"context_line":"                attributes.ATTR_NOT_SPECIFIED):"},{"line_number":960,"context_line":"                args[\u0027vlan_transparent\u0027] \u003d n[\u0027vlan_transparent\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_8dbb7f72","line":957,"updated":"2015-04-07 13:25:33.000000000","message":"I am okay with this TODO.\n\nTo be precise, all fields received from API comes here, so even if vlan transparency extension is not supported, if a user posts it explicitly and intentionally, the logic goes into the inside if-clause. However I don\u0027t think it is a problem since such user want to create such network.","commit_id":"5485bcff7d3e610a592028b15c58f884d1d39561"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"91cc191ca5bf86e055f565eeb583d267eb669c37","unresolved":false,"context_lines":[{"line_number":954,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":955,"context_line":"            # TODO(pritesh): Move vlan_transparent to the extesnion module."},{"line_number":956,"context_line":"            # vlan_transparent here is only added if the vlantransparent"},{"line_number":957,"context_line":"            # extension is enabled."},{"line_number":958,"context_line":"            if (\u0027vlan_transparent\u0027 in n and n[\u0027vlan_transparent\u0027] !\u003d"},{"line_number":959,"context_line":"                attributes.ATTR_NOT_SPECIFIED):"},{"line_number":960,"context_line":"                args[\u0027vlan_transparent\u0027] \u003d n[\u0027vlan_transparent\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_25e59f08","line":957,"in_reply_to":"9aa53dc9_8dbb7f72","updated":"2015-04-07 17:36:56.000000000","message":"Thanks.","commit_id":"5485bcff7d3e610a592028b15c58f884d1d39561"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"b2061f469aa518d2e624c325887ee45c8a2af990","unresolved":false,"context_lines":[{"line_number":957,"context_line":"                    \u0027mtu\u0027: n.get(\u0027mtu\u0027, constants.DEFAULT_NETWORK_MTU),"},{"line_number":958,"context_line":"                    \u0027shared\u0027: n[\u0027shared\u0027],"},{"line_number":959,"context_line":"                    \u0027status\u0027: n.get(\u0027status\u0027, constants.NET_STATUS_ACTIVE)}"},{"line_number":960,"context_line":"            # TODO(pritesh): Move vlan_transparent to the extension module."},{"line_number":961,"context_line":"            # vlan_transparent here is only added if the vlantransparent"},{"line_number":962,"context_line":"            # extension is enabled."},{"line_number":963,"context_line":"            if (\u0027vlan_transparent\u0027 in n and n[\u0027vlan_transparent\u0027] !\u003d"}],"source_content_type":"text/x-python","patch_set":18,"id":"9aa53dc9_6b911a99","line":960,"updated":"2015-04-08 09:49:47.000000000","message":"Should this attribute be stored as part of the core models_v2.Network?","commit_id":"8fd793c0f319820e296690c07854c64b780b6d54"}],"neutron/db/vlantransparent_db.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"3b249dbc5ac5b630a58ca8114e9913f1e02d6ca0","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    \"\"\"Mixin class to add vlan transparent methods to db_base_plugin_v2.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def _extend_network_dict_vlan_transparent(self, network_res, network_db):"},{"line_number":24,"context_line":"        network_res[vlantransparent.VLANTRANSPARENT] \u003d \\"},{"line_number":25,"context_line":"            network_db.vlan_transparent"},{"line_number":26,"context_line":"        return network_res"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da9b358b_8b62f13c","line":24,"updated":"2015-04-01 13:27:51.000000000","message":"Nit: Use parens vs backslash to continue line","commit_id":"fda7234890861d85f4a07844617ae9969bc4e6bd"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"30097023a4e033d03c218e29aed3e512425078df","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    \"\"\"Mixin class to add vlan transparent methods to db_base_plugin_v2.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def _extend_network_dict_vlan_transparent(self, network_res, network_db):"},{"line_number":24,"context_line":"        network_res[vlantransparent.VLANTRANSPARENT] \u003d \\"},{"line_number":25,"context_line":"            network_db.vlan_transparent"},{"line_number":26,"context_line":"        return network_res"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baa041b7_ff099f32","line":24,"in_reply_to":"da9b358b_8b62f13c","updated":"2015-04-02 08:18:24.000000000","message":"Done","commit_id":"fda7234890861d85f4a07844617ae9969bc4e6bd"}],"neutron/extensions/vlantransparent.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a7862cbcd1c9ccd467c790d90b42dccb25446c19","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    \u0027networks\u0027: {"},{"line_number":32,"context_line":"        VLANTRANSPARENT: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":33,"context_line":"                          \u0027convert_to\u0027: attributes.convert_to_boolean,"},{"line_number":34,"context_line":"                          \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":35,"context_line":"                          \u0027is_visible\u0027: True},"},{"line_number":36,"context_line":"    },"},{"line_number":37,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa041b7_8a27a863","line":34,"updated":"2015-04-04 17:54:08.000000000","message":"Could you clarify the reason you changed the default value from False to ATTR_NOT_FOUND? I cannot find no specific reason so far.\nAre you trying to keep the default value in the database to None for plugins without VLAN transparency support?","commit_id":"60bcba763fa9b106378dc19aec18e893292917b4"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"6ffb7073e2d1ef3438709636bdf35e4605145cb8","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    \u0027networks\u0027: {"},{"line_number":32,"context_line":"        VLANTRANSPARENT: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":33,"context_line":"                          \u0027convert_to\u0027: attributes.convert_to_boolean,"},{"line_number":34,"context_line":"                          \u0027default\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":35,"context_line":"                          \u0027is_visible\u0027: True},"},{"line_number":36,"context_line":"    },"},{"line_number":37,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa041b7_2a5bfc55","line":34,"in_reply_to":"baa041b7_8a27a863","updated":"2015-04-04 20:39:38.000000000","message":"yes thats correct, the main reason is for backward compatibility, so that we know which plugin support this feature and which doesn\u0027t.","commit_id":"60bcba763fa9b106378dc19aec18e893292917b4"}],"neutron/plugins/ml2/drivers/mech_openvswitch.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a7862cbcd1c9ccd467c790d90b42dccb25446c19","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def check_vlan_transparency(self, context):"},{"line_number":55,"context_line":"        \"\"\"Currently Openvswitch driver doesnt support vlan transparency.\"\"\""},{"line_number":56,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa041b7_aad4ac46","line":56,"updated":"2015-04-04 17:54:08.000000000","message":"Is OVS mech driver the only one which does not support VLAN transparency? \nIt is better to return True for mechanism drivers with VLAN transparency support.","commit_id":"60bcba763fa9b106378dc19aec18e893292917b4"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"6ffb7073e2d1ef3438709636bdf35e4605145cb8","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def check_vlan_transparency(self, context):"},{"line_number":55,"context_line":"        \"\"\"Currently Openvswitch driver doesnt support vlan transparency.\"\"\""},{"line_number":56,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa041b7_4a2760ca","line":56,"in_reply_to":"baa041b7_aad4ac46","updated":"2015-04-04 20:39:38.000000000","message":"actually i am adding support for linux bridge and other mech drivers as well, but its tricky in the sense that ovs doesn\u0027t support vlan transparency for all types while linux bridge supports it for vxlan type but not the vlan type. but since most plugins are now in individual repos, i will send in the patches for them individually later on.","commit_id":"60bcba763fa9b106378dc19aec18e893292917b4"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6d82c623fbb259a2d7f72e7079c3ff126eeb6122","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        return agent[\u0027configurations\u0027].get(\u0027bridge_mappings\u0027, {})"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def check_vlan_transparency(self, context):"},{"line_number":55,"context_line":"        \"\"\"Currently Openvswitch driver doesnt support vlan transparency.\"\"\""},{"line_number":56,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_55f498f0","line":55,"range":{"start_line":55,"start_character":40,"end_line":55,"end_character":46},"updated":"2015-04-06 02:25:54.000000000","message":"doesn\u0027t","commit_id":"1186f1ce8e46ecdd24670c001539b206f8d26fd2"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"830f7bce7403e1100392112c3d72c449f8456083","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        return agent[\u0027configurations\u0027].get(\u0027bridge_mappings\u0027, {})"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def check_vlan_transparency(self, context):"},{"line_number":55,"context_line":"        \"\"\"Currently Openvswitch driver doesnt support vlan transparency.\"\"\""},{"line_number":56,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_75f2fc70","line":55,"in_reply_to":"baa041b7_55f498f0","updated":"2015-04-06 04:07:05.000000000","message":"Done, will include in next patch set.","commit_id":"1186f1ce8e46ecdd24670c001539b206f8d26fd2"}],"neutron/plugins/ml2/managers.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a7862cbcd1c9ccd467c790d90b42dccb25446c19","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if context._network[\u0027vlan_transparent\u0027]:"},{"line_number":313,"context_line":"            for driver in self.ordered_mech_drivers:"},{"line_number":314,"context_line":"                if driver.obj.check_vlan_transparency(context) is False:"},{"line_number":315,"context_line":"                    raise vlantrans.VlanTransparencyDriverError()"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def _call_on_drivers(self, method_name, context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa041b7_ca5ff0e3","line":314,"updated":"2015-04-04 17:54:08.000000000","message":"As I commented in mech_openvswitch.py, OVS mech driver is not the only mech driver without VLAN transparency support. Other mech drivers may not support VLAN transparency at the moment. I think it is better check_vlan_transparency returns True if a mech driver supports VLAN transparency. (I don\u0027t have a strong opinion on this, but it is worth considered.)","commit_id":"60bcba763fa9b106378dc19aec18e893292917b4"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"6ffb7073e2d1ef3438709636bdf35e4605145cb8","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if context._network[\u0027vlan_transparent\u0027]:"},{"line_number":313,"context_line":"            for driver in self.ordered_mech_drivers:"},{"line_number":314,"context_line":"                if driver.obj.check_vlan_transparency(context) is False:"},{"line_number":315,"context_line":"                    raise vlantrans.VlanTransparencyDriverError()"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def _call_on_drivers(self, method_name, context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa041b7_ea2bd492","line":314,"in_reply_to":"baa041b7_ca5ff0e3","updated":"2015-04-04 20:39:38.000000000","message":"I am not sure if returning true or false is the motive here, but to allow or disallow creating a specific type (i.e vlan transparent or not) of network if that attribute is being passed and the config allows it to do so.","commit_id":"60bcba763fa9b106378dc19aec18e893292917b4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2db6f06c78e82eb5fd076d4fe9bc35ab1ec9a8a0","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if context._network[\u0027vlan_transparent\u0027]:"},{"line_number":313,"context_line":"            for driver in self.ordered_mech_drivers:"},{"line_number":314,"context_line":"                if driver.obj.check_vlan_transparency(context) is False:"},{"line_number":315,"context_line":"                    raise vlantrans.VlanTransparencyDriverError()"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def _call_on_drivers(self, method_name, context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa53dc9_0dabef75","line":314,"in_reply_to":"baa041b7_ea2bd492","updated":"2015-04-07 13:13:57.000000000","message":"Sorry I missed your reply and late reply.\n\nIn the current code, VlanTransparencyDriverError will be raised only if some mechanism driver returns False explicitly. Existing mech drivers without check_vlan_transparency means vlan transparency is supported as a result. This is opt-out approach.\n\nWhat I would like to mention in the past comment is that a mechanism driver with VLAN transparency explicitly defines check_vlan_transparency() method which returns True. By doing so we can avoid a situation that an existing mech driver accidentally declares it supports VLAN transparency. This is opt-in approach.\n\nI have no strong opinion on opt-in vs opt-out, but reading other comments some reviewers have the similar impression. We can clean-up in a follow-up patch.","commit_id":"60bcba763fa9b106378dc19aec18e893292917b4"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6d82c623fbb259a2d7f72e7079c3ff126eeb6122","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        if context._network[\u0027vlan_transparent\u0027]:"},{"line_number":313,"context_line":"            for driver in self.ordered_mech_drivers:"},{"line_number":314,"context_line":"                if driver.obj.check_vlan_transparency(context) is False:"},{"line_number":315,"context_line":"                    raise vlantrans.VlanTransparencyDriverError()"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def _call_on_drivers(self, method_name, context,"},{"line_number":318,"context_line":"                         continue_on_failure\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_352a342d","line":315,"updated":"2015-04-06 02:25:54.000000000","message":"it would be more useful to make an MD just raise with MD-specific info.\nit isn\u0027t a fault of this patch, though.","commit_id":"1186f1ce8e46ecdd24670c001539b206f8d26fd2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"96320763390ca8b7b3fa069b11c3b067a55f2f99","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        :raises: neutron.plugins.ml2.common.VlanTransparencyDriverError"},{"line_number":304,"context_line":"        if any mechanism driver doesn\u0027t support vlan transparency."},{"line_number":305,"context_line":"        \"\"\""},{"line_number":306,"context_line":"        if context._network[\u0027vlan_transparent\u0027] is None:"},{"line_number":307,"context_line":"            return"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if not cfg.CONF.vlan_transparent:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_7ddda013","line":306,"updated":"2015-04-07 00:41:44.000000000","message":"we should not use the private attribute of the context, but that said, why is this necessary? I seem to miss the point.","commit_id":"9830f6b230a10e2a6b0718505bfc8c57df744891"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"c951c087aa6da96892a2d202941d8ff17803731b","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        :raises: neutron.plugins.ml2.common.VlanTransparencyDriverError"},{"line_number":304,"context_line":"        if any mechanism driver doesn\u0027t support vlan transparency."},{"line_number":305,"context_line":"        \"\"\""},{"line_number":306,"context_line":"        if context._network[\u0027vlan_transparent\u0027] is None:"},{"line_number":307,"context_line":"            return"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if not cfg.CONF.vlan_transparent:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_53364d04","line":306,"in_reply_to":"9aa53dc9_7ddda013","updated":"2015-04-07 02:56:54.000000000","message":"vlan_transparent is tri-state [1], if i can\u0027t catch it here, i cant check its state.\n\n[1]: http://specs.openstack.org/openstack/neutron-specs/specs/kilo/nfv-vlan-trunks.html#rest-api-impact","commit_id":"9830f6b230a10e2a6b0718505bfc8c57df744891"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"96320763390ca8b7b3fa069b11c3b067a55f2f99","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        if context._network[\u0027vlan_transparent\u0027] is None:"},{"line_number":307,"context_line":"            return"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if not cfg.CONF.vlan_transparent:"},{"line_number":310,"context_line":"            raise vlantrans.VlanTransparencyConfigError()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if context._network[\u0027vlan_transparent\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_1d3a1437","line":309,"updated":"2015-04-07 00:41:44.000000000","message":"if we fail when vlan_transparent is false, what\u0027s the point of the config variable? I am not sure I understand. Perhaps now we no longer need the config variable at all?","commit_id":"9830f6b230a10e2a6b0718505bfc8c57df744891"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"c951c087aa6da96892a2d202941d8ff17803731b","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        if context._network[\u0027vlan_transparent\u0027] is None:"},{"line_number":307,"context_line":"            return"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if not cfg.CONF.vlan_transparent:"},{"line_number":310,"context_line":"            raise vlantrans.VlanTransparencyConfigError()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if context._network[\u0027vlan_transparent\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_ee3a18cd","line":309,"in_reply_to":"9aa53dc9_1d3a1437","updated":"2015-04-07 02:56:54.000000000","message":"we do, there are 6 total states as shown below:\n\nconfig,context \u003d False,None # backward compatibility\nconfig,context \u003d True,None # these two above are for backward compatibility\n\nconfig,context \u003d False,True #\nconfig,context \u003d False,False # these two here give config error because you try to set the vlan_transparent as true or false while config is truned off.\n\nconfig,context \u003d True,True # this will allow you create vlan transparent network if all mech drivers support it, else will give driver exception.\n\nconfig,context \u003d True,False # these will allow you to create network even if vlan transparent mech drivers are not present or will give the mech drivers option to create one even when one is not requested.","commit_id":"9830f6b230a10e2a6b0718505bfc8c57df744891"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"96320763390ca8b7b3fa069b11c3b067a55f2f99","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        if not cfg.CONF.vlan_transparent:"},{"line_number":310,"context_line":"            raise vlantrans.VlanTransparencyConfigError()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if context._network[\u0027vlan_transparent\u0027]:"},{"line_number":313,"context_line":"            for driver in self.ordered_mech_drivers:"},{"line_number":314,"context_line":"                if driver.obj.check_vlan_transparency(context) is False:"},{"line_number":315,"context_line":"                    raise vlantrans.VlanTransparencyDriverError()"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_bdf20899","line":312,"updated":"2015-04-07 00:41:44.000000000","message":"ditto","commit_id":"9830f6b230a10e2a6b0718505bfc8c57df744891"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"c951c087aa6da96892a2d202941d8ff17803731b","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        if not cfg.CONF.vlan_transparent:"},{"line_number":310,"context_line":"            raise vlantrans.VlanTransparencyConfigError()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if context._network[\u0027vlan_transparent\u0027]:"},{"line_number":313,"context_line":"            for driver in self.ordered_mech_drivers:"},{"line_number":314,"context_line":"                if driver.obj.check_vlan_transparency(context) is False:"},{"line_number":315,"context_line":"                    raise vlantrans.VlanTransparencyDriverError()"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_ce3754e2","line":312,"in_reply_to":"9aa53dc9_bdf20899","updated":"2015-04-07 02:56:54.000000000","message":"same as above.","commit_id":"9830f6b230a10e2a6b0718505bfc8c57df744891"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"3d9b19a4ee7873e9c57a5d129f2944b0cda00788","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if context._network[\u0027vlan_transparent\u0027]:"},{"line_number":313,"context_line":"            for driver in self.ordered_mech_drivers:"},{"line_number":314,"context_line":"                if driver.obj.check_vlan_transparency(context) is False:"},{"line_number":315,"context_line":"                    raise vlantrans.VlanTransparencyDriverError()"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def _call_on_drivers(self, method_name, context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_3a6dde04","line":314,"updated":"2015-04-07 00:36:03.000000000","message":"It seems check_van_transparency isn\u0027t implemented . If so, I prefer the following rather than adding useless code to mech_openvswitch only.\n\nif driver.obj.check_vlan_transparency(context) is None:","commit_id":"9830f6b230a10e2a6b0718505bfc8c57df744891"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"34d36f6ff5fa5d4404e67a8f56ee05a563d491c7","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if context._network[\u0027vlan_transparent\u0027]:"},{"line_number":313,"context_line":"            for driver in self.ordered_mech_drivers:"},{"line_number":314,"context_line":"                if driver.obj.check_vlan_transparency(context) is False:"},{"line_number":315,"context_line":"                    raise vlantrans.VlanTransparencyDriverError()"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def _call_on_drivers(self, method_name, context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_64caa4a3","line":314,"in_reply_to":"9aa53dc9_2e57e003","updated":"2015-04-07 07:58:42.000000000","message":"This check raises only if ovs mech drivers is selected. Do you intend so? If so, you can disregard my comment.","commit_id":"9830f6b230a10e2a6b0718505bfc8c57df744891"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"c951c087aa6da96892a2d202941d8ff17803731b","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if context._network[\u0027vlan_transparent\u0027]:"},{"line_number":313,"context_line":"            for driver in self.ordered_mech_drivers:"},{"line_number":314,"context_line":"                if driver.obj.check_vlan_transparency(context) is False:"},{"line_number":315,"context_line":"                    raise vlantrans.VlanTransparencyDriverError()"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def _call_on_drivers(self, method_name, context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_2e57e003","line":314,"in_reply_to":"9aa53dc9_3a6dde04","updated":"2015-04-07 02:56:54.000000000","message":"what do you mean by useless, do you even know how the feature work? have you even bothered to test it using the python-neutronclient patch  [1] which i have posted?\n\n[1]: https://review.openstack.org/#/c/162040/","commit_id":"9830f6b230a10e2a6b0718505bfc8c57df744891"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"46d81832eb55b8515f5fc7a5dbcc758c5184dd47","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        :raises: neutron.plugins.ml2.common.VlanTransparencyDriverError"},{"line_number":304,"context_line":"        if any mechanism driver doesn\u0027t support vlan transparency."},{"line_number":305,"context_line":"        \"\"\""},{"line_number":306,"context_line":"        if context._network[\u0027vlan_transparent\u0027] is None:"},{"line_number":307,"context_line":"            return"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if not cfg.CONF.vlan_transparent:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa53dc9_0ebbfc73","line":306,"updated":"2015-04-07 03:43:21.000000000","message":"Ok, I was too lenient: you MUST not use private attributes.","commit_id":"3b0a1283c178c27a4db2928acb7bc435a6c218ca"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"71fac66a3deef6656a2485d115afd1219054650a","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        :raises: neutron.plugins.ml2.common.VlanTransparencyDriverError"},{"line_number":304,"context_line":"        if any mechanism driver doesn\u0027t support vlan transparency."},{"line_number":305,"context_line":"        \"\"\""},{"line_number":306,"context_line":"        if context._network[\u0027vlan_transparent\u0027] is None:"},{"line_number":307,"context_line":"            return"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if not cfg.CONF.vlan_transparent:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa53dc9_29ca3aa2","line":306,"in_reply_to":"9aa53dc9_0ebbfc73","updated":"2015-04-07 04:00:00.000000000","message":"Done","commit_id":"3b0a1283c178c27a4db2928acb7bc435a6c218ca"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"66f44b4262de87b51fd6f10f3c9bae9cfe004b83","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.extensions import multiprovidernet as mpnet"},{"line_number":23,"context_line":"from neutron.extensions import portbindings"},{"line_number":24,"context_line":"from neutron.extensions import providernet as provider"},{"line_number":25,"context_line":"from neutron.extensions import vlantransparent as vlantrans"},{"line_number":26,"context_line":"from neutron.i18n import _LE, _LI"},{"line_number":27,"context_line":"from neutron.plugins.ml2.common import exceptions as ml2_exc"},{"line_number":28,"context_line":"from neutron.plugins.ml2 import db"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_dbfcaf40","line":25,"updated":"2015-04-07 06:53:06.000000000","message":"I\u0027m not sure what the alias buys you in this case, but as it\u0027s not making any harm you can keep it.","commit_id":"80a2258c67ba2befcbb5cf48cfaf0a36e8705d0c"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"870e4b8ba69c8aa8d73230578d3852980fc8346c","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.extensions import multiprovidernet as mpnet"},{"line_number":23,"context_line":"from neutron.extensions import portbindings"},{"line_number":24,"context_line":"from neutron.extensions import providernet as provider"},{"line_number":25,"context_line":"from neutron.extensions import vlantransparent as vlantrans"},{"line_number":26,"context_line":"from neutron.i18n import _LE, _LI"},{"line_number":27,"context_line":"from neutron.plugins.ml2.common import exceptions as ml2_exc"},{"line_number":28,"context_line":"from neutron.plugins.ml2 import db"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_5eb64d8b","line":25,"in_reply_to":"9aa53dc9_dbfcaf40","updated":"2015-04-07 07:23:33.000000000","message":"Done","commit_id":"80a2258c67ba2befcbb5cf48cfaf0a36e8705d0c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"66f44b4262de87b51fd6f10f3c9bae9cfe004b83","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        if context.current[\u0027vlan_transparent\u0027] is None:"},{"line_number":307,"context_line":"            return"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if not cfg.CONF.vlan_transparent:"},{"line_number":310,"context_line":"            raise vlantrans.VlanTransparencyConfigError()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if context.current[\u0027vlan_transparent\u0027]:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_9b63c71a","line":309,"updated":"2015-04-07 06:53:06.000000000","message":"Do you believe the config option is still needed at this stage?\nIt looks like you\u0027re just using it as a safety check.\nOn the other hand, if your intention is allow for disabling the feature even when the plugin supports vlan transparency, I would consider conditionally adding this extension to the supported list according to this configuration value.\n\nFor ML2, this might require some slight tweaks in the extension driver manager.","commit_id":"80a2258c67ba2befcbb5cf48cfaf0a36e8705d0c"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"c4c1e4027bbc400ae0eea3adc9d32fda49047377","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        if context.current[\u0027vlan_transparent\u0027] is None:"},{"line_number":307,"context_line":"            return"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if not cfg.CONF.vlan_transparent:"},{"line_number":310,"context_line":"            raise vlantrans.VlanTransparencyConfigError()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if context.current[\u0027vlan_transparent\u0027]:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_7878d3c4","line":309,"in_reply_to":"9aa53dc9_9b63c71a","updated":"2015-04-08 07:08:28.000000000","message":"Done","commit_id":"80a2258c67ba2befcbb5cf48cfaf0a36e8705d0c"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"870e4b8ba69c8aa8d73230578d3852980fc8346c","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        if context.current[\u0027vlan_transparent\u0027] is None:"},{"line_number":307,"context_line":"            return"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if not cfg.CONF.vlan_transparent:"},{"line_number":310,"context_line":"            raise vlantrans.VlanTransparencyConfigError()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        if context.current[\u0027vlan_transparent\u0027]:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_be03190f","line":309,"in_reply_to":"9aa53dc9_9b63c71a","updated":"2015-04-07 07:23:33.000000000","message":"added a note here, will try to handle this in a separate patch.","commit_id":"80a2258c67ba2befcbb5cf48cfaf0a36e8705d0c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"577898a4ca4c82086eb866baedc5c440c502dcbd","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        if context.current[\u0027vlan_transparent\u0027]:"},{"line_number":316,"context_line":"            for driver in self.ordered_mech_drivers:"},{"line_number":317,"context_line":"                if driver.obj.check_vlan_transparency(context) is False:"},{"line_number":318,"context_line":"                    raise vlantransparent.VlanTransparencyDriverError()"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def _call_on_drivers(self, method_name, context,"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_703b70d2","line":317,"updated":"2015-04-07 13:25:33.000000000","message":"In the past patchsets we saw several comments here.\n\nI would like to quote my reply in the past patchset (post just a few minutes ago). We can discuss an approach when revisiting the above TODO, so I am okay with the current code.\n\n----\n\n  In the current code, VlanTransparencyDriverError will be raised\n  only if some mechanism driver returns False explicitly.\n  Existing mech drivers without check_vlan_transparency means\n  vlan transparency is supported as a result. This is opt-out approach.\n\n  What I would like to mention in the past comment is that a mechanism\n  driver with VLAN transparency explicitly defines check_vlan_transparency()\n  method which returns True. By doing so we can avoid a situation that an \n  existing mech driver accidentally declares it supports VLAN transparency.\n  This is opt-in approach.","commit_id":"5485bcff7d3e610a592028b15c58f884d1d39561"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"91cc191ca5bf86e055f565eeb583d267eb669c37","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        if context.current[\u0027vlan_transparent\u0027]:"},{"line_number":316,"context_line":"            for driver in self.ordered_mech_drivers:"},{"line_number":317,"context_line":"                if driver.obj.check_vlan_transparency(context) is False:"},{"line_number":318,"context_line":"                    raise vlantransparent.VlanTransparencyDriverError()"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def _call_on_drivers(self, method_name, context,"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_e5a7b74d","line":317,"in_reply_to":"9aa53dc9_703b70d2","updated":"2015-04-07 17:36:56.000000000","message":"ok will add the opt-in/opt-out approach to todo and will handle it with the config item.","commit_id":"5485bcff7d3e610a592028b15c58f884d1d39561"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e8a7b3b37f3f16ca3b1b81ddfe28c00f88040aef","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if context.current[\u0027vlan_transparent\u0027]:"},{"line_number":310,"context_line":"            for driver in self.ordered_mech_drivers:"},{"line_number":311,"context_line":"                if driver.obj.check_vlan_transparency(context) is False:"},{"line_number":312,"context_line":"                    raise vlantransparent.VlanTransparencyDriverError()"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def _call_on_drivers(self, method_name, context,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9aa53dc9_df02120b","line":311,"updated":"2015-04-08 14:54:41.000000000","message":"I am just concerning on enabling VLAN transparent support by default. All mechaninsm drivers except OVS are assumed support VLAN transparency. I am not a stakeholder of mechanism drivers, so I don\u0027t have a strong opinion but would like to raise.\n\nMy prefernces is the following code:\n\n  if context.current[\u0027vlan_transparent\u0027]:\n      for driver in self.ordered_mech_drivers:\n          if not driver.obj.check_vlan_transparency(context):\n              raise vlantransparent.VlanTransparencyDriverError()\n\nand add the following to linux bridge mechanism driver.\n\n  def check_vlan_transparency(self):\n      return True\n\nThought?","commit_id":"8fd793c0f319820e296690c07854c64b780b6d54"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"0f977af5baa68f2197afc73c523bd27bc2fc1f7f","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if context.current[\u0027vlan_transparent\u0027]:"},{"line_number":310,"context_line":"            for driver in self.ordered_mech_drivers:"},{"line_number":311,"context_line":"                if driver.obj.check_vlan_transparency(context) is False:"},{"line_number":312,"context_line":"                    raise vlantransparent.VlanTransparencyDriverError()"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def _call_on_drivers(self, method_name, context,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9aa53dc9_b25f85e4","line":311,"in_reply_to":"9aa53dc9_df02120b","updated":"2015-04-08 14:59:06.000000000","message":"I agree with Akihiro here, we should assume drivers do NOT support this unless they explicitly enable it. We can audit the existing drivers for their support (in-tree) and out of tree we rely on the maintainers to update.","commit_id":"8fd793c0f319820e296690c07854c64b780b6d54"}],"neutron/tests/unit/extensions/test_vlantransparent.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"51e24d8b541fcbfc173703473fd1df6a3393637f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    fmt \u003d \u0027json\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def setUp(self):"},{"line_number":53,"context_line":"        plugin \u003d (\u0027neutron.tests.unit.extensions.test_vlantransparent.\u0027 +"},{"line_number":54,"context_line":"                  \u0027VlanTransparentExtensionTestPlugin\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # Save the global RESOURCE_ATTRIBUTE_MAP"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_8f824aff","line":53,"updated":"2015-04-07 16:06:33.000000000","message":"nit: + not needed","commit_id":"5485bcff7d3e610a592028b15c58f884d1d39561"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"91cc191ca5bf86e055f565eeb583d267eb669c37","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    fmt \u003d \u0027json\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def setUp(self):"},{"line_number":53,"context_line":"        plugin \u003d (\u0027neutron.tests.unit.extensions.test_vlantransparent.\u0027 +"},{"line_number":54,"context_line":"                  \u0027VlanTransparentExtensionTestPlugin\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # Save the global RESOURCE_ATTRIBUTE_MAP"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_25759fca","line":53,"in_reply_to":"9aa53dc9_8f824aff","updated":"2015-04-07 17:36:56.000000000","message":"Done","commit_id":"5485bcff7d3e610a592028b15c58f884d1d39561"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"51e24d8b541fcbfc173703473fd1df6a3393637f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        with self.network(name\u003d\u0027net1\u0027, **vlantrans) as net:"},{"line_number":81,"context_line":"            req \u003d self.new_show_request(\u0027networks\u0027, net[\u0027network\u0027][\u0027id\u0027])"},{"line_number":82,"context_line":"            res \u003d self.deserialize(self.fmt, req.get_response(self.api))"},{"line_number":83,"context_line":"            self.assertEqual(res[\u0027network\u0027][\u0027name\u0027],"},{"line_number":84,"context_line":"                             net[\u0027network\u0027][\u0027name\u0027])"},{"line_number":85,"context_line":"            self.assertEqual(res[\u0027network\u0027][vlt.VLANTRANSPARENT],"},{"line_number":86,"context_line":"                             True)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_efc1d62f","line":83,"updated":"2015-04-07 16:06:33.000000000","message":"In all the asserts, the args should be (expected, actual)","commit_id":"5485bcff7d3e610a592028b15c58f884d1d39561"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"91cc191ca5bf86e055f565eeb583d267eb669c37","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        with self.network(name\u003d\u0027net1\u0027, **vlantrans) as net:"},{"line_number":81,"context_line":"            req \u003d self.new_show_request(\u0027networks\u0027, net[\u0027network\u0027][\u0027id\u0027])"},{"line_number":82,"context_line":"            res \u003d self.deserialize(self.fmt, req.get_response(self.api))"},{"line_number":83,"context_line":"            self.assertEqual(res[\u0027network\u0027][\u0027name\u0027],"},{"line_number":84,"context_line":"                             net[\u0027network\u0027][\u0027name\u0027])"},{"line_number":85,"context_line":"            self.assertEqual(res[\u0027network\u0027][vlt.VLANTRANSPARENT],"},{"line_number":86,"context_line":"                             True)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_c54a7383","line":83,"in_reply_to":"9aa53dc9_efc1d62f","updated":"2015-04-07 17:36:56.000000000","message":"Done","commit_id":"5485bcff7d3e610a592028b15c58f884d1d39561"}],"neutron/tests/unit/test_db_plugin.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"d37a50bdb406af194c13755ca8923e6b6d5f5bab","unresolved":false,"context_lines":[{"line_number":2229,"context_line":"            self.assertEqual(net[\u0027network\u0027][\u0027mtu\u0027],"},{"line_number":2230,"context_line":"                             constants.DEFAULT_NETWORK_MTU)"},{"line_number":2231,"context_line":""},{"line_number":2232,"context_line":"    def test_create_network_vlan_transparent(self):"},{"line_number":2233,"context_line":"        name \u003d \"vlan_transparent\""},{"line_number":2234,"context_line":"        cfg.CONF.set_override(\u0027vlan_transparent\u0027, True)"},{"line_number":2235,"context_line":"        with self.network(name\u003dname, vlan_transparent\u003dTrue) as net:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9b358b_17b96c79","side":"PARENT","line":2232,"updated":"2015-04-01 11:51:09.000000000","message":"it seems like we lost test coverage here and didn\u0027t gain it back anywhere else","commit_id":"5616315abc39753d95cdd635067fe8a1c31dd45c"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"30097023a4e033d03c218e29aed3e512425078df","unresolved":false,"context_lines":[{"line_number":2229,"context_line":"            self.assertEqual(net[\u0027network\u0027][\u0027mtu\u0027],"},{"line_number":2230,"context_line":"                             constants.DEFAULT_NETWORK_MTU)"},{"line_number":2231,"context_line":""},{"line_number":2232,"context_line":"    def test_create_network_vlan_transparent(self):"},{"line_number":2233,"context_line":"        name \u003d \"vlan_transparent\""},{"line_number":2234,"context_line":"        cfg.CONF.set_override(\u0027vlan_transparent\u0027, True)"},{"line_number":2235,"context_line":"        with self.network(name\u003dname, vlan_transparent\u003dTrue) as net:"}],"source_content_type":"text/x-python","patch_set":3,"id":"baa041b7_420e7235","side":"PARENT","line":2232,"in_reply_to":"da9b358b_17b96c79","updated":"2015-04-02 08:18:24.000000000","message":"Done","commit_id":"5616315abc39753d95cdd635067fe8a1c31dd45c"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"23f0b1e3ec53ff96902a2944355d658dd941da50","unresolved":false,"context_lines":[{"line_number":2813,"context_line":"                    \u0027tenant_id\u0027: network[\u0027network\u0027][\u0027tenant_id\u0027]}}"},{"line_number":2814,"context_line":"            subnet_req \u003d self.new_create_request(\u0027subnets\u0027, data)"},{"line_number":2815,"context_line":"            res \u003d subnet_req.get_response(self.api)"},{"line_number":2816,"context_line":"            self.assertEqual(res.status_int, webob.exc.HTTPClientError.code)"},{"line_number":2817,"context_line":""},{"line_number":2818,"context_line":"    def test_create_subnet_only_ip_version_v6_no_pool(self):"},{"line_number":2819,"context_line":"        with self.network() as network:"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_5c4f6e92","line":2816,"updated":"2015-04-02 13:08:56.000000000","message":"nit: assertEqual calls should have expected, actual ordering for args.","commit_id":"ebcff4d3e17ea959a0a8a2ed8c9edcd7f4fb53f4"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"d064ff2b51db1887c55e97b053d898dbf343fc14","unresolved":false,"context_lines":[{"line_number":2813,"context_line":"                    \u0027tenant_id\u0027: network[\u0027network\u0027][\u0027tenant_id\u0027]}}"},{"line_number":2814,"context_line":"            subnet_req \u003d self.new_create_request(\u0027subnets\u0027, data)"},{"line_number":2815,"context_line":"            res \u003d subnet_req.get_response(self.api)"},{"line_number":2816,"context_line":"            self.assertEqual(res.status_int, webob.exc.HTTPClientError.code)"},{"line_number":2817,"context_line":""},{"line_number":2818,"context_line":"    def test_create_subnet_only_ip_version_v6_no_pool(self):"},{"line_number":2819,"context_line":"        with self.network() as network:"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_7bb1dce0","line":2816,"in_reply_to":"baa041b7_5c4f6e92","updated":"2015-04-04 02:01:38.000000000","message":"Done","commit_id":"ebcff4d3e17ea959a0a8a2ed8c9edcd7f4fb53f4"}],"neutron/tests/unit/test_extension_vlan_transparent.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"23f0b1e3ec53ff96902a2944355d658dd941da50","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                           expect_errors\u003dexpect_errors)"},{"line_number":108,"context_line":"        return res, data, net_id"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _post_network_with_vlan_transparent_attrs(self, ctx,"},{"line_number":111,"context_line":"                                                 expect_errors\u003dFalse):"},{"line_number":112,"context_line":"        data \u003d self._prepare_net_data()"},{"line_number":113,"context_line":"        env \u003d {\u0027neutron.context\u0027: ctx}"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_17965f4c","line":110,"updated":"2015-04-02 13:08:56.000000000","message":"Could combine these two post methods and make the bad_data a default arg with None and skip the update() for this case.","commit_id":"ebcff4d3e17ea959a0a8a2ed8c9edcd7f4fb53f4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"af11286203d536f45cc4774edb2263ef3b047e6b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                           expect_errors\u003dexpect_errors)"},{"line_number":108,"context_line":"        return res, data, net_id"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _post_network_with_vlan_transparent_attrs(self, ctx,"},{"line_number":111,"context_line":"                                                 expect_errors\u003dFalse):"},{"line_number":112,"context_line":"        data \u003d self._prepare_net_data()"},{"line_number":113,"context_line":"        env \u003d {\u0027neutron.context\u0027: ctx}"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_1fa9ad7b","line":110,"in_reply_to":"baa041b7_17965f4c","updated":"2015-04-03 14:12:06.000000000","message":"+1. Most lines are equal.","commit_id":"ebcff4d3e17ea959a0a8a2ed8c9edcd7f4fb53f4"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"d064ff2b51db1887c55e97b053d898dbf343fc14","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                           expect_errors\u003dexpect_errors)"},{"line_number":108,"context_line":"        return res, data, net_id"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _post_network_with_vlan_transparent_attrs(self, ctx,"},{"line_number":111,"context_line":"                                                 expect_errors\u003dFalse):"},{"line_number":112,"context_line":"        data \u003d self._prepare_net_data()"},{"line_number":113,"context_line":"        env \u003d {\u0027neutron.context\u0027: ctx}"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_3bcc7469","line":110,"in_reply_to":"baa041b7_17965f4c","updated":"2015-04-04 02:01:38.000000000","message":"Done","commit_id":"ebcff4d3e17ea959a0a8a2ed8c9edcd7f4fb53f4"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"d064ff2b51db1887c55e97b053d898dbf343fc14","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                           expect_errors\u003dexpect_errors)"},{"line_number":108,"context_line":"        return res, data, net_id"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _post_network_with_vlan_transparent_attrs(self, ctx,"},{"line_number":111,"context_line":"                                                 expect_errors\u003dFalse):"},{"line_number":112,"context_line":"        data \u003d self._prepare_net_data()"},{"line_number":113,"context_line":"        env \u003d {\u0027neutron.context\u0027: ctx}"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_1bc77046","line":110,"in_reply_to":"baa041b7_1fa9ad7b","updated":"2015-04-04 02:01:38.000000000","message":"Done","commit_id":"ebcff4d3e17ea959a0a8a2ed8c9edcd7f4fb53f4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"af11286203d536f45cc4774edb2263ef3b047e6b","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                                     \u0027shared\u0027: False})"},{"line_number":142,"context_line":"        instance.create_network.assert_called_with(mock.ANY,"},{"line_number":143,"context_line":"                                                   network\u003dexp_input)"},{"line_number":144,"context_line":"        self.assertEqual(res.status_int, web_exc.HTTPCreated.code)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def test_network_create_with_bad_vlan_transparent_attrs_400(self):"},{"line_number":147,"context_line":"        ctx \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_9f85bd08","line":144,"updated":"2015-04-03 14:12:06.000000000","message":"For new tests, the recommended argument order is assertEqual(expected, actual).\n\nself.assertEqual(web_exc.HTTPCreated.code, res.status_int)","commit_id":"ebcff4d3e17ea959a0a8a2ed8c9edcd7f4fb53f4"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"d064ff2b51db1887c55e97b053d898dbf343fc14","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                                     \u0027shared\u0027: False})"},{"line_number":142,"context_line":"        instance.create_network.assert_called_with(mock.ANY,"},{"line_number":143,"context_line":"                                                   network\u003dexp_input)"},{"line_number":144,"context_line":"        self.assertEqual(res.status_int, web_exc.HTTPCreated.code)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def test_network_create_with_bad_vlan_transparent_attrs_400(self):"},{"line_number":147,"context_line":"        ctx \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_fbc5ec3b","line":144,"in_reply_to":"baa041b7_9f85bd08","updated":"2015-04-04 02:01:38.000000000","message":"Done","commit_id":"ebcff4d3e17ea959a0a8a2ed8c9edcd7f4fb53f4"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6d82c623fbb259a2d7f72e7079c3ff126eeb6122","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                                         vlt_db.Vlantransparent_db_mixin):"},{"line_number":52,"context_line":"    \"\"\"Test plugin to mixin the VLAN transparent extensions.\"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    supported_extension_aliases \u003d [\"vlan-transparent\"]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class VlanTransparentExtensionTestCase(testlib_api.WebTestCase):"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_f56e0c95","line":54,"updated":"2015-04-06 02:25:54.000000000","message":"i\u0027m not sure if i understand the purpose of this class.\nit seems that it\u0027s always mock\u0027ed by VlanTransparentExtensionTestCase.setUp\nand Vlantransparent_db_mixin is not actually covered by these tests.\nam i missing something?","commit_id":"1186f1ce8e46ecdd24670c001539b206f8d26fd2"},{"author":{"_account_id":5892,"name":"pritesh","email":"pritesh@romana.io","username":"pritkoth"},"change_message_id":"fc29ab0d5a4b038096e65f09ac0d064036483f72","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                                         vlt_db.Vlantransparent_db_mixin):"},{"line_number":52,"context_line":"    \"\"\"Test plugin to mixin the VLAN transparent extensions.\"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    supported_extension_aliases \u003d [\"vlan-transparent\"]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class VlanTransparentExtensionTestCase(testlib_api.WebTestCase):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9aa53dc9_fa2adb2b","line":54,"in_reply_to":"baa041b7_f56e0c95","updated":"2015-04-06 20:15:31.000000000","message":"Done","commit_id":"1186f1ce8e46ecdd24670c001539b206f8d26fd2"}]}
