)]}'
{"quantum/plugins/linuxbridge/lb_quantum_plugin.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f6ff135ead30a912a896d4ebf848b4ea4baab73b","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            return (None, None, None)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        # Authorize before exposing plugin details to client"},{"line_number":243,"context_line":"        self._enforce_provider_set_auth(context, attrs)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        if not network_type_set:"},{"line_number":246,"context_line":"            msg \u003d _(\"provider:network_type required\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FjLQ%3D","line":243,"updated":"2012-08-31 17:48:59.000000000","message":"Maybe we can perform validation before authorization.\nAuthz checking is much more expensive than validation - if the data are not valid anyway you might want to save those resources.","commit_id":"493903c0d03e53fd8192dff2177698d332935087"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":240,"context_line":"            return (None, None, None)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        # Authorize before exposing plugin details to client"},{"line_number":243,"context_line":"        self._enforce_provider_set_auth(context, attrs)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        if not network_type_set:"},{"line_number":246,"context_line":"            msg \u003d _(\"provider:network_type required\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Firc%3D","line":243,"in_reply_to":"AAAALH%2F%2FjFY%3D","updated":"2012-09-01 13:58:31.000000000","message":"sounds cool","commit_id":"493903c0d03e53fd8192dff2177698d332935087"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7b9042bbf9ffcbb4a83a2a0b7ab54f23a325911a","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            return (None, None, None)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        # Authorize before exposing plugin details to client"},{"line_number":243,"context_line":"        self._enforce_provider_set_auth(context, attrs)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        if not network_type_set:"},{"line_number":246,"context_line":"            msg \u003d _(\"provider:network_type required\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FjFY%3D","line":243,"in_reply_to":"AAAALH%2F%2FjLQ%3D","updated":"2012-08-31 18:50:27.000000000","message":"I had considered that, but decided to do the authz first so that details about what plugin was being used were not leaked to unauthorized users, as indicated in the comment above. Otherwise any unauthorized tenant could easily determine what network_types their provider\u0027s plugin supports, and maybe infer which plugin is being used.","commit_id":"493903c0d03e53fd8192dff2177698d332935087"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f6ff135ead30a912a896d4ebf848b4ea4baab73b","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                msg \u003d _(\"provider:segmentation_id specified for flat network\")"},{"line_number":251,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":252,"context_line":"            else:"},{"line_number":253,"context_line":"                segmentation_id \u003d lconst.FLAT_VLAN_ID"},{"line_number":254,"context_line":"        elif network_type \u003d\u003d \u0027vlan\u0027:"},{"line_number":255,"context_line":"            if not segmentation_id_set:"},{"line_number":256,"context_line":"                msg \u003d _(\"provider:segmentation_id required\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FjMQ%3D","line":253,"updated":"2012-08-31 17:48:59.000000000","message":"Consider renaming to: lconst.FLAT_SEGMENT_ID\n-1 should still be fine","commit_id":"493903c0d03e53fd8192dff2177698d332935087"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":250,"context_line":"                msg \u003d _(\"provider:segmentation_id specified for flat network\")"},{"line_number":251,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":252,"context_line":"            else:"},{"line_number":253,"context_line":"                segmentation_id \u003d lconst.FLAT_VLAN_ID"},{"line_number":254,"context_line":"        elif network_type \u003d\u003d \u0027vlan\u0027:"},{"line_number":255,"context_line":"            if not segmentation_id_set:"},{"line_number":256,"context_line":"                msg \u003d _(\"provider:segmentation_id required\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Firg%3D","line":253,"in_reply_to":"AAAALH%2F%2FjFQ%3D","updated":"2012-09-01 13:58:31.000000000","message":"Ok","commit_id":"493903c0d03e53fd8192dff2177698d332935087"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7b9042bbf9ffcbb4a83a2a0b7ab54f23a325911a","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                msg \u003d _(\"provider:segmentation_id specified for flat network\")"},{"line_number":251,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":252,"context_line":"            else:"},{"line_number":253,"context_line":"                segmentation_id \u003d lconst.FLAT_VLAN_ID"},{"line_number":254,"context_line":"        elif network_type \u003d\u003d \u0027vlan\u0027:"},{"line_number":255,"context_line":"            if not segmentation_id_set:"},{"line_number":256,"context_line":"                msg \u003d _(\"provider:segmentation_id required\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FjFQ%3D","line":253,"in_reply_to":"AAAALH%2F%2FjMQ%3D","updated":"2012-08-31 18:50:27.000000000","message":"I intentionally kept the name here because internally flat networks are being handled as if they are VLANs, except that their VID is a special value.","commit_id":"493903c0d03e53fd8192dff2177698d332935087"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f6ff135ead30a912a896d4ebf848b4ea4baab73b","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":258,"context_line":"            if segmentation_id \u003c 1 or segmentation_id \u003e 4094:"},{"line_number":259,"context_line":"                msg \u003d _(\"provider:segmentation_id out of range \""},{"line_number":260,"context_line":"                        \"(1 through 4094)\")"},{"line_number":261,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":262,"context_line":"        else:"},{"line_number":263,"context_line":"            msg \u003d _(\"invalid provider:network_type %s\" % network_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FjLY%3D","line":260,"updated":"2012-08-31 17:48:59.000000000","message":"I haven\u0027t tried by myself, but the above logic quite looks like a validator function. It\u0027s easy to add new validators in API extensions.\n\nThe use of a validator is anyway to be regarded as a minor, non important, improvement.","commit_id":"493903c0d03e53fd8192dff2177698d332935087"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":257,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":258,"context_line":"            if segmentation_id \u003c 1 or segmentation_id \u003e 4094:"},{"line_number":259,"context_line":"                msg \u003d _(\"provider:segmentation_id out of range \""},{"line_number":260,"context_line":"                        \"(1 through 4094)\")"},{"line_number":261,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":262,"context_line":"        else:"},{"line_number":263,"context_line":"            msg \u003d _(\"invalid provider:network_type %s\" % network_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FirU%3D","line":260,"in_reply_to":"AAAALH%2F%2FjFM%3D","updated":"2012-09-01 13:58:31.000000000","message":"That\u0027s allright. I told you bout the vlan based validator.\nI was suggesting having a network-type aware validator.\n\nBut again, this would clash with the desire of not exposing details concerning the provider network feature to unauthorized users - and with also prevent us from having plugin-specific network types.\n\nSo, just ignore this comment.","commit_id":"493903c0d03e53fd8192dff2177698d332935087"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7b9042bbf9ffcbb4a83a2a0b7ab54f23a325911a","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":258,"context_line":"            if segmentation_id \u003c 1 or segmentation_id \u003e 4094:"},{"line_number":259,"context_line":"                msg \u003d _(\"provider:segmentation_id out of range \""},{"line_number":260,"context_line":"                        \"(1 through 4094)\")"},{"line_number":261,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":262,"context_line":"        else:"},{"line_number":263,"context_line":"            msg \u003d _(\"invalid provider:network_type %s\" % network_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FjFM%3D","line":260,"in_reply_to":"AAAALH%2F%2FjLY%3D","updated":"2012-08-31 18:50:27.000000000","message":"This patch removed the validator I had put there previously, because segmentation_id is inherently more general than vlan_id was. Wasn\u0027t this your suggestion, or maybe Dan\u0027s?","commit_id":"493903c0d03e53fd8192dff2177698d332935087"}],"quantum/plugins/openvswitch/agent/ovs_quantum_agent.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f6ff135ead30a912a896d4ebf848b4ea4baab73b","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        if vif_port:"},{"line_number":123,"context_line":"            if port[\u0027admin_state_up\u0027]:"},{"line_number":124,"context_line":"                # REVISIT(rkukura) This does not seem right. This"},{"line_number":125,"context_line":"                # needs to be the local_vlan."},{"line_number":126,"context_line":"                vlan_id \u003d kwargs.get(\u0027vlan_id\u0027)"},{"line_number":127,"context_line":"                # create the networking for the port"},{"line_number":128,"context_line":"                self.int_br.set_db_attribute(\"Port\", vif_port.port_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FjLI%3D","line":125,"updated":"2012-08-31 17:48:59.000000000","message":"Please file a bug on launchpad anyway. In this way either you or somebody else can triage the bug.","commit_id":"493903c0d03e53fd8192dff2177698d332935087"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7b9042bbf9ffcbb4a83a2a0b7ab54f23a325911a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        if vif_port:"},{"line_number":123,"context_line":"            if port[\u0027admin_state_up\u0027]:"},{"line_number":124,"context_line":"                # REVISIT(rkukura) This does not seem right. This"},{"line_number":125,"context_line":"                # needs to be the local_vlan."},{"line_number":126,"context_line":"                vlan_id \u003d kwargs.get(\u0027vlan_id\u0027)"},{"line_number":127,"context_line":"                # create the networking for the port"},{"line_number":128,"context_line":"                self.int_br.set_db_attribute(\"Port\", vif_port.port_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FjFI%3D","line":125,"in_reply_to":"AAAALH%2F%2FjLI%3D","updated":"2012-08-31 18:50:27.000000000","message":"Doing that today. Just discussed the intended behavior with Gary.","commit_id":"493903c0d03e53fd8192dff2177698d332935087"}],"quantum/plugins/openvswitch/ovs_quantum_plugin.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f6ff135ead30a912a896d4ebf848b4ea4baab73b","unresolved":false,"context_lines":[{"line_number":309,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":310,"context_line":"            if segmentation_id \u003c 1 or segmentation_id \u003e 4094:"},{"line_number":311,"context_line":"                msg \u003d _(\"provider:segmentation_id out of range \""},{"line_number":312,"context_line":"                        \"(1 through 4094)\")"},{"line_number":313,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":314,"context_line":"        else:"},{"line_number":315,"context_line":"            msg \u003d _(\"invalid provider:network_type %s\" % network_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FjLE%3D","line":312,"updated":"2012-08-31 17:48:59.000000000","message":"If possible validate, before authz","commit_id":"493903c0d03e53fd8192dff2177698d332935087"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7b9042bbf9ffcbb4a83a2a0b7ab54f23a325911a","unresolved":false,"context_lines":[{"line_number":309,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":310,"context_line":"            if segmentation_id \u003c 1 or segmentation_id \u003e 4094:"},{"line_number":311,"context_line":"                msg \u003d _(\"provider:segmentation_id out of range \""},{"line_number":312,"context_line":"                        \"(1 through 4094)\")"},{"line_number":313,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":314,"context_line":"        else:"},{"line_number":315,"context_line":"            msg \u003d _(\"invalid provider:network_type %s\" % network_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FjFE%3D","line":312,"in_reply_to":"AAAALH%2F%2FjLE%3D","updated":"2012-08-31 18:50:27.000000000","message":"See reply in lb_quantum_plugin.py.","commit_id":"493903c0d03e53fd8192dff2177698d332935087"}]}
