)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"1ef531c4826fe2974132f50d650b19fad4f3879c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch enhances the call to Type Drivers to include network ID."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This gives flexibility to vendors (writing their own type drivers)"},{"line_number":12,"context_line":"to group the allocations based upon the networks - or associate"},{"line_number":13,"context_line":"resources with the networks.  "},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a740942_a0c7f710","line":11,"updated":"2015-12-11 00:56:39.000000000","message":"So are you saying that the existing type drivers would never make use of this API enhancement?","commit_id":"595bedad5909c3f37f9c880fcdb630099d36a338"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"2e6be149e9c0515648ce13142d34b192e9f628b2","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch enhances the call to Type Drivers to include network ID."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This gives flexibility to vendors (writing their own type drivers)"},{"line_number":12,"context_line":"to group the allocations based upon the networks - or associate"},{"line_number":13,"context_line":"resources with the networks.  "},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a740942_e205d510","line":11,"in_reply_to":"7a740942_a0c7f710","updated":"2015-12-11 19:17:44.000000000","message":"No, that is not implied at all. Any type driver (existing or new) will be able to use this API enhancement.","commit_id":"595bedad5909c3f37f9c880fcdb630099d36a338"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"1ef531c4826fe2974132f50d650b19fad4f3879c","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This gives flexibility to vendors (writing their own type drivers)"},{"line_number":12,"context_line":"to group the allocations based upon the networks - or associate"},{"line_number":13,"context_line":"resources with the networks.  "},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I0a7ca370004dbbe86027dacc4a6c968fcf0c7273"},{"line_number":16,"context_line":"Closes-Bug: 1524576"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a740942_c0f1e36b","line":13,"updated":"2015-12-11 00:56:39.000000000","message":"what resources? This sounds an awful lot like tagging exposed to backends.","commit_id":"595bedad5909c3f37f9c880fcdb630099d36a338"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b65b49b0170225957b285f3058ff8f1fb72c35be","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This gives flexibility to vendors (writing their own type drivers)"},{"line_number":12,"context_line":"to group the allocations based upon the networks - or associate"},{"line_number":13,"context_line":"resources with the networks.  "},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I0a7ca370004dbbe86027dacc4a6c968fcf0c7273"},{"line_number":16,"context_line":"Closes-Bug: 1524576"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5a710552_2f9fd860","line":13,"in_reply_to":"7a740942_624a4528","updated":"2015-12-14 21:04:06.000000000","message":"Ok","commit_id":"595bedad5909c3f37f9c880fcdb630099d36a338"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"2e6be149e9c0515648ce13142d34b192e9f628b2","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This gives flexibility to vendors (writing their own type drivers)"},{"line_number":12,"context_line":"to group the allocations based upon the networks - or associate"},{"line_number":13,"context_line":"resources with the networks.  "},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I0a7ca370004dbbe86027dacc4a6c968fcf0c7273"},{"line_number":16,"context_line":"Closes-Bug: 1524576"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a740942_624a4528","line":13,"in_reply_to":"7a740942_c0f1e36b","updated":"2015-12-11 19:17:44.000000000","message":"Resource in this case is segmentation-ID. Canned Type drivers statically allocate segmentation ID to network. However, vendor specific type drivers may want to use dynamic allocation based upon network ID - and keep track of these assignments. This enhancement allows this kind of flexibility","commit_id":"595bedad5909c3f37f9c880fcdb630099d36a338"}],"neutron/plugins/ml2/driver_api.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"85aed5e115e79d8ec42a677fae58de50eb7c9e32","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        pass"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @abc.abstractmethod"},{"line_number":102,"context_line":"    def reserve_provider_segment(self, session, segment, network_id\u003dNone):"},{"line_number":103,"context_line":"        \"\"\"Reserve resource associated with a provider network segment."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        :param session: database session"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_7e0c5d94","line":102,"updated":"2015-12-10 20:57:07.000000000","message":"We don\u0027t need the default to be None on all of these. This is shipped with at the same time as the manager that calls it, which will always call with a network_id.\n\nSame with all of the in-tree types. They don\u0027t need to default to None.\n\nThe only time you would want to default to None is if you had an out-of-tree type driver that you expected to be used with an old version of the Neutron server as well as with a new version.","commit_id":"595bedad5909c3f37f9c880fcdb630099d36a338"},{"author":{"_account_id":19710,"name":"Mitchell Jameson","email":"mitchell@arista.com","username":"mitchell"},"change_message_id":"26d17eb55d3e59e4cbf5e46985a8fc80a9881c53","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        pass"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @abc.abstractmethod"},{"line_number":102,"context_line":"    def reserve_provider_segment(self, session, segment, network_id\u003dNone):"},{"line_number":103,"context_line":"        \"\"\"Reserve resource associated with a provider network segment."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        :param session: database session"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_04b0baf3","line":102,"in_reply_to":"5a710552_0a268aba","updated":"2015-12-15 00:09:23.000000000","message":"is_partial_segment simply returns True if some attributes of a segment are to be randomly selected (usually segmentation id.) Since the network cannot be randomly assigned to a segment, I can\u0027t see a use for it in this function.\n\nAs for validate_provider_segment, it should be validating the segment attributes, and since network isn\u0027t a segment attribute, (the converse is true,) it shouldn\u0027t factor into the return value here.\n\nFinally, I don\u0027t think a new API is necessary. Segments are already a sub attribute of networks. My intention is simply to pass the existing network to segment association along to the type_drivers.","commit_id":"595bedad5909c3f37f9c880fcdb630099d36a338"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"0a6cd92375bd59fdf47546cfdd2362c5fde2e084","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        pass"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @abc.abstractmethod"},{"line_number":102,"context_line":"    def reserve_provider_segment(self, session, segment, network_id\u003dNone):"},{"line_number":103,"context_line":"        \"\"\"Reserve resource associated with a provider network segment."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        :param session: database session"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_6b0af97a","line":102,"in_reply_to":"7a740942_62f805c4","updated":"2015-12-14 04:41:52.000000000","message":"having a default of None does not provide backward compatibility. The type manager will always call with the network_id argument after this patch.","commit_id":"595bedad5909c3f37f9c880fcdb630099d36a338"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"a96cd25b737dd898865734332b572fb992025e20","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        pass"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @abc.abstractmethod"},{"line_number":102,"context_line":"    def reserve_provider_segment(self, session, segment, network_id\u003dNone):"},{"line_number":103,"context_line":"        \"\"\"Reserve resource associated with a provider network segment."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        :param session: database session"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_7afce2b4","line":102,"in_reply_to":"7a740942_6b0af97a","updated":"2015-12-14 17:08:58.000000000","message":"Got it makes sense.","commit_id":"595bedad5909c3f37f9c880fcdb630099d36a338"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b65b49b0170225957b285f3058ff8f1fb72c35be","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        pass"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @abc.abstractmethod"},{"line_number":102,"context_line":"    def reserve_provider_segment(self, session, segment, network_id\u003dNone):"},{"line_number":103,"context_line":"        \"\"\"Reserve resource associated with a provider network segment."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        :param session: database session"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_0a268aba","line":102,"in_reply_to":"7a740942_7afce2b4","updated":"2015-12-14 21:04:06.000000000","message":"btw, you sure you don\u0027t need that to validate_provider_segment and is_partial_segment?\n\nI\u0027m thinking if it\u0027s better to introduce new API that link/unlink the segment to a particular network. All this sprinkling has a design smell.","commit_id":"595bedad5909c3f37f9c880fcdb630099d36a338"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"2e6be149e9c0515648ce13142d34b192e9f628b2","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        pass"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @abc.abstractmethod"},{"line_number":102,"context_line":"    def reserve_provider_segment(self, session, segment, network_id\u003dNone):"},{"line_number":103,"context_line":"        \"\"\"Reserve resource associated with a provider network segment."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        :param session: database session"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_62f805c4","line":102,"in_reply_to":"7a740942_7e0c5d94","updated":"2015-12-11 19:17:44.000000000","message":"I believe this is set to None to keep the tests as well existing type drivers backward compatible.","commit_id":"595bedad5909c3f37f9c880fcdb630099d36a338"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"542eda77766a3c309f1be8e75a9c0672a9ef8753","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        :param segment: segment dictionary"},{"line_number":110,"context_line":"        :returns: segment dictionary"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        Called inside transaction context on session to reserve the"},{"line_number":113,"context_line":"        type-specific resource for a provider network segment. The"},{"line_number":114,"context_line":"        segment dictionary passed in was returned by a previous"},{"line_number":115,"context_line":"        validate_provider_segment() call."}],"source_content_type":"text/x-python","patch_set":6,"id":"5a710552_cf7bab7a","line":112,"updated":"2015-12-15 00:33:06.000000000","message":"bear in mind this comment. If a custom type driver becomes doing \u0027clever\u0027 things it may end up shooting itself in the foot. Is it possible to see how you intend to use it in a real use case? Otherwise, it\u0027s difficult to warrant for such type of API addition.","commit_id":"a12729dac4d67adba12e26352c227cb4785fea4a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"059c497f6fd6172d9268f6d110ad377c1834077b","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        :param segment: segment dictionary"},{"line_number":110,"context_line":"        :returns: segment dictionary"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        Called inside transaction context on session to reserve the"},{"line_number":113,"context_line":"        type-specific resource for a provider network segment. The"},{"line_number":114,"context_line":"        segment dictionary passed in was returned by a previous"},{"line_number":115,"context_line":"        validate_provider_segment() call."}],"source_content_type":"text/x-python","patch_set":6,"id":"5a710552_211ebb63","line":112,"in_reply_to":"5a710552_384ab284","updated":"2015-12-16 05:16:51.000000000","message":"I raised the point! The point is MINE!! I am offended :)","commit_id":"a12729dac4d67adba12e26352c227cb4785fea4a"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"58d1b9d7913dc9581a8b8735ae6abae5f7955961","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        :param segment: segment dictionary"},{"line_number":110,"context_line":"        :returns: segment dictionary"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        Called inside transaction context on session to reserve the"},{"line_number":113,"context_line":"        type-specific resource for a provider network segment. The"},{"line_number":114,"context_line":"        segment dictionary passed in was returned by a previous"},{"line_number":115,"context_line":"        validate_provider_segment() call."}],"source_content_type":"text/x-python","patch_set":6,"id":"5a710552_cf816bfd","line":112,"in_reply_to":"5a710552_cf7bab7a","updated":"2015-12-15 00:45:18.000000000","message":"+1. Can you provide a brief description of what the type driver might do with the network ID? Since this is inside of a transaction it shouldn\u0027t be making any REST or other network calls.","commit_id":"a12729dac4d67adba12e26352c227cb4785fea4a"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"38b78e4aa91aaab0284e48e404873822de020cf2","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        :param segment: segment dictionary"},{"line_number":110,"context_line":"        :returns: segment dictionary"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        Called inside transaction context on session to reserve the"},{"line_number":113,"context_line":"        type-specific resource for a provider network segment. The"},{"line_number":114,"context_line":"        segment dictionary passed in was returned by a previous"},{"line_number":115,"context_line":"        validate_provider_segment() call."}],"source_content_type":"text/x-python","patch_set":6,"id":"5a710552_384ab284","line":112,"in_reply_to":"5a710552_cf816bfd","updated":"2015-12-15 05:20:46.000000000","message":"Hi Kevin,\nYou bring up a good point. We are thinking about the implementation of this type driver on the same lines as pre-commit calls are handled in ML2. \nThe allocation of the segmentation ID will be performed by the back-end by using network ID and the TOR where the hosts are connected - i.e. to be able to allocate segmentation IDs locally on the TORs. \n\nThis means there will be a call to the back-end, which goes back to your point of making network calls. However, that is no different than the way pre-commit calls may make network calls to the back-end. \n\nWe have not completed the implementation of the type driver and can be changed at this point - it would be good to hear your thought as to what is the best way to achieve this goal?","commit_id":"a12729dac4d67adba12e26352c227cb4785fea4a"}],"neutron/tests/unit/plugins/ml2/drivers/test_helpers.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"8132b363891eb703f79d1e55f9917362e621c899","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from neutron.tests import base"},{"line_number":26,"context_line":"from neutron.tests.unit import testlib_api"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"TENANT_NET \u003d \u0027phys_net2\u0027"},{"line_number":30,"context_line":"VLAN_MIN \u003d 200"},{"line_number":31,"context_line":"VLAN_MAX \u003d 209"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_7411755c","side":"PARENT","line":28,"updated":"2015-12-21 13:06:29.000000000","message":"unrelated change?","commit_id":"fbc5d5aa4577d7a647e0800cbffb88707c256470"}],"tools/coding-checks.sh":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"8132b363891eb703f79d1e55f9917362e621c899","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3a7e1126_8f1f2e5a","updated":"2015-12-21 13:06:29.000000000","message":"unrelated change?","commit_id":"a12729dac4d67adba12e26352c227cb4785fea4a"}]}
