)]}'
{"glance/cmd/cache_manage.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a50e7b60600cf5a4e3c460e2d9c01d0679813674","unresolved":false,"context_lines":[{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    parser.add_argument(\u0027--os-tenant-id\u0027,"},{"line_number":379,"context_line":"                        dest\u003d\u0027os_tenant_id\u0027,"},{"line_number":380,"context_line":"                        default\u003denv(\u0027OS_TENANT_ID\u0027),"},{"line_number":381,"context_line":"                        help\u003d\u0027Defaults to env[OS_TENANT_ID].\u0027)"},{"line_number":382,"context_line":"    parser.add_argument(\u0027--os_tenant_id\u0027,"},{"line_number":383,"context_line":"                        dest\u003d\u0027os_tenant_id\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_a7de6c3b","line":380,"range":{"start_line":380,"start_character":40,"end_line":380,"end_character":46},"updated":"2019-02-13 23:24:21.000000000","message":"Isn\u0027t TENANT now PROJECT?","commit_id":"cf3cd9dc522e14db276c54f4934ed6784b2da664"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"4e8083984c543c14c966a2978a9182a986b1a499","unresolved":false,"context_lines":[{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    parser.add_argument(\u0027--os-tenant-id\u0027,"},{"line_number":379,"context_line":"                        dest\u003d\u0027os_tenant_id\u0027,"},{"line_number":380,"context_line":"                        default\u003denv(\u0027OS_TENANT_ID\u0027),"},{"line_number":381,"context_line":"                        help\u003d\u0027Defaults to env[OS_TENANT_ID].\u0027)"},{"line_number":382,"context_line":"    parser.add_argument(\u0027--os_tenant_id\u0027,"},{"line_number":383,"context_line":"                        dest\u003d\u0027os_tenant_id\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_8f47ba77","line":380,"range":{"start_line":380,"start_character":40,"end_line":380,"end_character":46},"in_reply_to":"9fdfeff1_a7de6c3b","updated":"2019-02-14 06:43:07.000000000","message":"Makes sense, even though both tenant and project can be present in env, we can go ahead with the project instead of tenant.\n\nThank you for pointing it out.","commit_id":"cf3cd9dc522e14db276c54f4934ed6784b2da664"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c78e7e5deaf4b49150379f0c80a88884dd4f1089","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                        dest\u003d\u0027os_region_name\u0027,"},{"line_number":376,"context_line":"                        help\u003dargparse.SUPPRESS)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    parser.add_argument(\u0027--os-tenant-id\u0027,"},{"line_number":379,"context_line":"                        dest\u003d\u0027os_tenant_id\u0027,"},{"line_number":380,"context_line":"                        default\u003denv(\u0027OS_PROJECT_ID\u0027),"},{"line_number":381,"context_line":"                        help\u003d\u0027Defaults to env[OS_PROJECT_ID].\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_f143c06a","line":378,"range":{"start_line":378,"start_character":30,"end_line":378,"end_character":36},"updated":"2019-02-14 15:44:25.000000000","message":"I think these should also be changed. tenant was deprecated a few years back, so adding something new using it instead of project doesn\u0027t seem right.","commit_id":"f342a3fbd8970062774623938480f181f443f0ad"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c6278226c78b6b59a12914ac39bb3abd570a3cd5","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                        dest\u003d\u0027os_region_name\u0027,"},{"line_number":376,"context_line":"                        help\u003dargparse.SUPPRESS)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    parser.add_argument(\u0027--os-tenant-id\u0027,"},{"line_number":379,"context_line":"                        dest\u003d\u0027os_tenant_id\u0027,"},{"line_number":380,"context_line":"                        default\u003denv(\u0027OS_PROJECT_ID\u0027),"},{"line_number":381,"context_line":"                        help\u003d\u0027Defaults to env[OS_PROJECT_ID].\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_fdc2a5e8","line":378,"range":{"start_line":378,"start_character":30,"end_line":378,"end_character":36},"in_reply_to":"9fdfeff1_f143c06a","updated":"2019-02-15 07:26:16.000000000","message":"Done","commit_id":"f342a3fbd8970062774623938480f181f443f0ad"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"676d2db3bd8ef4764563035e0f6595e59ceb71ab","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    if len(args.command) \u003d\u003d 2:"},{"line_number":154,"context_line":"        image_id \u003d args.command[1]"},{"line_number":155,"context_line":"    else:"},{"line_number":156,"context_line":"        print(\"Please specify one and only ID of the image you wish to \")"},{"line_number":157,"context_line":"        print(\"queue from the cache as the first argument\")"},{"line_number":158,"context_line":"        return FAILURE"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    if (not args.force and"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_724869b2","line":157,"range":{"start_line":156,"start_character":0,"end_line":157,"end_character":59},"updated":"2019-02-25 21:43:08.000000000","message":"Nit: I think this could be more clearly worded as:\n\nPlease specify the ID of the image you wish to\nxxx from the cache as the first and only argument\n\n(Although is that really a correct message (about it being the first\nargument)? the user will type \u0027progname command uuid\u0027 -- it\u0027s the first argument to the command, but the second argument overall?)\n\nI suggest the same change below for delete and delete-queued.  \nActually, if you really want to get fancy, you could write a function to validate the input for these 3 functions that would reject with a usage message if too many arguments, and would validate the single argument as a uuid.","commit_id":"aa2aa490fee25cb78ff5c0ae4df007343cdbe32a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"df1dcf327c4f7d5f605a25caaa6670d875a63875","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    if len(args.command) \u003d\u003d 2:"},{"line_number":154,"context_line":"        image_id \u003d args.command[1]"},{"line_number":155,"context_line":"    else:"},{"line_number":156,"context_line":"        print(\"Please specify one and only ID of the image you wish to \")"},{"line_number":157,"context_line":"        print(\"queue from the cache as the first argument\")"},{"line_number":158,"context_line":"        return FAILURE"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    if (not args.force and"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_90c13b32","line":157,"range":{"start_line":156,"start_character":0,"end_line":157,"end_character":59},"in_reply_to":"9fdfeff1_724869b2","updated":"2019-02-26 09:43:25.000000000","message":"Done","commit_id":"aa2aa490fee25cb78ff5c0ae4df007343cdbe32a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"676d2db3bd8ef4764563035e0f6595e59ceb71ab","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    supplied to the CLI"},{"line_number":274,"context_line":"    \"\"\""},{"line_number":275,"context_line":"    # Generate auth_url based on identity_api_version"},{"line_number":276,"context_line":"    identitiy_version \u003d env(\u0027OS_IDENTITY_API_VERSION\u0027, default\u003d\u00273\u0027)"},{"line_number":277,"context_line":"    auth_url \u003d options.os_auth_url"},{"line_number":278,"context_line":"    if identitiy_version \u003d\u003d \u00273\u0027 and \"/v3\" not in auth_url:"},{"line_number":279,"context_line":"        auth_url \u003d auth_url + \"/v3\""},{"line_number":280,"context_line":"    elif identitiy_version \u003d\u003d \u00272\u0027 and \"/v2\" not in auth_url:"},{"line_number":281,"context_line":"        auth_url \u003d auth_url + \"/v2.0\""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    return glance.image_cache.client.get_client("}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_4d5028d6","line":280,"range":{"start_line":276,"start_character":0,"end_line":280,"end_character":60},"updated":"2019-02-25 21:43:08.000000000","message":"nit: fix the spelling of \u0027identity\u0027 in \u0027identitiy_version\u0027","commit_id":"aa2aa490fee25cb78ff5c0ae4df007343cdbe32a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"df1dcf327c4f7d5f605a25caaa6670d875a63875","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    supplied to the CLI"},{"line_number":274,"context_line":"    \"\"\""},{"line_number":275,"context_line":"    # Generate auth_url based on identity_api_version"},{"line_number":276,"context_line":"    identitiy_version \u003d env(\u0027OS_IDENTITY_API_VERSION\u0027, default\u003d\u00273\u0027)"},{"line_number":277,"context_line":"    auth_url \u003d options.os_auth_url"},{"line_number":278,"context_line":"    if identitiy_version \u003d\u003d \u00273\u0027 and \"/v3\" not in auth_url:"},{"line_number":279,"context_line":"        auth_url \u003d auth_url + \"/v3\""},{"line_number":280,"context_line":"    elif identitiy_version \u003d\u003d \u00272\u0027 and \"/v2\" not in auth_url:"},{"line_number":281,"context_line":"        auth_url \u003d auth_url + \"/v2.0\""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    return glance.image_cache.client.get_client("}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_b0d31f01","line":280,"range":{"start_line":276,"start_character":0,"end_line":280,"end_character":60},"in_reply_to":"9fdfeff1_4d5028d6","updated":"2019-02-26 09:43:25.000000000","message":"Done","commit_id":"aa2aa490fee25cb78ff5c0ae4df007343cdbe32a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"676d2db3bd8ef4764563035e0f6595e59ceb71ab","unresolved":false,"context_lines":[{"line_number":314,"context_line":"    print(command.__doc__ % {\u0027prog\u0027: os.path.basename(sys.argv[0])})"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"def parse_args(parser):"},{"line_number":318,"context_line":"    \"\"\"Set up the CLI and config-file options that may be"},{"line_number":319,"context_line":"    parsed and program commands."},{"line_number":320,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_f1a696c0","line":317,"updated":"2019-02-25 21:43:08.000000000","message":"I think you may need to add some arguments to handle a non-default domain -- see my comment at line 207 in auth.py","commit_id":"aa2aa490fee25cb78ff5c0ae4df007343cdbe32a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"df1dcf327c4f7d5f605a25caaa6670d875a63875","unresolved":false,"context_lines":[{"line_number":314,"context_line":"    print(command.__doc__ % {\u0027prog\u0027: os.path.basename(sys.argv[0])})"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"def parse_args(parser):"},{"line_number":318,"context_line":"    \"\"\"Set up the CLI and config-file options that may be"},{"line_number":319,"context_line":"    parsed and program commands."},{"line_number":320,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_93bb850d","line":317,"in_reply_to":"9fdfeff1_f1a696c0","updated":"2019-02-26 09:43:25.000000000","message":"Done","commit_id":"aa2aa490fee25cb78ff5c0ae4df007343cdbe32a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"116b8070cf3001041b79fb6ce503c2c1b21aed01","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                        dest\u003d\u0027os_project_name\u0027,"},{"line_number":402,"context_line":"                        help\u003dargparse.SUPPRESS)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    # arguments related user, project domain"},{"line_number":405,"context_line":"    parser.add_argument(\u0027--os-user-domain-id\u0027,"},{"line_number":406,"context_line":"                        dest\u003d\u0027os_user_domain_id\u0027,"},{"line_number":407,"context_line":"                        default\u003denv(\u0027OS_USER_DOMAIN_ID\u0027, default\u003d\u0027default\u0027),"},{"line_number":408,"context_line":"                        help\u003d\u0027Defaults to env[OS_USER_DOMAIN_ID].\u0027)"},{"line_number":409,"context_line":"    parser.add_argument(\u0027--os-project-domain-id\u0027,"},{"line_number":410,"context_line":"                        dest\u003d\u0027os_project_domain_id\u0027,"},{"line_number":411,"context_line":"                        default\u003denv(\u0027OS_PROJECT_DOMAIN_ID\u0027, default\u003d\u0027default\u0027),"},{"line_number":412,"context_line":"                        help\u003d\u0027Defaults to env[OS_PROJECT_DOMAIN_ID].\u0027)"},{"line_number":413,"context_line":"    parser.add_argument(\u0027--os-domain-id\u0027,"},{"line_number":414,"context_line":"                        dest\u003d\u0027os_domain_id\u0027,"},{"line_number":415,"context_line":"                        default\u003denv(\u0027OS_DOMAIN_ID\u0027, default\u003d\u0027default\u0027),"},{"line_number":416,"context_line":"                        help\u003d\u0027Defaults to env[OS_DOMAIN_ID].\u0027)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    parser.add_argument(\u0027--os-auth-url\u0027,"},{"line_number":419,"context_line":"                        default\u003denv(\u0027OS_AUTH_URL\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_a43bdc99","line":416,"range":{"start_line":404,"start_character":0,"end_line":416,"end_character":62},"updated":"2019-02-26 15:35:48.000000000","message":"I think setting these is going to be a bit more complicated.  Basically, what you need is:\n\n  if os_user_domain_id is defined on command line or env:\n    use it\n  else if os_domain_id is defined on command line or env:\n    os_user_domain_id \u003c- os_domain_id\n  else\n    os_user_domain_id \u003c- \u0027default\u0027\n\n(Same thing for os_project_domain_id)\n\nSo I think you can let os_domain_id have a default value of \u0027default\u0027 and that will handle the two \u0027else\u0027 clauses, but you can\u0027t allow os_user_domain_id or os_project_domain_id have a default value (or you won\u0027t know that they haven\u0027t been set and that you need to check os_domain_id)","commit_id":"015cb9d60c9294308b4016e80fcd46752441918b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"082232736c73399b6ac7c985954787ebaa6142f6","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                        dest\u003d\u0027os_project_name\u0027,"},{"line_number":402,"context_line":"                        help\u003dargparse.SUPPRESS)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    # arguments related user, project domain"},{"line_number":405,"context_line":"    parser.add_argument(\u0027--os-user-domain-id\u0027,"},{"line_number":406,"context_line":"                        dest\u003d\u0027os_user_domain_id\u0027,"},{"line_number":407,"context_line":"                        default\u003denv(\u0027OS_USER_DOMAIN_ID\u0027, default\u003d\u0027default\u0027),"},{"line_number":408,"context_line":"                        help\u003d\u0027Defaults to env[OS_USER_DOMAIN_ID].\u0027)"},{"line_number":409,"context_line":"    parser.add_argument(\u0027--os-project-domain-id\u0027,"},{"line_number":410,"context_line":"                        dest\u003d\u0027os_project_domain_id\u0027,"},{"line_number":411,"context_line":"                        default\u003denv(\u0027OS_PROJECT_DOMAIN_ID\u0027, default\u003d\u0027default\u0027),"},{"line_number":412,"context_line":"                        help\u003d\u0027Defaults to env[OS_PROJECT_DOMAIN_ID].\u0027)"},{"line_number":413,"context_line":"    parser.add_argument(\u0027--os-domain-id\u0027,"},{"line_number":414,"context_line":"                        dest\u003d\u0027os_domain_id\u0027,"},{"line_number":415,"context_line":"                        default\u003denv(\u0027OS_DOMAIN_ID\u0027, default\u003d\u0027default\u0027),"},{"line_number":416,"context_line":"                        help\u003d\u0027Defaults to env[OS_DOMAIN_ID].\u0027)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    parser.add_argument(\u0027--os-auth-url\u0027,"},{"line_number":419,"context_line":"                        default\u003denv(\u0027OS_AUTH_URL\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_56f9747d","line":416,"range":{"start_line":404,"start_character":0,"end_line":416,"end_character":62},"in_reply_to":"9fdfeff1_a43bdc99","updated":"2019-02-27 08:00:28.000000000","message":"Done","commit_id":"015cb9d60c9294308b4016e80fcd46752441918b"}],"glance/common/auth.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"676d2db3bd8ef4764563035e0f6595e59ceb71ab","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                    \"password\": {"},{"line_number":205,"context_line":"                        \"user\": {"},{"line_number":206,"context_line":"                            \"name\": self.creds[\u0027username\u0027],"},{"line_number":207,"context_line":"                            \"domain\": {\"id\": \"default\"},"},{"line_number":208,"context_line":"                            \"password\": self.creds[\u0027password\u0027]"},{"line_number":209,"context_line":"                        }"},{"line_number":210,"context_line":"                    }"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_ed00fc68","line":207,"range":{"start_line":207,"start_character":45,"end_line":207,"end_character":54},"updated":"2019-02-25 21:43:08.000000000","message":"Can we really hard-code this?  I think we need to allow the domain to be passed in by the user, and use \u0027default\u0027 as the default.  (Same thing at line 216.)\n\nThe osc docs [0] make it sound like you can have a user A in domain K and a project P in domain L, and A can still be a member of P, so you may need to allow for 3 arguments/environment vars in the CLI:\n\n  os-user-domain-id\n  os-project-domain-id\n  os-domain-id\n\n[0] https://docs.openstack.org/python-openstackclient/latest/cli/authentication.html#authenticating-using-identity-server-api-v3","commit_id":"aa2aa490fee25cb78ff5c0ae4df007343cdbe32a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"df1dcf327c4f7d5f605a25caaa6670d875a63875","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                    \"password\": {"},{"line_number":205,"context_line":"                        \"user\": {"},{"line_number":206,"context_line":"                            \"name\": self.creds[\u0027username\u0027],"},{"line_number":207,"context_line":"                            \"domain\": {\"id\": \"default\"},"},{"line_number":208,"context_line":"                            \"password\": self.creds[\u0027password\u0027]"},{"line_number":209,"context_line":"                        }"},{"line_number":210,"context_line":"                    }"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_73d7014d","line":207,"range":{"start_line":207,"start_character":45,"end_line":207,"end_character":54},"in_reply_to":"9fdfeff1_ed00fc68","updated":"2019-02-26 09:43:25.000000000","message":"Done","commit_id":"aa2aa490fee25cb78ff5c0ae4df007343cdbe32a"}]}
