)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"33f2143879b7f4e8621b63d47d25583c0d7f20dc","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The first implementation of the domain config API introduced a"},{"line_number":10,"context_line":"new restriction in terms of which identity drivers could be SQL"},{"line_number":11,"context_line":"backed (to avoid potential multi-process race conditions). This"},{"line_number":12,"context_line":"restriction specified that only the default domain could be SQL"},{"line_number":13,"context_line":"backed."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3a50d1a3_5c29eb88","line":11,"updated":"2015-07-23 08:47:07.000000000","message":"nits: backend","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ebb35879e51466233ef10e394fedab4385b6703f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The first implementation of the domain config API introduced a"},{"line_number":10,"context_line":"new restriction in terms of which identity drivers could be SQL"},{"line_number":11,"context_line":"backed (to avoid potential multi-process race conditions). This"},{"line_number":12,"context_line":"restriction specified that only the default domain could be SQL"},{"line_number":13,"context_line":"backed."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3a50d1a3_3125815b","line":11,"in_reply_to":"3a50d1a3_5c29eb88","updated":"2015-08-01 12:55:07.000000000","message":"Done","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"33f2143879b7f4e8621b63d47d25583c0d7f20dc","unresolved":false,"context_lines":[{"line_number":10,"context_line":"new restriction in terms of which identity drivers could be SQL"},{"line_number":11,"context_line":"backed (to avoid potential multi-process race conditions). This"},{"line_number":12,"context_line":"restriction specified that only the default domain could be SQL"},{"line_number":13,"context_line":"backed."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch resolves these issues and hence ensures the restrictions"},{"line_number":16,"context_line":"in terms of SQL identity drivers are the same as the original config"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3a50d1a3_fc11d752","line":13,"updated":"2015-07-23 08:47:07.000000000","message":"nits: backend","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ebb35879e51466233ef10e394fedab4385b6703f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"new restriction in terms of which identity drivers could be SQL"},{"line_number":11,"context_line":"backed (to avoid potential multi-process race conditions). This"},{"line_number":12,"context_line":"restriction specified that only the default domain could be SQL"},{"line_number":13,"context_line":"backed."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch resolves these issues and hence ensures the restrictions"},{"line_number":16,"context_line":"in terms of SQL identity drivers are the same as the original config"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3a50d1a3_f11f1907","line":13,"in_reply_to":"3a50d1a3_fc11d752","updated":"2015-08-01 12:55:07.000000000","message":"Done","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"33f2143879b7f4e8621b63d47d25583c0d7f20dc","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Since this patch is likely to be backported to Kilo, it uses one"},{"line_number":21,"context_line":"of the SQL placeholder migrations, as well as one for Liberty."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Fixes Bug: 1450344"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: Id1b4415cb5f263dc7afd9e25bd0da2b667f1c90a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3a50d1a3_7c05c70e","line":23,"updated":"2015-07-23 08:47:07.000000000","message":"Closes-Bug: #","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ebb35879e51466233ef10e394fedab4385b6703f","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Since this patch is likely to be backported to Kilo, it uses one"},{"line_number":21,"context_line":"of the SQL placeholder migrations, as well as one for Liberty."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Fixes Bug: 1450344"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: Id1b4415cb5f263dc7afd9e25bd0da2b667f1c90a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3a50d1a3_111ba51d","line":23,"in_reply_to":"3a50d1a3_7c05c70e","updated":"2015-08-01 12:55:07.000000000","message":"Done","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7871f1d15940b81ccc1c4c838190489a238e165","unresolved":false,"context_lines":[{"line_number":18,"context_line":"it can be for any given domain). One caveat to this implementation"},{"line_number":19,"context_line":"is that since the driver configurations are cached, you may need"},{"line_number":20,"context_line":"to wait for a cache timeout period before new configurations"},{"line_number":21,"context_line":"are visble on all Keystone servers."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Although this patch changes the V8 driver interface, this is for"},{"line_number":24,"context_line":"the domain_config backend which is still marked as experimental."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"ba15a1d1_f4f3ff70","line":21,"updated":"2015-09-18 18:45:09.000000000","message":"change \"visble\" to \"visible\".\n\nThe issue that the test shows is that deleted configurations aren\u0027t visible not new configurations, and therefore I won\u0027t be able to define a new sql driver until the cache period is over.","commit_id":"9f0dec879ca89addda645e5f5972ad261e7d655d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01b67a02c36e4790f5fcc4aba5c0b1e5f16c8f92","unresolved":false,"context_lines":[{"line_number":18,"context_line":"it can be for any given domain). One caveat to this implementation"},{"line_number":19,"context_line":"is that since the driver configurations are cached, you may need"},{"line_number":20,"context_line":"to wait for a cache timeout period before new configurations"},{"line_number":21,"context_line":"are visble on all Keystone servers."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Although this patch changes the V8 driver interface, this is for"},{"line_number":24,"context_line":"the domain_config backend which is still marked as experimental."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"ba15a1d1_4d681988","line":21,"in_reply_to":"ba15a1d1_32a98025","updated":"2015-09-19 01:11:07.000000000","message":"...and I updated the comment in the specific test to make this clearer.","commit_id":"9f0dec879ca89addda645e5f5972ad261e7d655d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60e7ce79da4d6107abb445f11fec504536d4a4aa","unresolved":false,"context_lines":[{"line_number":18,"context_line":"it can be for any given domain). One caveat to this implementation"},{"line_number":19,"context_line":"is that since the driver configurations are cached, you may need"},{"line_number":20,"context_line":"to wait for a cache timeout period before new configurations"},{"line_number":21,"context_line":"are visble on all Keystone servers."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Although this patch changes the V8 driver interface, this is for"},{"line_number":24,"context_line":"the domain_config backend which is still marked as experimental."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"ba15a1d1_32a98025","line":21,"in_reply_to":"ba15a1d1_f4f3ff70","updated":"2015-09-19 00:56:09.000000000","message":"actually, I don\u0027t think that\u0027s what the test is showing.  The specific test you are referring to is where I am simulating a server crashing while deleting a domain and somehow the config remains, but the domain has been deleted. In this test, we can\u0027t self heal from this odd data situation until the cache is expressed.  Since we don\u0027t discuss this self-healing in the commit message, I actually think we should remove this comment about cache times as well - I think it is too much of a corner case to include here.","commit_id":"9f0dec879ca89addda645e5f5972ad261e7d655d"}],"keystone/common/sql/migrate_repo/versions/068_add_config_registration.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_98943f8b","line":1,"updated":"2015-09-18 15:45:47.000000000","message":"I don\u0027t think we need to do this. If we backport the change then replace the placeholder.","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_189b4f19","line":1,"in_reply_to":"ba15a1d1_98943f8b","updated":"2015-09-18 17:17:50.000000000","message":"Done","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"}],"keystone/common/sql/migrate_repo/versions/075_confirm_config_registration.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            sql.Column(\u0027domain_id\u0027, sql.String(64), nullable\u003dFalse),"},{"line_number":35,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":36,"context_line":"            mysql_charset\u003d\u0027utf8\u0027)"},{"line_number":37,"context_line":"        registration_table.create(migrate_engine, checkfirst\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_1aff20ab","line":37,"updated":"2015-09-16 20:44:00.000000000","message":"what\u0027s the point of checkfirst if not to check if the table already exists?","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            sql.Column(\u0027domain_id\u0027, sql.String(64), nullable\u003dFalse),"},{"line_number":35,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":36,"context_line":"            mysql_charset\u003d\u0027utf8\u0027)"},{"line_number":37,"context_line":"        registration_table.create(migrate_engine, checkfirst\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_e1663550","line":37,"in_reply_to":"ba15a1d1_1aff20ab","updated":"2015-09-17 09:07:53.000000000","message":"Done","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    meta \u003d sql.MetaData()"},{"line_number":20,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    # Since the creation of the registration table may be backported, we allow"},{"line_number":23,"context_line":"    # for the fact that the table may or may not have already been created"},{"line_number":24,"context_line":"    # (since we can\u0027t guarantee a given installation installed the backported"},{"line_number":25,"context_line":"    # code)."}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_92f65e8d","line":22,"updated":"2015-09-18 15:45:47.000000000","message":"Remove this comment. All of our migrations use checkfirst so this one isn\u0027t doing anything that requires a comment.","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    meta \u003d sql.MetaData()"},{"line_number":20,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    # Since the creation of the registration table may be backported, we allow"},{"line_number":23,"context_line":"    # for the fact that the table may or may not have already been created"},{"line_number":24,"context_line":"    # (since we can\u0027t guarantee a given installation installed the backported"},{"line_number":25,"context_line":"    # code)."}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_73162c4d","line":22,"in_reply_to":"ba15a1d1_92f65e8d","updated":"2015-09-18 17:17:50.000000000","message":"Done","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"}],"keystone/exception.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"class ConfigRegistrationNotFound(NotFound):"},{"line_number":361,"context_line":"    message_format \u003d _(\u0027Nobody currently holds the registration specified\u0027)"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"class Conflict(Error):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_dada084c","line":361,"updated":"2015-09-16 20:44:00.000000000","message":"If I got this message in a response I would have no idea what the problem was or to do... what\u0027s a registration?","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"class ConfigRegistrationNotFound(NotFound):"},{"line_number":361,"context_line":"    message_format \u003d _(\u0027Nobody currently holds the registration specified\u0027)"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"class Conflict(Error):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_a1859dcf","line":361,"in_reply_to":"ba15a1d1_dada084c","updated":"2015-09-17 09:07:53.000000000","message":"So this exception is never released outside of Keystone (it is caught by the manager).","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"class ConfigRegistrationNotFound(NotFound):"},{"line_number":361,"context_line":"    message_format \u003d _(\u0027Nobody currently holds the registration specified\u0027)"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"class Conflict(Error):"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_92709e73","line":361,"updated":"2015-09-18 15:45:47.000000000","message":"If this exception doesn\u0027t get outside of keystone then don\u0027t use NotFound, NotFound means the server should return a 404 response. This should be a subclass of Exception then the server will return a 500 if it escapes somehow, which is what the client should see.","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"class ConfigRegistrationNotFound(NotFound):"},{"line_number":361,"context_line":"    message_format \u003d _(\u0027Nobody currently holds the registration specified\u0027)"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"class Conflict(Error):"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_1bf10695","line":361,"in_reply_to":"ba15a1d1_92709e73","updated":"2015-09-18 17:17:50.000000000","message":"So I have made this a subclass of Error (code 500), not sure this is what you meant....if different, maybe we can do that as a follow up.","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7871f1d15940b81ccc1c4c838190489a238e165","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                       \u0027configuration for domain %(domain_id)s\u0027)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"class ConfigRegistrationNotFound(Error):"},{"line_number":361,"context_line":"    # This is used internally between the domain config backend and the"},{"line_number":362,"context_line":"    # manager, so should not escape to the client - but in case it did, it"},{"line_number":363,"context_line":"    # should end up as a 500 error."}],"source_content_type":"text/x-python","patch_set":16,"id":"ba15a1d1_14c31339","line":360,"updated":"2015-09-18 18:45:09.000000000","message":"Error isn\u0027t the right choice since the message shouldn\u0027t be getting back to the client if it escapes somehow.\n\nThis should be a subclass of Exception then the server will return a 500 if it escapes somehow. (I thought this was pretty clear.)\n\nif you\u0027re going to use Error then you also need to set the title per the docstring.","commit_id":"9f0dec879ca89addda645e5f5972ad261e7d655d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60e7ce79da4d6107abb445f11fec504536d4a4aa","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                       \u0027configuration for domain %(domain_id)s\u0027)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"class ConfigRegistrationNotFound(Error):"},{"line_number":361,"context_line":"    # This is used internally between the domain config backend and the"},{"line_number":362,"context_line":"    # manager, so should not escape to the client - but in case it did, it"},{"line_number":363,"context_line":"    # should end up as a 500 error."}],"source_content_type":"text/x-python","patch_set":16,"id":"ba15a1d1_4d19f978","line":360,"in_reply_to":"ba15a1d1_14c31339","updated":"2015-09-19 00:56:09.000000000","message":"Done (was having problems with weird issues before when using Exception before...pilot error!)","commit_id":"9f0dec879ca89addda645e5f5972ad261e7d655d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"389e87b77d377b6df1569d63c070e9781565522e","unresolved":false,"context_lines":[{"line_number":360,"context_line":"class ConfigRegistrationNotFound(Exception):"},{"line_number":361,"context_line":"    # This is used internally between the domain config backend and the"},{"line_number":362,"context_line":"    # manager, so should not escape to the client - but in case it did, it"},{"line_number":363,"context_line":"    # will end up as a 500 error."},{"line_number":364,"context_line":"    pass"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_5fbafc0b","line":363,"updated":"2015-09-19 02:56:43.000000000","message":"if this did get through to a client... what actions would they have to take to fix the problem?","commit_id":"bb231a47802b03dd09fa3efeea2a7df438c50d81"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"beca9a2c7cfbb802c6e3a814fe893d8a14cdc89a","unresolved":false,"context_lines":[{"line_number":360,"context_line":"class ConfigRegistrationNotFound(Exception):"},{"line_number":361,"context_line":"    # This is used internally between the domain config backend and the"},{"line_number":362,"context_line":"    # manager, so should not escape to the client - but in case it did, it"},{"line_number":363,"context_line":"    # will end up as a 500 error."},{"line_number":364,"context_line":"    pass"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_95915355","line":363,"in_reply_to":"ba15a1d1_5fbafc0b","updated":"2015-09-19 07:12:47.000000000","message":"If it did get through, it is a coding error on our part...so nothing a customer could do to fix it....\n\nI\u0027ll update the comment to say this.","commit_id":"bb231a47802b03dd09fa3efeea2a7df438c50d81"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5b6950cfd35fc504cc886718aec06004b2e1e064","unresolved":false,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"class ConfigRegistrationNotFound(Exception):"},{"line_number":361,"context_line":"    # This is used internally between the domain config backend and the"},{"line_number":362,"context_line":"    # manager, so should not escape to the client.  If it did, it is a coding"},{"line_number":363,"context_line":"    # error on our part, and would end up, appropriately, as a 500 error."},{"line_number":364,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_693cc72f","line":361,"updated":"2015-09-21 15:40:21.000000000","message":"this comment isn\u0027t needed since it\u0027s implied.","commit_id":"1696b875dd7b37c5d9569a1a5d5ad25e4410a1ef"}],"keystone/identity/core.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"33f2143879b7f4e8621b63d47d25583c0d7f20dc","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# The number of times we will attempt to get the mutex if we find that"},{"line_number":48,"context_line":"# another process is locking/freeing at the same time as us."},{"line_number":49,"context_line":"MUTEX_ATTEMPTS \u003d 10"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"def filter_user(user_ref):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_ab4303ae","line":49,"updated":"2015-07-23 08:47:07.000000000","message":"suggest to move this into config, so end user can customize this value.","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ebb35879e51466233ef10e394fedab4385b6703f","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# The number of times we will attempt to get the mutex if we find that"},{"line_number":48,"context_line":"# another process is locking/freeing at the same time as us."},{"line_number":49,"context_line":"MUTEX_ATTEMPTS \u003d 10"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"def filter_user(user_ref):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_b16bd184","line":49,"in_reply_to":"3a50d1a3_ab4303ae","updated":"2015-08-01 12:55:07.000000000","message":"so we could do that....I\u0027m just not sure an end user would know what to set it to?","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"33f2143879b7f4e8621b63d47d25583c0d7f20dc","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                                   domain_config[\u0027cfg\u0027])"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def _assert_no_more_than_one_sql_driver(self, domain_id, new_config,"},{"line_number":101,"context_line":"                                            config_file\u003dNone):"},{"line_number":102,"context_line":"        \"\"\"Ensure there is more than one sql driver."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        Check to see if the addition of the driver in this new config"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_90767204","line":101,"updated":"2015-07-23 08:47:07.000000000","message":"nits: Ensure there is *no* more than...","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ebb35879e51466233ef10e394fedab4385b6703f","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                                   domain_config[\u0027cfg\u0027])"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def _assert_no_more_than_one_sql_driver(self, domain_id, new_config,"},{"line_number":101,"context_line":"                                            config_file\u003dNone):"},{"line_number":102,"context_line":"        \"\"\"Ensure there is more than one sql driver."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        Check to see if the addition of the driver in this new config"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_d1669dba","line":101,"in_reply_to":"3a50d1a3_90767204","updated":"2015-08-01 12:55:07.000000000","message":"Done","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"33f2143879b7f4e8621b63d47d25583c0d7f20dc","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            details \u003d ("},{"line_number":250,"context_line":"                _(\u0027Exceeded mutex attempts for domain %s, giving up\u0027) %"},{"line_number":251,"context_line":"                domain_id)"},{"line_number":252,"context_line":"            raise exception.MultipleSQLDriversInConfig(source\u003ddetails)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        domain_config \u003d {}"},{"line_number":255,"context_line":"        domain_config[\u0027cfg\u0027] \u003d cfg.ConfigOpts()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_65f44a5a","line":252,"updated":"2015-07-23 08:47:07.000000000","message":"the expection here show me that \u0027The Keystone domain-specific configuration has specified more than one SQL driver ...\", is that correct? or we need override the message here?","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ebb35879e51466233ef10e394fedab4385b6703f","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            details \u003d ("},{"line_number":250,"context_line":"                _(\u0027Exceeded mutex attempts for domain %s, giving up\u0027) %"},{"line_number":251,"context_line":"                domain_id)"},{"line_number":252,"context_line":"            raise exception.MultipleSQLDriversInConfig(source\u003ddetails)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        domain_config \u003d {}"},{"line_number":255,"context_line":"        domain_config[\u0027cfg\u0027] \u003d cfg.ConfigOpts()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_b102f1b2","line":252,"in_reply_to":"3a50d1a3_65f44a5a","updated":"2015-08-01 12:55:07.000000000","message":"Done","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8d454ce2c53ce50a2f3065102df6ff0f4022f13d","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            # unlucky or something is awry."},{"line_number":249,"context_line":"            raise exception.UnexpectedError("},{"line_number":250,"context_line":"                _(\u0027Exceeded mutex attempts for domain %s, giving up\u0027) %"},{"line_number":251,"context_line":"                domain_id)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        domain_config \u003d {}"},{"line_number":254,"context_line":"        domain_config[\u0027cfg\u0027] \u003d cfg.ConfigOpts()"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa1b9901_7a5ea013","line":251,"updated":"2015-08-18 22:22:59.000000000","message":"should we give the user the domain_with_mutex id as well?","commit_id":"5f92b42abf0b663086bbfc4ef975f61cab800c22"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b5a75bb254d8b4428c16bb55bb73d1a07df3f4af","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            # unlucky or something is awry."},{"line_number":249,"context_line":"            raise exception.UnexpectedError("},{"line_number":250,"context_line":"                _(\u0027Exceeded mutex attempts for domain %s, giving up\u0027) %"},{"line_number":251,"context_line":"                domain_id)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        domain_config \u003d {}"},{"line_number":254,"context_line":"        domain_config[\u0027cfg\u0027] \u003d cfg.ConfigOpts()"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa1b9901_2ec0584f","line":251,"in_reply_to":"fa1b9901_7a5ea013","updated":"2015-08-21 10:24:09.000000000","message":"Done","commit_id":"5f92b42abf0b663086bbfc4ef975f61cab800c22"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":45,"context_line":"DOMAIN_CONF_FTAIL \u003d \u0027.conf\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# The number of times we will attempt to get register a domain to"},{"line_number":48,"context_line":"# use the SQL driver, if we find that another process is locking/freeing"},{"line_number":49,"context_line":"# at the same time as us."},{"line_number":50,"context_line":"REGISTRATION_ATTEMPTS \u003d 10"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_babcf4dc","line":48,"updated":"2015-09-16 20:44:00.000000000","message":"there\u0027s no locking / freeing going on. Suggest call it registering / deregistering.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":45,"context_line":"DOMAIN_CONF_FTAIL \u003d \u0027.conf\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# The number of times we will attempt to get register a domain to"},{"line_number":48,"context_line":"# use the SQL driver, if we find that another process is locking/freeing"},{"line_number":49,"context_line":"# at the same time as us."},{"line_number":50,"context_line":"REGISTRATION_ATTEMPTS \u003d 10"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_44604f01","line":48,"in_reply_to":"ba15a1d1_babcf4dc","updated":"2015-09-17 09:07:53.000000000","message":"Done","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":47,"context_line":"# The number of times we will attempt to get register a domain to"},{"line_number":48,"context_line":"# use the SQL driver, if we find that another process is locking/freeing"},{"line_number":49,"context_line":"# at the same time as us."},{"line_number":50,"context_line":"REGISTRATION_ATTEMPTS \u003d 10"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"# Config Registration Types"},{"line_number":53,"context_line":"SQL_DRIVER \u003d \u0027SQL\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_7a397cf1","line":50,"updated":"2015-09-16 20:44:00.000000000","message":"I don\u0027t see the point of trying multiple times. If it fails it\u0027s because another admin was messing with domains at the same time. You\u0027re probably better off going and talking to whomever\u0027s messing with domain config at the same time. Rather than having this retry. Not retrying will make the code simpler.\n\nMaybe put the code to retry in a separate review to make this one easier to understand.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":47,"context_line":"# The number of times we will attempt to get register a domain to"},{"line_number":48,"context_line":"# use the SQL driver, if we find that another process is locking/freeing"},{"line_number":49,"context_line":"# at the same time as us."},{"line_number":50,"context_line":"REGISTRATION_ATTEMPTS \u003d 10"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"# Config Registration Types"},{"line_number":53,"context_line":"SQL_DRIVER \u003d \u0027SQL\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_df90a845","line":50,"in_reply_to":"ba15a1d1_7a397cf1","updated":"2015-09-17 09:07:53.000000000","message":"We could do that, although there\u0027s only one \"continue\" that this wold save, since I think we would still want to protect against the case when a domain that was deleted somehow did not remove the row - so not sure it would make it THAT much cleaner.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"            # TODO(henry-nash): This method is only used in the file-based"},{"line_number":121,"context_line":"            # case, so has no need to worry about the database/API case. That"},{"line_number":122,"context_line":"            # code should be removed, and this method perhaps moved inside"},{"line_number":123,"context_line":"            # _load_config_from_file(). This is raised as bug #1466772."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"            if not config_file:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_7aa97c8f","line":122,"updated":"2015-09-16 20:44:00.000000000","message":"what code is being referred to here?","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"            # TODO(henry-nash): This method is only used in the file-based"},{"line_number":121,"context_line":"            # case, so has no need to worry about the database/API case. That"},{"line_number":122,"context_line":"            # code should be removed, and this method perhaps moved inside"},{"line_number":123,"context_line":"            # _load_config_from_file(). This is raised as bug #1466772."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"            if not config_file:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_21f74d5a","line":122,"in_reply_to":"ba15a1d1_7aa97c8f","updated":"2015-09-17 09:07:53.000000000","message":"Have made it clearer (it\u0027s referring to the database config statements below)","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def _load_config_from_database(self, domain_id, specific_config):"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        def _assert_no_more_than_one_sql_driver(domain_id, new_config):"},{"line_number":195,"context_line":"            \"\"\"Ensure adding driver doesn\u0027t push us over the limit of 1"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"            Due to multi-process safety concerns, we use specific config"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_5ad118f9","line":194,"updated":"2015-09-16 20:44:00.000000000","message":"This looks like we\u0027re checking for one sql driver, but there\u0027s no safe way to check. The process should be that we try to insert the row in the database and if that fails then report the error.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def _load_config_from_database(self, domain_id, specific_config):"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        def _assert_no_more_than_one_sql_driver(domain_id, new_config):"},{"line_number":195,"context_line":"            \"\"\"Ensure adding driver doesn\u0027t push us over the limit of 1"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"            Due to multi-process safety concerns, we use specific config"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_249afb6e","line":194,"in_reply_to":"ba15a1d1_5ad118f9","updated":"2015-09-17 09:07:53.000000000","message":"I kept it called that to be the equivalent of the one for the file based method elsewhere in this file...Perhaps I could add to a follow-on refactor?","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            \"\"\"Ensure adding driver doesn\u0027t push us over the limit of 1"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"            Due to multi-process safety concerns, we use specific config"},{"line_number":198,"context_line":"            backend methods to serialise use of SQL driver across multiple"},{"line_number":199,"context_line":"            Keystone processes"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"            \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_da96883e","line":198,"updated":"2015-09-16 20:44:00.000000000","message":"we don\u0027t need to protect using the SQL driver, we need to protect assigning of the SQL driver to the domain.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            \"\"\"Ensure adding driver doesn\u0027t push us over the limit of 1"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"            Due to multi-process safety concerns, we use specific config"},{"line_number":198,"context_line":"            backend methods to serialise use of SQL driver across multiple"},{"line_number":199,"context_line":"            Keystone processes"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"            \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_4127e1c9","line":198,"in_reply_to":"ba15a1d1_da96883e","updated":"2015-09-17 09:07:53.000000000","message":"will reword","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"            Due to multi-process safety concerns, we use specific config"},{"line_number":198,"context_line":"            backend methods to serialise use of SQL driver across multiple"},{"line_number":199,"context_line":"            Keystone processes"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"            \"\"\""},{"line_number":202,"context_line":"            if not new_config[\u0027driver\u0027].is_sql:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_fa9d8c66","line":199,"updated":"2015-09-16 20:44:00.000000000","message":"they don\u0027t need to all be Keystone server, right... could be keystone-manage? Suggest remove \"Keystone\".","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"            Due to multi-process safety concerns, we use specific config"},{"line_number":198,"context_line":"            backend methods to serialise use of SQL driver across multiple"},{"line_number":199,"context_line":"            Keystone processes"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"            \"\"\""},{"line_number":202,"context_line":"            if not new_config[\u0027driver\u0027].is_sql:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_0401f7ae","line":199,"in_reply_to":"ba15a1d1_fa9d8c66","updated":"2015-09-17 09:07:53.000000000","message":"So true, it could be keystone-mange that is one of the servers","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":200,"context_line":""},{"line_number":201,"context_line":"            \"\"\""},{"line_number":202,"context_line":"            if not new_config[\u0027driver\u0027].is_sql:"},{"line_number":203,"context_line":"                self.domain_config_api.free_config_registration(domain_id)"},{"line_number":204,"context_line":"                return"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"            # To ensure we are the only SQL driver, we attempt to get and hold"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_3afb047b","line":203,"updated":"2015-09-16 20:44:00.000000000","message":"suggest change free to \"release\". free has too many meanings.\n\nAlso, suggest remove \"config\" from the method name. The api is already domain_config so all its method should be config-related.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":200,"context_line":""},{"line_number":201,"context_line":"            \"\"\""},{"line_number":202,"context_line":"            if not new_config[\u0027driver\u0027].is_sql:"},{"line_number":203,"context_line":"                self.domain_config_api.free_config_registration(domain_id)"},{"line_number":204,"context_line":"                return"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"            # To ensure we are the only SQL driver, we attempt to get and hold"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_647b1329","line":203,"in_reply_to":"ba15a1d1_3afb047b","updated":"2015-09-17 09:07:53.000000000","message":"Done","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                self.domain_config_api.free_config_registration(domain_id)"},{"line_number":204,"context_line":"                return"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"            # To ensure we are the only SQL driver, we attempt to get and hold"},{"line_number":207,"context_line":"            # a register of our use of SQL. If we get it we know we are good,"},{"line_number":208,"context_line":"            # if we fail to get it then we should:"},{"line_number":209,"context_line":"            #"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_ba2dd4ff","line":206,"updated":"2015-09-16 20:44:00.000000000","message":"suggest remove \"get and hold a\"","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                self.domain_config_api.free_config_registration(domain_id)"},{"line_number":204,"context_line":"                return"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"            # To ensure we are the only SQL driver, we attempt to get and hold"},{"line_number":207,"context_line":"            # a register of our use of SQL. If we get it we know we are good,"},{"line_number":208,"context_line":"            # if we fail to get it then we should:"},{"line_number":209,"context_line":"            #"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_04c25734","line":206,"in_reply_to":"ba15a1d1_ba2dd4ff","updated":"2015-09-17 09:07:53.000000000","message":"Done","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                return"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"            # To ensure we are the only SQL driver, we attempt to get and hold"},{"line_number":207,"context_line":"            # a register of our use of SQL. If we get it we know we are good,"},{"line_number":208,"context_line":"            # if we fail to get it then we should:"},{"line_number":209,"context_line":"            #"},{"line_number":210,"context_line":"            # - First check if another process has registered for SQL for our"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_5a3fd823","line":207,"updated":"2015-09-16 20:44:00.000000000","message":"remove \"of\"","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                return"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"            # To ensure we are the only SQL driver, we attempt to get and hold"},{"line_number":207,"context_line":"            # a register of our use of SQL. If we get it we know we are good,"},{"line_number":208,"context_line":"            # if we fail to get it then we should:"},{"line_number":209,"context_line":"            #"},{"line_number":210,"context_line":"            # - First check if another process has registered for SQL for our"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_e4e3a3d7","line":207,"in_reply_to":"ba15a1d1_5a3fd823","updated":"2015-09-17 09:07:53.000000000","message":"Done","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            # if we fail to get it then we should:"},{"line_number":209,"context_line":"            #"},{"line_number":210,"context_line":"            # - First check if another process has registered for SQL for our"},{"line_number":211,"context_line":"            #   domain, in which case we also fine"},{"line_number":212,"context_line":"            # - If a different domain has it, we should check that this domain"},{"line_number":213,"context_line":"            #   is still valid, in case, for example, domain deletion somehow"},{"line_number":214,"context_line":"            #   failed to remove its registration (i.e. we self heal for these"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_1a4ac0ac","line":211,"updated":"2015-09-16 20:44:00.000000000","message":"change \"we also\" to \"we are\"\n\nI don\u0027t see how we can say we\u0027re definitely fine. Another process could be in the middle of deleting the domain.\n\nOr another process could be in the middle of creating the domain and creation fails after they register it.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            # if we fail to get it then we should:"},{"line_number":209,"context_line":"            #"},{"line_number":210,"context_line":"            # - First check if another process has registered for SQL for our"},{"line_number":211,"context_line":"            #   domain, in which case we also fine"},{"line_number":212,"context_line":"            # - If a different domain has it, we should check that this domain"},{"line_number":213,"context_line":"            #   is still valid, in case, for example, domain deletion somehow"},{"line_number":214,"context_line":"            #   failed to remove its registration (i.e. we self heal for these"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_44fa8f76","line":211,"in_reply_to":"ba15a1d1_1a4ac0ac","updated":"2015-09-17 09:07:53.000000000","message":"So on create we are ok, since you must successfully have the domain created in order to add the config overrides.\n\nOn a mid-delete situation, we know the domain is already disabled  (and will shortly disappear), so replying the caller that we are registered (at this point in time) is benign. I added a comment to the code further down to explain this.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            domain_registered \u003d \u0027Unknown\u0027"},{"line_number":218,"context_line":"            for x in range(REGISTRATION_ATTEMPTS):"},{"line_number":219,"context_line":"                if self.domain_config_api.obtain_config_registration("},{"line_number":220,"context_line":"                        domain_id, SQL_DRIVER):"},{"line_number":221,"context_line":"                    # We registered our use, so we are good to go"},{"line_number":222,"context_line":"                    return"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_1af88048","line":219,"updated":"2015-09-16 20:44:00.000000000","message":"suggest remove \"config\"","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            domain_registered \u003d \u0027Unknown\u0027"},{"line_number":218,"context_line":"            for x in range(REGISTRATION_ATTEMPTS):"},{"line_number":219,"context_line":"                if self.domain_config_api.obtain_config_registration("},{"line_number":220,"context_line":"                        domain_id, SQL_DRIVER):"},{"line_number":221,"context_line":"                    # We registered our use, so we are good to go"},{"line_number":222,"context_line":"                    return"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_241bdbcb","line":219,"in_reply_to":"ba15a1d1_1af88048","updated":"2015-09-17 09:07:53.000000000","message":"Done","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                # using it"},{"line_number":226,"context_line":"                try:"},{"line_number":227,"context_line":"                    domain_registered \u003d ("},{"line_number":228,"context_line":"                        self.domain_config_api.read_config_registration("},{"line_number":229,"context_line":"                            SQL_DRIVER))"},{"line_number":230,"context_line":"                except exception.ConfigRegistrationNotFound:"},{"line_number":231,"context_line":"                    # Looks like another process got in and freed it...let\u0027s"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_b5288587","line":228,"updated":"2015-09-16 20:44:00.000000000","message":"this method is making a lot of calls on the domain_config_api, maybe this method should all be in there?","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                # using it"},{"line_number":226,"context_line":"                try:"},{"line_number":227,"context_line":"                    domain_registered \u003d ("},{"line_number":228,"context_line":"                        self.domain_config_api.read_config_registration("},{"line_number":229,"context_line":"                            SQL_DRIVER))"},{"line_number":230,"context_line":"                except exception.ConfigRegistrationNotFound:"},{"line_number":231,"context_line":"                    # Looks like another process got in and freed it...let\u0027s"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_64e6b316","line":228,"in_reply_to":"ba15a1d1_b5288587","updated":"2015-09-17 09:07:53.000000000","message":"I did consider that, but wanted to keep the logic here for now, while we have both the file-based and API-based methods in play. Once we deprecate the file based mehod, then that might be the time to do that.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                    # try and grab it again"},{"line_number":233,"context_line":"                    continue"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"                if (domain_registered \u003d\u003d domain_id):"},{"line_number":236,"context_line":"                    # Another process already grabbed it for us, so we are fine"},{"line_number":237,"context_line":"                    return"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_d57bb98a","line":235,"updated":"2015-09-16 20:44:00.000000000","message":"remove () since this isn\u0027t Java.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                    # try and grab it again"},{"line_number":233,"context_line":"                    continue"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"                if (domain_registered \u003d\u003d domain_id):"},{"line_number":236,"context_line":"                    # Another process already grabbed it for us, so we are fine"},{"line_number":237,"context_line":"                    return"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_217c2db4","line":235,"in_reply_to":"ba15a1d1_d57bb98a","updated":"2015-09-17 09:07:53.000000000","message":"Ha!!!","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                # So we don\u0027t have it, but someone else does...let\u0027s check that"},{"line_number":240,"context_line":"                # this domain is still valid"},{"line_number":241,"context_line":"                try:"},{"line_number":242,"context_line":"                    self.resource_api.get_domain(domain_registered)"},{"line_number":243,"context_line":"                except exception.DomainNotFound:"},{"line_number":244,"context_line":"                    # Free the orphaned registration, then try and then try and"},{"line_number":245,"context_line":"                    # get ours again"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_155e1112","line":242,"updated":"2015-09-16 20:44:00.000000000","message":"maybe the other process hasn\u0027t gotten around to creating the domain yet?","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                # So we don\u0027t have it, but someone else does...let\u0027s check that"},{"line_number":240,"context_line":"                # this domain is still valid"},{"line_number":241,"context_line":"                try:"},{"line_number":242,"context_line":"                    self.resource_api.get_domain(domain_registered)"},{"line_number":243,"context_line":"                except exception.DomainNotFound:"},{"line_number":244,"context_line":"                    # Free the orphaned registration, then try and then try and"},{"line_number":245,"context_line":"                    # get ours again"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_047577f8","line":242,"in_reply_to":"ba15a1d1_155e1112","updated":"2015-09-17 09:07:53.000000000","message":"The domain must exist in order to be able to add any domain config overrides.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                try:"},{"line_number":242,"context_line":"                    self.resource_api.get_domain(domain_registered)"},{"line_number":243,"context_line":"                except exception.DomainNotFound:"},{"line_number":244,"context_line":"                    # Free the orphaned registration, then try and then try and"},{"line_number":245,"context_line":"                    # get ours again"},{"line_number":246,"context_line":"                    self.domain_config_api.free_config_registration("},{"line_number":247,"context_line":"                        domain_registered, type\u003dSQL_DRIVER)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_158cd17d","line":244,"updated":"2015-09-16 20:44:00.000000000","message":"remove \"then try\"","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                try:"},{"line_number":242,"context_line":"                    self.resource_api.get_domain(domain_registered)"},{"line_number":243,"context_line":"                except exception.DomainNotFound:"},{"line_number":244,"context_line":"                    # Free the orphaned registration, then try and then try and"},{"line_number":245,"context_line":"                    # get ours again"},{"line_number":246,"context_line":"                    self.domain_config_api.free_config_registration("},{"line_number":247,"context_line":"                        domain_registered, type\u003dSQL_DRIVER)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_2472fb11","line":244,"in_reply_to":"ba15a1d1_158cd17d","updated":"2015-09-17 09:07:53.000000000","message":"Done","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        def _assert_no_more_than_one_sql_driver(domain_id, new_config):"},{"line_number":196,"context_line":"            \"\"\"Ensure adding driver doesn\u0027t push us over the limit of 1"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"            Due to multi-process safety concerns, we use specific config"},{"line_number":199,"context_line":"            backend methods to ensure only one domain is using the SQL driver"},{"line_number":200,"context_line":"            across multiple processes."},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_92d97ef5","line":198,"updated":"2015-09-18 15:45:47.000000000","message":"without saying what the \"specific config backend methods\" are I don\u0027t find this comment useful as someone reading the code.","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        def _assert_no_more_than_one_sql_driver(domain_id, new_config):"},{"line_number":196,"context_line":"            \"\"\"Ensure adding driver doesn\u0027t push us over the limit of 1"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"            Due to multi-process safety concerns, we use specific config"},{"line_number":199,"context_line":"            backend methods to ensure only one domain is using the SQL driver"},{"line_number":200,"context_line":"            across multiple processes."},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_d3585833","line":198,"in_reply_to":"ba15a1d1_92d97ef5","updated":"2015-09-18 17:17:50.000000000","message":"Done","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                self.domain_config_api.release_registration(domain_id)"},{"line_number":205,"context_line":"                return"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"            # To ensure we are the only SQL driver, we attempt to register our"},{"line_number":208,"context_line":"            # use of SQL. If we get it we know we are good, if we fail to"},{"line_number":209,"context_line":"            # register it then we should:"},{"line_number":210,"context_line":"            #"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_b2b28204","line":207,"updated":"2015-09-18 15:45:47.000000000","message":"change \"we are\" to \"the current domain is\"","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                self.domain_config_api.release_registration(domain_id)"},{"line_number":205,"context_line":"                return"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"            # To ensure we are the only SQL driver, we attempt to register our"},{"line_number":208,"context_line":"            # use of SQL. If we get it we know we are good, if we fail to"},{"line_number":209,"context_line":"            # register it then we should:"},{"line_number":210,"context_line":"            #"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_53b8c810","line":207,"in_reply_to":"ba15a1d1_b2b28204","updated":"2015-09-18 17:17:50.000000000","message":"Done","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":215,"context_line":"            #   failed to remove its registration (i.e. we self heal for these"},{"line_number":216,"context_line":"            #   kinds of issues)."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"            domain_registered \u003d \u0027Unknown\u0027"},{"line_number":219,"context_line":"            for x in range(REGISTRATION_ATTEMPTS):"},{"line_number":220,"context_line":"                if self.domain_config_api.obtain_registration("},{"line_number":221,"context_line":"                        domain_id, SQL_DRIVER):"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_322e72a5","line":218,"updated":"2015-09-18 15:45:47.000000000","message":"not necessary to set this since it\u0027s set at line 227... the only way it could be unknown at 266 is if REGISTRATION_ATTEMPTS is 0, but that would already be an error.","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":215,"context_line":"            #   failed to remove its registration (i.e. we self heal for these"},{"line_number":216,"context_line":"            #   kinds of issues)."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"            domain_registered \u003d \u0027Unknown\u0027"},{"line_number":219,"context_line":"            for x in range(REGISTRATION_ATTEMPTS):"},{"line_number":220,"context_line":"                if self.domain_config_api.obtain_registration("},{"line_number":221,"context_line":"                        domain_id, SQL_DRIVER):"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_b3a92492","line":218,"in_reply_to":"ba15a1d1_322e72a5","updated":"2015-09-18 17:17:50.000000000","message":"Since we include the value of domain_registered in the error msg on line 263, there is a pathological case where 227 keeps give \"not found\" and we never get to set it. I agree something is screwy if that happened, which is why I included it in the message.","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            for x in range(REGISTRATION_ATTEMPTS):"},{"line_number":220,"context_line":"                if self.domain_config_api.obtain_registration("},{"line_number":221,"context_line":"                        domain_id, SQL_DRIVER):"},{"line_number":222,"context_line":"                    # We registered our use, so we are good to go"},{"line_number":223,"context_line":"                    return"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"                # We failed to register our use, let\u0027s find out who is using it"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_2d3377f7","line":222,"updated":"2015-09-18 15:45:47.000000000","message":"consider making this comment a LOG.debug","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            for x in range(REGISTRATION_ATTEMPTS):"},{"line_number":220,"context_line":"                if self.domain_config_api.obtain_registration("},{"line_number":221,"context_line":"                        domain_id, SQL_DRIVER):"},{"line_number":222,"context_line":"                    # We registered our use, so we are good to go"},{"line_number":223,"context_line":"                    return"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"                # We failed to register our use, let\u0027s find out who is using it"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_13e330da","line":222,"in_reply_to":"ba15a1d1_2d3377f7","updated":"2015-09-18 17:17:50.000000000","message":"Done","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                # We failed to register our use, let\u0027s find out who is using it"},{"line_number":226,"context_line":"                try:"},{"line_number":227,"context_line":"                    domain_registered \u003d ("},{"line_number":228,"context_line":"                        self.domain_config_api.read_registration("},{"line_number":229,"context_line":"                            SQL_DRIVER))"},{"line_number":230,"context_line":"                except exception.ConfigRegistrationNotFound:"},{"line_number":231,"context_line":"                    # Looks like another process got in and freed it...let\u0027s"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_4d1a6bc7","line":228,"updated":"2015-09-18 15:45:47.000000000","message":"self.domain_config_api.obtain_registration() could return the domain_registered, and could do both the insert and select in a single transaction so then this code wouldn\u0027t have to worry about not finding the row.","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                # We failed to register our use, let\u0027s find out who is using it"},{"line_number":226,"context_line":"                try:"},{"line_number":227,"context_line":"                    domain_registered \u003d ("},{"line_number":228,"context_line":"                        self.domain_config_api.read_registration("},{"line_number":229,"context_line":"                            SQL_DRIVER))"},{"line_number":230,"context_line":"                except exception.ConfigRegistrationNotFound:"},{"line_number":231,"context_line":"                    # Looks like another process got in and freed it...let\u0027s"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_53be88ae","line":228,"in_reply_to":"ba15a1d1_4d1a6bc7","updated":"2015-09-18 17:17:50.000000000","message":"possible...perhaps I could leave that for further refinement?","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                            SQL_DRIVER))"},{"line_number":230,"context_line":"                except exception.ConfigRegistrationNotFound:"},{"line_number":231,"context_line":"                    # Looks like another process got in and freed it...let\u0027s"},{"line_number":232,"context_line":"                    # try and register it again"},{"line_number":233,"context_line":"                    continue"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"                if domain_registered \u003d\u003d domain_id:"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_ed4fbf68","line":232,"updated":"2015-09-18 15:45:47.000000000","message":"consider LOG.debug here so we\u0027ll be able to tell what\u0027s going on.","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                            SQL_DRIVER))"},{"line_number":230,"context_line":"                except exception.ConfigRegistrationNotFound:"},{"line_number":231,"context_line":"                    # Looks like another process got in and freed it...let\u0027s"},{"line_number":232,"context_line":"                    # try and register it again"},{"line_number":233,"context_line":"                    continue"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"                if domain_registered \u003d\u003d domain_id:"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_0505270f","line":232,"in_reply_to":"ba15a1d1_ed4fbf68","updated":"2015-09-18 17:17:50.000000000","message":"Done","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                    # fine. In the race condition when another process is"},{"line_number":238,"context_line":"                    # in the middle of deleting this domain, we know the domain"},{"line_number":239,"context_line":"                    # is already disabled and hence telling the caller that we"},{"line_number":240,"context_line":"                    # are registered is benign."},{"line_number":241,"context_line":"                    return"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"                # So we don\u0027t have it, but someone else does...let\u0027s check that"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_2d6137d3","line":240,"updated":"2015-09-18 15:45:47.000000000","message":"consider LOG.debug","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                    # fine. In the race condition when another process is"},{"line_number":238,"context_line":"                    # in the middle of deleting this domain, we know the domain"},{"line_number":239,"context_line":"                    # is already disabled and hence telling the caller that we"},{"line_number":240,"context_line":"                    # are registered is benign."},{"line_number":241,"context_line":"                    return"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"                # So we don\u0027t have it, but someone else does...let\u0027s check that"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_e5283388","line":240,"in_reply_to":"ba15a1d1_2d6137d3","updated":"2015-09-18 17:17:50.000000000","message":"I think this is the common case....but no harm, I guess.","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                    self.resource_api.get_domain(domain_registered)"},{"line_number":247,"context_line":"                except exception.DomainNotFound:"},{"line_number":248,"context_line":"                    # Free the orphaned registration, and then try and register"},{"line_number":249,"context_line":"                    # ours again"},{"line_number":250,"context_line":"                    self.domain_config_api.release_registration("},{"line_number":251,"context_line":"                        domain_registered, type\u003dSQL_DRIVER)"},{"line_number":252,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_cd7d1b6e","line":249,"updated":"2015-09-18 15:45:47.000000000","message":"I think we should also LOG.debug here.","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                    self.resource_api.get_domain(domain_registered)"},{"line_number":247,"context_line":"                except exception.DomainNotFound:"},{"line_number":248,"context_line":"                    # Free the orphaned registration, and then try and register"},{"line_number":249,"context_line":"                    # ours again"},{"line_number":250,"context_line":"                    self.domain_config_api.release_registration("},{"line_number":251,"context_line":"                        domain_registered, type\u003dSQL_DRIVER)"},{"line_number":252,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_25614bd3","line":249,"in_reply_to":"ba15a1d1_cd7d1b6e","updated":"2015-09-18 17:17:50.000000000","message":"Done","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7871f1d15940b81ccc1c4c838190489a238e165","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                if self.domain_config_api.obtain_registration("},{"line_number":221,"context_line":"                        domain_id, SQL_DRIVER):"},{"line_number":222,"context_line":"                    LOG.debug(\u0027Domain %s successfully registered to use the \u0027"},{"line_number":223,"context_line":"                              \u0027SQL driver.\u0027, domain_id)"},{"line_number":224,"context_line":"                    return"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"                # We failed to register our use, let\u0027s find out who is using it"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba15a1d1_34ec17ba","line":223,"updated":"2015-09-18 18:45:09.000000000","message":"suggest also put the # of retries in here.","commit_id":"9f0dec879ca89addda645e5f5972ad261e7d655d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60e7ce79da4d6107abb445f11fec504536d4a4aa","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                if self.domain_config_api.obtain_registration("},{"line_number":221,"context_line":"                        domain_id, SQL_DRIVER):"},{"line_number":222,"context_line":"                    LOG.debug(\u0027Domain %s successfully registered to use the \u0027"},{"line_number":223,"context_line":"                              \u0027SQL driver.\u0027, domain_id)"},{"line_number":224,"context_line":"                    return"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"                # We failed to register our use, let\u0027s find out who is using it"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba15a1d1_3248a0cc","line":223,"in_reply_to":"ba15a1d1_34ec17ba","updated":"2015-09-19 00:56:09.000000000","message":"Done","commit_id":"9f0dec879ca89addda645e5f5972ad261e7d655d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7871f1d15940b81ccc1c4c838190489a238e165","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                        self.domain_config_api.read_registration("},{"line_number":230,"context_line":"                            SQL_DRIVER))"},{"line_number":231,"context_line":"                except exception.ConfigRegistrationNotFound:"},{"line_number":232,"context_line":"                    # Looks like another process got in and released it...let\u0027s"},{"line_number":233,"context_line":"                    # try and register it again"},{"line_number":234,"context_line":"                    LOG.debug(\u0027While attempting to register domain %s to use \u0027"},{"line_number":235,"context_line":"                              \u0027the SQL driver, another process released it, \u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba15a1d1_1448f3ca","line":232,"updated":"2015-09-18 18:45:09.000000000","message":"the log message already says this.","commit_id":"9f0dec879ca89addda645e5f5972ad261e7d655d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60e7ce79da4d6107abb445f11fec504536d4a4aa","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                        self.domain_config_api.read_registration("},{"line_number":230,"context_line":"                            SQL_DRIVER))"},{"line_number":231,"context_line":"                except exception.ConfigRegistrationNotFound:"},{"line_number":232,"context_line":"                    # Looks like another process got in and released it...let\u0027s"},{"line_number":233,"context_line":"                    # try and register it again"},{"line_number":234,"context_line":"                    LOG.debug(\u0027While attempting to register domain %s to use \u0027"},{"line_number":235,"context_line":"                              \u0027the SQL driver, another process released it, \u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba15a1d1_92364ce6","line":232,"in_reply_to":"ba15a1d1_1448f3ca","updated":"2015-09-19 00:56:09.000000000","message":"Done","commit_id":"9f0dec879ca89addda645e5f5972ad261e7d655d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a7871f1d15940b81ccc1c4c838190489a238e165","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                    # try and register it again"},{"line_number":234,"context_line":"                    LOG.debug(\u0027While attempting to register domain %s to use \u0027"},{"line_number":235,"context_line":"                              \u0027the SQL driver, another process released it, \u0027"},{"line_number":236,"context_line":"                              \u0027retrying.\u0027, domain_id)"},{"line_number":237,"context_line":"                    continue"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"                if domain_registered \u003d\u003d domain_id:"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba15a1d1_d414bba0","line":236,"updated":"2015-09-18 18:45:09.000000000","message":"suggest put the attempt # in the message.","commit_id":"9f0dec879ca89addda645e5f5972ad261e7d655d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60e7ce79da4d6107abb445f11fec504536d4a4aa","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                    # try and register it again"},{"line_number":234,"context_line":"                    LOG.debug(\u0027While attempting to register domain %s to use \u0027"},{"line_number":235,"context_line":"                              \u0027the SQL driver, another process released it, \u0027"},{"line_number":236,"context_line":"                              \u0027retrying.\u0027, domain_id)"},{"line_number":237,"context_line":"                    continue"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"                if domain_registered \u003d\u003d domain_id:"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba15a1d1_32fbc049","line":236,"in_reply_to":"ba15a1d1_d414bba0","updated":"2015-09-19 00:56:09.000000000","message":"Done","commit_id":"9f0dec879ca89addda645e5f5972ad261e7d655d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"268bedc13d5180a79cba88233366aa19125889b8","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    def _load_config_from_database(self, domain_id, specific_config):"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        def _assert_no_more_than_one_sql_driver(domain_id, new_config):"},{"line_number":196,"context_line":"            \"\"\"Ensure adding driver doesn\u0027t push us over the limit of 1"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"            The checks we make in this method need to take into account that"},{"line_number":199,"context_line":"            we may be in a multiple process configuration and ensure that"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_a0cae24d","line":196,"updated":"2015-09-21 20:10:58.000000000","message":"add punctuation to the end of this string.","commit_id":"1696b875dd7b37c5d9569a1a5d5ad25e4410a1ef"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5b6950cfd35fc504cc886718aec06004b2e1e064","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                if self.domain_config_api.obtain_registration("},{"line_number":221,"context_line":"                        domain_id, SQL_DRIVER):"},{"line_number":222,"context_line":"                    LOG.debug(\u0027Domain %s successfully registered to use the \u0027"},{"line_number":223,"context_line":"                              \u0027SQL driver.\u0027, domain_id)"},{"line_number":224,"context_line":"                    return"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"                # We failed to register our use, let\u0027s find out who is using it"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_69236706","line":223,"updated":"2015-09-21 15:40:21.000000000","message":"suggest also put the # of retries in here.","commit_id":"1696b875dd7b37c5d9569a1a5d5ad25e4410a1ef"}],"keystone/resource/config_backends/sql.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"33f2143879b7f4e8621b63d47d25583c0d7f20dc","unresolved":false,"context_lines":[{"line_number":48,"context_line":"class ConfigMutex(sql.ModelBase, sql.ModelDictMixin):"},{"line_number":49,"context_line":"    __tablename__ \u003d \u0027config_mutex\u0027"},{"line_number":50,"context_line":"    mutex \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":51,"context_line":"    domain_id \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class DomainConfig(resource.DomainConfigDriver):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_d9618d06","line":51,"updated":"2015-07-23 08:47:07.000000000","message":"Is it possible to make the mutext more general? so it\u0027s not restricted in the domain config and the column is not necessary domain_id but some other entities like user or group? then we can reuse with in other situation.","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"83408b892cdab9c50fa61826bb6900a8fc73298d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"class ConfigMutex(sql.ModelBase, sql.ModelDictMixin):"},{"line_number":49,"context_line":"    __tablename__ \u003d \u0027config_mutex\u0027"},{"line_number":50,"context_line":"    mutex \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":51,"context_line":"    domain_id \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class DomainConfig(resource.DomainConfigDriver):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_a16cdf9c","line":51,"in_reply_to":"3a50d1a3_31c901ad","updated":"2015-08-11 13:42:28.000000000","message":"sure, lets hold on to pick up this when this is really needed.","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ebb35879e51466233ef10e394fedab4385b6703f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"class ConfigMutex(sql.ModelBase, sql.ModelDictMixin):"},{"line_number":49,"context_line":"    __tablename__ \u003d \u0027config_mutex\u0027"},{"line_number":50,"context_line":"    mutex \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":51,"context_line":"    domain_id \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class DomainConfig(resource.DomainConfigDriver):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_31c901ad","line":51,"in_reply_to":"3a50d1a3_d9618d06","updated":"2015-08-01 12:55:07.000000000","message":"we could, of course, but would probably vote for leaving that generality until we find a use case...","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"33f2143879b7f4e8621b63d47d25583c0d7f20dc","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    __tablename__ \u003d \u0027config_mutex\u0027"},{"line_number":50,"context_line":"    mutex \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":51,"context_line":"    domain_id \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class DomainConfig(resource.DomainConfigDriver):"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_2b285332","line":52,"updated":"2015-07-23 08:47:07.000000000","message":"not sure if the cloumn domain_id need a FK reference with domain table?","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ebb35879e51466233ef10e394fedab4385b6703f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    __tablename__ \u003d \u0027config_mutex\u0027"},{"line_number":50,"context_line":"    mutex \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":51,"context_line":"    domain_id \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class DomainConfig(resource.DomainConfigDriver):"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_71cf89b3","line":52,"in_reply_to":"3a50d1a3_2b285332","updated":"2015-08-01 12:55:07.000000000","message":"So I didn\u0027t do this for two reasons;: 1) we are about to kill the domain table (so it would be an FK into the project table anyway), and 2) since we self heal for the mutex\u0027s being left around anyway, there isn\u0027t much advantage.","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"33f2143879b7f4e8621b63d47d25583c0d7f20dc","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                session.add(ref)"},{"line_number":137,"context_line":"            return True"},{"line_number":138,"context_line":"        except sql.DBDuplicateEntry:"},{"line_number":139,"context_line":"            pass"},{"line_number":140,"context_line":"        return False"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def read_config_sql_mutex(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_fd6b0eb5","line":139,"updated":"2015-07-23 08:47:07.000000000","message":"we need aslo silent here or some message could be given?","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ebb35879e51466233ef10e394fedab4385b6703f","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                session.add(ref)"},{"line_number":137,"context_line":"            return True"},{"line_number":138,"context_line":"        except sql.DBDuplicateEntry:"},{"line_number":139,"context_line":"            pass"},{"line_number":140,"context_line":"        return False"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def read_config_sql_mutex(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_11bf25fd","line":139,"in_reply_to":"3a50d1a3_fd6b0eb5","updated":"2015-08-01 12:55:07.000000000","message":"so I tried to keep all the message handling at the manager level...rather than have it at both levels.  The manager will realise it failed to get the mutex and then decide what to do about it","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                session.add(ref)"},{"line_number":132,"context_line":"            return True"},{"line_number":133,"context_line":"        except sql.DBDuplicateEntry:"},{"line_number":134,"context_line":"            pass"},{"line_number":135,"context_line":"        return False"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def read_config_registration(self, type):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_f5535de0","line":134,"updated":"2015-09-16 20:44:00.000000000","message":"might be useful to debug log here.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                session.add(ref)"},{"line_number":132,"context_line":"            return True"},{"line_number":133,"context_line":"        except sql.DBDuplicateEntry:"},{"line_number":134,"context_line":"            pass"},{"line_number":135,"context_line":"        return False"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def read_config_registration(self, type):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_5f3c98c7","line":134,"in_reply_to":"ba15a1d1_f5535de0","updated":"2015-09-17 09:07:53.000000000","message":"I think this will happen a lot, however, since in the case of having multiple Keystone processes, the first one will add the row and all others will find there is a duplicate (and find it\u0027s for the same domain as they wanted, and just carry on)","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"268bedc13d5180a79cba88233366aa19125889b8","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                    query \u003d query.filter_by(option\u003doption)"},{"line_number":125,"context_line":"            query.delete(False)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def obtain_registration(self, domain_id, type):"},{"line_number":128,"context_line":"        try:"},{"line_number":129,"context_line":"            with sql.transaction() as session:"},{"line_number":130,"context_line":"                ref \u003d ConfigRegister(type\u003dtype, domain_id\u003ddomain_id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_202b32ed","line":127,"updated":"2015-09-21 20:10:58.000000000","message":"add doc strings to these to be consistent with release_registration. this can be done in a separate patch though.","commit_id":"1696b875dd7b37c5d9569a1a5d5ad25e4410a1ef"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"268bedc13d5180a79cba88233366aa19125889b8","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            pass"},{"line_number":135,"context_line":"        return False"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def read_registration(self, type):"},{"line_number":138,"context_line":"        with sql.transaction() as session:"},{"line_number":139,"context_line":"            ref \u003d session.query(ConfigRegister).get(type)"},{"line_number":140,"context_line":"            if not ref:"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_00386e3c","line":137,"updated":"2015-09-21 20:10:58.000000000","message":"same comment here","commit_id":"1696b875dd7b37c5d9569a1a5d5ad25e4410a1ef"}],"keystone/resource/core.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"33f2143879b7f4e8621b63d47d25583c0d7f20dc","unresolved":false,"context_lines":[{"line_number":1376,"context_line":"        \"\"\"Get the domain ID of who holds the mutex."},{"line_number":1377,"context_line":""},{"line_number":1378,"context_line":"        :returns: domain_id of who holds the mutex."},{"line_number":1379,"context_line":"        :raises: keystone.exception.NotFound: nobody has the mutex."},{"line_number":1380,"context_line":""},{"line_number":1381,"context_line":"        \"\"\""},{"line_number":1382,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_ea490932","line":1379,"updated":"2015-07-23 08:47:07.000000000","message":":raises: keystone.exception.ConfigSQLMutexNotFound for consistency","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ebb35879e51466233ef10e394fedab4385b6703f","unresolved":false,"context_lines":[{"line_number":1376,"context_line":"        \"\"\"Get the domain ID of who holds the mutex."},{"line_number":1377,"context_line":""},{"line_number":1378,"context_line":"        :returns: domain_id of who holds the mutex."},{"line_number":1379,"context_line":"        :raises: keystone.exception.NotFound: nobody has the mutex."},{"line_number":1380,"context_line":""},{"line_number":1381,"context_line":"        \"\"\""},{"line_number":1382,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_11464521","line":1379,"in_reply_to":"3a50d1a3_ea490932","updated":"2015-08-01 12:55:07.000000000","message":"Done","commit_id":"df5e6934ccb8649630bb54dc1dc5961f580d087a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":1393,"context_line":""},{"line_number":1394,"context_line":"        :param type: type of registration"},{"line_number":1395,"context_line":"        :returns: domain_id of who is registered."},{"line_number":1396,"context_line":"        :raises: keystone.exception.ConfigSQLDriverNotFound: nobody is"},{"line_number":1397,"context_line":"                 registered."},{"line_number":1398,"context_line":""},{"line_number":1399,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_55f9e9c5","line":1396,"updated":"2015-09-16 20:44:00.000000000","message":"the exception has SQL in it even if the type isn\u0027t SQL.\n\nI think this interface is being made overly broad if we don\u0027t really care about the type.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":1393,"context_line":""},{"line_number":1394,"context_line":"        :param type: type of registration"},{"line_number":1395,"context_line":"        :returns: domain_id of who is registered."},{"line_number":1396,"context_line":"        :raises: keystone.exception.ConfigSQLDriverNotFound: nobody is"},{"line_number":1397,"context_line":"                 registered."},{"line_number":1398,"context_line":""},{"line_number":1399,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_ff532c15","line":1396,"in_reply_to":"ba15a1d1_55f9e9c5","updated":"2015-09-17 09:07:53.000000000","message":"...and in fact the above is a typo...the exception raised is no longer SQL specific...good catch.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":1396,"context_line":"        :raises: keystone.exception.ConfigSQLDriverNotFound: nobody is"},{"line_number":1397,"context_line":"                 registered."},{"line_number":1398,"context_line":""},{"line_number":1399,"context_line":"        \"\"\""},{"line_number":1400,"context_line":""},{"line_number":1401,"context_line":"    @abc.abstractmethod"},{"line_number":1402,"context_line":"    def free_config_registration(self, domain_id, type\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_75566dcf","line":1399,"updated":"2015-09-16 20:44:00.000000000","message":"raise NotImplemented?","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":1396,"context_line":"        :raises: keystone.exception.ConfigSQLDriverNotFound: nobody is"},{"line_number":1397,"context_line":"                 registered."},{"line_number":1398,"context_line":""},{"line_number":1399,"context_line":"        \"\"\""},{"line_number":1400,"context_line":""},{"line_number":1401,"context_line":"    @abc.abstractmethod"},{"line_number":1402,"context_line":"    def free_config_registration(self, domain_id, type\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_7f407c34","line":1399,"in_reply_to":"ba15a1d1_75566dcf","updated":"2015-09-17 09:07:53.000000000","message":"oops, where did that go!","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"}],"keystone/tests/unit/backend/domain_config/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":571,"context_line":"            self.domain_config_api.read_registration(type))"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        # Make sure freeing it is silent if the domain specified doesn\u0027t"},{"line_number":574,"context_line":"        # have the mutex"},{"line_number":575,"context_line":"        domain2 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":576,"context_line":"        self.resource_api.create_domain(domain2[\u0027id\u0027], domain2)"},{"line_number":577,"context_line":"        self.domain_config_api.release_registration("}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_4d482bb3","line":574,"updated":"2015-09-18 15:45:47.000000000","message":"change \"doesn\u0027t have the mutex\" to \"isn\u0027t registered\"","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":571,"context_line":"            self.domain_config_api.read_registration(type))"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        # Make sure freeing it is silent if the domain specified doesn\u0027t"},{"line_number":574,"context_line":"        # have the mutex"},{"line_number":575,"context_line":"        domain2 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":576,"context_line":"        self.resource_api.create_domain(domain2[\u0027id\u0027], domain2)"},{"line_number":577,"context_line":"        self.domain_config_api.release_registration("}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_48457640","line":574,"in_reply_to":"ba15a1d1_4d482bb3","updated":"2015-09-18 17:17:50.000000000","message":"Done","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":577,"context_line":"        self.domain_config_api.release_registration("},{"line_number":578,"context_line":"            domain2[\u0027id\u0027], type\u003dtype)"},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"        # If nobody has the type registered, then reading should raise NotFound"},{"line_number":581,"context_line":"        self.domain_config_api.release_registration("},{"line_number":582,"context_line":"            self.domain[\u0027id\u0027], type\u003dtype)"},{"line_number":583,"context_line":"        self.assertRaises(exception.ConfigRegistrationNotFound,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_4ddfcbd5","line":580,"updated":"2015-09-18 15:45:47.000000000","message":"change \"reading\" to \"releasing\"","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":577,"context_line":"        self.domain_config_api.release_registration("},{"line_number":578,"context_line":"            domain2[\u0027id\u0027], type\u003dtype)"},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"        # If nobody has the type registered, then reading should raise NotFound"},{"line_number":581,"context_line":"        self.domain_config_api.release_registration("},{"line_number":582,"context_line":"            self.domain[\u0027id\u0027], type\u003dtype)"},{"line_number":583,"context_line":"        self.assertRaises(exception.ConfigRegistrationNotFound,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_488a5665","line":580,"in_reply_to":"ba15a1d1_4ddfcbd5","updated":"2015-09-18 17:17:50.000000000","message":"No, it really is the read that should throw the exception...","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":584,"context_line":"                          self.domain_config_api.read_registration,"},{"line_number":585,"context_line":"                          type)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        # Finally check multiple registrations are cleared if tyou free the"},{"line_number":588,"context_line":"        # registration without specifying the type"},{"line_number":589,"context_line":"        type2 \u003d uuid.uuid4().hex"},{"line_number":590,"context_line":"        self.domain_config_api.obtain_registration("}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_edf01f69","line":587,"updated":"2015-09-18 15:45:47.000000000","message":"change \"tyou\" to \"you\"","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":584,"context_line":"                          self.domain_config_api.read_registration,"},{"line_number":585,"context_line":"                          type)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        # Finally check multiple registrations are cleared if tyou free the"},{"line_number":588,"context_line":"        # registration without specifying the type"},{"line_number":589,"context_line":"        type2 \u003d uuid.uuid4().hex"},{"line_number":590,"context_line":"        self.domain_config_api.obtain_registration("}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_2854c2c7","line":587,"in_reply_to":"ba15a1d1_edf01f69","updated":"2015-09-18 17:17:50.000000000","message":"Done","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"}],"keystone/tests/unit/test_backend_ldap.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"a3194ed7d9813331f7e5fc1697363b8767fb0720","unresolved":false,"context_lines":[{"line_number":2795,"context_line":"        self.resource_api.update_domain(domain[\u0027id\u0027], domain)"},{"line_number":2796,"context_line":"        self.resource_api.delete_domain(domain[\u0027id\u0027])"},{"line_number":2797,"context_line":""},{"line_number":2798,"context_line":"        # The mutex shuold now be available"},{"line_number":2799,"context_line":"        self.domain_config_api.create_config(self.domains[\u0027domain1\u0027][\u0027id\u0027],"},{"line_number":2800,"context_line":"                                             new_config)"},{"line_number":2801,"context_line":"        self.identity_api.domain_configs.get_domain_conf("}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_7729b588","line":2798,"updated":"2015-08-11 13:41:22.000000000","message":"nit: s/shuold/should","commit_id":"5f92b42abf0b663086bbfc4ef975f61cab800c22"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b5a75bb254d8b4428c16bb55bb73d1a07df3f4af","unresolved":false,"context_lines":[{"line_number":2795,"context_line":"        self.resource_api.update_domain(domain[\u0027id\u0027], domain)"},{"line_number":2796,"context_line":"        self.resource_api.delete_domain(domain[\u0027id\u0027])"},{"line_number":2797,"context_line":""},{"line_number":2798,"context_line":"        # The mutex shuold now be available"},{"line_number":2799,"context_line":"        self.domain_config_api.create_config(self.domains[\u0027domain1\u0027][\u0027id\u0027],"},{"line_number":2800,"context_line":"                                             new_config)"},{"line_number":2801,"context_line":"        self.identity_api.domain_configs.get_domain_conf("}],"source_content_type":"text/x-python","patch_set":8,"id":"fa1b9901_cea99c91","line":2798,"in_reply_to":"1a4dcd0f_7729b588","updated":"2015-08-21 10:24:09.000000000","message":"Done","commit_id":"5f92b42abf0b663086bbfc4ef975f61cab800c22"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"a3194ed7d9813331f7e5fc1697363b8767fb0720","unresolved":false,"context_lines":[{"line_number":2826,"context_line":"        # Invalidate cache"},{"line_number":2827,"context_line":"        self.resource_api.get_domain.invalidate("},{"line_number":2828,"context_line":"            self.resource_api, domain[\u0027id\u0027])"},{"line_number":2829,"context_line":""},{"line_number":2830,"context_line":"        # The mutex should now be available"},{"line_number":2831,"context_line":"        self.domain_config_api.create_config(self.domains[\u0027domain1\u0027][\u0027id\u0027],"},{"line_number":2832,"context_line":"                                             new_config)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_97900197","line":2829,"updated":"2015-08-11 13:41:22.000000000","message":"I like this testcase and the self heal idea, it\u0027s cool!","commit_id":"5f92b42abf0b663086bbfc4ef975f61cab800c22"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b5a75bb254d8b4428c16bb55bb73d1a07df3f4af","unresolved":false,"context_lines":[{"line_number":2826,"context_line":"        # Invalidate cache"},{"line_number":2827,"context_line":"        self.resource_api.get_domain.invalidate("},{"line_number":2828,"context_line":"            self.resource_api, domain[\u0027id\u0027])"},{"line_number":2829,"context_line":""},{"line_number":2830,"context_line":"        # The mutex should now be available"},{"line_number":2831,"context_line":"        self.domain_config_api.create_config(self.domains[\u0027domain1\u0027][\u0027id\u0027],"},{"line_number":2832,"context_line":"                                             new_config)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa1b9901_8e988479","line":2829,"in_reply_to":"1a4dcd0f_97900197","updated":"2015-08-21 10:24:09.000000000","message":":-)","commit_id":"5f92b42abf0b663086bbfc4ef975f61cab800c22"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2162ebf146733247d65f2630656a46f0639a096","unresolved":false,"context_lines":[{"line_number":2943,"context_line":"            domain_cfgs.get_domain_conf(CONF.identity.default_domain_id))"},{"line_number":2944,"context_line":"        self.assertEqual(CONF.ldap.url, default_config.ldap.url)"},{"line_number":2945,"context_line":""},{"line_number":2946,"context_line":"    def test_setting_multiple_sql_driver_raises_exception(self):"},{"line_number":2947,"context_line":"        \"\"\"Ensure setting multiple domain specific sql drivers is prevented.\"\"\""},{"line_number":2948,"context_line":""},{"line_number":2949,"context_line":"        new_config \u003d {\u0027identity\u0027: {\u0027driver\u0027: \u0027sql\u0027}}"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_55f8097b","line":2946,"updated":"2015-09-16 20:44:00.000000000","message":"why is this in test_backend_ldap?","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9a5fabd7f114ebafb2280cb77fb0a0451684c705","unresolved":false,"context_lines":[{"line_number":2943,"context_line":"            domain_cfgs.get_domain_conf(CONF.identity.default_domain_id))"},{"line_number":2944,"context_line":"        self.assertEqual(CONF.ldap.url, default_config.ldap.url)"},{"line_number":2945,"context_line":""},{"line_number":2946,"context_line":"    def test_setting_multiple_sql_driver_raises_exception(self):"},{"line_number":2947,"context_line":"        \"\"\"Ensure setting multiple domain specific sql drivers is prevented.\"\"\""},{"line_number":2948,"context_line":""},{"line_number":2949,"context_line":"        new_config \u003d {\u0027identity\u0027: {\u0027driver\u0027: \u0027sql\u0027}}"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba15a1d1_1fc62068","line":2946,"in_reply_to":"ba15a1d1_55f8097b","updated":"2015-09-17 09:07:53.000000000","message":"...because the only way to have a specific SQL domain, is to be using LDAP as the default driver...hence needing the set up in this class.","commit_id":"707b1c57c1674b733ba69d7ca9f064e14dda505a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b6530fd9b98a971f6d033fca4568e426affaa8ed","unresolved":false,"context_lines":[{"line_number":3025,"context_line":"        # domain to SQL, since we should self heal this issue."},{"line_number":3026,"context_line":""},{"line_number":3027,"context_line":"        self.resource_api.driver.delete_domain(domain[\u0027id\u0027])"},{"line_number":3028,"context_line":"        # Invalidate cache"},{"line_number":3029,"context_line":"        self.resource_api.get_domain.invalidate("},{"line_number":3030,"context_line":"            self.resource_api, domain[\u0027id\u0027])"},{"line_number":3031,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_983f5fb3","line":3028,"updated":"2015-09-18 15:45:47.000000000","message":"Looks like I have to wait for the cache time to update the config? Mention this in the commit message since we should document it.","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1ea53009d07df11833e33b7af1bc2b789077abe","unresolved":false,"context_lines":[{"line_number":3025,"context_line":"        # domain to SQL, since we should self heal this issue."},{"line_number":3026,"context_line":""},{"line_number":3027,"context_line":"        self.resource_api.driver.delete_domain(domain[\u0027id\u0027])"},{"line_number":3028,"context_line":"        # Invalidate cache"},{"line_number":3029,"context_line":"        self.resource_api.get_domain.invalidate("},{"line_number":3030,"context_line":"            self.resource_api, domain[\u0027id\u0027])"},{"line_number":3031,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_88706e73","line":3028,"in_reply_to":"ba15a1d1_983f5fb3","updated":"2015-09-18 17:17:50.000000000","message":"Done","commit_id":"ad98266c8959f9a21defb942ed0f751178cf72d9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"389e87b77d377b6df1569d63c070e9781565522e","unresolved":false,"context_lines":[{"line_number":2976,"context_line":"            CONF.identity.default_domain_id)"},{"line_number":2977,"context_line":""},{"line_number":2978,"context_line":"    def test_delete_domain_clears_sql_registration(self):"},{"line_number":2979,"context_line":"        \"\"\"Ensure registration is deleted when a domain is deleted\"\"\""},{"line_number":2980,"context_line":""},{"line_number":2981,"context_line":"        domain \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":2982,"context_line":"        domain \u003d self.resource_api.create_domain(domain[\u0027id\u0027], domain)"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_df44cc1c","line":2979,"updated":"2015-09-19 02:56:43.000000000","message":"nit: missing period at the end of the comment.","commit_id":"bb231a47802b03dd09fa3efeea2a7df438c50d81"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"beca9a2c7cfbb802c6e3a814fe893d8a14cdc89a","unresolved":false,"context_lines":[{"line_number":2976,"context_line":"            CONF.identity.default_domain_id)"},{"line_number":2977,"context_line":""},{"line_number":2978,"context_line":"    def test_delete_domain_clears_sql_registration(self):"},{"line_number":2979,"context_line":"        \"\"\"Ensure registration is deleted when a domain is deleted\"\"\""},{"line_number":2980,"context_line":""},{"line_number":2981,"context_line":"        domain \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":2982,"context_line":"        domain \u003d self.resource_api.create_domain(domain[\u0027id\u0027], domain)"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_f58d2f2b","line":2979,"in_reply_to":"ba15a1d1_df44cc1c","updated":"2015-09-19 07:12:47.000000000","message":"Done","commit_id":"bb231a47802b03dd09fa3efeea2a7df438c50d81"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"389e87b77d377b6df1569d63c070e9781565522e","unresolved":false,"context_lines":[{"line_number":3004,"context_line":"            self.domains[\u0027domain1\u0027][\u0027id\u0027])"},{"line_number":3005,"context_line":""},{"line_number":3006,"context_line":"    def test_orphaned_registration_does_not_prevent_getting_sql_driver(self):"},{"line_number":3007,"context_line":"        \"\"\"Ensure we self heal an orphaned sql registration\"\"\""},{"line_number":3008,"context_line":""},{"line_number":3009,"context_line":"        domain \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":3010,"context_line":"        domain \u003d self.resource_api.create_domain(domain[\u0027id\u0027], domain)"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_9f47341d","line":3007,"updated":"2015-09-19 02:56:43.000000000","message":"ditto","commit_id":"bb231a47802b03dd09fa3efeea2a7df438c50d81"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"beca9a2c7cfbb802c6e3a814fe893d8a14cdc89a","unresolved":false,"context_lines":[{"line_number":3004,"context_line":"            self.domains[\u0027domain1\u0027][\u0027id\u0027])"},{"line_number":3005,"context_line":""},{"line_number":3006,"context_line":"    def test_orphaned_registration_does_not_prevent_getting_sql_driver(self):"},{"line_number":3007,"context_line":"        \"\"\"Ensure we self heal an orphaned sql registration\"\"\""},{"line_number":3008,"context_line":""},{"line_number":3009,"context_line":"        domain \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":3010,"context_line":"        domain \u003d self.resource_api.create_domain(domain[\u0027id\u0027], domain)"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_5572db4a","line":3007,"in_reply_to":"ba15a1d1_9f47341d","updated":"2015-09-19 07:12:47.000000000","message":"Done","commit_id":"bb231a47802b03dd09fa3efeea2a7df438c50d81"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"268bedc13d5180a79cba88233366aa19125889b8","unresolved":false,"context_lines":[{"line_number":2958,"context_line":"                          self.domains[\u0027domain1\u0027][\u0027id\u0027])"},{"line_number":2959,"context_line":""},{"line_number":2960,"context_line":"    def test_same_domain_gets_sql_driver(self):"},{"line_number":2961,"context_line":"        \"\"\"Ensure we can set an SQL driver if we have had it before.\"\"\""},{"line_number":2962,"context_line":""},{"line_number":2963,"context_line":"        new_config \u003d {\u0027identity\u0027: {\u0027driver\u0027: \u0027sql\u0027}}"},{"line_number":2964,"context_line":"        self.domain_config_api.create_config("}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_801b1eca","line":2961,"updated":"2015-09-21 20:10:58.000000000","message":"nit: s/an/a/","commit_id":"1696b875dd7b37c5d9569a1a5d5ad25e4410a1ef"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5b6950cfd35fc504cc886718aec06004b2e1e064","unresolved":false,"context_lines":[{"line_number":3028,"context_line":"        # self heal this issue."},{"line_number":3029,"context_line":""},{"line_number":3030,"context_line":"        self.resource_api.driver.delete_domain(domain[\u0027id\u0027])"},{"line_number":3031,"context_line":"        # Invalidate cache (so we will see the domain has gone)"},{"line_number":3032,"context_line":"        self.resource_api.get_domain.invalidate("},{"line_number":3033,"context_line":"            self.resource_api, domain[\u0027id\u0027])"},{"line_number":3034,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_c9c63316","line":3031,"updated":"2015-09-21 15:40:21.000000000","message":"suggest change comment to something like \"if the server was restarted then the cache would have been rebuilt\" ?\n\nAlthough that\u0027s not really the case since the cache might be in memcache.","commit_id":"1696b875dd7b37c5d9569a1a5d5ad25e4410a1ef"}]}
