)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"fa5545802042b99d8f970a856febdc6b26891c3b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Create V9 driver for identity backend"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Upcoming changes will add new methods to the identity drivers, so"},{"line_number":10,"context_line":"in preparation for that we create a new versioned driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In order to allow the use of a legacy driver, one of the unit tests"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a18252c_8b7f38df","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":8},"updated":"2016-04-14 15:40:54.000000000","message":"What upcoming changes, can you be more specific? And I\u0027m sort of inclined to say that we create the versioned driver as part of the upcoming change.","commit_id":"49a1a9d54cff20cb0b847b8a7ce22af4f3723c59"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"f1d871e8c22e445f44f5b2ed056657441b2f605a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Create V9 driver for identity backend"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Upcoming changes will add new methods to the identity drivers, so"},{"line_number":10,"context_line":"in preparation for that we create a new versioned driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In order to allow the use of a legacy driver, one of the unit tests"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a18252c_9c32e0a5","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":8},"in_reply_to":"5a18252c_06a95f90","updated":"2016-04-14 16:15:47.000000000","message":"Yeah, I agree it should be a separate patch, but was just thinking that it should be part implementation for the upcoming change. What if the upcoming change doesn\u0027t get started for a long time, then this sort becomes technical debt in the meantime (maybe) :)","commit_id":"49a1a9d54cff20cb0b847b8a7ce22af4f3723c59"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ae8db156dfcf49679c6c0295ccd0faa70c499024","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Create V9 driver for identity backend"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Upcoming changes will add new methods to the identity drivers, so"},{"line_number":10,"context_line":"in preparation for that we create a new versioned driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In order to allow the use of a legacy driver, one of the unit tests"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a18252c_06a95f90","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":8},"in_reply_to":"5a18252c_8b7f38df","updated":"2016-04-14 15:50:40.000000000","message":"The bug defect for those changes is listed at the bottom of this commit. WE keep it separate to simply make the review process easier.","commit_id":"49a1a9d54cff20cb0b847b8a7ce22af4f3723c59"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ab1f30aefe8ffdb51b62324df5a4f5ded7e9896b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Create V9 driver for identity backend"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Upcoming changes will add new methods to the identity drivers, so"},{"line_number":10,"context_line":"in preparation for that we create a new versioned driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In order to allow the use of a legacy driver, one of the unit tests"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a122d0e_cc1d4f11","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":8},"in_reply_to":"5a18252c_9c32e0a5","updated":"2016-04-16 07:39:30.000000000","message":"....so the patch for that already exists (and has for a while) see: https://review.openstack.org/#/c/277707/7....it\u0027s not my patch, I\u0027m just creating the V9 driver to help them out since their patch is blocked until we have a V9 driver (and I\u0027ve created most of the versions drivers). All that needs to happen is for them to rebase their patch on this one.","commit_id":"49a1a9d54cff20cb0b847b8a7ce22af4f3723c59"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"fa5545802042b99d8f970a856febdc6b26891c3b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Limitations:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"The Shadow user driver interface loads and makes calls to the base"},{"line_number":20,"context_line":"identity drivers. Currently this cannot load the legacy version,"},{"line_number":21,"context_line":"meaning that the federated shadow users driver methods are not"},{"line_number":22,"context_line":"tested against the legacy driver."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a18252c_2b2704cb","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":8},"updated":"2016-04-14 15:40:54.000000000","message":"Nit: shadow users references the sql model and common methods (filter...), but does not reference the identity driver.  Part of the reason why I want to separate the model from the driver:\nhttps://review.openstack.org/#/c/292611/","commit_id":"49a1a9d54cff20cb0b847b8a7ce22af4f3723c59"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ae8db156dfcf49679c6c0295ccd0faa70c499024","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Limitations:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"The Shadow user driver interface loads and makes calls to the base"},{"line_number":20,"context_line":"identity drivers. Currently this cannot load the legacy version,"},{"line_number":21,"context_line":"meaning that the federated shadow users driver methods are not"},{"line_number":22,"context_line":"tested against the legacy driver."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a18252c_c605a77a","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":8},"in_reply_to":"5a18252c_2b2704cb","updated":"2016-04-14 15:50:40.000000000","message":"So if you look at the ShadowUsers.create_federated_user() it references the User model....this is what prevents us testing the legacy driver","commit_id":"49a1a9d54cff20cb0b847b8a7ce22af4f3723c59"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"c1dbe7b468084e91352d4ad50a82f308039f92ff","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Limitations:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"The Shadow user driver interface loads and makes calls to the base"},{"line_number":20,"context_line":"identity drivers. Currently this cannot load the legacy version,"},{"line_number":21,"context_line":"meaning that the federated shadow users driver methods are not"},{"line_number":22,"context_line":"tested against the legacy driver."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a18252c_21128557","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":8},"in_reply_to":"5a18252c_c605a77a","updated":"2016-04-14 15:56:03.000000000","message":"sorry, I misread your comment...I agree with you - I\u0027ll update this in the next patch set","commit_id":"49a1a9d54cff20cb0b847b8a7ce22af4f3723c59"}],"keystone/identity/V8_backends/sql.py":[{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"fa5545802042b99d8f970a856febdc6b26891c3b","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from keystone.identity.backends import base"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class UserV8(sql.ModelBase, sql.DictBase):"},{"line_number":28,"context_line":"    __tablename__ \u003d \u0027userV8\u0027"},{"line_number":29,"context_line":"    attributes \u003d [\u0027id\u0027, \u0027name\u0027, \u0027domain_id\u0027, \u0027password\u0027, \u0027enabled\u0027,"},{"line_number":30,"context_line":"                  \u0027default_project_id\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a18252c_abb794d6","line":27,"range":{"start_line":27,"start_character":12,"end_line":27,"end_character":13},"updated":"2016-04-14 15:40:54.000000000","message":"I don\u0027t think we need a new version of the sql model, only the driver needs to be versioned.","commit_id":"49a1a9d54cff20cb0b847b8a7ce22af4f3723c59"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"f1d871e8c22e445f44f5b2ed056657441b2f605a","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from keystone.identity.backends import base"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class UserV8(sql.ModelBase, sql.DictBase):"},{"line_number":28,"context_line":"    __tablename__ \u003d \u0027userV8\u0027"},{"line_number":29,"context_line":"    attributes \u003d [\u0027id\u0027, \u0027name\u0027, \u0027domain_id\u0027, \u0027password\u0027, \u0027enabled\u0027,"},{"line_number":30,"context_line":"                  \u0027default_project_id\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a18252c_5cecc8f2","line":27,"range":{"start_line":27,"start_character":12,"end_line":27,"end_character":13},"in_reply_to":"5a18252c_06815fc3","updated":"2016-04-14 16:15:47.000000000","message":"Okay, let me give this some thought.  I\u0027ll come back to this.","commit_id":"49a1a9d54cff20cb0b847b8a7ce22af4f3723c59"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ae8db156dfcf49679c6c0295ccd0faa70c499024","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from keystone.identity.backends import base"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class UserV8(sql.ModelBase, sql.DictBase):"},{"line_number":28,"context_line":"    __tablename__ \u003d \u0027userV8\u0027"},{"line_number":29,"context_line":"    attributes \u003d [\u0027id\u0027, \u0027name\u0027, \u0027domain_id\u0027, \u0027password\u0027, \u0027enabled\u0027,"},{"line_number":30,"context_line":"                  \u0027default_project_id\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a18252c_06815fc3","line":27,"range":{"start_line":27,"start_character":12,"end_line":27,"end_character":13},"in_reply_to":"5a18252c_abb794d6","updated":"2016-04-14 15:50:40.000000000","message":"Normally, that is true. However, the shadowuser stuff loads these models as well as out test harness. This leads to a conflict of duplicate User (and the other table) modules being loaded...which seems to cause sqlalchemy heart failure. I\u0027d love to not have to do this, but struggled with out it - definitely open to ideas!","commit_id":"49a1a9d54cff20cb0b847b8a7ce22af4f3723c59"}],"keystone/identity/backends/base.py":[{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"39666458ad3d67542f700722a08f260b147fef77","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        remove_in\u003d+3)"},{"line_number":336,"context_line":"    def __init__(self, wrapped_driver):"},{"line_number":337,"context_line":"        self.driver \u003d wrapped_driver"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def is_domain_aware(self):"},{"line_number":340,"context_line":"        return self.driver.is_domain_aware()"},{"line_number":341,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_32df4c0e","line":338,"updated":"2016-04-28 17:19:58.000000000","message":"Why do you specify all this proxy calls below explicitly? You could use __getattr__ for that as managers do to drivers.","commit_id":"71949f599ee52293b6050435a8f3800622af6586"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b8590ab48b44788a8c9f72162a2f8ca41bb9f02a","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        remove_in\u003d+3)"},{"line_number":336,"context_line":"    def __init__(self, wrapped_driver):"},{"line_number":337,"context_line":"        self.driver \u003d wrapped_driver"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def is_domain_aware(self):"},{"line_number":340,"context_line":"        return self.driver.is_domain_aware()"},{"line_number":341,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_3c943e35","line":338,"in_reply_to":"1a122d0e_32df4c0e","updated":"2016-04-28 19:20:43.000000000","message":"because the point of this class is to map the new driver interface onto the old one....which by definition WILL be different. OK, in the patch they are not...but this is the framework that is then modified by follow on patches as the interfaces drift apart","commit_id":"71949f599ee52293b6050435a8f3800622af6586"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"20b15f49c126ac0ef7f541a0c63749d23a6df341","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        remove_in\u003d+3)"},{"line_number":336,"context_line":"    def __init__(self, wrapped_driver):"},{"line_number":337,"context_line":"        self.driver \u003d wrapped_driver"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def is_domain_aware(self):"},{"line_number":340,"context_line":"        return self.driver.is_domain_aware()"},{"line_number":341,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_d0c6cb98","line":338,"in_reply_to":"1a122d0e_3c943e35","updated":"2016-04-28 21:17:53.000000000","message":"Wouldn\u0027t it be better to have the differences only here? __getattr__ is called only for the items, that was not defined in the class, so unchanged methods will be proxied. \n\nMeanwhile, methods, that override legacy driver methods and explicitly defined here will be called without __getattr__ involved (it\u0027s __getattribute__ that\u0027s called anyway despite of the method presence).\n\nMethods, that aren\u0027t in the legacy driver will raise AttributeError if called as per __getattr__ implementation (it\u0027s up to developer how to handle the sutuation though).","commit_id":"71949f599ee52293b6050435a8f3800622af6586"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"819e9092e551522faef42fa150e08ae4a339d51e","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        remove_in\u003d+3)"},{"line_number":336,"context_line":"    def __init__(self, wrapped_driver):"},{"line_number":337,"context_line":"        self.driver \u003d wrapped_driver"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def is_domain_aware(self):"},{"line_number":340,"context_line":"        return self.driver.is_domain_aware()"},{"line_number":341,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_c4c0bee2","line":338,"in_reply_to":"1a122d0e_d0c6cb98","updated":"2016-04-29 14:44:38.000000000","message":"We might be able to do that....although for now, I\u0027d like to keep this the way we have done all the other version drivers.  If we find a better way, we can come back in and fix them in bulk.","commit_id":"71949f599ee52293b6050435a8f3800622af6586"}]}
