)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ef80387c3d6afbb9aa3de93dc45452a8a0cf8062","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     a51ac0a8 (Merge \"Added AddNetwork command to server\")"},{"line_number":2,"context_line":"Author:     root \u003croot@localhost.localdomain\u003e"},{"line_number":3,"context_line":"AuthorDate: 2017-10-30 04:07:49 -0400"},{"line_number":4,"context_line":"Commit:     Dongcan Ye \u003chellochosen@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-11-03 10:59:37 -0400"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3f4b6375_363cc7c6","line":2,"range":{"start_line":2,"start_character":12,"end_line":2,"end_character":45},"updated":"2017-11-04 05:05:06.000000000","message":"Could you update this with your actual email address?\nThe author part is what we usually see when we run \u0027git log\u0027.\n\n\"git commit --amend --reset-author\" would help you.","commit_id":"b70c666b69ef874fff4d574b695d918dc46c45aa"}],"doc/source/cli/command-objects/network-rbac.rst":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"ebd02ed20e92c520988c31467be146c532916207","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":".. option:: --target-all-projects"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    Allow creating rbac policy for all projects."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":".. option:: --target-project-domain \u003ctarget-project-domain\u003e"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f4b6375_8463571a","line":41,"range":{"start_line":41,"start_character":19,"end_line":41,"end_character":23},"updated":"2017-11-03 13:30:21.000000000","message":"RBAC*","commit_id":"e297650ae018c7dd17971192913cfa6cd070d918"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"609b47c0a25e7e34ace10863bad30878a27e57fb","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":".. option:: --target-all-projects"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    Allow creating rbac policy for all projects."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":".. option:: --target-project-domain \u003ctarget-project-domain\u003e"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f4b6375_d036a603","line":41,"range":{"start_line":41,"start_character":19,"end_line":41,"end_character":23},"in_reply_to":"3f4b6375_8463571a","updated":"2017-11-03 15:10:52.000000000","message":"Done","commit_id":"e297650ae018c7dd17971192913cfa6cd070d918"}],"openstackclient/network/v2/network_rbac.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8a0507f7c675ae158ff6396b227e4beca0402969","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            \u0027--target-project\u0027,"},{"line_number":104,"context_line":"            default\u003d\u0027*\u0027,"},{"line_number":105,"context_line":"            metavar\u003d\"\u003ctarget-project\u003e\","},{"line_number":106,"context_line":"            help\u003d_(\u0027The project to which the RBAC policy \u0027"},{"line_number":107,"context_line":"                   \u0027will be enforced (name or ID)\u0027)"},{"line_number":108,"context_line":"        )"},{"line_number":109,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_0869408a","line":106,"updated":"2017-10-30 15:00:12.000000000","message":"this behaviour should be added to the help string and the docs, it\u0027s non-obvious. But don\u0027t include implementation details.\n\nFor example, try adding this to the end: \"... If no project is specified, then the project used to authenticate will be used. (name or ID)\"","commit_id":"6e4acbe9ddbf61998540445efff6ec72594a371e"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"3aae53f7aa3f64cf8a2e8be94242231b84bd275e","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            \u0027--target-project\u0027,"},{"line_number":104,"context_line":"            default\u003d\u0027*\u0027,"},{"line_number":105,"context_line":"            metavar\u003d\"\u003ctarget-project\u003e\","},{"line_number":106,"context_line":"            help\u003d_(\u0027The project to which the RBAC policy \u0027"},{"line_number":107,"context_line":"                   \u0027will be enforced (name or ID)\u0027)"},{"line_number":108,"context_line":"        )"},{"line_number":109,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_a35dadea","line":106,"in_reply_to":"3f4b6375_0869408a","updated":"2017-10-30 15:47:25.000000000","message":"Done","commit_id":"6e4acbe9ddbf61998540445efff6ec72594a371e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6ceed53805be93916d2d17f0c941e51bf4fabee9","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        parser.add_argument("},{"line_number":103,"context_line":"            \u0027--target-project\u0027,"},{"line_number":104,"context_line":"            default\u003d\u0027*\u0027,"},{"line_number":105,"context_line":"            metavar\u003d\"\u003ctarget-project\u003e\","},{"line_number":106,"context_line":"            help\u003d_(\u0027The project to which the RBAC policy \u0027"},{"line_number":107,"context_line":"                   \u0027will be enforced (name or ID). \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_5099dd76","line":104,"range":{"start_line":104,"start_character":12,"end_line":104,"end_character":24},"updated":"2017-11-01 12:47:51.000000000","message":"It is better to accept * as --target-project rather than making * as the default value. I believe allowing some resource to all projects should be done more carefully rather than using the default value.\n\nIf so, we don\u0027t need to change the existing behavior and we also can achieve the behavior of target_project \u003d\u003d *.\n\nI don\u0027t think there is no need to keep the same behavior as neutron CLI and we should explore a better way if any.\n\nThought?","commit_id":"a2e60c4d8ef18991881d490a10cfd6c03d3cd6a6"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"f40a6c06f1b646c811bddb5c98ea8d0434b2d8dc","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        parser.add_argument("},{"line_number":103,"context_line":"            \u0027--target-project\u0027,"},{"line_number":104,"context_line":"            default\u003d\u0027*\u0027,"},{"line_number":105,"context_line":"            metavar\u003d\"\u003ctarget-project\u003e\","},{"line_number":106,"context_line":"            help\u003d_(\u0027The project to which the RBAC policy \u0027"},{"line_number":107,"context_line":"                   \u0027will be enforced (name or ID). \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_93118d07","line":104,"range":{"start_line":104,"start_character":12,"end_line":104,"end_character":24},"in_reply_to":"3f4b6375_48b3714e","updated":"2017-11-02 01:22:15.000000000","message":"@Akihiro Motoki, thanks for your explain, it\u0027s clear for me.\nSo I will remove the default value, and allow a \u0027-\u0027 for the wildcard \u0027*\u0027 as target-project param.\n\n@Steve Martinelli, what\u0027s your idea?","commit_id":"a2e60c4d8ef18991881d490a10cfd6c03d3cd6a6"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"6cea903c05d868196f091aff45c7dcb943968419","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        parser.add_argument("},{"line_number":103,"context_line":"            \u0027--target-project\u0027,"},{"line_number":104,"context_line":"            default\u003d\u0027*\u0027,"},{"line_number":105,"context_line":"            metavar\u003d\"\u003ctarget-project\u003e\","},{"line_number":106,"context_line":"            help\u003d_(\u0027The project to which the RBAC policy \u0027"},{"line_number":107,"context_line":"                   \u0027will be enforced (name or ID). \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_70fdf938","line":104,"range":{"start_line":104,"start_character":12,"end_line":104,"end_character":24},"in_reply_to":"3f4b6375_5099dd76","updated":"2017-11-01 13:02:29.000000000","message":"I kind of like the idea of a default value for this, I can only think of one time we use special arguments like *, it\u0027s for object save, we allow a \"-\" character. https://docs.openstack.org/python-openstackclient/latest/cli/command-objects/object.html#object-save\n\nI don\u0027t mind either option, but I am leaning toward a sensible default.","commit_id":"a2e60c4d8ef18991881d490a10cfd6c03d3cd6a6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4e9e5e8375e6dbd8ae905e0bb419f66e3ebfcd9c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        parser.add_argument("},{"line_number":103,"context_line":"            \u0027--target-project\u0027,"},{"line_number":104,"context_line":"            default\u003d\u0027*\u0027,"},{"line_number":105,"context_line":"            metavar\u003d\"\u003ctarget-project\u003e\","},{"line_number":106,"context_line":"            help\u003d_(\u0027The project to which the RBAC policy \u0027"},{"line_number":107,"context_line":"                   \u0027will be enforced (name or ID). \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_48b3714e","line":104,"range":{"start_line":104,"start_character":12,"end_line":104,"end_character":24},"in_reply_to":"3f4b6375_70fdf938","updated":"2017-11-01 16:46:08.000000000","message":"When I used neutron CLI, I forgot to specify --target-tenant and accidentally hit a return key. As a result, the resource was exposed to all. Wow, such dangerous default value is chosen in the CLI. Exposing a resource is different from an operation inside a tenant, so I believe we should request a user to specify which kind of resource sharing you want (from my experience).\n\nIn the API, target_tenant attribute has no default value. This is because there is no reasonable default value which works for almost all people. In addition, exposing a resource is something special  compared to normal tenant operations.\n\nI exposed a resource by mistake, but perhaps this happens only to me. I guess everyone except me is careful enough.\n\nNote that we didn\u0027t change it in neutron CLI as it is not easy to change this without breaking backward compatibility.","commit_id":"a2e60c4d8ef18991881d490a10cfd6c03d3cd6a6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2f16b834ef7c3a83b2db97ea8a146ddd63cf0c15","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            help\u003d_(\u0027The project to which the RBAC policy \u0027"},{"line_number":107,"context_line":"                   \u0027will be enforced (name or ID). \u0027"},{"line_number":108,"context_line":"                   \u0027Using \"-\" as project *, which is \u0027"},{"line_number":109,"context_line":"                   \u0027a wildcard that represents all projects.\u0027)"},{"line_number":110,"context_line":"        )"},{"line_number":111,"context_line":"        parser.add_argument("},{"line_number":112,"context_line":"            \u0027--target-project-domain\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_b2769ca3","line":109,"updated":"2017-11-03 04:12:54.000000000","message":"Another idea is to add a new boolean option like --target-all-projects. We can add --target-project and --target-all-projects into an exclusive group. We can avoid a special character.\n\nI think this is simpler.\n\nThought?","commit_id":"95dbcc93864e186e9ccf16966a6689ce79878ac6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b93f3103fa708800ee0237f0a2459e725ac63fe6","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            help\u003d_(\u0027The project to which the RBAC policy \u0027"},{"line_number":107,"context_line":"                   \u0027will be enforced (name or ID). \u0027"},{"line_number":108,"context_line":"                   \u0027Using \"-\" as project *, which is \u0027"},{"line_number":109,"context_line":"                   \u0027a wildcard that represents all projects.\u0027)"},{"line_number":110,"context_line":"        )"},{"line_number":111,"context_line":"        parser.add_argument("},{"line_number":112,"context_line":"            \u0027--target-project-domain\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_55518f35","line":109,"in_reply_to":"3f4b6375_121fb008","updated":"2017-11-03 09:16:36.000000000","message":"I mean a boolean option.\n\n  parser.add_argument(\n    \u0027--target-all-projects\u0027,\n    action\u003d\u0027store_true\u0027,\n    help\u003d_(\".....\")\n\nThere is no need to use the default value.\n\nYou can check the option is specified by referring to parsed_args.target_all_projects which will be either of True or False (it will never be None in this case)\n\n In [1]: import argparse\n In [2]: parser \u003d argparse.ArgumentParser()\n In [3]: parser.add_argument(\u0027--target-all-projects\u0027, action\u003d\u0027store_true\u0027)\n Out[3]: _StoreTrueAction(option_strings\u003d[\u0027--target-all-projects\u0027], dest\u003d\u0027target_all_projects\u0027, nargs\u003d0, const\u003dTrue, default\u003dFalse, type\u003dNone, choices\u003dNone, help\u003dNone, metavar\u003dNone)\n In [4]: parser.parse_args([\u0027--target-all-projects\u0027])\n Out[4]: Namespace(target_all_projects\u003dTrue)\n In [5]: parser.parse_args([])\n Out[5]: Namespace(target_all_projects\u003dFalse)\n\nI hope it helps you.","commit_id":"95dbcc93864e186e9ccf16966a6689ce79878ac6"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"98b40cee823d036376689c31c53523fae7e58654","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            help\u003d_(\u0027The project to which the RBAC policy \u0027"},{"line_number":107,"context_line":"                   \u0027will be enforced (name or ID). \u0027"},{"line_number":108,"context_line":"                   \u0027Using \"-\" as project *, which is \u0027"},{"line_number":109,"context_line":"                   \u0027a wildcard that represents all projects.\u0027)"},{"line_number":110,"context_line":"        )"},{"line_number":111,"context_line":"        parser.add_argument("},{"line_number":112,"context_line":"            \u0027--target-project-domain\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_98797ec6","line":109,"in_reply_to":"3f4b6375_55518f35","updated":"2017-11-03 09:57:27.000000000","message":"Thanks Akihiro Motoki, I will update a patch.","commit_id":"95dbcc93864e186e9ccf16966a6689ce79878ac6"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"02d18cc558e58498445bc4d945570fb3e5b3aa4d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            help\u003d_(\u0027The project to which the RBAC policy \u0027"},{"line_number":107,"context_line":"                   \u0027will be enforced (name or ID). \u0027"},{"line_number":108,"context_line":"                   \u0027Using \"-\" as project *, which is \u0027"},{"line_number":109,"context_line":"                   \u0027a wildcard that represents all projects.\u0027)"},{"line_number":110,"context_line":"        )"},{"line_number":111,"context_line":"        parser.add_argument("},{"line_number":112,"context_line":"            \u0027--target-project-domain\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_121fb008","line":109,"in_reply_to":"3f4b6375_b2769ca3","updated":"2017-11-03 04:31:20.000000000","message":"OK, do you mean using target-all-projects with a default value \u0027*\u0027?","commit_id":"95dbcc93864e186e9ccf16966a6689ce79878ac6"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"ebd02ed20e92c520988c31467be146c532916207","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        target_project_group.add_argument("},{"line_number":110,"context_line":"            \u0027--target-all-projects\u0027,"},{"line_number":111,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":112,"context_line":"            help\u003d_(\u0027Allow creating rbac policy for all projects.\u0027)"},{"line_number":113,"context_line":"        )"},{"line_number":114,"context_line":"        parser.add_argument("},{"line_number":115,"context_line":"            \u0027--target-project-domain\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f4b6375_4469dff5","line":112,"range":{"start_line":112,"start_character":35,"end_line":112,"end_character":39},"updated":"2017-11-03 13:30:21.000000000","message":"RBAC","commit_id":"e297650ae018c7dd17971192913cfa6cd070d918"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"609b47c0a25e7e34ace10863bad30878a27e57fb","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        target_project_group.add_argument("},{"line_number":110,"context_line":"            \u0027--target-all-projects\u0027,"},{"line_number":111,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":112,"context_line":"            help\u003d_(\u0027Allow creating rbac policy for all projects.\u0027)"},{"line_number":113,"context_line":"        )"},{"line_number":114,"context_line":"        parser.add_argument("},{"line_number":115,"context_line":"            \u0027--target-project-domain\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f4b6375_302bba95","line":112,"range":{"start_line":112,"start_character":35,"end_line":112,"end_character":39},"in_reply_to":"3f4b6375_4469dff5","updated":"2017-11-03 15:10:52.000000000","message":"Done","commit_id":"e297650ae018c7dd17971192913cfa6cd070d918"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c7d764dcd4c64e42099ad0cbb962509da585aecc","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            help\u003d_(\u0027Action for the RBAC policy \u0027"},{"line_number":100,"context_line":"                   \u0027(\"access_as_external\" or \"access_as_shared\")\u0027)"},{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        target_project_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":103,"context_line":"        target_project_group.add_argument("},{"line_number":104,"context_line":"            \u0027--target-project\u0027,"},{"line_number":105,"context_line":"            metavar\u003d\"\u003ctarget-project\u003e\","}],"source_content_type":"text/x-python","patch_set":10,"id":"3f4b6375_761ebf5f","line":102,"range":{"start_line":102,"start_character":66,"end_line":102,"end_character":68},"updated":"2017-11-04 05:03:58.000000000","message":"Could you add required\u003dTrue here? [1]\n\nWe expect one of --target-project and --target-all-projects is specified and an error should be raised if none of them is specified.\n\n[1] https://docs.python.org/3.6/library/argparse.html#argparse.ArgumentParser.add_mutually_exclusive_group","commit_id":"b70c666b69ef874fff4d574b695d918dc46c45aa"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"143ac4eee4ac3f4891c7e2a12b2a8ffef15f057e","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            help\u003d_(\u0027Action for the RBAC policy \u0027"},{"line_number":100,"context_line":"                   \u0027(\"access_as_external\" or \"access_as_shared\")\u0027)"},{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        target_project_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":103,"context_line":"        target_project_group.add_argument("},{"line_number":104,"context_line":"            \u0027--target-project\u0027,"},{"line_number":105,"context_line":"            metavar\u003d\"\u003ctarget-project\u003e\","}],"source_content_type":"text/x-python","patch_set":10,"id":"3f4b6375_8b5231dd","line":102,"range":{"start_line":102,"start_character":66,"end_line":102,"end_character":68},"in_reply_to":"3f4b6375_761ebf5f","updated":"2017-11-05 06:29:42.000000000","message":"Done","commit_id":"b70c666b69ef874fff4d574b695d918dc46c45aa"}]}
