)]}'
{"doc/source/command-objects/project.rst":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1939d47a5469c9eaa493a597a3fbdbedbce9162b","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    .. versionadded:: 3"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":".. option:: --auth-user"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    Filter projects by authenticated user"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a629dbe_8206321b","line":113,"updated":"2016-11-10 01:09:39.000000000","message":"I think I would make this exclusive with --user, or make it very clear somewhere that --auth-user overrides --user of both are present.\n\nAlso, there was an explanation of this option being to get \u0027my projects\u0027 in the comments, I think that would be good information to add to the docs as further explanation of when/why to use this option.\n\nI wish we had a better name than --auth-user, that makes me thing it should be specifying a user to use for authentication...","commit_id":"0a5fc208c66ecf82d73fdcbbdd8a35066653fe89"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"72f0e17002fb26da76d8150401f2c06fb8db27d4","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    .. versionadded:: 3"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":".. option:: --auth-user"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    Filter projects by authenticated user"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a629dbe_d3047a4b","line":113,"in_reply_to":"9a629dbe_8206321b","updated":"2016-11-10 01:51:39.000000000","message":"It\u0027s slightly weirder than that. It\u0027s exclusive as:\nauth_user XOR (user OR domain)\n\nIt overrides all the other values because filtering by your user in a different domain would be pointless.\n\nAs for name how about one of the following or some variant therein?:\n\u0027--my-projects\u0027 \u0027--my-user\u0027 \u0027--mine\u0027","commit_id":"0a5fc208c66ecf82d73fdcbbdd8a35066653fe89"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"faad70da1258fe7728a6c0d5b494457e4f8428dc","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":".. option:: --my-projects"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    Show projects for the authenticated user."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    .. versionadded:: 3"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a30ddce_a4901bee","line":115,"updated":"2017-03-07 04:46:55.000000000","message":"If list command it should be \u0027List projects for the...\u0027\n\nElse this option belongs under openstack project show","commit_id":"3bcb651c732d2f17b8eefd191736073d1dc39586"}],"openstackclient/identity/v3/project.py":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"da8d90d71c1f1c1c2e3bf7cde692665caa0d0357","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        parser.add_argument("},{"line_number":178,"context_line":"            \u0027--auth-user\u0027,"},{"line_number":179,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":180,"context_line":"            default\u003dFalse,"},{"line_number":181,"context_line":"            help\u003d_(\u0027Filter projects by authenticated user.\u0027),"},{"line_number":182,"context_line":"        )"},{"line_number":183,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_000da4e7","line":180,"range":{"start_line":180,"start_character":12,"end_line":180,"end_character":26},"updated":"2016-09-26 12:21:58.000000000","message":"This is not necessary. If the action is \"store_true\", the default value will be False. :)","commit_id":"f283fd8d50bdcfa96c0a6e3f0644f195053ba8df"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"3c2f70fd3c76613069b19a3aa149ecfed208383d","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        parser.add_argument("},{"line_number":178,"context_line":"            \u0027--auth-user\u0027,"},{"line_number":179,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":180,"context_line":"            default\u003dFalse,"},{"line_number":181,"context_line":"            help\u003d_(\u0027Filter projects by authenticated user.\u0027),"},{"line_number":182,"context_line":"        )"},{"line_number":183,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":1,"id":"3a98d1f4_1a3118a3","line":180,"range":{"start_line":180,"start_character":12,"end_line":180,"end_character":26},"in_reply_to":"5a8bc5a2_000da4e7","updated":"2016-09-28 20:55:20.000000000","message":"Will update in next patch.","commit_id":"f283fd8d50bdcfa96c0a6e3f0644f195053ba8df"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"da8d90d71c1f1c1c2e3bf7cde692665caa0d0357","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        try:"},{"line_number":221,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"},{"line_number":222,"context_line":"        except ks_exc.Forbidden:"},{"line_number":223,"context_line":"            # NOTE(adriant): if no filters, assume a forbidden is non-admin"},{"line_number":224,"context_line":"            # wanting their own project list."},{"line_number":225,"context_line":"            if not kwargs:"},{"line_number":226,"context_line":"                user \u003d self.app.client_manager._auth_ref.user_id"},{"line_number":227,"context_line":"                data \u003d identity_client.projects.list("},{"line_number":228,"context_line":"                    user\u003duser)"},{"line_number":229,"context_line":"            else:"},{"line_number":230,"context_line":"                raise"},{"line_number":231,"context_line":"        return (columns,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_00b20406","line":228,"range":{"start_line":222,"start_character":0,"end_line":228,"end_character":30},"updated":"2016-09-26 12:21:58.000000000","message":"I\u0027d prefer to move this block out of try block. If we catch the exception, we need to send the request twice. Why not set kwargs to the current user_id while we found that auth_user is False ?","commit_id":"f283fd8d50bdcfa96c0a6e3f0644f195053ba8df"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"ac6ded3fb06acf6faa8c67d15f6ac51bd3440e1a","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        try:"},{"line_number":221,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"},{"line_number":222,"context_line":"        except ks_exc.Forbidden:"},{"line_number":223,"context_line":"            # NOTE(adriant): if no filters, assume a forbidden is non-admin"},{"line_number":224,"context_line":"            # wanting their own project list."},{"line_number":225,"context_line":"            if not kwargs:"},{"line_number":226,"context_line":"                user \u003d self.app.client_manager._auth_ref.user_id"},{"line_number":227,"context_line":"                data \u003d identity_client.projects.list("},{"line_number":228,"context_line":"                    user\u003duser)"},{"line_number":229,"context_line":"            else:"},{"line_number":230,"context_line":"                raise"},{"line_number":231,"context_line":"        return (columns,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a98d1f4_275eb5e9","line":228,"range":{"start_line":222,"start_character":0,"end_line":228,"end_character":30},"in_reply_to":"3a98d1f4_5ab9e0e8","updated":"2016-09-29 01:49:18.000000000","message":"Oh, OK. The default is list all the projects. Right. :)","commit_id":"f283fd8d50bdcfa96c0a6e3f0644f195053ba8df"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"90f73da5c31aeef8b038c299591f499e6ac559bd","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        try:"},{"line_number":221,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"},{"line_number":222,"context_line":"        except ks_exc.Forbidden:"},{"line_number":223,"context_line":"            # NOTE(adriant): if no filters, assume a forbidden is non-admin"},{"line_number":224,"context_line":"            # wanting their own project list."},{"line_number":225,"context_line":"            if not kwargs:"},{"line_number":226,"context_line":"                user \u003d self.app.client_manager._auth_ref.user_id"},{"line_number":227,"context_line":"                data \u003d identity_client.projects.list("},{"line_number":228,"context_line":"                    user\u003duser)"},{"line_number":229,"context_line":"            else:"},{"line_number":230,"context_line":"                raise"},{"line_number":231,"context_line":"        return (columns,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_20430e6e","line":228,"range":{"start_line":222,"start_character":0,"end_line":228,"end_character":30},"in_reply_to":"5a8bc5a2_00b20406","updated":"2016-09-28 04:57:36.000000000","message":"@Tang: actually this is fine, if we set kwargs to the current user_id if --auth-user is false then we\u0027ll always find the projects that the user is a part of. which is not what the default is, which is to list all projects","commit_id":"f283fd8d50bdcfa96c0a6e3f0644f195053ba8df"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"3c2f70fd3c76613069b19a3aa149ecfed208383d","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        try:"},{"line_number":221,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"},{"line_number":222,"context_line":"        except ks_exc.Forbidden:"},{"line_number":223,"context_line":"            # NOTE(adriant): if no filters, assume a forbidden is non-admin"},{"line_number":224,"context_line":"            # wanting their own project list."},{"line_number":225,"context_line":"            if not kwargs:"},{"line_number":226,"context_line":"                user \u003d self.app.client_manager._auth_ref.user_id"},{"line_number":227,"context_line":"                data \u003d identity_client.projects.list("},{"line_number":228,"context_line":"                    user\u003duser)"},{"line_number":229,"context_line":"            else:"},{"line_number":230,"context_line":"                raise"},{"line_number":231,"context_line":"        return (columns,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a98d1f4_5ab9e0e8","line":228,"range":{"start_line":222,"start_character":0,"end_line":228,"end_character":30},"in_reply_to":"5a8bc5a2_20430e6e","updated":"2016-09-28 20:55:20.000000000","message":"The goal with this try except is to allow the admin \"list all projects\" default, while allowing a second default for non-admins. Having to do two api calls is regrettable, but a 401 response will always be quick anyway. The --auth-user option then becomes a way for admins to easily list their own projects, or non-admins to be explicit.","commit_id":"f283fd8d50bdcfa96c0a6e3f0644f195053ba8df"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"cc24c6a15cb2bbba06cf85069c00383fb55d5dc4","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        if parsed_args.auth_user:"},{"line_number":216,"context_line":"            # NOTE(adriant): auth-user supersedes all the other filters."},{"line_number":217,"context_line":"            kwargs \u003d {\u0027user\u0027: self.app.client_manager.auth_ref.user_id}"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"},{"line_number":221,"context_line":"        except ks_exc.Forbidden:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da6895a0_f83ffb22","line":218,"updated":"2016-10-22 11:14:39.000000000","message":"both queries use keystone admin url. They should use the public url when --auth-user is provided?","commit_id":"0a5fc208c66ecf82d73fdcbbdd8a35066653fe89"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"ba467f717aafc7ea3e6781e2955b23eba6364adf","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        if parsed_args.auth_user:"},{"line_number":216,"context_line":"            # NOTE(adriant): auth-user supersedes all the other filters."},{"line_number":217,"context_line":"            kwargs \u003d {\u0027user\u0027: self.app.client_manager.auth_ref.user_id}"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"},{"line_number":221,"context_line":"        except ks_exc.Forbidden:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_566237ae","line":218,"in_reply_to":"9a629dbe_019892bf","updated":"2016-11-09 13:00:59.000000000","message":"\u003e\u003e So by default in both cases ...it is going to the public\n\nIf you run openstack with --debug option, you see that:\n* \"openstack token issue\" uses the 5000 port \u003d\u003e the public endpoint\n* \"openstack project list\" uses the 35357 port \u003d\u003e the admin endpoint\n* \"openstack --os-interface public project list\" uses the 5000 port \u003d\u003e the public endpoint ... but IMO it\u0027s really not user-friendly when admin endpoint is not reachable for normal users","commit_id":"0a5fc208c66ecf82d73fdcbbdd8a35066653fe89"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"9ece81bbd9227456f33b07d5ecc906f6ed29d7ff","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        if parsed_args.auth_user:"},{"line_number":216,"context_line":"            # NOTE(adriant): auth-user supersedes all the other filters."},{"line_number":217,"context_line":"            kwargs \u003d {\u0027user\u0027: self.app.client_manager.auth_ref.user_id}"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"},{"line_number":221,"context_line":"        except ks_exc.Forbidden:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_a9e35232","line":218,"in_reply_to":"9a629dbe_30e167ff","updated":"2016-11-08 22:20:09.000000000","message":"No, because this command doesn\u0027t respect the os-interface default value (public)","commit_id":"0a5fc208c66ecf82d73fdcbbdd8a35066653fe89"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"2d8cd38ac439078585bc872c82f2bf20e459162b","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        if parsed_args.auth_user:"},{"line_number":216,"context_line":"            # NOTE(adriant): auth-user supersedes all the other filters."},{"line_number":217,"context_line":"            kwargs \u003d {\u0027user\u0027: self.app.client_manager.auth_ref.user_id}"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"},{"line_number":221,"context_line":"        except ks_exc.Forbidden:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_5fbcf1db","line":218,"in_reply_to":"9a629dbe_566237ae","updated":"2016-11-09 22:50:12.000000000","message":"I think you are highlighting a problem that is present across all of the OSClient and keystoneclient left over due to the legacy splitting of public/admin urls.\n\nThere is no functional difference between the two interfaces in v3 as far as I\u0027m aware. Really the only case I can think of where you might actually use it, is if you deployed keystone twice with a different policy blocking some admin functionality on the public one. Then you firewalled off the admin url to be accessible only within your organisation or certain networks.\n\nAs you yourself have seen, --os-interface does change the url used, and in either case the functionality is the same. For deployments where the admin url is blocked off, the default of using the admin interface for all keystone things is a problem, but not one that is in the scope of this patch, and one that is likely present in all the current openstackclient keystone calls.\n\nThe solution to this is a global fix that defaults to ALWAYS using the public interface for v3 unless told otherwise, but again, way outside the scope of this patch.\n\nThis is the problem:\nhttps://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/httpclient.py#L253\nAnd it isn\u0027t something I can fix in the scope of this patch.","commit_id":"0a5fc208c66ecf82d73fdcbbdd8a35066653fe89"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"3f44ae8613435fb67973b0e21ceadb195080bbe9","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        if parsed_args.auth_user:"},{"line_number":216,"context_line":"            # NOTE(adriant): auth-user supersedes all the other filters."},{"line_number":217,"context_line":"            kwargs \u003d {\u0027user\u0027: self.app.client_manager.auth_ref.user_id}"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"},{"line_number":221,"context_line":"        except ks_exc.Forbidden:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_019892bf","line":218,"in_reply_to":"9a629dbe_89c5ae3d","updated":"2016-11-09 01:36:10.000000000","message":"I could be very wrong here, but I was under the assumption that this is where the interface is set:\nhttps://github.com/openstack/python-openstackclient/blob/master/openstackclient/identity/client.py#L52\n\nWhere the client is built. So even when using identity services the default is to use the public endpoints. The commands themselves just use the clients as built by the global settings.\n\nAlso as far as I\u0027m aware there are no functional differences between the admin and public endpoints in keystone v3, and this is a v3 specific patch.\n\nSo by default in both cases (with, and without --auth-user) it is going to the public endpoint, and the admin functionality is limited entirely by policy within keystone itself.\n\nAgain, I could be terribly wrong with my assumptions.","commit_id":"0a5fc208c66ecf82d73fdcbbdd8a35066653fe89"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"465fb66b2b219cbfe457db39bbb1273a08469ff0","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        if parsed_args.auth_user:"},{"line_number":216,"context_line":"            # NOTE(adriant): auth-user supersedes all the other filters."},{"line_number":217,"context_line":"            kwargs \u003d {\u0027user\u0027: self.app.client_manager.auth_ref.user_id}"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"},{"line_number":221,"context_line":"        except ks_exc.Forbidden:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_89c5ae3d","line":218,"in_reply_to":"9a629dbe_a9e35232","updated":"2016-11-08 22:28:47.000000000","message":"IMO, it\u0027s pretty unusable if normal users have to do:\n\n openstack --os-interface public project list --auth-user\n\nwhen they have no access to identity admin endpoint\n\n\nBy default, \"token issue\" command uses the public endpoint because it\u0027s a user command, most of other identity commands use the admin endpoint because they are admin commands ... so project list --auth_use should use the public endpoint because it\u0027s a user command.","commit_id":"0a5fc208c66ecf82d73fdcbbdd8a35066653fe89"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"cc21d94d08ab67f0c4d90faa0604758ee14220db","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        if parsed_args.auth_user:"},{"line_number":216,"context_line":"            # NOTE(adriant): auth-user supersedes all the other filters."},{"line_number":217,"context_line":"            kwargs \u003d {\u0027user\u0027: self.app.client_manager.auth_ref.user_id}"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"},{"line_number":221,"context_line":"        except ks_exc.Forbidden:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_30e167ff","line":218,"in_reply_to":"9a629dbe_f9af2a7b","updated":"2016-11-08 21:10:32.000000000","message":"That is outside of the control of this command. It is up to the user to specify which interface type they want to use (see --os-interface \u003cinterface\u003e, Env: OS_INTERFACE).\n\nSuffice to say, outside of the scope of this patch. :)","commit_id":"0a5fc208c66ecf82d73fdcbbdd8a35066653fe89"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1c368b716b62a1dda56ffe65a64fd667c423ff71","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        if parsed_args.auth_user:"},{"line_number":216,"context_line":"            # NOTE(adriant): auth-user supersedes all the other filters."},{"line_number":217,"context_line":"            kwargs \u003d {\u0027user\u0027: self.app.client_manager.auth_ref.user_id}"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"},{"line_number":221,"context_line":"        except ks_exc.Forbidden:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_f9af2a7b","line":218,"in_reply_to":"ba5da102_ba59fb90","updated":"2016-11-07 12:47:17.000000000","message":"I am talking about the service url endpoint which should be \"public\" for normal users as there is no reason they can reach the \"admin\" url","commit_id":"0a5fc208c66ecf82d73fdcbbdd8a35066653fe89"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"ab3d68cc771542302a027d5d2790ab28936d2d2d","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        if parsed_args.auth_user:"},{"line_number":216,"context_line":"            # NOTE(adriant): auth-user supersedes all the other filters."},{"line_number":217,"context_line":"            kwargs \u003d {\u0027user\u0027: self.app.client_manager.auth_ref.user_id}"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"},{"line_number":221,"context_line":"        except ks_exc.Forbidden:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_ba59fb90","line":218,"in_reply_to":"da6895a0_f83ffb22","updated":"2016-11-07 02:44:31.000000000","message":"I\u0027m not sure what you mean. Are you talking about the service url endpoint (public/admin/internal)? Or the API endpoint (\"/v3/projects\" vs \"/v3/users/{user_id}/projects\")?\n\n\nThe latter is entirely a question of what is in your policy.json file as to what is or isn\u0027t admin.\n\n\nUp until Newton the default for \"/v3/projects\" was admin only, so this patch allows the project list to switch to \"/v3/users/{user_id}/projects\" in some cases, and also bypasses the need to fetch your own user.\n\n\nThat said, the keystoneclient is clever enough to know when filtering for a user to use \"/v3/users/{user_id}/projects\". So when \u0027--auth-user\u0027 is true the client will in fact use \"/v3/users/{user_id}/projects\" instead. No need for me to explicitly tell it to use that endpoint. https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/v3/projects.py#L114\n\n\nHope that answers your question. :)","commit_id":"0a5fc208c66ecf82d73fdcbbdd8a35066653fe89"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"7bc9054e7bc9269c5dc8e8ed4b91ee0e7c7d6a40","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        parser.add_argument("},{"line_number":192,"context_line":"            \u0027--my-projects\u0027,"},{"line_number":193,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":194,"context_line":"            help\u003d_(\u0027List only projects your user has access to.\u0027),"},{"line_number":195,"context_line":"        )"},{"line_number":196,"context_line":"        parser.add_argument("},{"line_number":197,"context_line":"            \u0027--long\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a30ddce_a672cc7a","line":194,"updated":"2017-03-07 13:45:27.000000000","message":"Help text needs to match the doc one-liner.  That one is better, change this one","commit_id":"47a34e4f4d1963bc231c3bdeb87d6a8327539726"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"6537eab0b2e435ac9aaaef1921f96a7bb8f77a9f","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        if parsed_args.my_projects:"},{"line_number":230,"context_line":"            # NOTE(adriant): my-projects supersedes all the other filters."},{"line_number":231,"context_line":"            kwargs \u003d {\u0027user\u0027: self.app.client_manager.auth_ref.user_id}"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        try:"},{"line_number":234,"context_line":"            data \u003d identity_client.projects.list(**kwargs)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a30ddce_ce024e0b","line":231,"updated":"2017-03-08 07:00:20.000000000","message":"\"--my-projects\" will override other options, please add some info in help message and document to notify the behavior.","commit_id":"549e77f6d29becff0ece463ff6d9749a7e986b06"}],"openstackclient/tests/unit/identity/v3/test_project.py":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"6537eab0b2e435ac9aaaef1921f96a7bb8f77a9f","unresolved":false,"context_lines":[{"line_number":584,"context_line":"        auth_ref \u003d identity_fakes.fake_auth_ref("},{"line_number":585,"context_line":"            identity_fakes.TOKEN_WITH_PROJECT_ID,"},{"line_number":586,"context_line":"        )"},{"line_number":587,"context_line":"        self.ar_mock \u003d mock.PropertyMock(return_value\u003dauth_ref)"},{"line_number":588,"context_line":"        type(self.app.client_manager).auth_ref \u003d self.ar_mock"},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"        arglist \u003d ["}],"source_content_type":"text/x-python","patch_set":10,"id":"9a30ddce_6e032243","line":587,"range":{"start_line":587,"start_character":8,"end_line":587,"end_character":13},"updated":"2017-03-08 07:00:20.000000000","message":"ar_mock don\u0027t have to be an object variable, local variable is fine.","commit_id":"549e77f6d29becff0ece463ff6d9749a7e986b06"}],"releasenotes/notes/bug-1627555-3b47eba215e35b3c.yaml":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"6537eab0b2e435ac9aaaef1921f96a7bb8f77a9f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    admin ``list all projects`` default, with a secondary non-admin default."},{"line_number":8,"context_line":"    Also adds the ``--my-projects`` option to allow admins to easily list their"},{"line_number":9,"context_line":"    own projects or allows non-admins to be explicit and bypass the"},{"line_number":10,"context_line":"    forbidden error fallback."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9a30ddce_6ed24202","line":10,"updated":"2017-03-08 07:00:20.000000000","message":"please add bug link at the end.","commit_id":"549e77f6d29becff0ece463ff6d9749a7e986b06"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"8dc82b0741df18bd4fc71d10bbfaecbe168bb490","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    own projects or allows non-admins to be explicit and bypass the"},{"line_number":10,"context_line":"    forbidden error fallback."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    [Bug `1627555 \u003chttps://bugs.launchpad.net/python-openstackclient/+bug/1627555\u003e`_]"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"9a30ddce_4584395d","line":12,"updated":"2017-03-09 17:07:09.000000000","message":"\u003chttps://bugs.launchpad.net/bugs/1627555\u003e\n\nReplace the long url with shorter one","commit_id":"11547d8c035a002faec8d1054e956ff241593b83"}]}
