)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e044f8f2b988f54d45f4302ace059c9f03f516c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Ramanjaneya \u003cramanjieee@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-24 15:53:21 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP]Support RBAC neutron-client CLI changes, pending UT to do."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"DocImpact"},{"line_number":10,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a50d1a3_74102ca9","line":7,"updated":"2015-07-24 13:32:00.000000000","message":"Can we reword it as \n\n\"[WIP] Support RBAC neutron-client changes.\n\nThis patch adds the command line support for RBAC work.\n\nPending:\nUT\n\"","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e044f8f2b988f54d45f4302ace059c9f03f516c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"DocImpact"},{"line_number":10,"context_line":"APIImpact"},{"line_number":11,"context_line":"Partially-Implements: blueprint quantum-qos-api"},{"line_number":12,"context_line":"Co-Authored-By: dongfeng \u003calbert.dongfeng@huawei.com\u003e"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I00c6b84b3f7d810f137ce05c0cd936dc194d9708"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a50d1a3_f4c0bc2c","line":11,"updated":"2015-07-24 13:32:00.000000000","message":"Please check the blueprint details. I feel this should be rbac-networks.","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"c1264ac831d1af3e32efa81f20ce872d675ba286","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support RBAC neutron-client changes."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the command line support for RBAC work."},{"line_number":10,"context_line":"TODO: inline about the rbac-list-actions command."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a4dcd0f_05e89ae1","line":10,"updated":"2015-08-04 04:38:51.000000000","message":"Are you planning to implement this CLI now? If not then request you to kindly remove it. We can put this information somewhere else, probably devref doc or so.","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7397538d3a7d2585db7d4c6771a066403d088d00","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support RBAC neutron-client changes."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the command line support for RBAC work."},{"line_number":10,"context_line":"TODO: inline about the rbac-list-actions command."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a4dcd0f_e95e5b11","line":10,"in_reply_to":"1a4dcd0f_05e89ae1","updated":"2015-08-05 08:48:15.000000000","message":"will remove in next patch","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"}],"neutronclient/neutron/v2_0/rbac.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e044f8f2b988f54d45f4302ace059c9f03f516c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    resource \u003d \u0027rbac_policy\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class CreateRBACPolicy(neutronV20.CreateCommand):"},{"line_number":36,"context_line":"    \"\"\"Create a RBAC entry for a given tenant.\"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    resource \u003d \u0027rbac_policy\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_5a567907","line":35,"updated":"2015-07-24 13:32:00.000000000","message":"As the command only name is mandatory. What if the user just give the name without type and other parameters. I feel we need to revisit for the optional parameter once again.","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"3a6302caf38df9cfc2fd49d8865a572b547404e8","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    resource \u003d \u0027rbac_policy\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class CreateRBACPolicy(neutronV20.CreateCommand):"},{"line_number":36,"context_line":"    \"\"\"Create a RBAC entry for a given tenant.\"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    resource \u003d \u0027rbac_policy\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_3bcc73ba","line":35,"updated":"2015-07-27 20:28:28.000000000","message":"a policy without a type is not allowed. the required fields will be type, object uuid, and the action","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"3500fed518fb083c919b95bda87b8796c3e01b91","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    resource \u003d \u0027rbac_policy\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class CreateRBACPolicy(neutronV20.CreateCommand):"},{"line_number":36,"context_line":"    \"\"\"Create a RBAC entry for a given tenant.\"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    resource \u003d \u0027rbac_policy\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_7e7c4d72","line":35,"in_reply_to":"3a50d1a3_5a567907","updated":"2015-07-27 09:31:57.000000000","message":"As per spec it is allowed, \nnot sure so posted this comment to \u003ckevinbenton\u003e","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"3a6302caf38df9cfc2fd49d8865a572b547404e8","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":41,"context_line":"        parser.add_argument("},{"line_number":42,"context_line":"            \u0027net-name\u0027,"},{"line_number":43,"context_line":"            help\u003d_(\u0027Name for the RBAC entry.\u0027))"},{"line_number":44,"context_line":"        parser.add_argument("},{"line_number":45,"context_line":"            \u0027--type\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_dbc54f8e","line":42,"updated":"2015-07-27 20:28:28.000000000","message":"+1, should be object name","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e044f8f2b988f54d45f4302ace059c9f03f516c","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":41,"context_line":"        parser.add_argument("},{"line_number":42,"context_line":"            \u0027net-name\u0027,"},{"line_number":43,"context_line":"            help\u003d_(\u0027Name for the RBAC entry.\u0027))"},{"line_number":44,"context_line":"        parser.add_argument("},{"line_number":45,"context_line":"            \u0027--type\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_d42ee0a4","line":42,"updated":"2015-07-24 13:32:00.000000000","message":"Can we rename it as \u0027name\u0027 or \u0027object-name\u0027. As RBAC can be used for different object and \"net-name\" doesn\u0027t looks generic.\n\nparser.add_argument(\u0027object-name\u0027,\n               metavar\u003dRBAC_OBJECT_NAME_OR_ID,\n               help\u003d_(\u0027ID or name of the RBAC oject.\u0027))","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"397edfb5caaf7215905c6ae614b0a7281fa188f0","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":41,"context_line":"        parser.add_argument("},{"line_number":42,"context_line":"            \u0027net-name\u0027,"},{"line_number":43,"context_line":"            help\u003d_(\u0027Name for the RBAC entry.\u0027))"},{"line_number":44,"context_line":"        parser.add_argument("},{"line_number":45,"context_line":"            \u0027--type\u0027,"},{"line_number":46,"context_line":"            help\u003d_(\u0027RBAC type of object\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_6f485988","line":43,"updated":"2015-07-24 13:21:46.000000000","message":"Since network name is not guaranteed unique, there needs to be a way to identify a network by UUID as an alternative.","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"3a6302caf38df9cfc2fd49d8865a572b547404e8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":41,"context_line":"        parser.add_argument("},{"line_number":42,"context_line":"            \u0027net-name\u0027,"},{"line_number":43,"context_line":"            help\u003d_(\u0027Name for the RBAC entry.\u0027))"},{"line_number":44,"context_line":"        parser.add_argument("},{"line_number":45,"context_line":"            \u0027--type\u0027,"},{"line_number":46,"context_line":"            help\u003d_(\u0027RBAC type of object\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_fbc28b84","line":43,"updated":"2015-07-27 20:28:28.000000000","message":"the server is actually expecting an object UUID. a network name to UUID translation needs to happen on the client side. Similar to how net-update works with a name.","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"3a6302caf38df9cfc2fd49d8865a572b547404e8","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            \u0027net-name\u0027,"},{"line_number":43,"context_line":"            help\u003d_(\u0027Name for the RBAC entry.\u0027))"},{"line_number":44,"context_line":"        parser.add_argument("},{"line_number":45,"context_line":"            \u0027--type\u0027,"},{"line_number":46,"context_line":"            help\u003d_(\u0027RBAC type of object\u0027))"},{"line_number":47,"context_line":"        parser.add_argument("},{"line_number":48,"context_line":"            \u0027--target-tenant\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_9bbb470f","line":45,"updated":"2015-07-27 20:28:28.000000000","message":"Don\u0027t do this, there may be different implemenations of the rbac API that work with different object types. Leave it free-form for now until we have an API to list valid types and their actions.","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e044f8f2b988f54d45f4302ace059c9f03f516c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            \u0027net-name\u0027,"},{"line_number":43,"context_line":"            help\u003d_(\u0027Name for the RBAC entry.\u0027))"},{"line_number":44,"context_line":"        parser.add_argument("},{"line_number":45,"context_line":"            \u0027--type\u0027,"},{"line_number":46,"context_line":"            help\u003d_(\u0027RBAC type of object\u0027))"},{"line_number":47,"context_line":"        parser.add_argument("},{"line_number":48,"context_line":"            \u0027--target-tenant\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_8f7845fa","line":45,"updated":"2015-07-24 13:32:00.000000000","message":"How about making this parameter to be selected from the choice-list\nchoice\u003d[network].. This can be extended in the future.","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e044f8f2b988f54d45f4302ace059c9f03f516c","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            help\u003d_(\u0027Name for the RBAC entry.\u0027))"},{"line_number":44,"context_line":"        parser.add_argument("},{"line_number":45,"context_line":"            \u0027--type\u0027,"},{"line_number":46,"context_line":"            help\u003d_(\u0027RBAC type of object\u0027))"},{"line_number":47,"context_line":"        parser.add_argument("},{"line_number":48,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":49,"context_line":"            help\u003d_(\u0027target tenant id of RBAC.\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_0f3af5cd","line":46,"updated":"2015-07-24 13:32:00.000000000","message":"Can we reword help as \"Type of the RBAC object.\"","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"3a6302caf38df9cfc2fd49d8865a572b547404e8","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            help\u003d_(\u0027Name for the RBAC entry.\u0027))"},{"line_number":44,"context_line":"        parser.add_argument("},{"line_number":45,"context_line":"            \u0027--type\u0027,"},{"line_number":46,"context_line":"            help\u003d_(\u0027RBAC type of object\u0027))"},{"line_number":47,"context_line":"        parser.add_argument("},{"line_number":48,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":49,"context_line":"            help\u003d_(\u0027target tenant id of RBAC.\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_bbb88312","line":46,"updated":"2015-07-27 20:28:28.000000000","message":"Type of object that RBAC entry affects.","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e044f8f2b988f54d45f4302ace059c9f03f516c","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            help\u003d_(\u0027RBAC type of object\u0027))"},{"line_number":47,"context_line":"        parser.add_argument("},{"line_number":48,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":49,"context_line":"            help\u003d_(\u0027target tenant id of RBAC.\u0027))"},{"line_number":50,"context_line":"        parser.add_argument("},{"line_number":51,"context_line":"            \u0027--action\u0027,"},{"line_number":52,"context_line":"            help\u003d_(\u0027Action for the RBAC entry.\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_cf808d8e","line":49,"updated":"2015-07-24 13:32:00.000000000","message":"Can we reword the help as \"ID of the tenants to which the RBAC policy will be enforced.\"","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"3a6302caf38df9cfc2fd49d8865a572b547404e8","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":49,"context_line":"            help\u003d_(\u0027target tenant id of RBAC.\u0027))"},{"line_number":50,"context_line":"        parser.add_argument("},{"line_number":51,"context_line":"            \u0027--action\u0027,"},{"line_number":52,"context_line":"            help\u003d_(\u0027Action for the RBAC entry.\u0027))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def args2body(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_5b385fa0","line":51,"updated":"2015-07-27 20:28:28.000000000","message":"-1 for same reason I gave for --type above","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e044f8f2b988f54d45f4302ace059c9f03f516c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":49,"context_line":"            help\u003d_(\u0027target tenant id of RBAC.\u0027))"},{"line_number":50,"context_line":"        parser.add_argument("},{"line_number":51,"context_line":"            \u0027--action\u0027,"},{"line_number":52,"context_line":"            help\u003d_(\u0027Action for the RBAC entry.\u0027))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def args2body(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_da1cc96c","line":51,"updated":"2015-07-24 13:32:00.000000000","message":"I feel \u0027--action\u0027 could be made as a choice. choice\u003d[access_as_external, access_as_shared]","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e044f8f2b988f54d45f4302ace059c9f03f516c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            help\u003d_(\u0027target tenant id of RBAC.\u0027))"},{"line_number":50,"context_line":"        parser.add_argument("},{"line_number":51,"context_line":"            \u0027--action\u0027,"},{"line_number":52,"context_line":"            help\u003d_(\u0027Action for the RBAC entry.\u0027))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def args2body(self, parsed_args):"},{"line_number":55,"context_line":"        body \u003d {self.resource: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_2f2251ba","line":52,"updated":"2015-07-24 13:32:00.000000000","message":"Can we reword the help as \"Action for the RBAC policy\"?","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e044f8f2b988f54d45f4302ace059c9f03f516c","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":70,"context_line":"        parser.add_argument("},{"line_number":71,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":72,"context_line":"            help\u003d_(\u0027target tenant id of RBAC.\u0027))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def args2body(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_9a5de1ee","line":71,"updated":"2015-07-24 13:32:00.000000000","message":"In the approved spec (https://review.openstack.org/#/c/132661/), i can find the update is allowed for \"--action\", if not can you please sight the latest modified spec for verification.","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"3a6302caf38df9cfc2fd49d8865a572b547404e8","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":70,"context_line":"        parser.add_argument("},{"line_number":71,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":72,"context_line":"            help\u003d_(\u0027target tenant id of RBAC.\u0027))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def args2body(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_7b3d1b8e","line":71,"updated":"2015-07-27 20:28:28.000000000","message":"yes, i removed updating for action. it created pointless complexity on the server side without a use-case","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"3500fed518fb083c919b95bda87b8796c3e01b91","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":70,"context_line":"        parser.add_argument("},{"line_number":71,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":72,"context_line":"            help\u003d_(\u0027target tenant id of RBAC.\u0027))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def args2body(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_988611da","line":71,"in_reply_to":"3a50d1a3_9a5de1ee","updated":"2015-07-27 09:31:57.000000000","message":"https://review.openstack.org/#/c/202942\ndoen\u0027t have \u0027--action\u0027.","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e044f8f2b988f54d45f4302ace059c9f03f516c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        }, }"},{"line_number":79,"context_line":"        return body"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class DeleteRBACPolicy(neutronV20.DeleteCommand):"},{"line_number":83,"context_line":"    \"\"\"Delete a RBAC entry.\"\"\""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_3a3ccd2e","line":81,"updated":"2015-07-24 13:32:00.000000000","message":"Cannot find the implementation for \"\"neutron rbac list-actions \u003cobject-type\u003e\"\" as defined in the approved spec. Pleasee confirm.","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"3a6302caf38df9cfc2fd49d8865a572b547404e8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        }, }"},{"line_number":79,"context_line":"        return body"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class DeleteRBACPolicy(neutronV20.DeleteCommand):"},{"line_number":83,"context_line":"    \"\"\"Delete a RBAC entry.\"\"\""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_1b3e578b","line":81,"updated":"2015-07-27 20:28:28.000000000","message":"right, I haven\u0027t decided yet what API to add for that one. don\u0027t worry about that one for now.","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"3500fed518fb083c919b95bda87b8796c3e01b91","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        }, }"},{"line_number":79,"context_line":"        return body"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class DeleteRBACPolicy(neutronV20.DeleteCommand):"},{"line_number":83,"context_line":"    \"\"\"Delete a RBAC entry.\"\"\""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_38d25d01","line":81,"in_reply_to":"3a50d1a3_3a3ccd2e","updated":"2015-07-27 09:31:57.000000000","message":"\u003cRamanjaneya\u003e  neutron rbac-list-actions \u003cobject-type\u003e\n\u003cRamanjaneya\u003e neutron rbac-list\n\u003cRamanjaneya\u003e what is the difference between those clis?\n\u003ckevinbenton\u003e Rbac-list just gets a list of all existing rbac entries \n\u003ckevinbenton\u003e rbac-list-actions shows the possible actions \n\u003ckevinbenton\u003e However, skip that last one for now because I don\u0027t have an \nAPI that exposes that directly","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"811eb9843fa723333ae41d402272e36efdd7dbbc","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ListRBACPolicy(neutronV20.ListCommand):"},{"line_number":21,"context_line":"    \"\"\"List RBAC entries that belong to a given tenant.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    resource \u003d \u0027rbac_policy\u0027"},{"line_number":24,"context_line":"    list_columns \u003d [\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_091ac77c","line":21,"range":{"start_line":21,"start_character":17,"end_line":21,"end_character":26},"updated":"2015-07-31 16:12:57.000000000","message":"entries -\u003e policies?","commit_id":"ca3ba35da3594fb42fef4f1301387136496e204c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"811eb9843fa723333ae41d402272e36efdd7dbbc","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class CreateRBACPolicy(neutronV20.CreateCommand):"},{"line_number":36,"context_line":"    \"\"\"Create a RBAC entry for a given tenant.\"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    resource \u003d \u0027rbac_policy\u0027"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_2c1c7169","line":36,"updated":"2015-07-31 16:12:57.000000000","message":"entry -\u003e policy?\n\nIt is better to match the help message and the class name.","commit_id":"ca3ba35da3594fb42fef4f1301387136496e204c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"811eb9843fa723333ae41d402272e36efdd7dbbc","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":41,"context_line":"        parser.add_argument("},{"line_number":42,"context_line":"            \u0027name\u0027,"},{"line_number":43,"context_line":"            metavar\u003d\u0027RBAC_OBJECT_NAME_OR_ID\u0027,"},{"line_number":44,"context_line":"            help\u003d_(\u0027ID or name of the RBAC object.\u0027))"},{"line_number":45,"context_line":"        parser.add_argument("},{"line_number":46,"context_line":"            \u0027--type\u0027, choices\u003d[\u0027network\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_4c5c5d19","line":43,"updated":"2015-07-31 16:12:57.000000000","message":"This metavar is a bit long. How about \"RBAC_OBJECT\" here?\nThe help below describes we can specify both ID and name, and it is a common practice in Neutron CLI.","commit_id":"ca3ba35da3594fb42fef4f1301387136496e204c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"811eb9843fa723333ae41d402272e36efdd7dbbc","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        parser.add_argument("},{"line_number":42,"context_line":"            \u0027name\u0027,"},{"line_number":43,"context_line":"            metavar\u003d\u0027RBAC_OBJECT_NAME_OR_ID\u0027,"},{"line_number":44,"context_line":"            help\u003d_(\u0027ID or name of the RBAC object.\u0027))"},{"line_number":45,"context_line":"        parser.add_argument("},{"line_number":46,"context_line":"            \u0027--type\u0027, choices\u003d[\u0027network\u0027],"},{"line_number":47,"context_line":"            help\u003d_(\u0027Type of the RBAC object\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_cc7dcd6e","line":44,"updated":"2015-07-31 16:12:57.000000000","message":"I am a bit confused between RBAC policy and RBAC object.\nAre these two different or same? If same, we should use consistent wording.\nIf not, the class name or the help message should be wrong.","commit_id":"ca3ba35da3594fb42fef4f1301387136496e204c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"bb75b30da72563be193548be16baaf49868287a6","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            metavar\u003d\u0027RBAC_OBJECT_NAME_OR_ID\u0027,"},{"line_number":44,"context_line":"            help\u003d_(\u0027ID or name of the RBAC object.\u0027))"},{"line_number":45,"context_line":"        parser.add_argument("},{"line_number":46,"context_line":"            \u0027--type\u0027, choices\u003d[\u0027network\u0027],"},{"line_number":47,"context_line":"            help\u003d_(\u0027Type of the RBAC object\u0027))"},{"line_number":48,"context_line":"        parser.add_argument("},{"line_number":49,"context_line":"            \u0027--target-tenant\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_8a2ecca3","line":46,"updated":"2015-07-31 11:28:18.000000000","message":"\"--type\" should be a mandatory and not an optional parameter. . Please check Kevin\u0027s comment in PS1. ---  \"a policy without a type is not allowed. the required fields will be type, object uuid, and the action\"","commit_id":"ca3ba35da3594fb42fef4f1301387136496e204c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"bb75b30da72563be193548be16baaf49868287a6","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            help\u003d_(\u0027ID or name of the RBAC object.\u0027))"},{"line_number":45,"context_line":"        parser.add_argument("},{"line_number":46,"context_line":"            \u0027--type\u0027, choices\u003d[\u0027network\u0027],"},{"line_number":47,"context_line":"            help\u003d_(\u0027Type of the RBAC object\u0027))"},{"line_number":48,"context_line":"        parser.add_argument("},{"line_number":49,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":50,"context_line":"            help\u003d_(\u0027ID of the tenants to which the RBAC \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_2a6f78fd","line":47,"updated":"2015-07-31 11:28:18.000000000","message":"Should be \"Type of the object that RBAC entry affects.\"","commit_id":"ca3ba35da3594fb42fef4f1301387136496e204c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"bb75b30da72563be193548be16baaf49868287a6","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":50,"context_line":"            help\u003d_(\u0027ID of the tenants to which the RBAC \u0027"},{"line_number":51,"context_line":"                   \u0027policy will be enforced.\u0027))"},{"line_number":52,"context_line":"        parser.add_argument("},{"line_number":53,"context_line":"            \u0027--action\u0027, choices\u003d[\u0027access_as_external\u0027, \u0027access_as_shared\u0027],"},{"line_number":54,"context_line":"            help\u003d_(\u0027Action for the RBAC policy.\u0027))"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_8a056c15","line":52,"updated":"2015-07-31 11:28:18.000000000","message":"\"--action\" should be a mandatory and not an optional parameter. Please check Kevin\u0027s comment in PS1. ---  \"a policy without a type is not allowed. the required fields will be type, object uuid, and the action\"","commit_id":"ca3ba35da3594fb42fef4f1301387136496e204c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"811eb9843fa723333ae41d402272e36efdd7dbbc","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":50,"context_line":"            help\u003d_(\u0027ID of the tenants to which the RBAC \u0027"},{"line_number":51,"context_line":"                   \u0027policy will be enforced.\u0027))"},{"line_number":52,"context_line":"        parser.add_argument("},{"line_number":53,"context_line":"            \u0027--action\u0027, choices\u003d[\u0027access_as_external\u0027, \u0027access_as_shared\u0027],"},{"line_number":54,"context_line":"            help\u003d_(\u0027Action for the RBAC policy.\u0027))"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_8cbee5fe","line":52,"in_reply_to":"3a50d1a3_8a056c15","updated":"2015-07-31 16:12:57.000000000","message":"Yes. Please add \u0027required\u003dTrue\u0027.","commit_id":"ca3ba35da3594fb42fef4f1301387136496e204c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"bb75b30da72563be193548be16baaf49868287a6","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            help\u003d_(\u0027ID of the tenants to which the RBAC \u0027"},{"line_number":51,"context_line":"                   \u0027policy will be enforced.\u0027))"},{"line_number":52,"context_line":"        parser.add_argument("},{"line_number":53,"context_line":"            \u0027--action\u0027, choices\u003d[\u0027access_as_external\u0027, \u0027access_as_shared\u0027],"},{"line_number":54,"context_line":"            help\u003d_(\u0027Action for the RBAC policy.\u0027))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def args2body(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_aa71480e","line":53,"updated":"2015-07-31 11:28:18.000000000","message":"Don\u0027t make it as a choice list. Please refer to Kevin\u0027s comment in PS1.","commit_id":"ca3ba35da3594fb42fef4f1301387136496e204c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"811eb9843fa723333ae41d402272e36efdd7dbbc","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            help\u003d_(\u0027ID of the tenants to which the RBAC \u0027"},{"line_number":51,"context_line":"                   \u0027policy will be enforced.\u0027))"},{"line_number":52,"context_line":"        parser.add_argument("},{"line_number":53,"context_line":"            \u0027--action\u0027, choices\u003d[\u0027access_as_external\u0027, \u0027access_as_shared\u0027],"},{"line_number":54,"context_line":"            help\u003d_(\u0027Action for the RBAC policy.\u0027))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def args2body(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_2c5471c8","line":53,"in_reply_to":"3a50d1a3_aa71480e","updated":"2015-07-31 16:12:57.000000000","message":"Listing the current available choices in the help may help users.\nThey don\u0027t want to search a document to know what values are available.","commit_id":"ca3ba35da3594fb42fef4f1301387136496e204c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"313a0b02978b35b3a8671e98ed594b802d46f61b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    \"\"\"List RBAC policies that belong to a given tenant.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    resource \u003d \u0027rbac_policy\u0027"},{"line_number":24,"context_line":"    list_columns \u003d [\u0027id\u0027]"},{"line_number":25,"context_line":"    pagination_support \u003d True"},{"line_number":26,"context_line":"    sorting_support \u003d True"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_805e9374","line":24,"updated":"2015-08-05 05:45:55.000000000","message":"IMHO, we can display few more attributes.\n\nlist_columns \u003d [\u0027id\u0027, \u0027object-id\u0027]","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"313a0b02978b35b3a8671e98ed594b802d46f61b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        parser.add_argument("},{"line_number":42,"context_line":"            \u0027name\u0027,"},{"line_number":43,"context_line":"            metavar\u003d\u0027RBAC_OBJECT\u0027,"},{"line_number":44,"context_line":"            help\u003d_(\u0027ID or name of the RBAC policy.\u0027))"},{"line_number":45,"context_line":"        parser.add_argument("},{"line_number":46,"context_line":"            \u0027--type\u0027, choices\u003d[\u0027network\u0027],"},{"line_number":47,"context_line":"            required\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_e0bf57f9","line":44,"updated":"2015-08-05 05:45:55.000000000","message":"nit: help\u003d_(\u0027ID or name of the RBAC object.\u0027))","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7397538d3a7d2585db7d4c6771a066403d088d00","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        parser.add_argument("},{"line_number":42,"context_line":"            \u0027name\u0027,"},{"line_number":43,"context_line":"            metavar\u003d\u0027RBAC_OBJECT\u0027,"},{"line_number":44,"context_line":"            help\u003d_(\u0027ID or name of the RBAC policy.\u0027))"},{"line_number":45,"context_line":"        parser.add_argument("},{"line_number":46,"context_line":"            \u0027--type\u0027, choices\u003d[\u0027network\u0027],"},{"line_number":47,"context_line":"            required\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_49a66f11","line":44,"in_reply_to":"1a4dcd0f_e0bf57f9","updated":"2015-08-05 08:48:15.000000000","message":"+1","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"c1264ac831d1af3e32efa81f20ce872d675ba286","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            required\u003dTrue,"},{"line_number":48,"context_line":"            help\u003d_(\u0027Type of the object that RBAC policy affects.\u0027))"},{"line_number":49,"context_line":"        parser.add_argument("},{"line_number":50,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":51,"context_line":"            help\u003d_(\u0027ID of the tenants to which the RBAC \u0027"},{"line_number":52,"context_line":"                   \u0027policy will be enforced.\u0027))"},{"line_number":53,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_8537caaf","line":50,"updated":"2015-08-04 04:38:51.000000000","message":"Can multiple target-tenant id\u0027s could be provided here? If yes, then we got to parse all. Currently, I can find we only expect it to be one. Request you to clarify.","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7397538d3a7d2585db7d4c6771a066403d088d00","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            required\u003dTrue,"},{"line_number":48,"context_line":"            help\u003d_(\u0027Type of the object that RBAC policy affects.\u0027))"},{"line_number":49,"context_line":"        parser.add_argument("},{"line_number":50,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":51,"context_line":"            help\u003d_(\u0027ID of the tenants to which the RBAC \u0027"},{"line_number":52,"context_line":"                   \u0027policy will be enforced.\u0027))"},{"line_number":53,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_a9edb326","line":50,"in_reply_to":"1a4dcd0f_8537caaf","updated":"2015-08-05 08:48:15.000000000","message":"it is per tenant, not multiple","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"313a0b02978b35b3a8671e98ed594b802d46f61b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            help\u003d_(\u0027Type of the object that RBAC policy affects.\u0027))"},{"line_number":49,"context_line":"        parser.add_argument("},{"line_number":50,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":51,"context_line":"            help\u003d_(\u0027ID of the tenants to which the RBAC \u0027"},{"line_number":52,"context_line":"                   \u0027policy will be enforced.\u0027))"},{"line_number":53,"context_line":"        parser.add_argument("},{"line_number":54,"context_line":"            \u0027--action\u0027, choices\u003d[\u0027access_as_external\u0027, \u0027access_as_shared\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_e04af7c4","line":51,"updated":"2015-08-05 05:45:55.000000000","message":"tenants \u003d\u003d\u003e tenant","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7397538d3a7d2585db7d4c6771a066403d088d00","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            help\u003d_(\u0027Type of the object that RBAC policy affects.\u0027))"},{"line_number":49,"context_line":"        parser.add_argument("},{"line_number":50,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":51,"context_line":"            help\u003d_(\u0027ID of the tenants to which the RBAC \u0027"},{"line_number":52,"context_line":"                   \u0027policy will be enforced.\u0027))"},{"line_number":53,"context_line":"        parser.add_argument("},{"line_number":54,"context_line":"            \u0027--action\u0027, choices\u003d[\u0027access_as_external\u0027, \u0027access_as_shared\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_09df076a","line":51,"in_reply_to":"1a4dcd0f_e04af7c4","updated":"2015-08-05 08:48:15.000000000","message":"+1","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"313a0b02978b35b3a8671e98ed594b802d46f61b","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def args2body(self, parsed_args):"},{"line_number":59,"context_line":"        body \u003d {self.resource: {"},{"line_number":60,"context_line":"            \u0027object_id\u0027: parsed_args.name,"},{"line_number":61,"context_line":"            \u0027object_type\u0027: parsed_args.type,"},{"line_number":62,"context_line":"            \u0027target_tenant\u0027: parsed_args.target_tenant,"},{"line_number":63,"context_line":"            \u0027action\u0027: parsed_args.action,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_a02dcf47","line":60,"updated":"2015-08-05 05:45:55.000000000","message":"Translate name to id. Please do it in a separate function may be \"parse_and_fill_rbac_objectid\".","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7397538d3a7d2585db7d4c6771a066403d088d00","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def args2body(self, parsed_args):"},{"line_number":59,"context_line":"        body \u003d {self.resource: {"},{"line_number":60,"context_line":"            \u0027object_id\u0027: parsed_args.name,"},{"line_number":61,"context_line":"            \u0027object_type\u0027: parsed_args.type,"},{"line_number":62,"context_line":"            \u0027target_tenant\u0027: parsed_args.target_tenant,"},{"line_number":63,"context_line":"            \u0027action\u0027: parsed_args.action,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_49cbcfa5","line":60,"in_reply_to":"1a4dcd0f_a02dcf47","updated":"2015-08-05 08:48:15.000000000","message":"+1","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"313a0b02978b35b3a8671e98ed594b802d46f61b","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"class UpdateRBACPolicy(neutronV20.UpdateCommand):"},{"line_number":69,"context_line":"    \"\"\"Update RBAC entry for given tenant.\"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    resource \u003d \u0027rbac_policy\u0027"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_c016dba6","line":69,"updated":"2015-08-05 05:45:55.000000000","message":"entry \u003d\u003d\u003e policy","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7397538d3a7d2585db7d4c6771a066403d088d00","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"class UpdateRBACPolicy(neutronV20.UpdateCommand):"},{"line_number":69,"context_line":"    \"\"\"Update RBAC entry for given tenant.\"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    resource \u003d \u0027rbac_policy\u0027"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_29c1a380","line":69,"in_reply_to":"1a4dcd0f_c016dba6","updated":"2015-08-05 08:48:15.000000000","message":"+1","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"313a0b02978b35b3a8671e98ed594b802d46f61b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":74,"context_line":"        parser.add_argument("},{"line_number":75,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":76,"context_line":"            help\u003d_(\u0027ID of the tenants to which the RBAC \u0027"},{"line_number":77,"context_line":"                   \u0027policy will be enforced.\u0027))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def args2body(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_8039b343","line":76,"updated":"2015-08-05 05:45:55.000000000","message":"tenants \u003d\u003d\u003e tenant","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7397538d3a7d2585db7d4c6771a066403d088d00","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def add_known_arguments(self, parser):"},{"line_number":74,"context_line":"        parser.add_argument("},{"line_number":75,"context_line":"            \u0027--target-tenant\u0027,"},{"line_number":76,"context_line":"            help\u003d_(\u0027ID of the tenants to which the RBAC \u0027"},{"line_number":77,"context_line":"                   \u0027policy will be enforced.\u0027))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def args2body(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_e9badb09","line":76,"in_reply_to":"1a4dcd0f_8039b343","updated":"2015-08-05 08:48:15.000000000","message":"+1","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"a118ef4f5f26a2f680ac11bdebe73d55cd46a534","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutronclient.neutron import v2_0 as neutronV20"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"def get_RBAC_object_id(client, id_or_name):"},{"line_number":21,"context_line":"    return neutronV20.find_resourceid_by_name_or_id(client,"},{"line_number":22,"context_line":"                                                    \u0027rbac_policy\u0027, id_or_name)"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_d537404b","line":20,"updated":"2015-08-06 04:24:34.000000000","message":"This function should query the object resource as per the type. In the current implementation this function should query network resource.\n\ndef get_rbac_object_id(client, obj_type, obj_id_or_name):\n    if the obj_type\u003d\u003d\u0027network\u0027 then\n        obj_id \u003d neutronV20.find_resourceid_by_name_or_id(client,\n                                                          \u0027network\u0027,\n                                                           obj_id_or_name)\n    return obj_id","commit_id":"74393b7abd56e946471b67a51cd06b409ec1cd55"}],"neutronclient/shell.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"c1264ac831d1af3e32efa81f20ce872d675ba286","unresolved":false,"context_lines":[{"line_number":72,"context_line":"from neutronclient.neutron.v2_0 import policyprofile"},{"line_number":73,"context_line":"from neutronclient.neutron.v2_0 import port"},{"line_number":74,"context_line":"from neutronclient.neutron.v2_0 import quota"},{"line_number":75,"context_line":"from neutronclient.neutron.v2_0 import rbac"},{"line_number":76,"context_line":"from neutronclient.neutron.v2_0 import router"},{"line_number":77,"context_line":"from neutronclient.neutron.v2_0 import securitygroup"},{"line_number":78,"context_line":"from neutronclient.neutron.v2_0 import servicetype"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_a563e6b0","line":75,"updated":"2015-08-04 04:38:51.000000000","message":"Would you like to rename it as \"rbac_policy\"?","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"a12dc717714181fa806c3a159a29763d4bf29176","unresolved":false,"context_lines":[{"line_number":72,"context_line":"from neutronclient.neutron.v2_0 import policyprofile"},{"line_number":73,"context_line":"from neutronclient.neutron.v2_0 import port"},{"line_number":74,"context_line":"from neutronclient.neutron.v2_0 import quota"},{"line_number":75,"context_line":"from neutronclient.neutron.v2_0 import rbac"},{"line_number":76,"context_line":"from neutronclient.neutron.v2_0 import router"},{"line_number":77,"context_line":"from neutronclient.neutron.v2_0 import securitygroup"},{"line_number":78,"context_line":"from neutronclient.neutron.v2_0 import servicetype"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_29e4430b","line":75,"in_reply_to":"1a4dcd0f_a563e6b0","updated":"2015-08-05 08:49:57.000000000","message":"Just keep the name as per the command line. no impact","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"}],"neutronclient/tests/unit/test_cli20_rbac.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"811eb9843fa723333ae41d402272e36efdd7dbbc","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        cmd \u003d rbac.CreateRBACPolicy(test_cli20.MyApp(sys.stdout), None)"},{"line_number":27,"context_line":"        name \u003d \u0027policyname1\u0027"},{"line_number":28,"context_line":"        myid \u003d \u0027myid\u0027"},{"line_number":29,"context_line":"        args \u003d [name, \u0027--type\u0027, \u0027network\u0027,"},{"line_number":30,"context_line":"                \u0027--target-tenant\u0027, \u0027tenant_id\u0027,"},{"line_number":31,"context_line":"                \u0027--action\u0027, \u0027access_as_shared\u0027]"},{"line_number":32,"context_line":"        position_names \u003d [\u0027object_id\u0027, \u0027object_type\u0027,"},{"line_number":33,"context_line":"                          \u0027target_tenant\u0027, \u0027action\u0027]"},{"line_number":34,"context_line":"        position_values \u003d [name, \u0027network\u0027, \u0027tenant_id\u0027, \u0027access_as_shared\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_f72405b3","line":31,"range":{"start_line":29,"start_character":16,"end_line":31,"end_character":47},"updated":"2015-07-31 16:12:57.000000000","message":"I am not sure the test name (method name) \"test_create_rbac_policy_with_shared_action\" describes this combination of parameters. If not the method name should be more appropriate for future enhancement.\n\nAt least I would suggest that tests cover minimum and maximum combos of options.","commit_id":"ca3ba35da3594fb42fef4f1301387136496e204c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"bb75b30da72563be193548be16baaf49868287a6","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                                   position_names, position_values)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def test_create_rbac_policy_with_external_action(self):"},{"line_number":39,"context_line":"        \"\"\"Create rbac: policyname1 --type --target-tenant --action shared\"\"\""},{"line_number":40,"context_line":"        resource \u003d \u0027rbac_policy\u0027"},{"line_number":41,"context_line":"        cmd \u003d rbac.CreateRBACPolicy(test_cli20.MyApp(sys.stdout), None)"},{"line_number":42,"context_line":"        name \u003d \u0027policyname1\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_ea76703e","line":39,"updated":"2015-07-31 11:28:18.000000000","message":"\"--action shared\" should be \"--action access_as_external\"","commit_id":"ca3ba35da3594fb42fef4f1301387136496e204c"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"313a0b02978b35b3a8671e98ed594b802d46f61b","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        \"\"\"Create rbac: policyname1 --type network --action access_as_shared\"\"\""},{"line_number":25,"context_line":"        resource \u003d \u0027rbac_policy\u0027"},{"line_number":26,"context_line":"        cmd \u003d rbac.CreateRBACPolicy(test_cli20.MyApp(sys.stdout), None)"},{"line_number":27,"context_line":"        name \u003d \u0027policyname1\u0027"},{"line_number":28,"context_line":"        myid \u003d \u0027myid\u0027"},{"line_number":29,"context_line":"        args \u003d [name, \u0027--type\u0027, \u0027network\u0027,"},{"line_number":30,"context_line":"                \u0027--action\u0027, \u0027access_as_shared\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_00d8431c","line":27,"updated":"2015-08-05 05:45:55.000000000","message":"Can you please rename \"name \u003d \u0027rbac_object1\u0027","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7397538d3a7d2585db7d4c6771a066403d088d00","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        \"\"\"Create rbac: policyname1 --type network --action access_as_shared\"\"\""},{"line_number":25,"context_line":"        resource \u003d \u0027rbac_policy\u0027"},{"line_number":26,"context_line":"        cmd \u003d rbac.CreateRBACPolicy(test_cli20.MyApp(sys.stdout), None)"},{"line_number":27,"context_line":"        name \u003d \u0027policyname1\u0027"},{"line_number":28,"context_line":"        myid \u003d \u0027myid\u0027"},{"line_number":29,"context_line":"        args \u003d [name, \u0027--type\u0027, \u0027network\u0027,"},{"line_number":30,"context_line":"                \u0027--action\u0027, \u0027access_as_shared\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_a93b739b","line":27,"in_reply_to":"1a4dcd0f_00d8431c","updated":"2015-08-05 08:48:15.000000000","message":"+1","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"}],"neutronclient/v2_0/client.py":[{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"397edfb5caaf7215905c6ae614b0a7281fa188f0","unresolved":false,"context_lines":[{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"    @APIParamsCall"},{"line_number":1617,"context_line":"    def list_rbac_policies(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1618,"context_line":"        \"\"\"Fetch a list of all packet filters for a tenant.\"\"\""},{"line_number":1619,"context_line":"        return self.list(\u0027packet_filters\u0027, self.rbac_policies_path,"},{"line_number":1620,"context_line":"                         retrieve_all, **_params)"},{"line_number":1621,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_7a2495ae","line":1618,"updated":"2015-07-24 13:21:46.000000000","message":"nits: change the doc string from packet filters to rbac policies here and on L1624 and 1630","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"397edfb5caaf7215905c6ae614b0a7281fa188f0","unresolved":false,"context_lines":[{"line_number":1617,"context_line":"    def list_rbac_policies(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1618,"context_line":"        \"\"\"Fetch a list of all packet filters for a tenant.\"\"\""},{"line_number":1619,"context_line":"        return self.list(\u0027packet_filters\u0027, self.rbac_policies_path,"},{"line_number":1620,"context_line":"                         retrieve_all, **_params)"},{"line_number":1621,"context_line":""},{"line_number":1622,"context_line":"    @APIParamsCall"},{"line_number":1623,"context_line":"    def show_rbac_policy(self, rbac_policy_id, **_params):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_da3369f5","line":1620,"updated":"2015-07-24 13:21:46.000000000","message":"packet_filters?? I think that\u0027s a typo","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e044f8f2b988f54d45f4302ace059c9f03f516c","unresolved":false,"context_lines":[{"line_number":1621,"context_line":""},{"line_number":1622,"context_line":"    @APIParamsCall"},{"line_number":1623,"context_line":"    def show_rbac_policy(self, rbac_policy_id, **_params):"},{"line_number":1624,"context_line":"        \"\"\"Fetch information of a certain packet filter.\"\"\""},{"line_number":1625,"context_line":"        return self.get(self.rbac_policy_path % rbac_policy_id,"},{"line_number":1626,"context_line":"                        params\u003d_params)"},{"line_number":1627,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_5a82f9c9","line":1624,"updated":"2015-07-24 13:32:00.000000000","message":"Check the doc string. It\u0027s saying packet filter.","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e044f8f2b988f54d45f4302ace059c9f03f516c","unresolved":false,"context_lines":[{"line_number":1627,"context_line":""},{"line_number":1628,"context_line":"    @APIParamsCall"},{"line_number":1629,"context_line":"    def delete_rbac_policy(self, rbac_policy_id):"},{"line_number":1630,"context_line":"        \"\"\"Delete the specified packet filter.\"\"\""},{"line_number":1631,"context_line":"        return self.delete(self.rbac_policy_path % rbac_policy_id)"},{"line_number":1632,"context_line":""},{"line_number":1633,"context_line":"    def __init__(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_3a6a8d1b","line":1630,"updated":"2015-07-24 13:32:00.000000000","message":"Check the doc string. It\u0027s saying packet filter.","commit_id":"e5a22b74b0aab528e587181b2a668586377fc6e3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"c1264ac831d1af3e32efa81f20ce872d675ba286","unresolved":false,"context_lines":[{"line_number":1605,"context_line":""},{"line_number":1606,"context_line":"    @APIParamsCall"},{"line_number":1607,"context_line":"    def create_rbac_policy(self, body\u003dNone):"},{"line_number":1608,"context_line":"        \"\"\"Create a new rbac policy.\"\"\""},{"line_number":1609,"context_line":"        return self.post(self.rbac_policies_path, body\u003dbody)"},{"line_number":1610,"context_line":""},{"line_number":1611,"context_line":"    @APIParamsCall"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_450f82e1","line":1608,"updated":"2015-08-04 04:38:51.000000000","message":"How about capitalizing rbac in the comment... i.e. replace rbac with \"RBAC\"","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"},{"author":{"_account_id":16788,"name":"Ramanjaneya Reddy Palleti","email":"ramanjaneya.palleti@huawei.com","username":"Ramanjaneya"},"change_message_id":"7397538d3a7d2585db7d4c6771a066403d088d00","unresolved":false,"context_lines":[{"line_number":1605,"context_line":""},{"line_number":1606,"context_line":"    @APIParamsCall"},{"line_number":1607,"context_line":"    def create_rbac_policy(self, body\u003dNone):"},{"line_number":1608,"context_line":"        \"\"\"Create a new rbac policy.\"\"\""},{"line_number":1609,"context_line":"        return self.post(self.rbac_policies_path, body\u003dbody)"},{"line_number":1610,"context_line":""},{"line_number":1611,"context_line":"    @APIParamsCall"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_e9473b49","line":1608,"in_reply_to":"1a4dcd0f_450f82e1","updated":"2015-08-05 08:48:15.000000000","message":"+1","commit_id":"f5d999230d99c6bbcba2d7a321ebd27a2b6ee4ac"}]}
