)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"88c44e8125714720631923defb07e448bce006ae","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. add API sso and websso"},{"line_number":10,"context_line":"2. add sso conf"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I352200bb2ebf426adaea71826253730c51eeee03"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"373caa61_2711518b","line":11,"updated":"2022-08-10 14:00:44.000000000","message":"please add a new bp(maybe titled as \u0027skyline-sso-oid\u0027) on https://blueprints.launchpad.net/skyline-apiserver\nthen add the following msg for the commit msg\n\nImplements: blueprint skyline-sso-oid","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"780cf64c02ef504f6c2642e0a0dd81ba45303348","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. add API sso and websso"},{"line_number":10,"context_line":"2. add sso conf"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I352200bb2ebf426adaea71826253730c51eeee03"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"63724d65_057d7a90","line":11,"in_reply_to":"373caa61_2711518b","updated":"2022-08-11 06:26:07.000000000","message":"Done","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"88c44e8125714720631923defb07e448bce006ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"63dfd0dc_901682e6","updated":"2022-08-10 14:00:44.000000000","message":"It is a big feature. We need a release note.","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"5d60dbaa8b0218c64d69a31643a25854db685adf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f817da8f_7880d455","updated":"2022-08-11 11:21:04.000000000","message":"LGTM","commit_id":"cbabcbce89b464d1cc033d2cff62e462cf26c8dc"}],"skyline_apiserver/api/v1/login.py":[{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"88c44e8125714720631923defb07e448bce006ae","unresolved":true,"context_lines":[{"line_number":134,"context_line":"    description\u003d\"SSO configuration.\","},{"line_number":135,"context_line":"    responses\u003d{"},{"line_number":136,"context_line":"        200: {\"model\": schemas.SSO},"},{"line_number":137,"context_line":"        401: {\"model\": schemas.UnauthorizedMessage},"},{"line_number":138,"context_line":"    },"},{"line_number":139,"context_line":"    response_model\u003dschemas.SSO,"},{"line_number":140,"context_line":"    status_code\u003dstatus.HTTP_200_OK,"}],"source_content_type":"text/x-python","patch_set":4,"id":"c92ad6c5_aa13fcc8","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":52},"updated":"2022-08-10 14:00:44.000000000","message":"when to raise 401? I think we do not need authorize.","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"780cf64c02ef504f6c2642e0a0dd81ba45303348","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    description\u003d\"SSO configuration.\","},{"line_number":135,"context_line":"    responses\u003d{"},{"line_number":136,"context_line":"        200: {\"model\": schemas.SSO},"},{"line_number":137,"context_line":"        401: {\"model\": schemas.UnauthorizedMessage},"},{"line_number":138,"context_line":"    },"},{"line_number":139,"context_line":"    response_model\u003dschemas.SSO,"},{"line_number":140,"context_line":"    status_code\u003dstatus.HTTP_200_OK,"}],"source_content_type":"text/x-python","patch_set":4,"id":"79aeb8d1_833a190d","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":52},"in_reply_to":"c92ad6c5_aa13fcc8","updated":"2022-08-11 06:26:07.000000000","message":"Done","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"88c44e8125714720631923defb07e448bce006ae","unresolved":true,"context_lines":[{"line_number":142,"context_line":")"},{"line_number":143,"context_line":"async def get_sso("},{"line_number":144,"context_line":"    request: Request,"},{"line_number":145,"context_line":"):"},{"line_number":146,"context_line":"    sso \u003d {"},{"line_number":147,"context_line":"        \"enable_sso\": False,"},{"line_number":148,"context_line":"        \"protocols\": [],"}],"source_content_type":"text/x-python","patch_set":4,"id":"150570d5_f3043aaf","line":145,"updated":"2022-08-10 14:00:44.000000000","message":"-\u003e schemas.SSO","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"780cf64c02ef504f6c2642e0a0dd81ba45303348","unresolved":false,"context_lines":[{"line_number":142,"context_line":")"},{"line_number":143,"context_line":"async def get_sso("},{"line_number":144,"context_line":"    request: Request,"},{"line_number":145,"context_line":"):"},{"line_number":146,"context_line":"    sso \u003d {"},{"line_number":147,"context_line":"        \"enable_sso\": False,"},{"line_number":148,"context_line":"        \"protocols\": [],"}],"source_content_type":"text/x-python","patch_set":4,"id":"63f4e751_9d9e4c93","line":145,"in_reply_to":"150570d5_f3043aaf","updated":"2022-08-11 06:26:07.000000000","message":"Done","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"88c44e8125714720631923defb07e448bce006ae","unresolved":true,"context_lines":[{"line_number":150,"context_line":"    if CONF.openstack.sso_enabled:"},{"line_number":151,"context_line":"        protocols \u003d []"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        ks_url \u003d CONF.openstack.keystone_url"},{"line_number":154,"context_line":"        base_url \u003d \"https://%s:%s\" % (request.url.hostname, request.url.port)"},{"line_number":155,"context_line":"        base_path \u003d str(PurePath(\"/\").joinpath(CONF.openstack.nginx_prefix, \"skyline\"))"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"e6006966_49ef294d","line":153,"range":{"start_line":153,"start_character":8,"end_line":153,"end_character":44},"updated":"2022-08-10 14:00:44.000000000","message":"ks_url \u003d CONF.openstack.keystone_url.rstrip(\"/\")","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"780cf64c02ef504f6c2642e0a0dd81ba45303348","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    if CONF.openstack.sso_enabled:"},{"line_number":151,"context_line":"        protocols \u003d []"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        ks_url \u003d CONF.openstack.keystone_url"},{"line_number":154,"context_line":"        base_url \u003d \"https://%s:%s\" % (request.url.hostname, request.url.port)"},{"line_number":155,"context_line":"        base_path \u003d str(PurePath(\"/\").joinpath(CONF.openstack.nginx_prefix, \"skyline\"))"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"579317eb_1ece7459","line":153,"range":{"start_line":153,"start_character":8,"end_line":153,"end_character":44},"in_reply_to":"e6006966_49ef294d","updated":"2022-08-11 06:26:07.000000000","message":"Done","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"88c44e8125714720631923defb07e448bce006ae","unresolved":true,"context_lines":[{"line_number":151,"context_line":"        protocols \u003d []"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        ks_url \u003d CONF.openstack.keystone_url"},{"line_number":154,"context_line":"        base_url \u003d \"https://%s:%s\" % (request.url.hostname, request.url.port)"},{"line_number":155,"context_line":"        base_path \u003d str(PurePath(\"/\").joinpath(CONF.openstack.nginx_prefix, \"skyline\"))"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        for protocol in CONF.openstack.sso_protocols:"}],"source_content_type":"text/x-python","patch_set":4,"id":"b76a9f67_53c4215b","line":154,"range":{"start_line":154,"start_character":20,"end_line":154,"end_character":25},"updated":"2022-08-10 14:00:44.000000000","message":"base_url \u003d str(request.base_url).rstrip(\"/\")","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"780cf64c02ef504f6c2642e0a0dd81ba45303348","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        protocols \u003d []"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        ks_url \u003d CONF.openstack.keystone_url"},{"line_number":154,"context_line":"        base_url \u003d \"https://%s:%s\" % (request.url.hostname, request.url.port)"},{"line_number":155,"context_line":"        base_path \u003d str(PurePath(\"/\").joinpath(CONF.openstack.nginx_prefix, \"skyline\"))"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        for protocol in CONF.openstack.sso_protocols:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7373451d_7bd37b1a","line":154,"range":{"start_line":154,"start_character":20,"end_line":154,"end_character":25},"in_reply_to":"b76a9f67_53c4215b","updated":"2022-08-11 06:26:07.000000000","message":"Done","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"88c44e8125714720631923defb07e448bce006ae","unresolved":true,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        for protocol in CONF.openstack.sso_protocols:"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            url \u003d \"%sauth/OS-FEDERATION/websso/%s?origin\u003d%s%s/api/v1/websso/\" % ("},{"line_number":160,"context_line":"                ks_url,"},{"line_number":161,"context_line":"                protocol,"},{"line_number":162,"context_line":"                base_url,"}],"source_content_type":"text/x-python","patch_set":4,"id":"b499797e_aca14b0e","line":159,"range":{"start_line":159,"start_character":12,"end_line":159,"end_character":81},"updated":"2022-08-10 14:00:44.000000000","message":"/api/v1 alse used in main.py\n\nI think we can set \"/api/v1\" it as constant \"API_PREFIX \u003d \"/api/v1\"\"\n\nurl \u003d f\"{ks_url}/auth/OS-FEDERATION/websso/{protocol}?origin\u003d{base_url}{base_path}{API_PREFIX}/websso\"","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"9ec17104bbb171ab4b6f5b1d380e80c373d1936c","unresolved":true,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        for protocol in CONF.openstack.sso_protocols:"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            url \u003d \"%sauth/OS-FEDERATION/websso/%s?origin\u003d%s%s/api/v1/websso/\" % ("},{"line_number":160,"context_line":"                ks_url,"},{"line_number":161,"context_line":"                protocol,"},{"line_number":162,"context_line":"                base_url,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa3d11ae_ca375579","line":159,"range":{"start_line":159,"start_character":75,"end_line":159,"end_character":76},"updated":"2022-08-10 02:51:55.000000000","message":"delete","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"780cf64c02ef504f6c2642e0a0dd81ba45303348","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        for protocol in CONF.openstack.sso_protocols:"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            url \u003d \"%sauth/OS-FEDERATION/websso/%s?origin\u003d%s%s/api/v1/websso/\" % ("},{"line_number":160,"context_line":"                ks_url,"},{"line_number":161,"context_line":"                protocol,"},{"line_number":162,"context_line":"                base_url,"}],"source_content_type":"text/x-python","patch_set":4,"id":"a4068565_05445382","line":159,"range":{"start_line":159,"start_character":12,"end_line":159,"end_character":81},"in_reply_to":"b499797e_aca14b0e","updated":"2022-08-11 06:26:07.000000000","message":"Done","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"780cf64c02ef504f6c2642e0a0dd81ba45303348","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        for protocol in CONF.openstack.sso_protocols:"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            url \u003d \"%sauth/OS-FEDERATION/websso/%s?origin\u003d%s%s/api/v1/websso/\" % ("},{"line_number":160,"context_line":"                ks_url,"},{"line_number":161,"context_line":"                protocol,"},{"line_number":162,"context_line":"                base_url,"}],"source_content_type":"text/x-python","patch_set":4,"id":"674e8b1b_2bd84841","line":159,"range":{"start_line":159,"start_character":75,"end_line":159,"end_character":76},"in_reply_to":"fa3d11ae_ca375579","updated":"2022-08-11 06:26:07.000000000","message":"Done","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"88c44e8125714720631923defb07e448bce006ae","unresolved":true,"context_lines":[{"line_number":175,"context_line":"            \"protocols\": protocols,"},{"line_number":176,"context_line":"        }"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    return sso"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"@router.post("}],"source_content_type":"text/x-python","patch_set":4,"id":"16591da7_b52f5838","line":178,"range":{"start_line":178,"start_character":11,"end_line":178,"end_character":14},"updated":"2022-08-10 14:00:44.000000000","message":"schemas.SSO(**sso)","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"780cf64c02ef504f6c2642e0a0dd81ba45303348","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            \"protocols\": protocols,"},{"line_number":176,"context_line":"        }"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    return sso"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"@router.post("}],"source_content_type":"text/x-python","patch_set":4,"id":"1dba521b_2df17a00","line":178,"range":{"start_line":178,"start_character":11,"end_line":178,"end_character":14},"in_reply_to":"16591da7_b52f5838","updated":"2022-08-11 06:26:07.000000000","message":"Done","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"88c44e8125714720631923defb07e448bce006ae","unresolved":true,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"@router.post("},{"line_number":182,"context_line":"    \"/websso\","},{"line_number":183,"context_line":"    description\u003d\"Websso\","},{"line_number":184,"context_line":")"},{"line_number":185,"context_line":"async def websso("},{"line_number":186,"context_line":"    token: str \u003d Form(...),"}],"source_content_type":"text/x-python","patch_set":4,"id":"6fcef94a_4636cd3a","line":183,"updated":"2022-08-10 14:00:44.000000000","message":"add response_class ?","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"1d9d5cf6cf7d561cd99a3218c78fdd0d26670606","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"@router.post("},{"line_number":182,"context_line":"    \"/websso\","},{"line_number":183,"context_line":"    description\u003d\"Websso\","},{"line_number":184,"context_line":")"},{"line_number":185,"context_line":"async def websso("},{"line_number":186,"context_line":"    token: str \u003d Form(...),"}],"source_content_type":"text/x-python","patch_set":4,"id":"dcf2fd5e_26205841","line":183,"in_reply_to":"2a35a898_71db66f7","updated":"2022-08-11 06:42:45.000000000","message":"The return value is a redirect response","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"780cf64c02ef504f6c2642e0a0dd81ba45303348","unresolved":true,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"@router.post("},{"line_number":182,"context_line":"    \"/websso\","},{"line_number":183,"context_line":"    description\u003d\"Websso\","},{"line_number":184,"context_line":")"},{"line_number":185,"context_line":"async def websso("},{"line_number":186,"context_line":"    token: str \u003d Form(...),"}],"source_content_type":"text/x-python","patch_set":4,"id":"2a35a898_71db66f7","line":183,"in_reply_to":"6fcef94a_4636cd3a","updated":"2022-08-11 06:26:07.000000000","message":"Done","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"88c44e8125714720631923defb07e448bce006ae","unresolved":true,"context_lines":[{"line_number":192,"context_line":") -\u003e RedirectResponse:"},{"line_number":193,"context_line":"    try:"},{"line_number":194,"context_line":"        auth_url \u003d await utils.get_endpoint("},{"line_number":195,"context_line":"            region\u003d\"RegionOne\","},{"line_number":196,"context_line":"            service\u003d\"keystone\","},{"line_number":197,"context_line":"            session\u003dget_system_session(),"},{"line_number":198,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f63452a_0b6baab5","line":195,"range":{"start_line":195,"start_character":19,"end_line":195,"end_character":30},"updated":"2022-08-10 14:00:44.000000000","message":"hardcode ?","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"780cf64c02ef504f6c2642e0a0dd81ba45303348","unresolved":false,"context_lines":[{"line_number":192,"context_line":") -\u003e RedirectResponse:"},{"line_number":193,"context_line":"    try:"},{"line_number":194,"context_line":"        auth_url \u003d await utils.get_endpoint("},{"line_number":195,"context_line":"            region\u003d\"RegionOne\","},{"line_number":196,"context_line":"            service\u003d\"keystone\","},{"line_number":197,"context_line":"            session\u003dget_system_session(),"},{"line_number":198,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"2ac1cf40_f6cc24cb","line":195,"range":{"start_line":195,"start_character":19,"end_line":195,"end_character":30},"in_reply_to":"1f63452a_0b6baab5","updated":"2022-08-11 06:26:07.000000000","message":"Done","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"88c44e8125714720631923defb07e448bce006ae","unresolved":true,"context_lines":[{"line_number":191,"context_line":"    ),"},{"line_number":192,"context_line":") -\u003e RedirectResponse:"},{"line_number":193,"context_line":"    try:"},{"line_number":194,"context_line":"        auth_url \u003d await utils.get_endpoint("},{"line_number":195,"context_line":"            region\u003d\"RegionOne\","},{"line_number":196,"context_line":"            service\u003d\"keystone\","},{"line_number":197,"context_line":"            session\u003dget_system_session(),"},{"line_number":198,"context_line":"        )"},{"line_number":199,"context_line":"        unscope_auth \u003d Token("},{"line_number":200,"context_line":"            auth_url\u003dauth_url,"},{"line_number":201,"context_line":"            token\u003dtoken,"},{"line_number":202,"context_line":"            reauthenticate\u003dFalse,"},{"line_number":203,"context_line":"        )"},{"line_number":204,"context_line":"        session \u003d Session(auth\u003dunscope_auth, verify\u003dFalse, timeout\u003dconstants.DEFAULT_TIMEOUT)"},{"line_number":205,"context_line":"        unscope_client \u003d KeystoneClient("},{"line_number":206,"context_line":"            session\u003dsession,"},{"line_number":207,"context_line":"            endpoint\u003dauth_url,"},{"line_number":208,"context_line":"            interface\u003dCONF.openstack.interface_type,"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        project_scope \u003d unscope_client.auth.projects()"},{"line_number":211,"context_line":"        # we must get the project_scope with enabled project"},{"line_number":212,"context_line":"        project_scope \u003d [scope for scope in project_scope if scope.enabled]"},{"line_number":213,"context_line":"        if not project_scope:"},{"line_number":214,"context_line":"            raise Exception(\"You are not authorized for any projects or domains.\")"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        project_scope_token \u003d await get_project_scope_token("},{"line_number":217,"context_line":"            keystone_token\u003dtoken,"},{"line_number":218,"context_line":"            region\u003d\"RegionOne\","},{"line_number":219,"context_line":"            project_id\u003dproject_scope[0].id,"},{"line_number":220,"context_line":"        )"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        profile \u003d await generate_profile("},{"line_number":223,"context_line":"            keystone_token\u003dproject_scope_token,"},{"line_number":224,"context_line":"            region\u003d\"RegionOne\","},{"line_number":225,"context_line":"        )"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        profile \u003d await _patch_profile(profile, x_openstack_request_id)"},{"line_number":228,"context_line":"    except Exception as e:"},{"line_number":229,"context_line":"        raise HTTPException("},{"line_number":230,"context_line":"            status_code\u003dstatus.HTTP_401_UNAUTHORIZED,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bbc1e767_c3a36a95","line":227,"range":{"start_line":194,"start_character":0,"end_line":227,"end_character":71},"updated":"2022-08-10 14:00:44.000000000","message":"consider use common function with login api. many same codes with login api","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"1d9d5cf6cf7d561cd99a3218c78fdd0d26670606","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    ),"},{"line_number":192,"context_line":") -\u003e RedirectResponse:"},{"line_number":193,"context_line":"    try:"},{"line_number":194,"context_line":"        auth_url \u003d await utils.get_endpoint("},{"line_number":195,"context_line":"            region\u003d\"RegionOne\","},{"line_number":196,"context_line":"            service\u003d\"keystone\","},{"line_number":197,"context_line":"            session\u003dget_system_session(),"},{"line_number":198,"context_line":"        )"},{"line_number":199,"context_line":"        unscope_auth \u003d Token("},{"line_number":200,"context_line":"            auth_url\u003dauth_url,"},{"line_number":201,"context_line":"            token\u003dtoken,"},{"line_number":202,"context_line":"            reauthenticate\u003dFalse,"},{"line_number":203,"context_line":"        )"},{"line_number":204,"context_line":"        session \u003d Session(auth\u003dunscope_auth, verify\u003dFalse, timeout\u003dconstants.DEFAULT_TIMEOUT)"},{"line_number":205,"context_line":"        unscope_client \u003d KeystoneClient("},{"line_number":206,"context_line":"            session\u003dsession,"},{"line_number":207,"context_line":"            endpoint\u003dauth_url,"},{"line_number":208,"context_line":"            interface\u003dCONF.openstack.interface_type,"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        project_scope \u003d unscope_client.auth.projects()"},{"line_number":211,"context_line":"        # we must get the project_scope with enabled project"},{"line_number":212,"context_line":"        project_scope \u003d [scope for scope in project_scope if scope.enabled]"},{"line_number":213,"context_line":"        if not project_scope:"},{"line_number":214,"context_line":"            raise Exception(\"You are not authorized for any projects or domains.\")"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        project_scope_token \u003d await get_project_scope_token("},{"line_number":217,"context_line":"            keystone_token\u003dtoken,"},{"line_number":218,"context_line":"            region\u003d\"RegionOne\","},{"line_number":219,"context_line":"            project_id\u003dproject_scope[0].id,"},{"line_number":220,"context_line":"        )"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        profile \u003d await generate_profile("},{"line_number":223,"context_line":"            keystone_token\u003dproject_scope_token,"},{"line_number":224,"context_line":"            region\u003d\"RegionOne\","},{"line_number":225,"context_line":"        )"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        profile \u003d await _patch_profile(profile, x_openstack_request_id)"},{"line_number":228,"context_line":"    except Exception as e:"},{"line_number":229,"context_line":"        raise HTTPException("},{"line_number":230,"context_line":"            status_code\u003dstatus.HTTP_401_UNAUTHORIZED,"}],"source_content_type":"text/x-python","patch_set":4,"id":"80e05a47_1cc95eb8","line":227,"range":{"start_line":194,"start_character":0,"end_line":227,"end_character":71},"in_reply_to":"bbc1e767_c3a36a95","updated":"2022-08-11 06:42:45.000000000","message":"ditto","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"}],"skyline_apiserver/schemas/login.py":[{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"88c44e8125714720631923defb07e448bce006ae","unresolved":true,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"class SSOInfo(BaseModel):"},{"line_number":112,"context_line":"    protocol: str"},{"line_number":113,"context_line":"    url: str"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"23f1166d_3331daf4","line":112,"range":{"start_line":112,"start_character":14,"end_line":112,"end_character":17},"updated":"2022-08-10 14:00:44.000000000","message":"as Enum class ?","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"},{"author":{"_account_id":33196,"name":"conna","email":"yang.shaoxue@99cloud.net","username":"yangshaoxue"},"change_message_id":"1d9d5cf6cf7d561cd99a3218c78fdd0d26670606","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"class SSOInfo(BaseModel):"},{"line_number":112,"context_line":"    protocol: str"},{"line_number":113,"context_line":"    url: str"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"a829f5cc_442f6d27","line":112,"range":{"start_line":112,"start_character":14,"end_line":112,"end_character":17},"in_reply_to":"23f1166d_3331daf4","updated":"2022-08-11 06:42:45.000000000","message":"protocol: CONF.openstack.sso_protocols","commit_id":"c815a529596fc5589837a1ebfc7901bb8c61a529"}]}
