)]}'
{"etc/keystone.conf.sample":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d2c39ee0a9189ffbc0623d144a0b94bf33588e5b","unresolved":false,"context_lines":[{"line_number":213,"context_line":"# group_allow_delete \u003d True"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"# ldap TLS options"},{"line_number":216,"context_line":"# if both tls_cacertfile and tls_cacertdir are set then "},{"line_number":217,"context_line":"# tls_cacertfile takes precedence"},{"line_number":218,"context_line":"# use_tls \u003d False"},{"line_number":219,"context_line":"# tls_cacertfile \u003d None"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAOX%2F%2F%2Bqg%3D","line":216,"updated":"2013-04-03 19:31:03.000000000","message":"(nit) remove extra space at end of line.","commit_id":"b42931fa9036033ddfa6ba5b782d2554005f38a5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d2c39ee0a9189ffbc0623d144a0b94bf33588e5b","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"# ldap TLS options"},{"line_number":216,"context_line":"# if both tls_cacertfile and tls_cacertdir are set then "},{"line_number":217,"context_line":"# tls_cacertfile takes precedence"},{"line_number":218,"context_line":"# use_tls \u003d False"},{"line_number":219,"context_line":"# tls_cacertfile \u003d None"},{"line_number":220,"context_line":"# tls_cacertdir \u003d None"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAOX%2F%2F%2BqE%3D","line":217,"updated":"2013-04-03 19:31:03.000000000","message":"Does this mean that tls_cacertdir is ignored, or that if the cert file works then that\u0027s adequate and cert dir is still used?","commit_id":"b42931fa9036033ddfa6ba5b782d2554005f38a5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d2c39ee0a9189ffbc0623d144a0b94bf33588e5b","unresolved":false,"context_lines":[{"line_number":218,"context_line":"# use_tls \u003d False"},{"line_number":219,"context_line":"# tls_cacertfile \u003d None"},{"line_number":220,"context_line":"# tls_cacertdir \u003d None"},{"line_number":221,"context_line":"# tls_req_cert \u003d \u0027demand\u0027"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"[auth]"},{"line_number":224,"context_line":"methods \u003d password,token"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAOX%2F%2F%2Bqc%3D","line":221,"updated":"2013-04-03 19:31:03.000000000","message":"document the allowed values and what they mean.\n\nalso, could use tls_req_cert \u003d None to indicate to use tls? Just a suggestion.","commit_id":"b42931fa9036033ddfa6ba5b782d2554005f38a5"},{"author":{"_account_id":905,"name":"Ryan Lane","email":"ryan@ryandlane.com","username":"rlane"},"change_message_id":"fb1c2302acd7466491f559e8ed20ff77ebfb1391","unresolved":false,"context_lines":[{"line_number":216,"context_line":"# if both tls_cacertfile and tls_cacertdir are set then"},{"line_number":217,"context_line":"# tls_cacertfile will be used and tls_cacertdir is ignored"},{"line_number":218,"context_line":"# valid options for tls_req_cert are demand, never, and allow"},{"line_number":219,"context_line":"# use_tls \u003d False"},{"line_number":220,"context_line":"# tls_cacertfile \u003d "},{"line_number":221,"context_line":"# tls_cacertdir \u003d "},{"line_number":222,"context_line":"# tls_req_cert \u003d demand"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAAOX%2F%2F8zs%3D","line":219,"updated":"2013-04-04 20:08:17.000000000","message":"Can we default to tls?","commit_id":"2995ea91cefdaf150b06bca23d68fe9b7ddfc11f"}],"keystone/common/config.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"47427c7343cd01d974c8b21d2cc9e2314545e321","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        group\u003d\u0027ldap\u0027,"},{"line_number":361,"context_line":"        default\u003d\"/etc/keystone/ldap/certs/\")"},{"line_number":362,"context_line":"    register_bool(\u0027use_tls\u0027, group\u003d\u0027ldap\u0027, default\u003dFalse)"},{"line_number":363,"context_line":"    register_bool(\u0027use_tls_cacertfile\u0027, group\u003d\u0027ldap\u0027, default\u003dFalse)"},{"line_number":364,"context_line":"    register_bool(\u0027use_tls_cacertdir\u0027, group\u003d\u0027ldap\u0027, default\u003dFalse)"},{"line_number":365,"context_line":"    register_str(\u0027tls_req_cert\u0027, group\u003d\u0027ldap\u0027, default\u003d\u0027demand\u0027)"},{"line_number":366,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2FsnQ%3D","line":363,"updated":"2013-04-02 16:12:04.000000000","message":"Would it be better to not have this option, and have tls_cacertfile default to None, where None indicates to not use the certfile?\n\nSame with use_tls_cacertdir and tls_certdir.\n\nAs someone looking at a config file trying to figure out why TLS isn\u0027t working, it would be a lot more obvious to only have 1 option.","commit_id":"33e0a5f92bd0a0d2b382b5922835aa4ffabebdb8"},{"author":{"_account_id":905,"name":"Ryan Lane","email":"ryan@ryandlane.com","username":"rlane"},"change_message_id":"fb1c2302acd7466491f559e8ed20ff77ebfb1391","unresolved":false,"context_lines":[{"line_number":352,"context_line":"    register_bool(\u0027domain_enabled_emulation\u0027, group\u003d\u0027ldap\u0027, default\u003dFalse)"},{"line_number":353,"context_line":"    register_str(\u0027domain_enabled_emulation_dn\u0027, group\u003d\u0027ldap\u0027, default\u003dNone)"},{"line_number":354,"context_line":"    register_str(\u0027tls_cacertfile\u0027, group\u003d\u0027ldap\u0027, default\u003dNone)"},{"line_number":355,"context_line":"    register_str(\u0027tls_cacertdir\u0027,  group\u003d\u0027ldap\u0027, default\u003dNone)"},{"line_number":356,"context_line":"    register_bool(\u0027use_tls\u0027, group\u003d\u0027ldap\u0027, default\u003dFalse)"},{"line_number":357,"context_line":"    register_str(\u0027tls_req_cert\u0027, group\u003d\u0027ldap\u0027, default\u003d\u0027demand\u0027)"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOX%2F%2F8zE%3D","line":355,"updated":"2013-04-04 20:08:17.000000000","message":"Do we have a reference distro? Can we use /etc/ssl/certs?","commit_id":"2995ea91cefdaf150b06bca23d68fe9b7ddfc11f"},{"author":{"_account_id":905,"name":"Ryan Lane","email":"ryan@ryandlane.com","username":"rlane"},"change_message_id":"fb1c2302acd7466491f559e8ed20ff77ebfb1391","unresolved":false,"context_lines":[{"line_number":353,"context_line":"    register_str(\u0027domain_enabled_emulation_dn\u0027, group\u003d\u0027ldap\u0027, default\u003dNone)"},{"line_number":354,"context_line":"    register_str(\u0027tls_cacertfile\u0027, group\u003d\u0027ldap\u0027, default\u003dNone)"},{"line_number":355,"context_line":"    register_str(\u0027tls_cacertdir\u0027,  group\u003d\u0027ldap\u0027, default\u003dNone)"},{"line_number":356,"context_line":"    register_bool(\u0027use_tls\u0027, group\u003d\u0027ldap\u0027, default\u003dFalse)"},{"line_number":357,"context_line":"    register_str(\u0027tls_req_cert\u0027, group\u003d\u0027ldap\u0027, default\u003d\u0027demand\u0027)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    # pam"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOX%2F%2F8zo%3D","line":356,"updated":"2013-04-04 20:08:17.000000000","message":"Again let\u0027s default to using tls.","commit_id":"2995ea91cefdaf150b06bca23d68fe9b7ddfc11f"}],"keystone/common/ldap/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"47427c7343cd01d974c8b21d2cc9e2314545e321","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import os.path"},{"line_number":18,"context_line":"import ldap"},{"line_number":19,"context_line":"from ldap import filter as ldap_filter"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2Fsnw%3D","line":17,"updated":"2013-04-02 16:12:04.000000000","message":"imports should remain in alphabetical order, so move this line after 19.","commit_id":"33e0a5f92bd0a0d2b382b5922835aa4ffabebdb8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"47427c7343cd01d974c8b21d2cc9e2314545e321","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        #for extra debugging uncomment the following line"},{"line_number":409,"context_line":"        #ldap.set_option(ldap.OPT_DEBUG_LEVEL, 4095)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        if use_tls is True:"},{"line_number":412,"context_line":"            if (ldap.TLS_AVAIL \u003d\u003d 0):"},{"line_number":413,"context_line":"                raise ValueError((_(\u0027Invalid LDAP TLS_AVAIL option: %s. TLS\u0027"},{"line_number":414,"context_line":"                                    \u0027not available\u0027) % ldap.TLS_AVAIL))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2Fsnk%3D","line":411,"updated":"2013-04-02 16:12:04.000000000","message":"remove \"is True\".","commit_id":"33e0a5f92bd0a0d2b382b5922835aa4ffabebdb8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"47427c7343cd01d974c8b21d2cc9e2314545e321","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        #ldap.set_option(ldap.OPT_DEBUG_LEVEL, 4095)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        if use_tls is True:"},{"line_number":412,"context_line":"            if (ldap.TLS_AVAIL \u003d\u003d 0):"},{"line_number":413,"context_line":"                raise ValueError((_(\u0027Invalid LDAP TLS_AVAIL option: %s. TLS\u0027"},{"line_number":414,"context_line":"                                    \u0027not available\u0027) % ldap.TLS_AVAIL))"},{"line_number":415,"context_line":"            if use_tls_cacertfile is True and tls_cacertfile is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2Fsng%3D","line":412,"updated":"2013-04-02 16:12:04.000000000","message":"remove ()s since this is not C or Java.","commit_id":"33e0a5f92bd0a0d2b382b5922835aa4ffabebdb8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"47427c7343cd01d974c8b21d2cc9e2314545e321","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            if (ldap.TLS_AVAIL \u003d\u003d 0):"},{"line_number":413,"context_line":"                raise ValueError((_(\u0027Invalid LDAP TLS_AVAIL option: %s. TLS\u0027"},{"line_number":414,"context_line":"                                    \u0027not available\u0027) % ldap.TLS_AVAIL))"},{"line_number":415,"context_line":"            if use_tls_cacertfile is True and tls_cacertfile is not None:"},{"line_number":416,"context_line":"                #NOTE(topol)"},{"line_number":417,"context_line":"                #python ldap TLS does not verify CACERTFILE or CACERTDIR"},{"line_number":418,"context_line":"                #so we add some extra simple sanity check verification"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2FsnY%3D","line":415,"updated":"2013-04-02 16:12:04.000000000","message":"remove is True.\n\nThis comment applies to all the is not True, is True throughout this part, e.g., line 419 too.","commit_id":"33e0a5f92bd0a0d2b382b5922835aa4ffabebdb8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"47427c7343cd01d974c8b21d2cc9e2314545e321","unresolved":false,"context_lines":[{"line_number":418,"context_line":"                #so we add some extra simple sanity check verification"},{"line_number":419,"context_line":"                if os.path.isfile(tls_cacertfile) is not True:"},{"line_number":420,"context_line":"                    raise IOError(_(\"tls_cacertfile %s not found\") %"},{"line_number":421,"context_line":"                                  tls_cacertfile)"},{"line_number":422,"context_line":"                ldap.set_option(ldap.OPT_X_TLS_CACERTFILE, tls_cacertfile)"},{"line_number":423,"context_line":"            if use_tls_cacertdir is True and tls_cacertdir is not None:"},{"line_number":424,"context_line":"                #NOTE(topol)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2FsnE%3D","line":421,"updated":"2013-04-02 16:12:04.000000000","message":"(note to self) There must be a better exception for this... configuration error or something.","commit_id":"33e0a5f92bd0a0d2b382b5922835aa4ffabebdb8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"47427c7343cd01d974c8b21d2cc9e2314545e321","unresolved":false,"context_lines":[{"line_number":425,"context_line":"                #python ldap TLS does not verify CACERTFILE or CACERTDIR"},{"line_number":426,"context_line":"                #so we add some extra simple sanity check verification"},{"line_number":427,"context_line":"                if os.path.isdir(tls_cacertdir) is not True:"},{"line_number":428,"context_line":"                    raise IOError((_(\"tls_cacertdir %s not found\") %"},{"line_number":429,"context_line":"                                  tls_cacertdir))"},{"line_number":430,"context_line":"                ldap.set_option(ldap.OPT_X_TLS_CACERTDIR, tls_cacertdir)"},{"line_number":431,"context_line":"            if tls_req_cert in LDAP_TLS_CERTS.values():"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2FsnA%3D","line":428,"updated":"2013-04-02 16:12:04.000000000","message":"extra ( here?","commit_id":"33e0a5f92bd0a0d2b382b5922835aa4ffabebdb8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"47427c7343cd01d974c8b21d2cc9e2314545e321","unresolved":false,"context_lines":[{"line_number":430,"context_line":"                ldap.set_option(ldap.OPT_X_TLS_CACERTDIR, tls_cacertdir)"},{"line_number":431,"context_line":"            if tls_req_cert in LDAP_TLS_CERTS.values():"},{"line_number":432,"context_line":"                ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT,"},{"line_number":433,"context_line":"                                tls_req_cert)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        self.conn \u003d ldap.initialize(url)"},{"line_number":436,"context_line":"        self.conn.protocol_version \u003d ldap.VERSION3"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2Fsms%3D","line":433,"updated":"2013-04-02 16:12:04.000000000","message":"consider the else leg... should it log that the tls_req_cert is invalid, or maybe should have asserted earlier?","commit_id":"33e0a5f92bd0a0d2b382b5922835aa4ffabebdb8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d2c39ee0a9189ffbc0623d144a0b94bf33588e5b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import os.path"},{"line_number":18,"context_line":"import ldap"},{"line_number":19,"context_line":"from ldap import filter as ldap_filter"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOX%2F%2F%2Bps%3D","line":17,"updated":"2013-04-03 19:31:03.000000000","message":"add a blank line after stdlib imports, see https://github.com/openstack/keystone/blob/master/HACKING.rst#imports","commit_id":"b42931fa9036033ddfa6ba5b782d2554005f38a5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d2c39ee0a9189ffbc0623d144a0b94bf33588e5b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    try:"},{"line_number":84,"context_line":"        return LDAP_TLS_CERTS[opt]"},{"line_number":85,"context_line":"    except KeyError:"},{"line_number":86,"context_line":"        raise ValueError((_(\u0027Invalid LDAP tls certs option: %s. \u0027"},{"line_number":87,"context_line":"                            \u0027Choose one of: \u0027) %"},{"line_number":88,"context_line":"                         opt) + \u0027, \u0027.join(LDAP_TLS_CERTS.keys()))"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOX%2F%2F%2Bpk%3D","line":86,"updated":"2013-04-03 19:31:03.000000000","message":"suggest mention the name of the option, \"tls_req_cert\"","commit_id":"b42931fa9036033ddfa6ba5b782d2554005f38a5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d2c39ee0a9189ffbc0623d144a0b94bf33588e5b","unresolved":false,"context_lines":[{"line_number":388,"context_line":"                 use_tls\u003dFalse, tls_cacertfile\u003dNone, tls_cacertdir\u003dNone,"},{"line_number":389,"context_line":"                 tls_req_cert\u003d\u0027demand\u0027):"},{"line_number":390,"context_line":"        LOG.debug(_(\"LDAP init: url\u003d%s\"), url)"},{"line_number":391,"context_line":"        LOG.debug(_(\"LDAP init: use_tls\u003d%s\"), use_tls)"},{"line_number":392,"context_line":"        LOG.debug(_(\"LDAP init: tls_cacertfile\u003d%s\"), tls_cacertfile)"},{"line_number":393,"context_line":"        LOG.debug(_(\"LDAP init: tls_cacertdir\u003d%s\"), tls_cacertdir)"},{"line_number":394,"context_line":"        LOG.debug(_(\"LDAP init: tls_req_cert\u003d%s\"), tls_req_cert)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOX%2F%2F%2Bpc%3D","line":391,"updated":"2013-04-03 19:31:03.000000000","message":"suggest merge all these logs into a single call to LOG.debug. Otherwise can get split up if multiple requests. Or, don\u0027t log like all the other arguments aren\u0027t logged.","commit_id":"b42931fa9036033ddfa6ba5b782d2554005f38a5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d2c39ee0a9189ffbc0623d144a0b94bf33588e5b","unresolved":false,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":"        if use_tls:"},{"line_number":402,"context_line":"            if ldap.TLS_AVAIL \u003d\u003d 0:"},{"line_number":403,"context_line":"                raise ValueError((_(\u0027Invalid LDAP TLS_AVAIL option: %s. TLS\u0027"},{"line_number":404,"context_line":"                                    \u0027not available\u0027) % ldap.TLS_AVAIL))"},{"line_number":405,"context_line":"            if tls_cacertfile is not None:"},{"line_number":406,"context_line":"                #NOTE(topol)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOX%2F%2F%2BpU%3D","line":403,"updated":"2013-04-03 19:31:03.000000000","message":"is there extra ( here? \"ValueError((\" -\u003e \"ValueError(\". remove it if don\u0027t need it.","commit_id":"b42931fa9036033ddfa6ba5b782d2554005f38a5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d2c39ee0a9189ffbc0623d144a0b94bf33588e5b","unresolved":false,"context_lines":[{"line_number":402,"context_line":"            if ldap.TLS_AVAIL \u003d\u003d 0:"},{"line_number":403,"context_line":"                raise ValueError((_(\u0027Invalid LDAP TLS_AVAIL option: %s. TLS\u0027"},{"line_number":404,"context_line":"                                    \u0027not available\u0027) % ldap.TLS_AVAIL))"},{"line_number":405,"context_line":"            if tls_cacertfile is not None:"},{"line_number":406,"context_line":"                #NOTE(topol)"},{"line_number":407,"context_line":"                #python ldap TLS does not verify CACERTFILE or CACERTDIR"},{"line_number":408,"context_line":"                #so we add some extra simple sanity check verification"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOX%2F%2F%2BpQ%3D","line":405,"updated":"2013-04-03 19:31:03.000000000","message":"suggest change to \"not tls_cacertfile\", seems like an empty tls_cacertfile is as useless as None.\n\nThis also applies to 413.","commit_id":"b42931fa9036033ddfa6ba5b782d2554005f38a5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d2c39ee0a9189ffbc0623d144a0b94bf33588e5b","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                if not os.path.isfile(tls_cacertfile):"},{"line_number":410,"context_line":"                    raise IOError(_(\"tls_cacertfile %s not found\") %"},{"line_number":411,"context_line":"                                  tls_cacertfile)"},{"line_number":412,"context_line":"                ldap.set_option(ldap.OPT_X_TLS_CACERTFILE, tls_cacertfile)"},{"line_number":413,"context_line":"            elif tls_cacertdir is not None:"},{"line_number":414,"context_line":"                #NOTE(topol)"},{"line_number":415,"context_line":"                #python ldap TLS does not verify CACERTFILE or CACERTDIR"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOX%2F%2F%2BpM%3D","line":412,"updated":"2013-04-03 19:31:03.000000000","message":"I think that this is going to set the global value for OPT_X_TLS_CACERTFILE, but this is in the init for a single ldap connection. Either move this so that it\u0027s at the global level, or change the code so that it\u0027s setting the option only for the new connection.","commit_id":"b42931fa9036033ddfa6ba5b782d2554005f38a5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d2c39ee0a9189ffbc0623d144a0b94bf33588e5b","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                          tls_req_cert)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"        self.conn \u003d ldap.initialize(url)"},{"line_number":429,"context_line":"        self.conn.protocol_version \u003d ldap.VERSION3"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        if alias_dereferencing is not None:"},{"line_number":432,"context_line":"            self.conn.set_option(ldap.OPT_DEREF, alias_dereferencing)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOX%2F%2F%2BpI%3D","line":429,"updated":"2013-04-03 19:31:03.000000000","message":"I\u0027d rather this change was made in a separate commit.","commit_id":"b42931fa9036033ddfa6ba5b782d2554005f38a5"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"232355bc5d929b6a4856c4f5d87db7348daaa684","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        using_ldaps \u003d False"},{"line_number":409,"context_line":"        if url.lower().startswith(\"ldaps\"):"},{"line_number":410,"context_line":"            using_ldaps \u003d True"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        if use_tls and not using_ldaps:"},{"line_number":413,"context_line":"            if ldap.TLS_AVAIL \u003d\u003d 0:"},{"line_number":414,"context_line":"                raise ValueError(_(\u0027Invalid LDAP TLS_AVAIL option: %s. TLS\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F690%3D","line":411,"updated":"2013-04-05 22:29:03.000000000","message":"can you just put a single check here: if using_ldaps and using_tls: raise....","commit_id":"9d06980a689bfcd0174e09eafca62cd06f6087b4"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"d094766c3e87cd2d9f07c07aa888a0d8ec825f07","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    try:"},{"line_number":77,"context_line":"        return LDAP_DEREF[opt]"},{"line_number":78,"context_line":"    except KeyError:"},{"line_number":79,"context_line":"        raise ValueError((_(\u0027Invalid LDAP deref option: %s. Choose one of: \u0027) %"},{"line_number":80,"context_line":"                         opt) + \u0027, \u0027.join(LDAP_DEREF.keys()))"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F6pw%3D","line":79,"updated":"2013-04-06 16:46:35.000000000","message":"No need to call .keys() in LDAP_DEREF.keys()","commit_id":"738c77f4ab99ca9b567e9016a8ec13256002ae54"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"d094766c3e87cd2d9f07c07aa888a0d8ec825f07","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        return LDAP_TLS_CERTS[opt]"},{"line_number":86,"context_line":"    except KeyError:"},{"line_number":87,"context_line":"        raise ValueError((_(\u0027Invalid LDAP tls certs option: %s. \u0027"},{"line_number":88,"context_line":"                            \u0027Choose one of: \u0027) %"},{"line_number":89,"context_line":"                         opt) + \u0027, \u0027.join(LDAP_TLS_CERTS.keys()))"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F6p0%3D","line":88,"updated":"2013-04-06 16:46:35.000000000","message":"No need to call .keys() in LDAP_TLS_CERTS.keys()","commit_id":"738c77f4ab99ca9b567e9016a8ec13256002ae54"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"d094766c3e87cd2d9f07c07aa888a0d8ec825f07","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        #NOTE(topol)"},{"line_number":405,"context_line":"        #for extra debugging uncomment the following line"},{"line_number":406,"context_line":"        #ldap.set_option(ldap.OPT_DEBUG_LEVEL, 4095)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        using_ldaps \u003d False"},{"line_number":409,"context_line":"        if url.lower().startswith(\"ldaps\"):"},{"line_number":410,"context_line":"            using_ldaps \u003d True"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F6p8%3D","line":407,"updated":"2013-04-06 16:46:35.000000000","message":"This can be also wrote like this:  using_ldaps \u003d url.lower().startswith(\"ldaps\")","commit_id":"738c77f4ab99ca9b567e9016a8ec13256002ae54"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8a031e18634660abbd991d235c5ace49bb6be552","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        #NOTE(topol)"},{"line_number":405,"context_line":"        #for extra debugging uncomment the following line"},{"line_number":406,"context_line":"        #ldap.set_option(ldap.OPT_DEBUG_LEVEL, 4095)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        using_ldaps \u003d False"},{"line_number":409,"context_line":"        if url.lower().startswith(\"ldaps\"):"},{"line_number":410,"context_line":"            using_ldaps \u003d True"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2F%2F8k%3D","line":407,"in_reply_to":"AAAAOX%2F%2F6p8%3D","updated":"2013-04-08 18:49:16.000000000","message":"+1","commit_id":"738c77f4ab99ca9b567e9016a8ec13256002ae54"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8a031e18634660abbd991d235c5ace49bb6be552","unresolved":false,"context_lines":[{"line_number":410,"context_line":"            using_ldaps \u003d True"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        if use_tls and using_ldaps:"},{"line_number":413,"context_line":"            raise AssertionError(\u0027Invalid TLS / ldaps combination\u0027)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        if use_tls:"},{"line_number":416,"context_line":"            if ldap.TLS_AVAIL \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2F%2F8M%3D","line":413,"updated":"2013-04-08 18:49:16.000000000","message":"why is ldaps lowercase?\n\nalso, i18n?","commit_id":"738c77f4ab99ca9b567e9016a8ec13256002ae54"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8a031e18634660abbd991d235c5ace49bb6be552","unresolved":false,"context_lines":[{"line_number":413,"context_line":"            raise AssertionError(\u0027Invalid TLS / ldaps combination\u0027)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        if use_tls:"},{"line_number":416,"context_line":"            if ldap.TLS_AVAIL \u003d\u003d 0:"},{"line_number":417,"context_line":"                raise ValueError(_(\u0027Invalid LDAP TLS_AVAIL option: %s. TLS\u0027"},{"line_number":418,"context_line":"                                   \u0027not available\u0027) % ldap.TLS_AVAIL)"},{"line_number":419,"context_line":"            if tls_cacertfile:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2F%2F8E%3D","line":416,"updated":"2013-04-08 18:49:16.000000000","message":"we just made a pass to eliminate these types of comparisons, please do:\n\n  if not ldap.TLS_AVAIL:","commit_id":"738c77f4ab99ca9b567e9016a8ec13256002ae54"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"066cb463722032a2cfb284b94c232aea56a1328c","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                 use_tls\u003dFalse, tls_cacertfile\u003dNone, tls_cacertdir\u003dNone,"},{"line_number":390,"context_line":"                 tls_req_cert\u003d\u0027demand\u0027):"},{"line_number":391,"context_line":"        LOG.debug(_(\"LDAP init: url\u003d%s\"), url)"},{"line_number":392,"context_line":"        LOG.debug(_(\u0027TLDAP init: use_tls\u003d%(use_tls)s\\n\u0027"},{"line_number":393,"context_line":"                  \u0027tls_cacertfile\u003d%(tls_cacertfile)s\\n\u0027"},{"line_number":394,"context_line":"                  \u0027tls_cacertdir\u003d%(tls_cacertdir)s\\n\u0027"},{"line_number":395,"context_line":"                  \u0027tls_req_cert\u003d%(tls_req_cert)s\\n\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2Fdw%3D","line":392,"updated":"2013-04-08 22:49:21.000000000","message":"change \"TLDAP to LDAP\".","commit_id":"cdbd6192e670f63c3e06b4cd73b5719100c1ec4d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"066cb463722032a2cfb284b94c232aea56a1328c","unresolved":false,"context_lines":[{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        using_ldaps \u003d False"},{"line_number":409,"context_line":"        if url.lower().startswith(\"ldaps\"):"},{"line_number":410,"context_line":"            using_ldaps \u003d True"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        if use_tls and using_ldaps:"},{"line_number":413,"context_line":"            raise AssertionError(\u0027Invalid TLS / ldaps combination\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2Fdc%3D","line":410,"updated":"2013-04-08 22:49:21.000000000","message":"suggest change 408-410 to\n\n using_ldaps \u003d url.lower().startswith(\"ldaps\")","commit_id":"cdbd6192e670f63c3e06b4cd73b5719100c1ec4d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"066cb463722032a2cfb284b94c232aea56a1328c","unresolved":false,"context_lines":[{"line_number":410,"context_line":"            using_ldaps \u003d True"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        if use_tls and using_ldaps:"},{"line_number":413,"context_line":"            raise AssertionError(\u0027Invalid TLS / ldaps combination\u0027)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        if use_tls:"},{"line_number":416,"context_line":"            if ldap.TLS_AVAIL \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2FdY%3D","line":413,"updated":"2013-04-08 22:49:21.000000000","message":"wrap error message in _() for translation.","commit_id":"cdbd6192e670f63c3e06b4cd73b5719100c1ec4d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"066cb463722032a2cfb284b94c232aea56a1328c","unresolved":false,"context_lines":[{"line_number":415,"context_line":"        if use_tls:"},{"line_number":416,"context_line":"            if ldap.TLS_AVAIL \u003d\u003d 0:"},{"line_number":417,"context_line":"                raise ValueError(_(\u0027Invalid LDAP TLS_AVAIL option: %s. TLS\u0027"},{"line_number":418,"context_line":"                                   \u0027not available\u0027) % ldap.TLS_AVAIL)"},{"line_number":419,"context_line":"            if tls_cacertfile:"},{"line_number":420,"context_line":"                #NOTE(topol)"},{"line_number":421,"context_line":"                #python ldap TLS does not verify CACERTFILE or CACERTDIR"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2FdU%3D","line":418,"updated":"2013-04-08 22:49:21.000000000","message":"since already know that TLS_AVAIL is 0, suggest change message to \"TLS not available\"","commit_id":"cdbd6192e670f63c3e06b4cd73b5719100c1ec4d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"066cb463722032a2cfb284b94c232aea56a1328c","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                #works but these values are ignored when setting them on the"},{"line_number":425,"context_line":"                #connection"},{"line_number":426,"context_line":"                if not os.path.isfile(tls_cacertfile):"},{"line_number":427,"context_line":"                    raise IOError(_(\"tls_cacertfile %s not found\") %"},{"line_number":428,"context_line":"                                  tls_cacertfile)"},{"line_number":429,"context_line":"                ldap.set_option(ldap.OPT_X_TLS_CACERTFILE, tls_cacertfile)"},{"line_number":430,"context_line":"            elif tls_cacertdir:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2Fcg%3D","line":427,"updated":"2013-04-08 22:49:21.000000000","message":"this message isn\u0027t completely accurate since the error could be that it\u0027s not a directory, so suggest \"tls_cacertfile %s not found or is not a file.\"","commit_id":"cdbd6192e670f63c3e06b4cd73b5719100c1ec4d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"066cb463722032a2cfb284b94c232aea56a1328c","unresolved":false,"context_lines":[{"line_number":433,"context_line":"                #so we add some extra simple sanity check verification"},{"line_number":434,"context_line":"                #Also, setting these values globally (i.e. on the ldap object)"},{"line_number":435,"context_line":"                #works but these values are ignored when setting them on the"},{"line_number":436,"context_line":"                #connection"},{"line_number":437,"context_line":"                if not os.path.isdir(tls_cacertdir):"},{"line_number":438,"context_line":"                    raise IOError(_(\"tls_cacertdir %s not found\") %"},{"line_number":439,"context_line":"                                  tls_cacertdir)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2FdI%3D","line":436,"updated":"2013-04-08 22:49:21.000000000","message":"suggest move these 2 copies of notes (copied at line 420) to one location. DRY principle.","commit_id":"cdbd6192e670f63c3e06b4cd73b5719100c1ec4d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"066cb463722032a2cfb284b94c232aea56a1328c","unresolved":false,"context_lines":[{"line_number":435,"context_line":"                #works but these values are ignored when setting them on the"},{"line_number":436,"context_line":"                #connection"},{"line_number":437,"context_line":"                if not os.path.isdir(tls_cacertdir):"},{"line_number":438,"context_line":"                    raise IOError(_(\"tls_cacertdir %s not found\") %"},{"line_number":439,"context_line":"                                  tls_cacertdir)"},{"line_number":440,"context_line":"                ldap.set_option(ldap.OPT_X_TLS_CACERTDIR, tls_cacertdir)"},{"line_number":441,"context_line":"            if tls_req_cert in LDAP_TLS_CERTS.values():"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2Fcc%3D","line":438,"updated":"2013-04-08 22:49:21.000000000","message":"suggest \"tls_cacertdir %s not found or is not a directory.\"","commit_id":"cdbd6192e670f63c3e06b4cd73b5719100c1ec4d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"066cb463722032a2cfb284b94c232aea56a1328c","unresolved":false,"context_lines":[{"line_number":441,"context_line":"            if tls_req_cert in LDAP_TLS_CERTS.values():"},{"line_number":442,"context_line":"                ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, tls_req_cert)"},{"line_number":443,"context_line":"            else:"},{"line_number":444,"context_line":"                LOG.debug(_(\"LDAP TLS: invalid TLS_REQUIRE_CERT Option\u003d%s\"),"},{"line_number":445,"context_line":"                          tls_req_cert)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        self.conn \u003d ldap.initialize(url)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2FdA%3D","line":444,"updated":"2013-04-08 22:49:21.000000000","message":"change , to % ?\n\nAlso, should this be raising an exception, or be a warning and mention that the value is being ignored?","commit_id":"cdbd6192e670f63c3e06b4cd73b5719100c1ec4d"}],"tests/_ldap_tls_livetest.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6965d4dfae3f84c51ff0adbd34b39b4fc07e93ae","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack LLC"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOX%2F%2F8mw%3D","line":3,"updated":"2013-04-04 21:07:23.000000000","message":"13","commit_id":"2995ea91cefdaf150b06bca23d68fe9b7ddfc11f"},{"author":{"_account_id":6456,"name":"Sahdev Zala","email":"spzala@us.ibm.com","username":"spzala"},"change_message_id":"39a42a63dc41b6a9dbeb5bd5cc3cfcf6687c19cf","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        self.assertRaises(exception.UserNotFound, self.identity_api.get_user,"},{"line_number":98,"context_line":"                          \u0027fake1\u0027)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def test_tls_bad_certfile(self):"},{"line_number":101,"context_line":"        CONF.ldap.use_tls \u003d True"},{"line_number":102,"context_line":"        CONF.ldap.tls_req_cert \u003d \u0027demand\u0027"},{"line_number":103,"context_line":"        CONF.ldap.tls_cacertfile \u003d \u0027/etc/keystone/ssl/certs/mythicalcert.pem\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOX%2F%2F8eM%3D","line":100,"updated":"2013-04-04 21:57:57.000000000","message":"The above two methods are called \"*_demand_option\". This method and one below doesn\u0027t have the same. Is it a naming inconsistency? or the option \"CONF.ldap.tls_req_cert \u003d \u0027demand\u0027\" is not needed? Thanks!","commit_id":"2995ea91cefdaf150b06bca23d68fe9b7ddfc11f"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"d094766c3e87cd2d9f07c07aa888a0d8ec825f07","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class LiveTLSLDAPIdentity(_ldap_livetest.LiveLDAPIdentity):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def setUp(self):"},{"line_number":47,"context_line":"        #import pdb; pdb.set_trace()"},{"line_number":48,"context_line":"        super(_ldap_livetest.LiveLDAPIdentity, self).setUp()"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F6p4%3D","line":46,"updated":"2013-04-06 16:46:35.000000000","message":"This should be removed :)","commit_id":"738c77f4ab99ca9b567e9016a8ec13256002ae54"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8a031e18634660abbd991d235c5ace49bb6be552","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class LiveTLSLDAPIdentity(_ldap_livetest.LiveLDAPIdentity):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def setUp(self):"},{"line_number":47,"context_line":"        #import pdb; pdb.set_trace()"},{"line_number":48,"context_line":"        super(_ldap_livetest.LiveLDAPIdentity, self).setUp()"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2F%2F7g%3D","line":46,"in_reply_to":"AAAAOX%2F%2F6p4%3D","updated":"2013-04-08 18:49:16.000000000","message":"please... you can remove the entire setUp","commit_id":"738c77f4ab99ca9b567e9016a8ec13256002ae54"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8a031e18634660abbd991d235c5ace49bb6be552","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                     test.testsdir(\u0027backend_tls_liveldap.conf\u0027)])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def tearDown(self):"},{"line_number":56,"context_line":"        test.TestCase.tearDown(self)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def test_tls_certfile_demand_option(self):"},{"line_number":59,"context_line":"        CONF.ldap.use_tls \u003d True"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2F%2F7M%3D","line":56,"updated":"2013-04-08 18:49:16.000000000","message":"bad bad python! remove the teardown completely","commit_id":"738c77f4ab99ca9b567e9016a8ec13256002ae54"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"066cb463722032a2cfb284b94c232aea56a1328c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"class LiveTLSLDAPIdentity(_ldap_livetest.LiveLDAPIdentity):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def setUp(self):"},{"line_number":47,"context_line":"        #import pdb; pdb.set_trace()"},{"line_number":48,"context_line":"        super(_ldap_livetest.LiveLDAPIdentity, self).setUp()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def _set_config(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2Fc8%3D","line":47,"updated":"2013-04-08 22:49:21.000000000","message":"remove this commented-out code.","commit_id":"cdbd6192e670f63c3e06b4cd73b5719100c1ec4d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"066cb463722032a2cfb284b94c232aea56a1328c","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                \u0027name\u0027: \u0027fake1\u0027,"},{"line_number":122,"context_line":"                \u0027password\u0027: \u0027fakepass1\u0027,"},{"line_number":123,"context_line":"                \u0027tenants\u0027: [\u0027bar\u0027]}"},{"line_number":124,"context_line":"        self.assertRaises(IOError, self.identity_api.create_user, \u0027fake\u0027, user)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2FcQ%3D","line":124,"updated":"2013-04-08 22:49:21.000000000","message":"suggestions for more testcases:\n\nall values of tls_cacertfile, and an invalid tls_cacertfile\n\ntest that if ldaps and use_tls then error\n\ntest if tls_cacertfile is set then tls_cacertdir is ignored","commit_id":"cdbd6192e670f63c3e06b4cd73b5719100c1ec4d"}],"tests/backend_tls_liveldap.conf":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6965d4dfae3f84c51ff0adbd34b39b4fc07e93ae","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[ldap]"},{"line_number":2,"context_line":"url \u003d ldap://localhost"},{"line_number":3,"context_line":"user \u003d dc\u003dManager,dc\u003dopenstack,dc\u003dorg"},{"line_number":4,"context_line":"password \u003d arvind"},{"line_number":5,"context_line":"suffix \u003d dc\u003dopenstack,dc\u003dorg"},{"line_number":6,"context_line":"group_tree_dn \u003d ou\u003dUserGroups,dc\u003dopenstack,dc\u003dorg"},{"line_number":7,"context_line":"role_tree_dn \u003d ou\u003dRoles,dc\u003dopenstack,dc\u003dorg"}],"source_content_type":"text/plain","patch_set":5,"id":"AAAAOX%2F%2F8nI%3D","line":4,"updated":"2013-04-04 21:07:23.000000000","message":"Use the same password that devstack uses","commit_id":"2995ea91cefdaf150b06bca23d68fe9b7ddfc11f"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"6965d4dfae3f84c51ff0adbd34b39b4fc07e93ae","unresolved":false,"context_lines":[{"line_number":2,"context_line":"url \u003d ldap://localhost"},{"line_number":3,"context_line":"user \u003d dc\u003dManager,dc\u003dopenstack,dc\u003dorg"},{"line_number":4,"context_line":"password \u003d arvind"},{"line_number":5,"context_line":"suffix \u003d dc\u003dopenstack,dc\u003dorg"},{"line_number":6,"context_line":"group_tree_dn \u003d ou\u003dUserGroups,dc\u003dopenstack,dc\u003dorg"},{"line_number":7,"context_line":"role_tree_dn \u003d ou\u003dRoles,dc\u003dopenstack,dc\u003dorg"},{"line_number":8,"context_line":"tenant_tree_dn \u003d ou\u003dProjects,dc\u003dopenstack,dc\u003dorg"}],"source_content_type":"text/plain","patch_set":5,"id":"AAAAOX%2F%2F8nA%3D","line":5,"updated":"2013-04-04 21:07:23.000000000","message":"You should be able to inherit these values from the live ldap config file and just add the tls specific values at the end.","commit_id":"2995ea91cefdaf150b06bca23d68fe9b7ddfc11f"}]}
