)]}'
{"openstackclient/identity/v3/role.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"31a21cde69655e5e119c250c29be6bb2c5577e26","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                                           identity_client_manager):"},{"line_number":69,"context_line":"    kwargs \u003d {}"},{"line_number":70,"context_line":"    if parsed_args.user and parsed_args.system:"},{"line_number":71,"context_line":"        kwargs[\u0027user\u0027] \u003d common.find_user("},{"line_number":72,"context_line":"            identity_client_manager,"},{"line_number":73,"context_line":"            parsed_args.user,"},{"line_number":74,"context_line":"            parsed_args.user_domain,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_f7c70144","line":71,"updated":"2018-06-02 17:13:29.000000000","message":"I was concerned about the duplication of L71-75 and L78-82, but looking around it seems like we\u0027ve got duplicated blocks in the method anyway, so thats fine.","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4121fdee02b35ca99657c514ec35e3340afa2515","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                                           identity_client_manager):"},{"line_number":69,"context_line":"    kwargs \u003d {}"},{"line_number":70,"context_line":"    if parsed_args.user and parsed_args.system:"},{"line_number":71,"context_line":"        kwargs[\u0027user\u0027] \u003d common.find_user("},{"line_number":72,"context_line":"            identity_client_manager,"},{"line_number":73,"context_line":"            parsed_args.user,"},{"line_number":74,"context_line":"            parsed_args.user_domain,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_7dd3b9d6","line":71,"in_reply_to":"5f7c97a3_f7c70144","updated":"2018-06-04 20:09:02.000000000","message":"Yeah \u003d/","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"31a21cde69655e5e119c250c29be6bb2c5577e26","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"class AddRole(command.Command):"},{"line_number":131,"context_line":"    _description \u003d _(\"Adds a role assignment to a user or group on the \""},{"line_number":132,"context_line":"                     \"system, a domain, or a project\")"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_97c24d33","line":131,"updated":"2018-06-02 17:13:29.000000000","message":"\"the system\"? seems weird, but i\u0027m not familiar with the API so I\u0027ll take your word on it.","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4121fdee02b35ca99657c514ec35e3340afa2515","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"class AddRole(command.Command):"},{"line_number":131,"context_line":"    _description \u003d _(\"Adds a role assignment to a user or group on the \""},{"line_number":132,"context_line":"                     \"system, a domain, or a project\")"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_3d8301ac","line":131,"in_reply_to":"5f7c97a3_97c24d33","updated":"2018-06-04 20:09:02.000000000","message":"The system, at least how we\u0027ve been referring to it, is just a special thing that represents the deployment system.\n\nIt\u0027s pretty similar to what was proposed for the \"is admin project\" approach, but without the implication of the role and doesn\u0027t overload the term project with another thing. We pulled that concept out into a new term.\n\nIdeally, if you have a role on the system, you\u0027re allowed access API that manage deployment infrastructure and what whatnot. For example\n\n  openstack role add --user stevemar --system admin\n  openstack role add --user lbragstad --system reader\n  opnestack role add --user bob --project dev admin\n\nWould give you the ability the create, read, update, and delete new services/endpoints/hypervisors/etc... I would only be able to list and read them. Bob wouldn\u0027t be able to do any of those things because he\u0027s only authorized to operate on a project and doing anything to the deployment system would be a violation of project scope in some respects.\n\nHopefully that two-second version helps clarify some of the confusion behind what we\u0027re doing with the term \"system\".","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"31a21cde69655e5e119c250c29be6bb2c5577e26","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"class AddRole(command.Command):"},{"line_number":131,"context_line":"    _description \u003d _(\"Adds a role assignment to a user or group on the \""},{"line_number":132,"context_line":"                     \"system, a domain, or a project\")"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def get_parser(self, prog_name):"},{"line_number":135,"context_line":"        parser \u003d super(AddRole, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_b7bd09b2","line":132,"updated":"2018-06-02 17:13:29.000000000","message":"you\u0027ll need to update the docs/identity/role.rst stuff too","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2f32bc035564f7f651995deed5f998eec7a8c13a","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"class AddRole(command.Command):"},{"line_number":131,"context_line":"    _description \u003d _(\"Adds a role assignment to a user or group on the \""},{"line_number":132,"context_line":"                     \"system, a domain, or a project\")"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def get_parser(self, prog_name):"},{"line_number":135,"context_line":"        parser \u003d super(AddRole, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_6d6c149c","line":132,"in_reply_to":"5f7c97a3_651c7b13","updated":"2018-06-07 16:00:09.000000000","message":"Your +2 looks so nice that I decided to not disturb it and addressed this in a follow on.","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4121fdee02b35ca99657c514ec35e3340afa2515","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"class AddRole(command.Command):"},{"line_number":131,"context_line":"    _description \u003d _(\"Adds a role assignment to a user or group on the \""},{"line_number":132,"context_line":"                     \"system, a domain, or a project\")"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def get_parser(self, prog_name):"},{"line_number":135,"context_line":"        parser \u003d super(AddRole, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_bd1cf177","line":132,"in_reply_to":"5f7c97a3_b7bd09b2","updated":"2018-06-04 20:09:02.000000000","message":"In python-openstackclient? I\u0027m having trouble finding that document.","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"52054e1b099c127eb4cb7bebf7a5260a616cf28d","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"class AddRole(command.Command):"},{"line_number":131,"context_line":"    _description \u003d _(\"Adds a role assignment to a user or group on the \""},{"line_number":132,"context_line":"                     \"system, a domain, or a project\")"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def get_parser(self, prog_name):"},{"line_number":135,"context_line":"        parser \u003d super(AddRole, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_651c7b13","line":132,"in_reply_to":"5f7c97a3_bd1cf177","updated":"2018-06-05 01:37:09.000000000","message":"here: https://github.com/openstack/python-openstackclient/blob/master/doc/source/cli/command-objects/role.rst","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"}],"openstackclient/identity/v3/role_assignment.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fa1457c45980c5351426468d3036e70befecf8d3","unresolved":false,"context_lines":[{"line_number":3,"context_line":"#   a copy of the License at"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#        http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#   Unless required by applicable law or agreed to in writing, software"},{"line_number":8,"context_line":"#   distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":9,"context_line":"#   WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_d0b56a7f","side":"PARENT","line":6,"updated":"2018-05-30 13:53:22.000000000","message":"Unrelated damage.","commit_id":"d60141525987bc973802b4ec9a3b027e071d1966"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38ded841d938168d58b879289a2a3566d84901f6","unresolved":false,"context_lines":[{"line_number":3,"context_line":"#   a copy of the License at"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#        http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#   Unless required by applicable law or agreed to in writing, software"},{"line_number":8,"context_line":"#   distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":9,"context_line":"#   WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_33ee2822","side":"PARENT","line":6,"in_reply_to":"5f7c97a3_d0b56a7f","updated":"2018-05-30 15:38:26.000000000","message":"Done","commit_id":"d60141525987bc973802b4ec9a3b027e071d1966"}],"openstackclient/identity/v3/token.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"31a21cde69655e5e119c250c29be6bb2c5577e26","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            # keystone supports the ability to scope to a subset of the entire"},{"line_number":198,"context_line":"            # deployment system. When that happens, this will have to relay"},{"line_number":199,"context_line":"            # scope information and IDs like we do for projects and domains."},{"line_number":200,"context_line":"            data[\u0027system\u0027] \u003d \u0027all\u0027"},{"line_number":201,"context_line":"        return zip(*sorted(six.iteritems(data)))"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_d7d1a5fc","line":200,"updated":"2018-06-02 17:13:29.000000000","message":"shouldn\u0027t this come from keystoneauth instead of writing in \u0027all\u0027 ?","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4121fdee02b35ca99657c514ec35e3340afa2515","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            # keystone supports the ability to scope to a subset of the entire"},{"line_number":198,"context_line":"            # deployment system. When that happens, this will have to relay"},{"line_number":199,"context_line":"            # scope information and IDs like we do for projects and domains."},{"line_number":200,"context_line":"            data[\u0027system\u0027] \u003d \u0027all\u0027"},{"line_number":201,"context_line":"        return zip(*sorted(six.iteritems(data)))"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_f8b91715","line":200,"in_reply_to":"5f7c97a3_d7d1a5fc","updated":"2018-06-04 20:09:02.000000000","message":"It could, yeah. The auth_ref variable here is an instance of keystoneauth1.access.access.AccessInfoV3. It has two attributes related to system scope. One is system_scoped and is used on line 195 and a boolean, the second is system, which looks like:\n\n  {u\u0027all\u0027: True}\n\nDo you have thoughts on how to implement this with that kind of data structure, since it\u0027s not as straight forward as?\n\n  data[\u0027system\u0027] \u003d auth_ref.system","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f63f96162266887b40e47d79f3edea4bf7de3c73","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            # keystone supports the ability to scope to a subset of the entire"},{"line_number":198,"context_line":"            # deployment system. When that happens, this will have to relay"},{"line_number":199,"context_line":"            # scope information and IDs like we do for projects and domains."},{"line_number":200,"context_line":"            data[\u0027system\u0027] \u003d \u0027all\u0027"},{"line_number":201,"context_line":"        return zip(*sorted(six.iteritems(data)))"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_f06322dc","line":200,"in_reply_to":"5f7c97a3_e5308ba1","updated":"2018-06-07 13:44:27.000000000","message":"Well - doesn\u0027t data[\u0027system\u0027] need to be the actual target of what you\u0027re scoping to? Isn\u0027t it used in a request to keystone server?\n\n/me could be in left field.","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"52054e1b099c127eb4cb7bebf7a5260a616cf28d","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            # keystone supports the ability to scope to a subset of the entire"},{"line_number":198,"context_line":"            # deployment system. When that happens, this will have to relay"},{"line_number":199,"context_line":"            # scope information and IDs like we do for projects and domains."},{"line_number":200,"context_line":"            data[\u0027system\u0027] \u003d \u0027all\u0027"},{"line_number":201,"context_line":"        return zip(*sorted(six.iteritems(data)))"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_e5308ba1","line":200,"in_reply_to":"5f7c97a3_f8b91715","updated":"2018-06-05 01:37:09.000000000","message":"i suppose this is fine, maybe ...\n\n   data[\u0027system_scoped\u0027] \u003d auth_ref.system_scoped\n\njust spitballing here","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"}],"releasenotes/notes/implement-system-scope-4c3c47996f98deac.yaml":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"aae8bc38b7ac744691a1927f524b64e8eca5fd09","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The ``openstack`` CLI now supports the ability to generate system-scoped"},{"line_number":5,"context_line":"    tokens. This can be done by specifying ``system_scope: all`` in clouds.yaml"},{"line_number":6,"context_line":"    or sourcing ``OS_SYSTEM_SCOPE\u003dall`` in an environment variable."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"5f7c97a3_ee6ada7e","line":6,"updated":"2018-06-01 12:48:21.000000000","message":"I\u0027d reference the \"--os-system-scope\" option here, which of course then takes it\u0027s default value from that env variable.\n\nAlso, not sure whether that is a bug or expected behaviour, that option seems to be ignored when a project or domain is specified at the same time. Maybe we want at least to generated a warning in that case? Or even an error?","commit_id":"56b9289ed0d3b034d3a6a85aa608f6f147d63bbe"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"31a21cde69655e5e119c250c29be6bb2c5577e26","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The ``openstack`` CLI now supports the ability to generate system-scoped"},{"line_number":5,"context_line":"    tokens. This can be done by specifying ``system_scope: all`` in clouds.yaml"},{"line_number":6,"context_line":"    or sourcing ``OS_SYSTEM_SCOPE\u003dall`` in an environment variable."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5f7c97a3_97d7adee","line":4,"updated":"2018-06-02 17:13:29.000000000","message":"I don\u0027t think we need to write \"The ``openstack`` CLI\" since it\u0027s kinda obvious we\u0027re talking about it in it\u0027s own release notes :)\n\n\"Added support for the ability to ... \"","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4121fdee02b35ca99657c514ec35e3340afa2515","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The ``openstack`` CLI now supports the ability to generate system-scoped"},{"line_number":5,"context_line":"    tokens. This can be done by specifying ``system_scope: all`` in clouds.yaml"},{"line_number":6,"context_line":"    or sourcing ``OS_SYSTEM_SCOPE\u003dall`` in an environment variable."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5f7c97a3_7843c714","line":4,"in_reply_to":"5f7c97a3_97d7adee","updated":"2018-06-04 20:09:02.000000000","message":"Done","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"31a21cde69655e5e119c250c29be6bb2c5577e26","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The ``openstack`` CLI now supports the ability to generate system-scoped"},{"line_number":5,"context_line":"    tokens. This can be done by specifying ``system_scope: all`` in clouds.yaml"},{"line_number":6,"context_line":"    or sourcing ``OS_SYSTEM_SCOPE\u003dall`` in an environment variable."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5f7c97a3_b7d2e9fb","line":5,"updated":"2018-06-02 17:13:29.000000000","message":"Add backticks to `clouds.yaml`","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4121fdee02b35ca99657c514ec35e3340afa2515","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The ``openstack`` CLI now supports the ability to generate system-scoped"},{"line_number":5,"context_line":"    tokens. This can be done by specifying ``system_scope: all`` in clouds.yaml"},{"line_number":6,"context_line":"    or sourcing ``OS_SYSTEM_SCOPE\u003dall`` in an environment variable."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5f7c97a3_38454f16","line":5,"in_reply_to":"5f7c97a3_b7d2e9fb","updated":"2018-06-04 20:09:02.000000000","message":"Done","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"31a21cde69655e5e119c250c29be6bb2c5577e26","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The ``openstack`` CLI now supports the ability to generate system-scoped"},{"line_number":5,"context_line":"    tokens. This can be done by specifying ``system_scope: all`` in clouds.yaml"},{"line_number":6,"context_line":"    or sourcing ``OS_SYSTEM_SCOPE\u003dall`` in an environment variable."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5f7c97a3_5707d582","line":6,"updated":"2018-06-02 17:13:29.000000000","message":"You probably want to include notes on the new --system option for `role add`, `role remove` and `role list`","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4121fdee02b35ca99657c514ec35e3340afa2515","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The ``openstack`` CLI now supports the ability to generate system-scoped"},{"line_number":5,"context_line":"    tokens. This can be done by specifying ``system_scope: all`` in clouds.yaml"},{"line_number":6,"context_line":"    or sourcing ``OS_SYSTEM_SCOPE\u003dall`` in an environment variable."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5f7c97a3_18f653da","line":6,"in_reply_to":"5f7c97a3_5707d582","updated":"2018-06-04 20:09:02.000000000","message":"Done","commit_id":"0538ede7403a4728cc66d07a775f0bac5f622d70"}]}
