)]}'
{"doc/source/configuration.rst":[{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"3da9f18e9a17fd3cea4633c2fb3726e71a1dacd8","unresolved":false,"context_lines":[{"line_number":1256,"context_line":"authentication request). In order to prepare for this, keystone supports the"},{"line_number":1257,"context_line":"optional ability to ensure both projects and domains are named without"},{"line_number":1258,"context_line":"including any of the reserverd characters specified in section 2.2 of"},{"line_number":1259,"context_line":"`rfc3986 \u003chttp://tools.ietf.org/html/rfc3986\u003e_`."},{"line_number":1260,"context_line":""},{"line_number":1261,"context_line":"The safety of the names of projects and doamins can be controlled via two"},{"line_number":1262,"context_line":"configuration options:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_f3b79482","line":1259,"updated":"2015-12-22 09:16:04.000000000","message":"`rfc3986 \u003chttp://tools.ietf.org/html/rfc3986\u003e`_","commit_id":"07646dcfa910b5a10b730c56465125c8cca1832c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ffd7aebc9e3902599d9e37a3863172b75a3d0b5b","unresolved":false,"context_lines":[{"line_number":1256,"context_line":"authentication request). In order to prepare for this, keystone supports the"},{"line_number":1257,"context_line":"optional ability to ensure both projects and domains are named without"},{"line_number":1258,"context_line":"including any of the reserverd characters specified in section 2.2 of"},{"line_number":1259,"context_line":"`rfc3986 \u003chttp://tools.ietf.org/html/rfc3986\u003e_`."},{"line_number":1260,"context_line":""},{"line_number":1261,"context_line":"The safety of the names of projects and doamins can be controlled via two"},{"line_number":1262,"context_line":"configuration options:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a7b0d38_2b9cb968","line":1259,"in_reply_to":"3a7e1126_f3b79482","updated":"2015-12-22 15:08:08.000000000","message":"oops, thanks!","commit_id":"07646dcfa910b5a10b730c56465125c8cca1832c"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"cd9f925666b9f1f48c931ec0904a9817db6718f4","unresolved":false,"context_lines":[{"line_number":1264,"context_line":".. code-block:: ini"},{"line_number":1265,"context_line":""},{"line_number":1266,"context_line":"    [resource]"},{"line_number":1267,"context_line":"    project_name_url_safe \u003d \u0027off\u0027"},{"line_number":1268,"context_line":"    domain_name_url_safe \u003d \u0027off\u0027"},{"line_number":1269,"context_line":""},{"line_number":1270,"context_line":"When set to ``off`` (which is the default), no checking is done on the url"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a7b0d38_d3bd1ab8","line":1267,"range":{"start_line":1267,"start_character":28,"end_line":1267,"end_character":33},"updated":"2015-12-28 09:55:15.000000000","message":"i think configuration doesn\u0027t need quotation mark (\u0027\u0027) to tell us it\u0027s string or not.","commit_id":"8e4b13393132513229e04205d1309476bb64bd91"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b48f2e5711c7c6098ea6f1f75504e8350b0c8b8b","unresolved":false,"context_lines":[{"line_number":1264,"context_line":".. code-block:: ini"},{"line_number":1265,"context_line":""},{"line_number":1266,"context_line":"    [resource]"},{"line_number":1267,"context_line":"    project_name_url_safe \u003d \u0027off\u0027"},{"line_number":1268,"context_line":"    domain_name_url_safe \u003d \u0027off\u0027"},{"line_number":1269,"context_line":""},{"line_number":1270,"context_line":"When set to ``off`` (which is the default), no checking is done on the url"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a7b0d38_8e7997ca","line":1267,"range":{"start_line":1267,"start_character":28,"end_line":1267,"end_character":33},"in_reply_to":"1a7b0d38_d3bd1ab8","updated":"2015-12-29 00:14:07.000000000","message":"Done","commit_id":"8e4b13393132513229e04205d1309476bb64bd91"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"cd9f925666b9f1f48c931ec0904a9817db6718f4","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"    domain_name_url_safe \u003d \u0027off\u0027"},{"line_number":1269,"context_line":""},{"line_number":1270,"context_line":"When set to ``off`` (which is the default), no checking is done on the url"},{"line_number":1271,"context_line":"safeness of names. When set to \u0027new\u0027, an attempt to create a new project or"},{"line_number":1272,"context_line":"domain with an unsafe name (or update the name of a project or domain to be"},{"line_number":1273,"context_line":"unsafe) will cause a status code of 401 (Bad Request) to be returned. Setting"},{"line_number":1274,"context_line":"the configuration option to ``strict`` will cause an authentication attempt"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a7b0d38_f074cc36","line":1271,"range":{"start_line":1271,"start_character":31,"end_line":1271,"end_character":36},"updated":"2015-12-28 09:55:15.000000000","message":"change to ``new`` to align with ``off`` and ``strict``.","commit_id":"8e4b13393132513229e04205d1309476bb64bd91"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b48f2e5711c7c6098ea6f1f75504e8350b0c8b8b","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"    domain_name_url_safe \u003d \u0027off\u0027"},{"line_number":1269,"context_line":""},{"line_number":1270,"context_line":"When set to ``off`` (which is the default), no checking is done on the url"},{"line_number":1271,"context_line":"safeness of names. When set to \u0027new\u0027, an attempt to create a new project or"},{"line_number":1272,"context_line":"domain with an unsafe name (or update the name of a project or domain to be"},{"line_number":1273,"context_line":"unsafe) will cause a status code of 401 (Bad Request) to be returned. Setting"},{"line_number":1274,"context_line":"the configuration option to ``strict`` will cause an authentication attempt"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a7b0d38_ee6ffbf9","line":1271,"range":{"start_line":1271,"start_character":31,"end_line":1271,"end_character":36},"in_reply_to":"1a7b0d38_f074cc36","updated":"2015-12-29 00:14:07.000000000","message":"Done","commit_id":"8e4b13393132513229e04205d1309476bb64bd91"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"cd9f925666b9f1f48c931ec0904a9817db6718f4","unresolved":false,"context_lines":[{"line_number":1270,"context_line":"When set to ``off`` (which is the default), no checking is done on the url"},{"line_number":1271,"context_line":"safeness of names. When set to \u0027new\u0027, an attempt to create a new project or"},{"line_number":1272,"context_line":"domain with an unsafe name (or update the name of a project or domain to be"},{"line_number":1273,"context_line":"unsafe) will cause a status code of 401 (Bad Request) to be returned. Setting"},{"line_number":1274,"context_line":"the configuration option to ``strict`` will cause an authentication attempt"},{"line_number":1275,"context_line":"which specifies a project or domain name that is unsafe will casue a status"},{"line_number":1276,"context_line":"code of 401 (Unauthorized) to be returned."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a7b0d38_30cd7466","line":1273,"range":{"start_line":1273,"start_character":36,"end_line":1273,"end_character":39},"updated":"2015-12-28 09:55:15.000000000","message":"BAD REQUEST should be 400, 401 is UNAUTHORIZED, change 401 to 400.","commit_id":"8e4b13393132513229e04205d1309476bb64bd91"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b48f2e5711c7c6098ea6f1f75504e8350b0c8b8b","unresolved":false,"context_lines":[{"line_number":1270,"context_line":"When set to ``off`` (which is the default), no checking is done on the url"},{"line_number":1271,"context_line":"safeness of names. When set to \u0027new\u0027, an attempt to create a new project or"},{"line_number":1272,"context_line":"domain with an unsafe name (or update the name of a project or domain to be"},{"line_number":1273,"context_line":"unsafe) will cause a status code of 401 (Bad Request) to be returned. Setting"},{"line_number":1274,"context_line":"the configuration option to ``strict`` will cause an authentication attempt"},{"line_number":1275,"context_line":"which specifies a project or domain name that is unsafe will casue a status"},{"line_number":1276,"context_line":"code of 401 (Unauthorized) to be returned."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a7b0d38_6e2a2b92","line":1273,"range":{"start_line":1273,"start_character":36,"end_line":1273,"end_character":39},"in_reply_to":"1a7b0d38_30cd7466","updated":"2015-12-29 00:14:07.000000000","message":"Done","commit_id":"8e4b13393132513229e04205d1309476bb64bd91"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"cd9f925666b9f1f48c931ec0904a9817db6718f4","unresolved":false,"context_lines":[{"line_number":1271,"context_line":"safeness of names. When set to \u0027new\u0027, an attempt to create a new project or"},{"line_number":1272,"context_line":"domain with an unsafe name (or update the name of a project or domain to be"},{"line_number":1273,"context_line":"unsafe) will cause a status code of 401 (Bad Request) to be returned. Setting"},{"line_number":1274,"context_line":"the configuration option to ``strict`` will cause an authentication attempt"},{"line_number":1275,"context_line":"which specifies a project or domain name that is unsafe will casue a status"},{"line_number":1276,"context_line":"code of 401 (Unauthorized) to be returned."},{"line_number":1277,"context_line":""},{"line_number":1278,"context_line":"It is recommended that installations take the steps necessary to where they"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a7b0d38_b0c96428","line":1275,"range":{"start_line":1274,"start_character":39,"end_line":1275,"end_character":75},"updated":"2015-12-28 09:55:15.000000000","message":"mention here that create project or domain with an unsafe name when the option is set to ``strict`` will also cause bad request to be returned.","commit_id":"8e4b13393132513229e04205d1309476bb64bd91"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b48f2e5711c7c6098ea6f1f75504e8350b0c8b8b","unresolved":false,"context_lines":[{"line_number":1271,"context_line":"safeness of names. When set to \u0027new\u0027, an attempt to create a new project or"},{"line_number":1272,"context_line":"domain with an unsafe name (or update the name of a project or domain to be"},{"line_number":1273,"context_line":"unsafe) will cause a status code of 401 (Bad Request) to be returned. Setting"},{"line_number":1274,"context_line":"the configuration option to ``strict`` will cause an authentication attempt"},{"line_number":1275,"context_line":"which specifies a project or domain name that is unsafe will casue a status"},{"line_number":1276,"context_line":"code of 401 (Unauthorized) to be returned."},{"line_number":1277,"context_line":""},{"line_number":1278,"context_line":"It is recommended that installations take the steps necessary to where they"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a7b0d38_ee3dbbdd","line":1275,"range":{"start_line":1274,"start_character":39,"end_line":1275,"end_character":75},"in_reply_to":"1a7b0d38_b0c96428","updated":"2015-12-29 00:14:07.000000000","message":"Done","commit_id":"8e4b13393132513229e04205d1309476bb64bd91"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"11dd88bec100970587883223faff7a4aa4f136d7","unresolved":false,"context_lines":[{"line_number":1258,"context_line":"including any of the reserverd characters specified in section 2.2 of"},{"line_number":1259,"context_line":"`rfc3986 \u003chttp://tools.ietf.org/html/rfc3986\u003e`_."},{"line_number":1260,"context_line":""},{"line_number":1261,"context_line":"The safety of the names of projects and doamins can be controlled via two"},{"line_number":1262,"context_line":"configuration options:"},{"line_number":1263,"context_line":""},{"line_number":1264,"context_line":".. code-block:: ini"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ba63e191_973139ef","line":1261,"updated":"2016-01-19 03:41:45.000000000","message":"typo: doamins -\u003e domains\nnit: safety -\u003e url safety","commit_id":"f4695a116cb13b569c255bbc32133e3f088544c9"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"4fb0b3cb28487fd222a468acd160b14cade674e7","unresolved":false,"context_lines":[{"line_number":1258,"context_line":"including any of the reserverd characters specified in section 2.2 of"},{"line_number":1259,"context_line":"`rfc3986 \u003chttp://tools.ietf.org/html/rfc3986\u003e`_."},{"line_number":1260,"context_line":""},{"line_number":1261,"context_line":"The safety of the names of projects and doamins can be controlled via two"},{"line_number":1262,"context_line":"configuration options:"},{"line_number":1263,"context_line":""},{"line_number":1264,"context_line":".. code-block:: ini"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ba63e191_77584557","line":1261,"in_reply_to":"ba63e191_17d6a9c5","updated":"2016-01-19 03:55:00.000000000","message":"duh","commit_id":"f4695a116cb13b569c255bbc32133e3f088544c9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e9492e3b82369acbe092680ff05a56fe35f28305","unresolved":false,"context_lines":[{"line_number":1258,"context_line":"including any of the reserverd characters specified in section 2.2 of"},{"line_number":1259,"context_line":"`rfc3986 \u003chttp://tools.ietf.org/html/rfc3986\u003e`_."},{"line_number":1260,"context_line":""},{"line_number":1261,"context_line":"The safety of the names of projects and doamins can be controlled via two"},{"line_number":1262,"context_line":"configuration options:"},{"line_number":1263,"context_line":""},{"line_number":1264,"context_line":".. code-block:: ini"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ba63e191_17d6a9c5","line":1261,"in_reply_to":"ba63e191_973139ef","updated":"2016-01-19 03:50:10.000000000","message":"Done","commit_id":"f4695a116cb13b569c255bbc32133e3f088544c9"}],"keystone/common/config.py":[{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"3da9f18e9a17fd3cea4633c2fb3726e71a1dacd8","unresolved":false,"context_lines":[{"line_number":400,"context_line":"                        \u0027containing url reserved characters. If set to new, \u0027"},{"line_number":401,"context_line":"                        \u0027attempts to create or update a project with a url \u0027"},{"line_number":402,"context_line":"                        \u0027unsafe name will return an error. In addition, if \u0027"},{"line_number":403,"context_line":"                        \u0027set to strict, attempting to scope a token using \u0027"},{"line_number":404,"context_line":"                        \u0027an unsafe project name will return an error.\u0027),"},{"line_number":405,"context_line":"        cfg.StrOpt(\u0027domain_name_url_safe\u0027,"},{"line_number":406,"context_line":"                   choices\u003d[\u0027off\u0027, \u0027new\u0027, \u0027strict\u0027], default\u003d\u0027off\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a7e1126_5ec22f54","line":403,"updated":"2015-12-22 09:16:04.000000000","message":"nit: attempts","commit_id":"07646dcfa910b5a10b730c56465125c8cca1832c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ffd7aebc9e3902599d9e37a3863172b75a3d0b5b","unresolved":false,"context_lines":[{"line_number":400,"context_line":"                        \u0027containing url reserved characters. If set to new, \u0027"},{"line_number":401,"context_line":"                        \u0027attempts to create or update a project with a url \u0027"},{"line_number":402,"context_line":"                        \u0027unsafe name will return an error. In addition, if \u0027"},{"line_number":403,"context_line":"                        \u0027set to strict, attempting to scope a token using \u0027"},{"line_number":404,"context_line":"                        \u0027an unsafe project name will return an error.\u0027),"},{"line_number":405,"context_line":"        cfg.StrOpt(\u0027domain_name_url_safe\u0027,"},{"line_number":406,"context_line":"                   choices\u003d[\u0027off\u0027, \u0027new\u0027, \u0027strict\u0027], default\u003d\u0027off\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_ab398943","line":403,"in_reply_to":"3a7e1126_5ec22f54","updated":"2015-12-22 15:08:08.000000000","message":"Done","commit_id":"07646dcfa910b5a10b730c56465125c8cca1832c"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"3da9f18e9a17fd3cea4633c2fb3726e71a1dacd8","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                        \u0027containing url reserved characters. If set to new, \u0027"},{"line_number":409,"context_line":"                        \u0027attempts to create or update a domain with a url \u0027"},{"line_number":410,"context_line":"                        \u0027unsafe name will return an error. In addition, if \u0027"},{"line_number":411,"context_line":"                        \u0027set to strict, attempting to scope a token using a \u0027"},{"line_number":412,"context_line":"                        \u0027domain name which is unsafe will return an error.\u0027),"},{"line_number":413,"context_line":"    ],"},{"line_number":414,"context_line":"    \u0027domain_config\u0027: ["}],"source_content_type":"text/x-python","patch_set":3,"id":"3a7e1126_7e984b78","line":411,"updated":"2015-12-22 09:16:04.000000000","message":"same","commit_id":"07646dcfa910b5a10b730c56465125c8cca1832c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ffd7aebc9e3902599d9e37a3863172b75a3d0b5b","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                        \u0027containing url reserved characters. If set to new, \u0027"},{"line_number":409,"context_line":"                        \u0027attempts to create or update a domain with a url \u0027"},{"line_number":410,"context_line":"                        \u0027unsafe name will return an error. In addition, if \u0027"},{"line_number":411,"context_line":"                        \u0027set to strict, attempting to scope a token using a \u0027"},{"line_number":412,"context_line":"                        \u0027domain name which is unsafe will return an error.\u0027),"},{"line_number":413,"context_line":"    ],"},{"line_number":414,"context_line":"    \u0027domain_config\u0027: ["}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_4b3fc525","line":411,"in_reply_to":"3a7e1126_7e984b78","updated":"2015-12-22 15:08:08.000000000","message":"Done","commit_id":"07646dcfa910b5a10b730c56465125c8cca1832c"}],"keystone/tests/unit/test_v3_auth.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"cd9f925666b9f1f48c931ec0904a9817db6718f4","unresolved":false,"context_lines":[{"line_number":2789,"context_line":"    def test_authenticate_fails_to_project_if_domain_unsafe(self):"},{"line_number":2790,"context_line":"        \"\"\"Verify authenticate to a project using unsafe domain name fails.\"\"\""},{"line_number":2791,"context_line":"        # Start with url name restrictions off, so we can create the unsafe"},{"line_number":2792,"context_line":"        # named domain"},{"line_number":2793,"context_line":"        self.config_fixture.config(group\u003d\u0027resource\u0027,"},{"line_number":2794,"context_line":"                                   domain_name_url_safe\u003d\u0027off\u0027)"},{"line_number":2795,"context_line":"        unsafe_name \u003d \u0027i am not / safe\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a7b0d38_7324665f","line":2792,"updated":"2015-12-28 09:55:15.000000000","message":"add one testcase here that show authentication will be successful if set the option to `new` to differentiate with `strict` option.","commit_id":"8e4b13393132513229e04205d1309476bb64bd91"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b48f2e5711c7c6098ea6f1f75504e8350b0c8b8b","unresolved":false,"context_lines":[{"line_number":2789,"context_line":"    def test_authenticate_fails_to_project_if_domain_unsafe(self):"},{"line_number":2790,"context_line":"        \"\"\"Verify authenticate to a project using unsafe domain name fails.\"\"\""},{"line_number":2791,"context_line":"        # Start with url name restrictions off, so we can create the unsafe"},{"line_number":2792,"context_line":"        # named domain"},{"line_number":2793,"context_line":"        self.config_fixture.config(group\u003d\u0027resource\u0027,"},{"line_number":2794,"context_line":"                                   domain_name_url_safe\u003d\u0027off\u0027)"},{"line_number":2795,"context_line":"        unsafe_name \u003d \u0027i am not / safe\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a7b0d38_b9129b55","line":2792,"in_reply_to":"1a7b0d38_7324665f","updated":"2015-12-29 00:14:07.000000000","message":"Done","commit_id":"8e4b13393132513229e04205d1309476bb64bd91"}],"keystone/token/controllers.py":[{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"3da9f18e9a17fd3cea4633c2fb3726e71a1dacd8","unresolved":false,"context_lines":[{"line_number":370,"context_line":"            if (CONF.resource.project_name_url_safe \u003d\u003d \u0027strict\u0027 and"},{"line_number":371,"context_line":"                    utils.is_not_url_safe(tenant_name)):"},{"line_number":372,"context_line":"                msg \u003d _(\u0027Tenant name cannot contain reserved characters.\u0027)"},{"line_number":373,"context_line":"                raise exception.ValidationError(message\u003dmsg)"},{"line_number":374,"context_line":"            try:"},{"line_number":375,"context_line":"                tenant_ref \u003d self.resource_api.get_project_by_name("},{"line_number":376,"context_line":"                    tenant_name, CONF.identity.default_domain_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a7e1126_b91ecd5c","line":373,"updated":"2015-12-22 09:16:04.000000000","message":"exception.Unauthorized(message\u003dmsg)","commit_id":"07646dcfa910b5a10b730c56465125c8cca1832c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ffd7aebc9e3902599d9e37a3863172b75a3d0b5b","unresolved":false,"context_lines":[{"line_number":370,"context_line":"            if (CONF.resource.project_name_url_safe \u003d\u003d \u0027strict\u0027 and"},{"line_number":371,"context_line":"                    utils.is_not_url_safe(tenant_name)):"},{"line_number":372,"context_line":"                msg \u003d _(\u0027Tenant name cannot contain reserved characters.\u0027)"},{"line_number":373,"context_line":"                raise exception.ValidationError(message\u003dmsg)"},{"line_number":374,"context_line":"            try:"},{"line_number":375,"context_line":"                tenant_ref \u003d self.resource_api.get_project_by_name("},{"line_number":376,"context_line":"                    tenant_name, CONF.identity.default_domain_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_cb5f3574","line":373,"in_reply_to":"3a7e1126_b91ecd5c","updated":"2015-12-22 15:08:08.000000000","message":"Nice catch - I changed the v3 ones to Unauthorised, and missed this one!","commit_id":"07646dcfa910b5a10b730c56465125c8cca1832c"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"11dd88bec100970587883223faff7a4aa4f136d7","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        if tenant_name:"},{"line_number":370,"context_line":"            if (CONF.resource.project_name_url_safe \u003d\u003d \u0027strict\u0027 and"},{"line_number":371,"context_line":"                    utils.is_not_url_safe(tenant_name)):"},{"line_number":372,"context_line":"                msg \u003d _(\u0027Tenant name cannot contain reserved characters.\u0027)"},{"line_number":373,"context_line":"                raise exception.Unauthorized(message\u003dmsg)"},{"line_number":374,"context_line":"            try:"},{"line_number":375,"context_line":"                tenant_ref \u003d self.resource_api.get_project_by_name("}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_7755a5c4","line":372,"range":{"start_line":372,"start_character":25,"end_line":372,"end_character":31},"updated":"2016-01-19 03:41:45.000000000","message":"why not \"Tenant\" instead of \"Project\"? Is this only used in v2 auth?","commit_id":"f4695a116cb13b569c255bbc32133e3f088544c9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ec667b3c30ca3e84f69738b35273554720f242ac","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        if tenant_name:"},{"line_number":370,"context_line":"            if (CONF.resource.project_name_url_safe \u003d\u003d \u0027strict\u0027 and"},{"line_number":371,"context_line":"                    utils.is_not_url_safe(tenant_name)):"},{"line_number":372,"context_line":"                msg \u003d _(\u0027Tenant name cannot contain reserved characters.\u0027)"},{"line_number":373,"context_line":"                raise exception.Unauthorized(message\u003dmsg)"},{"line_number":374,"context_line":"            try:"},{"line_number":375,"context_line":"                tenant_ref \u003d self.resource_api.get_project_by_name("}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_571741a3","line":372,"range":{"start_line":372,"start_character":25,"end_line":372,"end_character":31},"in_reply_to":"ba63e191_7755a5c4","updated":"2016-01-19 03:49:10.000000000","message":"..because this is in the v2 auth controller....","commit_id":"f4695a116cb13b569c255bbc32133e3f088544c9"}],"releasenotes/notes/bp-url-safe-naming-ad90d6a659f5bf3c.yaml":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"e6143c8f5a20f2410470e07e6d7c2e26a0954e43","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - The names of projects and domains can optionally be ensured to be url safe,"},{"line_number":4,"context_line":"    to support the future ability to specify projects using hierarchical"},{"line_number":5,"context_line":"    naming."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1a7b0d38_db96a84b","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":79},"updated":"2015-12-26 08:32:22.000000000","message":"make the first line reference the bp:\n\n  - \u003e \n    [`blueprint blueprint url-safe-naming \u003chttps://blueprints.launchpad.net/keystone/+spec/blueprint url-safe-naming\u003e`_]","commit_id":"2d3ce59dd8cc9006c4d0631cd0231e5c028f81d4"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"f67893c1120548cdae7cf4775102854e0711a810","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - The names of projects and domains can optionally be ensured to be url safe,"},{"line_number":4,"context_line":"    to support the future ability to specify projects using hierarchical"},{"line_number":5,"context_line":"    naming."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1a7b0d38_35425069","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":79},"in_reply_to":"1a7b0d38_db96a84b","updated":"2015-12-27 15:10:27.000000000","message":"Done","commit_id":"2d3ce59dd8cc9006c4d0631cd0231e5c028f81d4"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"045e071da8d3da32c5539b4e2fd0a870f9606a70","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - \u003e"},{"line_number":4,"context_line":"    [`blueprint blueprint url-safe-naming \u003chttps://blueprints.launchpad.net/keystone/+spec/blueprint url-safe-naming\u003e`_]"},{"line_number":5,"context_line":"    The names of projects and domains can optionally be ensured to be url safe,"},{"line_number":6,"context_line":"    to support the future ability to specify projects using hierarchical"},{"line_number":7,"context_line":"    naming."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa69d971_f73e63b7","line":4,"range":{"start_line":4,"start_character":16,"end_line":4,"end_character":25},"updated":"2015-12-31 02:13:20.000000000","message":"remove the extra \"blueprint\"","commit_id":"d741e50c483c68dfc5e7e4baaa58f3bb22f877f2"}]}
