)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21c53b259581240771493ef21bb1be02167c8e29","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Change passing session to context in segments db functions"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We have a number of functions that expect to get session as one"},{"line_number":10,"context_line":"the arguments. Passing session is not correct and this prevents"},{"line_number":11,"context_line":"of usage new enginefacade which expect context to be passed and"},{"line_number":12,"context_line":"session will be injected in current context."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a74a57a_842cb403","line":10,"range":{"start_line":9,"start_character":60,"end_line":10,"end_character":3},"updated":"2016-11-24 17:15:11.000000000","message":"one of the","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"c52535b6d2241954ae83e27cd8a10ea62e33ee6b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Change passing session to context in segments db functions"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We have a number of functions that expect to get session as one"},{"line_number":10,"context_line":"the arguments. Passing session is not correct and this prevents"},{"line_number":11,"context_line":"of usage new enginefacade which expect context to be passed and"},{"line_number":12,"context_line":"session will be injected in current context."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a71b18c_f7c0cf2c","line":10,"range":{"start_line":9,"start_character":60,"end_line":10,"end_character":3},"in_reply_to":"5a74a57a_842cb403","updated":"2016-12-02 18:06:36.000000000","message":"Done","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21c53b259581240771493ef21bb1be02167c8e29","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We have a number of functions that expect to get session as one"},{"line_number":10,"context_line":"the arguments. Passing session is not correct and this prevents"},{"line_number":11,"context_line":"of usage new enginefacade which expect context to be passed and"},{"line_number":12,"context_line":"session will be injected in current context."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-Implements blueprint: enginefacade-switch"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a74a57a_e439e842","line":11,"range":{"start_line":11,"start_character":32,"end_line":11,"end_character":38},"updated":"2016-11-24 17:15:11.000000000","message":"expects","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21c53b259581240771493ef21bb1be02167c8e29","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Change passing session to context in segments db functions"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We have a number of functions that expect to get session as one"},{"line_number":10,"context_line":"the arguments. Passing session is not correct and this prevents"},{"line_number":11,"context_line":"of usage new enginefacade which expect context to be passed and"},{"line_number":12,"context_line":"session will be injected in current context."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-Implements blueprint: enginefacade-switch"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a74a57a_a42ff0f4","line":11,"range":{"start_line":10,"start_character":55,"end_line":11,"end_character":8},"updated":"2016-11-24 17:15:11.000000000","message":"prevents using","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"c52535b6d2241954ae83e27cd8a10ea62e33ee6b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Change passing session to context in segments db functions"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We have a number of functions that expect to get session as one"},{"line_number":10,"context_line":"the arguments. Passing session is not correct and this prevents"},{"line_number":11,"context_line":"of usage new enginefacade which expect context to be passed and"},{"line_number":12,"context_line":"session will be injected in current context."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-Implements blueprint: enginefacade-switch"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a71b18c_57e8a3b4","line":11,"range":{"start_line":10,"start_character":55,"end_line":11,"end_character":8},"in_reply_to":"5a74a57a_a42ff0f4","updated":"2016-12-02 18:06:36.000000000","message":"Done","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"c52535b6d2241954ae83e27cd8a10ea62e33ee6b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We have a number of functions that expect to get session as one"},{"line_number":10,"context_line":"the arguments. Passing session is not correct and this prevents"},{"line_number":11,"context_line":"of usage new enginefacade which expect context to be passed and"},{"line_number":12,"context_line":"session will be injected in current context."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-Implements blueprint: enginefacade-switch"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a71b18c_77ebdfb0","line":11,"range":{"start_line":11,"start_character":32,"end_line":11,"end_character":38},"in_reply_to":"5a74a57a_e439e842","updated":"2016-12-02 18:06:36.000000000","message":"Done","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ccc5b106a15507b012c2e302e2b51ace909f9a94","unresolved":false,"context_lines":[{"line_number":11,"context_line":"of usage new enginefacade which expect context to be passed and"},{"line_number":12,"context_line":"session will be injected in current context."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-Implements blueprint: enginefacade-switch"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I68ac442f11a6698bc43210fae877ba3809b1c02d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a71b18c_8d5ecbe7","line":14,"updated":"2016-12-02 00:48:36.000000000","message":"please let\u0027s add NeutronLibImpact regardless on how this is tackled.","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"c52535b6d2241954ae83e27cd8a10ea62e33ee6b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"of usage new enginefacade which expect context to be passed and"},{"line_number":12,"context_line":"session will be injected in current context."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-Implements blueprint: enginefacade-switch"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I68ac442f11a6698bc43210fae877ba3809b1c02d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a71b18c_97d23bff","line":14,"in_reply_to":"3a71b18c_8d5ecbe7","updated":"2016-12-02 18:06:36.000000000","message":"Done","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21c53b259581240771493ef21bb1be02167c8e29","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-Implements blueprint: enginefacade-switch"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I68ac442f11a6698bc43210fae877ba3809b1c02d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a74a57a_84c83424","line":16,"updated":"2016-11-24 17:15:11.000000000","message":"I believe the change is worth a release note.","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ccc5b106a15507b012c2e302e2b51ace909f9a94","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partially-Implements blueprint: enginefacade-switch"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I68ac442f11a6698bc43210fae877ba3809b1c02d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a71b18c_0d739b81","line":16,"in_reply_to":"5a74a57a_84c83424","updated":"2016-12-02 00:48:36.000000000","message":"there\u0027s nothing specific worth a note though, this is changing internal bits and nothing is user facing, afaict","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"}],"neutron/db/segments_db.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ccc5b106a15507b012c2e302e2b51ace909f9a94","unresolved":false,"context_lines":[{"line_number":64,"context_line":"              \u0027network_id\u0027: record.network_id})"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"def get_network_segments(context, network_id, filter_dynamic\u003dFalse):"},{"line_number":68,"context_line":"    return get_networks_segments("},{"line_number":69,"context_line":"        context, [network_id], filter_dynamic)[network_id]"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_cdb0c3e0","line":67,"updated":"2016-12-02 00:48:36.000000000","message":"The use of session as argument has been an outlier that should have never found its way into the codebase. If in the process we clean this up across the board I think we can bite the bullet under the rule of NeutronLibImpact. I have seen that Ann has cleaned quite a bit. As for the API change, I stand with Ihar. My suggestion is to break this change in two so that the driver\u0027s API impact is on its own, and we can have more time to figure it out.\n\n[1] https://review.openstack.org/#/q/topic:bp/enginefacade-switch","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"}],"neutron/plugins/ml2/driver_api.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"a520bad3f2eca2351133a99c44113d5685e5a784","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    def reserve_provider_segment(self, context, segment):"},{"line_number":104,"context_line":"        \"\"\"Reserve resource associated with a provider network segment."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :param context: to access the database session"},{"line_number":107,"context_line":"        :param segment: segment dictionary"},{"line_number":108,"context_line":"        :returns: segment dictionary"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_515c6125","line":106,"range":{"start_line":106,"start_character":24,"end_line":106,"end_character":54},"updated":"2016-11-23 13:47:26.000000000","message":"context to access the database session?","commit_id":"6cea6c6812cd90dccaf2496acbf9971ec48391d1"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"9bdc7fe1d4d15516facf671cc419c637f09a1702","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    def reserve_provider_segment(self, context, segment):"},{"line_number":104,"context_line":"        \"\"\"Reserve resource associated with a provider network segment."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :param context: to access the database session"},{"line_number":107,"context_line":"        :param segment: segment dictionary"},{"line_number":108,"context_line":"        :returns: segment dictionary"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_fc20e1f9","line":106,"range":{"start_line":106,"start_character":24,"end_line":106,"end_character":54},"in_reply_to":"5a74a57a_515c6125","updated":"2016-11-23 14:23:02.000000000","message":"Done","commit_id":"6cea6c6812cd90dccaf2496acbf9971ec48391d1"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"21c53b259581240771493ef21bb1be02167c8e29","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        pass"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @abc.abstractmethod"},{"line_number":103,"context_line":"    def reserve_provider_segment(self, context, segment):"},{"line_number":104,"context_line":"        \"\"\"Reserve resource associated with a provider network segment."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :param context: instance of neutron context with db session"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_0428a4e1","line":103,"updated":"2016-11-24 17:15:11.000000000","message":"Here, you change type driver API. Breaking midonet, cisco, and other type drivers maintained in 3party repos. Should we make the change in some backwards compatible way?","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"abcc0bf26073adea9ae9b80e6c3e501ff0f38ab6","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        pass"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @abc.abstractmethod"},{"line_number":103,"context_line":"    def reserve_provider_segment(self, context, segment):"},{"line_number":104,"context_line":"        \"\"\"Reserve resource associated with a provider network segment."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :param context: instance of neutron context with db session"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_2b458d6f","line":103,"in_reply_to":"3a71b18c_531e1064","updated":"2016-12-02 09:21:26.000000000","message":"Thanks!\nI will break this change in two.","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ccc5b106a15507b012c2e302e2b51ace909f9a94","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        pass"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @abc.abstractmethod"},{"line_number":103,"context_line":"    def reserve_provider_segment(self, context, segment):"},{"line_number":104,"context_line":"        \"\"\"Reserve resource associated with a provider network segment."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :param context: instance of neutron context with db session"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_531e1064","line":103,"in_reply_to":"5a74a57a_0428a4e1","updated":"2016-12-02 00:48:36.000000000","message":"Personally I feel this change needs to be extracted on its own. While the others changes are warranted by the fact that it\u0027s neutron\u0027s internals (albeit public ones), here we are touching an interface of a well known pluggable point. Thist *must* stand out on its own and we may want to figure out a more seamless evolution plan.\n\nThe idea floated by Ihar to come up with a new type driver and keep the old one unchanged why making the type manager handle both might not be as crazy as it sound.","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ccc5b106a15507b012c2e302e2b51ace909f9a94","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    def reserve_provider_segment(self, context, segment):"},{"line_number":104,"context_line":"        \"\"\"Reserve resource associated with a provider network segment."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :param context: instance of neutron context with db session"},{"line_number":107,"context_line":"        :param segment: segment dictionary"},{"line_number":108,"context_line":"        :returns: segment dictionary"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_70e5c235","line":106,"updated":"2016-12-02 00:48:36.000000000","message":"DB","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"c52535b6d2241954ae83e27cd8a10ea62e33ee6b","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    def reserve_provider_segment(self, context, segment):"},{"line_number":104,"context_line":"        \"\"\"Reserve resource associated with a provider network segment."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :param context: instance of neutron context with db session"},{"line_number":107,"context_line":"        :param segment: segment dictionary"},{"line_number":108,"context_line":"        :returns: segment dictionary"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_72804d47","line":106,"in_reply_to":"3a71b18c_70e5c235","updated":"2016-12-02 18:06:36.000000000","message":"Done","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ccc5b106a15507b012c2e302e2b51ace909f9a94","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def allocate_tenant_segment(self, context):"},{"line_number":119,"context_line":"        \"\"\"Allocate resource for a new tenant network segment."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        :param context: instance of neutron context with db session"},{"line_number":122,"context_line":"        :returns: segment dictionary using keys defined above"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        Called inside transaction context on session to allocate a new"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_f0cf12ae","line":121,"updated":"2016-12-02 00:48:36.000000000","message":"DB","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"c52535b6d2241954ae83e27cd8a10ea62e33ee6b","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def allocate_tenant_segment(self, context):"},{"line_number":119,"context_line":"        \"\"\"Allocate resource for a new tenant network segment."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        :param context: instance of neutron context with db session"},{"line_number":122,"context_line":"        :returns: segment dictionary using keys defined above"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        Called inside transaction context on session to allocate a new"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_9297a98f","line":121,"in_reply_to":"3a71b18c_f0cf12ae","updated":"2016-12-02 18:06:36.000000000","message":"Done","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ccc5b106a15507b012c2e302e2b51ace909f9a94","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    def release_segment(self, context, segment):"},{"line_number":135,"context_line":"        \"\"\"Release network segment."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        :param context: instance of neutron context with db session"},{"line_number":138,"context_line":"        :param segment: segment dictionary using keys defined above"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        Called inside transaction context on session to release a"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_30c26a86","line":137,"updated":"2016-12-02 00:48:36.000000000","message":"DB","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"c52535b6d2241954ae83e27cd8a10ea62e33ee6b","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    def release_segment(self, context, segment):"},{"line_number":135,"context_line":"        \"\"\"Release network segment."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        :param context: instance of neutron context with db session"},{"line_number":138,"context_line":"        :param segment: segment dictionary using keys defined above"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        Called inside transaction context on session to release a"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_d291219b","line":137,"in_reply_to":"3a71b18c_30c26a86","updated":"2016-12-02 18:06:36.000000000","message":"Done","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"d0e4c42dd9cef884db5704491b775b501f13aad7","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":160,"context_line":"class TypeDriverNew(object):"},{"line_number":161,"context_line":"    \"\"\"Define stable abstract interface for ML2 type drivers."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    ML2 type drivers each support a specific network_type for provider"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_3cd04053","line":160,"range":{"start_line":160,"start_character":6,"end_line":160,"end_character":19},"updated":"2016-12-09 17:04:49.000000000","message":"nit: I\u0027d prefer TypeDriverContext instead of TypeDriverNew, my reason behind this is eventually this will be used and won\u0027t be new anymore.","commit_id":"70b6b06d4a77931ca285c332b1d10a54b7676976"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b4df05a79f4fcaa3b6bd54b4468983db17051626","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":160,"context_line":"class TypeDriverNew(object):"},{"line_number":161,"context_line":"    \"\"\"Define stable abstract interface for ML2 type drivers."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    ML2 type drivers each support a specific network_type for provider"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_e49b51c7","line":160,"range":{"start_line":160,"start_character":6,"end_line":160,"end_character":19},"in_reply_to":"3a71b18c_3cd04053","updated":"2016-12-12 14:20:22.000000000","message":"Thats good suggestion, but I\u0027d like to get some more comments here before update.","commit_id":"70b6b06d4a77931ca285c332b1d10a54b7676976"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"d0e4c42dd9cef884db5704491b775b501f13aad7","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        pass"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    @abc.abstractmethod"},{"line_number":239,"context_line":"    def allocate_tenant_segment(self, context):"},{"line_number":240,"context_line":"        \"\"\"Allocate resource for a new tenant network segment."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        :param context: instance of neutron context with DB session"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_993ec6d8","line":239,"range":{"start_line":239,"start_character":17,"end_line":239,"end_character":23},"updated":"2016-12-09 17:04:49.000000000","message":"nit: Given that keystone v3 has been already supported, can we start using project instead of tenant? I know that this change will break compatibility to older TypeDriver abstract class, but this is not overriding the other one.","commit_id":"70b6b06d4a77931ca285c332b1d10a54b7676976"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b4df05a79f4fcaa3b6bd54b4468983db17051626","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        pass"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    @abc.abstractmethod"},{"line_number":239,"context_line":"    def allocate_tenant_segment(self, context):"},{"line_number":240,"context_line":"        \"\"\"Allocate resource for a new tenant network segment."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        :param context: instance of neutron context with DB session"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_a48dd97d","line":239,"range":{"start_line":239,"start_character":17,"end_line":239,"end_character":23},"in_reply_to":"3a71b18c_993ec6d8","updated":"2016-12-12 14:20:22.000000000","message":"I think this would be out of scope of current change.","commit_id":"70b6b06d4a77931ca285c332b1d10a54b7676976"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"cb0b8b5dd39f629668ba08cb0ef796045859de99","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":160,"context_line":"class TypeDriverNew(object):"},{"line_number":161,"context_line":"    \"\"\"Define stable abstract interface for ML2 type drivers."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    ML2 type drivers each support a specific network_type for provider"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_06e595a6","line":160,"range":{"start_line":160,"start_character":6,"end_line":160,"end_character":19},"updated":"2016-12-16 11:10:14.000000000","message":"One concern I have is the chosen naming. Since we will probably eventually get rid of the TypeDriver class, at that point the *New suffix will not make much sense. Should we maybe have it as let\u0027s say ML2TypeDriver?","commit_id":"c5072994c41065a432e4e08d9b8b90eaf5ab62ae"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"cb4288c5802e4587f4e917642c4da2a53c5ebd96","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":160,"context_line":"class TypeDriverNew(object):"},{"line_number":161,"context_line":"    \"\"\"Define stable abstract interface for ML2 type drivers."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    ML2 type drivers each support a specific network_type for provider"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_f533d9f3","line":160,"range":{"start_line":160,"start_character":6,"end_line":160,"end_character":19},"in_reply_to":"1a6eadb0_06e595a6","updated":"2016-12-20 13:11:26.000000000","message":"Thanks!","commit_id":"c5072994c41065a432e4e08d9b8b90eaf5ab62ae"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4030134cfe32389b3b757a9b24b669f11aa0c3d5","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":39,"context_line":"class TypeDriverBase(object):"},{"line_number":40,"context_line":"    \"\"\"Define stable abstract interface for ML2 type drivers."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    ML2 type drivers each support a specific network_type for provider"},{"line_number":43,"context_line":"    and/or tenant network segments. Type drivers must implement this"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_39c0637c","line":40,"updated":"2016-12-20 15:10:50.000000000","message":"do we need to keep that docstring here? Do we expect consumers to inherit from this base class? If not, should we make it internal (_TypeDriverBase)?","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b90b15bf5960acd1361917c4d35fc7bb10e89e16","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":39,"context_line":"class TypeDriverBase(object):"},{"line_number":40,"context_line":"    \"\"\"Define stable abstract interface for ML2 type drivers."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    ML2 type drivers each support a specific network_type for provider"},{"line_number":43,"context_line":"    and/or tenant network segments. Type drivers must implement this"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_02678fb7","line":40,"in_reply_to":"1a6eadb0_2bf2c8d2","updated":"2016-12-21 09:58:17.000000000","message":"Done","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"92ed3f73f7ef7599d048cd6730ce0d96443a0d14","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":39,"context_line":"class TypeDriverBase(object):"},{"line_number":40,"context_line":"    \"\"\"Define stable abstract interface for ML2 type drivers."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    ML2 type drivers each support a specific network_type for provider"},{"line_number":43,"context_line":"    and/or tenant network segments. Type drivers must implement this"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_2bf2c8d2","line":40,"in_reply_to":"1a6eadb0_39c0637c","updated":"2016-12-20 16:26:04.000000000","message":"+1","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"92ed3f73f7ef7599d048cd6730ce0d96443a0d14","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    of the TypeDriver API may add additional segment dictionary"},{"line_number":198,"context_line":"    keys. Attributes not applicable for a particular network_type may"},{"line_number":199,"context_line":"    either be excluded or stored as None."},{"line_number":200,"context_line":"    ML2TypeDriver passes context as argument for:"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    - reserve_provider_segment"},{"line_number":203,"context_line":"    - allocate_tenant_segment"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_cb5dd47a","line":200,"range":{"start_line":200,"start_character":4,"end_line":200,"end_character":49},"updated":"2016-12-20 16:26:04.000000000","message":"This line belongs to the next paragraph","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b90b15bf5960acd1361917c4d35fc7bb10e89e16","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    of the TypeDriver API may add additional segment dictionary"},{"line_number":198,"context_line":"    keys. Attributes not applicable for a particular network_type may"},{"line_number":199,"context_line":"    either be excluded or stored as None."},{"line_number":200,"context_line":"    ML2TypeDriver passes context as argument for:"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    - reserve_provider_segment"},{"line_number":203,"context_line":"    - allocate_tenant_segment"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_22064bce","line":200,"range":{"start_line":200,"start_character":4,"end_line":200,"end_character":49},"in_reply_to":"1a6eadb0_cb5dd47a","updated":"2016-12-21 09:58:17.000000000","message":"Done","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"}],"neutron/plugins/ml2/driver_context.py":[{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"06899902ad008724882bba341b990520383551e2","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def release_dynamic_segment(self, segment_id):"},{"line_number":265,"context_line":"        return self._plugin.type_manager.release_dynamic_segment("},{"line_number":266,"context_line":"                self._plugin_context.session, segment_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_63e27705","line":266,"range":{"start_line":266,"start_character":16,"end_line":266,"end_character":44},"updated":"2016-12-01 15:27:18.000000000","message":"Should this be also changed?, the release_dynamic_segment from ml2/manager.py was modified:\nhttps://review.openstack.org/#/c/398873/5/neutron/plugins/ml2/managers.py@304","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"e726b608abf4646f3380083297d7e48e86f2df6c","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def release_dynamic_segment(self, segment_id):"},{"line_number":265,"context_line":"        return self._plugin.type_manager.release_dynamic_segment("},{"line_number":266,"context_line":"                self._plugin_context.session, segment_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_81578401","line":266,"range":{"start_line":266,"start_character":16,"end_line":266,"end_character":44},"in_reply_to":"3a71b18c_63e27705","updated":"2016-12-01 17:39:17.000000000","message":"oops, thanks!","commit_id":"7b579236d27d211352b87fe145d430b1d7cee391"}],"neutron/plugins/ml2/drivers/type_tunnel.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"cb0b8b5dd39f629668ba08cb0ef796045859de99","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":52,"context_line":"class TunnelTypeDriver(helpers.SegmentTypeDriver):"},{"line_number":53,"context_line":"    \"\"\"Define stable abstract interface for ML2 type drivers."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    tunnel type networks rely on tunnel endpoints. This class defines abstract"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_e624190e","line":52,"updated":"2016-12-16 11:10:14.000000000","message":"this class just changed its parent to new type driver class. Meaning, we broke the claim from line 53 that it\u0027s a stable interface.\n\nDo we need to do here the same that we did for the base type driver class, introducing a TunnelTypeDriverNew?","commit_id":"c5072994c41065a432e4e08d9b8b90eaf5ab62ae"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"cb4288c5802e4587f4e917642c4da2a53c5ebd96","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":52,"context_line":"class TunnelTypeDriver(helpers.SegmentTypeDriver):"},{"line_number":53,"context_line":"    \"\"\"Define stable abstract interface for ML2 type drivers."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    tunnel type networks rely on tunnel endpoints. This class defines abstract"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_52701ea4","line":52,"in_reply_to":"1a6eadb0_e624190e","updated":"2016-12-20 13:11:26.000000000","message":"Done","commit_id":"c5072994c41065a432e4e08d9b8b90eaf5ab62ae"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"735e0b067b1d043df23d26b9786b8b5d801c0560","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        tunnel_id_getter \u003d operator.attrgetter(self.segmentation_key)"},{"line_number":152,"context_line":"        tunnel_col \u003d getattr(self.model, self.segmentation_key)"},{"line_number":153,"context_line":"        session \u003d db_api.get_session()"},{"line_number":154,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":155,"context_line":"            # remove from table unallocated tunnels not currently allocatable"},{"line_number":156,"context_line":"            # fetch results as list via all() because we\u0027ll be iterating"},{"line_number":157,"context_line":"            # through them twice"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_ee641123","line":154,"range":{"start_line":154,"start_character":13,"end_line":154,"end_character":20},"updated":"2016-12-15 17:53:55.000000000","message":"Here session is not being passed. But to use enginefacade do we not need to use context here and remove the session?","commit_id":"c5072994c41065a432e4e08d9b8b90eaf5ab62ae"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"44c53f9294d68a6ccafaa15acedebff81e5a323f","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        tunnel_id_getter \u003d operator.attrgetter(self.segmentation_key)"},{"line_number":152,"context_line":"        tunnel_col \u003d getattr(self.model, self.segmentation_key)"},{"line_number":153,"context_line":"        session \u003d db_api.get_session()"},{"line_number":154,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":155,"context_line":"            # remove from table unallocated tunnels not currently allocatable"},{"line_number":156,"context_line":"            # fetch results as list via all() because we\u0027ll be iterating"},{"line_number":157,"context_line":"            # through them twice"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_20927e4c","line":154,"range":{"start_line":154,"start_character":13,"end_line":154,"end_character":20},"in_reply_to":"1a6eadb0_ee641123","updated":"2016-12-16 08:40:07.000000000","message":"This is a bit different situation - we do not pass anything here. And the main problem here is that with get_session() we get session from legacy facade now. This is out of scope of current change and I need to think over what should be done in this case.","commit_id":"c5072994c41065a432e4e08d9b8b90eaf5ab62ae"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"735e0b067b1d043df23d26b9786b8b5d801c0560","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            # Immediately delete tunnels in chunks. This leaves no work for"},{"line_number":166,"context_line":"            # flush at the end of transaction"},{"line_number":167,"context_line":"            for chunk in chunks(to_remove, self.BULK_SIZE):"},{"line_number":168,"context_line":"                session.query(self.model).filter("},{"line_number":169,"context_line":"                    tunnel_col.in_(chunk)).delete(synchronize_session\u003dFalse)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"            # collect vnis that need to be added"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_8e763dd5","line":168,"range":{"start_line":168,"start_character":16,"end_line":168,"end_character":23},"updated":"2016-12-15 17:53:55.000000000","message":"ditto","commit_id":"c5072994c41065a432e4e08d9b8b90eaf5ab62ae"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"735e0b067b1d043df23d26b9786b8b5d801c0560","unresolved":false,"context_lines":[{"line_number":268,"context_line":"    def get_endpoint_by_host(self, host):"},{"line_number":269,"context_line":"        LOG.debug(\"get_endpoint_by_host() called for host %s\", host)"},{"line_number":270,"context_line":"        session \u003d db_api.get_session()"},{"line_number":271,"context_line":"        return (session.query(self.endpoint_model)."},{"line_number":272,"context_line":"                filter_by(host\u003dhost).first())"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def get_endpoint_by_ip(self, ip):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_ae569927","line":271,"range":{"start_line":271,"start_character":16,"end_line":271,"end_character":23},"updated":"2016-12-15 17:53:55.000000000","message":"Similarly in all the functions in EndpointTunnelTypeDriver","commit_id":"c5072994c41065a432e4e08d9b8b90eaf5ab62ae"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4030134cfe32389b3b757a9b24b669f11aa0c3d5","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":52,"context_line":"class TunnelTypeDriverBase(helpers.SegmentTypeDriver):"},{"line_number":53,"context_line":"    \"\"\"Define stable abstract interface for ML2 type drivers."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    tunnel type networks rely on tunnel endpoints. This class defines abstract"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_992c174c","line":52,"updated":"2016-12-20 15:10:50.000000000","message":"same questions here","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b90b15bf5960acd1361917c4d35fc7bb10e89e16","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":52,"context_line":"class TunnelTypeDriverBase(helpers.SegmentTypeDriver):"},{"line_number":53,"context_line":"    \"\"\"Define stable abstract interface for ML2 type drivers."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    tunnel type networks rely on tunnel endpoints. This class defines abstract"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_a2033b41","line":52,"in_reply_to":"1a6eadb0_992c174c","updated":"2016-12-21 09:58:17.000000000","message":"Done","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4030134cfe32389b3b757a9b24b669f11aa0c3d5","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":209,"context_line":"class TunnelTypeDriver(TunnelTypeDriverBase):"},{"line_number":210,"context_line":"    \"\"\"ML2 type driver that passes session to functions:"},{"line_number":211,"context_line":"    - reserve_provider_segment"},{"line_number":212,"context_line":"    - allocate_tenant_segment"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_99d33738","line":209,"updated":"2016-12-20 15:10:50.000000000","message":"Seems like the class just lost its docstring defining it\u0027s a stable API.","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b90b15bf5960acd1361917c4d35fc7bb10e89e16","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":209,"context_line":"class TunnelTypeDriver(TunnelTypeDriverBase):"},{"line_number":210,"context_line":"    \"\"\"ML2 type driver that passes session to functions:"},{"line_number":211,"context_line":"    - reserve_provider_segment"},{"line_number":212,"context_line":"    - allocate_tenant_segment"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_a06fb3fa","line":209,"in_reply_to":"1a6eadb0_99d33738","updated":"2016-12-21 09:58:17.000000000","message":"Done","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4030134cfe32389b3b757a9b24b669f11aa0c3d5","unresolved":false,"context_lines":[{"line_number":270,"context_line":""},{"line_number":271,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":272,"context_line":"class ML2TunnelTypeDriver(TunnelTypeDriverBase):"},{"line_number":273,"context_line":"    \"\"\"ML2 type driver that passes context as argument to functions:"},{"line_number":274,"context_line":"        - reserve_provider_segment"},{"line_number":275,"context_line":"        - allocate_tenant_segment"},{"line_number":276,"context_line":"        - release_segment"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_39e30307","line":273,"updated":"2016-12-20 15:10:50.000000000","message":"I think we need to mention it\u0027s stable API as we did before for old class.","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"}],"neutron/plugins/ml2/drivers/type_vlan.py":[{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"735e0b067b1d043df23d26b9786b8b5d801c0560","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    @db_api.retry_db_errors"},{"line_number":66,"context_line":"    def _sync_vlan_allocations(self):"},{"line_number":67,"context_line":"        session \u003d db_api.get_session()"},{"line_number":68,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":69,"context_line":"            # get existing allocations for all physical networks"},{"line_number":70,"context_line":"            allocations \u003d dict()"},{"line_number":71,"context_line":"            allocs \u003d (session.query(vlan_alloc_model.VlanAllocation)."}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_c2b48936","line":68,"range":{"start_line":68,"start_character":13,"end_line":68,"end_character":20},"updated":"2016-12-15 17:53:55.000000000","message":"ditto","commit_id":"c5072994c41065a432e4e08d9b8b90eaf5ab62ae"}],"neutron/plugins/ml2/managers.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"92ed3f73f7ef7599d048cd6730ce0d96443a0d14","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib.api import validators"},{"line_number":17,"context_line":"from neutron_lib import constants"},{"line_number":18,"context_line":"from neutron_lib import exceptions as exc"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_de72f07b","side":"PARENT","line":15,"updated":"2016-12-20 16:26:04.000000000","message":"This change is not required","commit_id":"ff9f88f8b80270ec89026a35c8a26063a060b8a9"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b90b15bf5960acd1361917c4d35fc7bb10e89e16","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib.api import validators"},{"line_number":17,"context_line":"from neutron_lib import constants"},{"line_number":18,"context_line":"from neutron_lib import exceptions as exc"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_7b3e2a8c","side":"PARENT","line":15,"in_reply_to":"1a6eadb0_de72f07b","updated":"2016-12-21 09:58:17.000000000","message":"Done","commit_id":"ff9f88f8b80270ec89026a35c8a26063a060b8a9"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"92ed3f73f7ef7599d048cd6730ce0d96443a0d14","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        if isinstance(driver.obj, api.TypeDriver):"},{"line_number":252,"context_line":"            return driver.obj.reserve_provider_segment(context.session,"},{"line_number":253,"context_line":"                                                       segment)"},{"line_number":254,"context_line":"        else:"},{"line_number":255,"context_line":"            return driver.obj.reserve_provider_segment(context,"},{"line_number":256,"context_line":"                                                       segment)"},{"line_number":257,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_1ea0e89e","line":254,"range":{"start_line":254,"start_character":8,"end_line":254,"end_character":13},"updated":"2016-12-20 16:26:04.000000000","message":"This else is no needed. Basically you can get the same result doing this:\n\n    if isinstance(driver.obj, api.TypeDriver):\n        return driver.obj.reserve_provider_segment(context.session, segment)\n    return driver.obj.reserve_provider_segment(context, segment)","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"92ed3f73f7ef7599d048cd6730ce0d96443a0d14","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        driver \u003d self.drivers.get(network_type)"},{"line_number":260,"context_line":"        if isinstance(driver.obj, api.TypeDriver):"},{"line_number":261,"context_line":"            return driver.obj.allocate_tenant_segment(context.session)"},{"line_number":262,"context_line":"        else:"},{"line_number":263,"context_line":"            return driver.obj.allocate_tenant_segment(context)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def _allocate_tenant_net_segment(self, context):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_9eb078df","line":262,"range":{"start_line":262,"start_character":8,"end_line":262,"end_character":12},"updated":"2016-12-20 16:26:04.000000000","message":"ditto: line 254","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"}],"neutron/tests/unit/plugins/ml2/drivers/test_helpers.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"92ed3f73f7ef7599d048cd6730ce0d96443a0d14","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.driver \u003d type_vlan.VlanTypeDriver()"},{"line_number":39,"context_line":"        self.driver.network_vlan_ranges \u003d NETWORK_VLAN_RANGES"},{"line_number":40,"context_line":"        self.driver._sync_vlan_allocations()"},{"line_number":41,"context_line":"        self.context \u003d context.Context()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def check_raw_segment(self, expected, observed):"},{"line_number":44,"context_line":"        for key, value in expected.items():"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_de267015","line":41,"range":{"start_line":41,"start_character":31,"end_line":41,"end_character":38},"updated":"2016-12-20 16:26:04.000000000","message":"nit: you can also use get_admin_context() method for unit test, but it seems like this works","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b90b15bf5960acd1361917c4d35fc7bb10e89e16","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.driver \u003d type_vlan.VlanTypeDriver()"},{"line_number":39,"context_line":"        self.driver.network_vlan_ranges \u003d NETWORK_VLAN_RANGES"},{"line_number":40,"context_line":"        self.driver._sync_vlan_allocations()"},{"line_number":41,"context_line":"        self.context \u003d context.Context()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def check_raw_segment(self, expected, observed):"},{"line_number":44,"context_line":"        for key, value in expected.items():"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_3b5f52e6","line":41,"range":{"start_line":41,"start_character":31,"end_line":41,"end_character":38},"in_reply_to":"1a6eadb0_de267015","updated":"2016-12-21 09:58:17.000000000","message":"Done","commit_id":"3037530e8cfe3d75a928272372ee798e758dc8a4"}],"neutron/tests/unit/plugins/ml2/drivers/test_type_gre.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"a520bad3f2eca2351133a99c44113d5685e5a784","unresolved":false,"context_lines":[{"line_number":27,"context_line":"HOST_TWO \u003d \u0027fake_host_two\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _add_allocation(session, gre_id, allocated\u003dFalse):"},{"line_number":31,"context_line":"    allocation \u003d gre_model.GreAllocation(gre_id\u003dgre_id, allocated\u003dallocated)"},{"line_number":32,"context_line":"    allocation.save(session)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def _get_allocation(context, gre_id):"},{"line_number":36,"context_line":"    return context.session.query(gre_model.GreAllocation).filter_by("},{"line_number":37,"context_line":"        gre_id\u003dgre_id).one()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class GreTypeTest(base_type_tunnel.TunnelTypeTestMixin,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_b1f135d0","line":37,"range":{"start_line":30,"start_character":0,"end_line":37,"end_character":28},"updated":"2016-11-23 13:47:26.000000000","message":"these seem deadcode after I188a7cf718d811084475f6783d844588de5d60ea .\nit\u0027s better to remove.","commit_id":"6cea6c6812cd90dccaf2496acbf9971ec48391d1"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"9bdc7fe1d4d15516facf671cc419c637f09a1702","unresolved":false,"context_lines":[{"line_number":27,"context_line":"HOST_TWO \u003d \u0027fake_host_two\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _add_allocation(session, gre_id, allocated\u003dFalse):"},{"line_number":31,"context_line":"    allocation \u003d gre_model.GreAllocation(gre_id\u003dgre_id, allocated\u003dallocated)"},{"line_number":32,"context_line":"    allocation.save(session)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def _get_allocation(context, gre_id):"},{"line_number":36,"context_line":"    return context.session.query(gre_model.GreAllocation).filter_by("},{"line_number":37,"context_line":"        gre_id\u003dgre_id).one()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class GreTypeTest(base_type_tunnel.TunnelTypeTestMixin,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_3c7979fd","line":37,"range":{"start_line":30,"start_character":0,"end_line":37,"end_character":28},"in_reply_to":"5a74a57a_b1f135d0","updated":"2016-11-23 14:23:02.000000000","message":"Done","commit_id":"6cea6c6812cd90dccaf2496acbf9971ec48391d1"}]}
