)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":27329,"name":"Federico Ressi","email":"fressi@redhat.com","username":"fressi_redhat"},"change_message_id":"5b741aac4db12fdd61b9109fee959f12282edcc3","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Juan Antonio Osorio Robles \u003cjaosorior@redhat.com\u003e"},{"line_number":17,"context_line":"bp define-default-roles"},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/574149"},{"line_number":19,"context_line":"Change-Id: Ie18a269e3d1075d955fe494acaf634a393c6bd7b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5f7c97a3_125c6649","line":18,"range":{"start_line":18,"start_character":12,"end_line":18,"end_character":47},"updated":"2018-06-11 12:58:27.000000000","message":"Here you have to put the change ID this change depends on:\n\nDepends-On: I4827be8e62b57b1def420e66bed1a95af7bc8007","commit_id":"e8c3d7ce646faf1edb758f76379fe81bb49ddcd0"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"5cc78ac796c98e989812d33b17f35daff2cf6c1f","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Juan Antonio Osorio Robles \u003cjaosorior@redhat.com\u003e"},{"line_number":17,"context_line":"bp define-default-roles"},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/574149"},{"line_number":19,"context_line":"Change-Id: Ie18a269e3d1075d955fe494acaf634a393c6bd7b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5f7c97a3_dd135f00","line":18,"range":{"start_line":18,"start_character":12,"end_line":18,"end_character":47},"in_reply_to":"5f7c97a3_125c6649","updated":"2018-06-11 13:01:22.000000000","message":"That\u0027s not the case anymore. while that syntax still works, it is now possible to put the URL (and even the recommended way). https://docs.openstack.org/infra/manual/developers.html#cross-repository-dependencies","commit_id":"e8c3d7ce646faf1edb758f76379fe81bb49ddcd0"},{"author":{"_account_id":27329,"name":"Federico Ressi","email":"fressi@redhat.com","username":"fressi_redhat"},"change_message_id":"352ee97dc4d46d67878c90f0a10d954b514a5938","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Juan Antonio Osorio Robles \u003cjaosorior@redhat.com\u003e"},{"line_number":17,"context_line":"bp define-default-roles"},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/574149"},{"line_number":19,"context_line":"Change-Id: Ie18a269e3d1075d955fe494acaf634a393c6bd7b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5f7c97a3_7d780bf7","line":18,"range":{"start_line":18,"start_character":12,"end_line":18,"end_character":47},"in_reply_to":"5f7c97a3_dd135f00","updated":"2018-06-11 13:07:51.000000000","message":"Cool!","commit_id":"e8c3d7ce646faf1edb758f76379fe81bb49ddcd0"},{"author":{"_account_id":27329,"name":"Federico Ressi","email":"fressi@redhat.com","username":"fressi_redhat"},"change_message_id":"30d1dd5b29c10d27b284efe1c633626e73970fa7","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Juan Antonio Osorio Robles \u003cjaosorior@redhat.com\u003e"},{"line_number":17,"context_line":"bp define-default-roles"},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/574149"},{"line_number":19,"context_line":"Change-Id: Ie18a269e3d1075d955fe494acaf634a393c6bd7b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f7c97a3_9dbc07bc","line":18,"range":{"start_line":18,"start_character":12,"end_line":18,"end_character":47},"updated":"2018-06-11 13:04:56.000000000","message":"This requires the change ID this change depends on and not an URL","commit_id":"f194a2950d1458fbd5bda3f880cefd35bf38d8ef"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"9303648dceba0628844793a41cd931b652c046fa","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Juan Antonio Osorio Robles \u003cjaosorior@redhat.com\u003e"},{"line_number":17,"context_line":"bp define-default-roles"},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/574149"},{"line_number":19,"context_line":"Change-Id: Ie18a269e3d1075d955fe494acaf634a393c6bd7b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f7c97a3_9d1887d3","line":18,"range":{"start_line":18,"start_character":12,"end_line":18,"end_character":47},"in_reply_to":"5f7c97a3_7d056b79","updated":"2018-06-11 13:07:26.000000000","message":"sorry, the last comment without the URL was a mistake.","commit_id":"f194a2950d1458fbd5bda3f880cefd35bf38d8ef"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"6eeb8a8d8d583f28c5ae6a447304c76f649498b9","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Juan Antonio Osorio Robles \u003cjaosorior@redhat.com\u003e"},{"line_number":17,"context_line":"bp define-default-roles"},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/574149"},{"line_number":19,"context_line":"Change-Id: Ie18a269e3d1075d955fe494acaf634a393c6bd7b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f7c97a3_7d056b79","line":18,"range":{"start_line":18,"start_character":12,"end_line":18,"end_character":47},"in_reply_to":"5f7c97a3_9dbc07bc","updated":"2018-06-11 13:06:24.000000000","message":"Did you check my comment in the previous patch? Please read","commit_id":"f194a2950d1458fbd5bda3f880cefd35bf38d8ef"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"6eeb8a8d8d583f28c5ae6a447304c76f649498b9","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Juan Antonio Osorio Robles \u003cjaosorior@redhat.com\u003e"},{"line_number":17,"context_line":"bp define-default-roles"},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/574149"},{"line_number":19,"context_line":"Change-Id: Ie18a269e3d1075d955fe494acaf634a393c6bd7b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f7c97a3_3dfb737b","line":18,"range":{"start_line":18,"start_character":12,"end_line":18,"end_character":47},"in_reply_to":"5f7c97a3_9dbc07bc","updated":"2018-06-11 13:06:24.000000000","message":"did you check my comment in the previous patch? please read https://docs.openstack.org/infra/manual/developers.html#cross-repository-dependencies","commit_id":"f194a2950d1458fbd5bda3f880cefd35bf38d8ef"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a6a8ea7f903fdf5b0689ec818dffdcbc9fe071ec","unresolved":false,"context_lines":[{"line_number":14,"context_line":"role for \u0027member\u0027, and \u0027member\u0027 as an implied role for \u0027admin\u0027."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Juan Antonio Osorio Robles \u003cjaosorior@redhat.com\u003e"},{"line_number":17,"context_line":"bp define-default-roles"},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/574149"},{"line_number":19,"context_line":"Change-Id: Ie18a269e3d1075d955fe494acaf634a393c6bd7b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5f7c97a3_85f00593","line":17,"range":{"start_line":17,"start_character":3,"end_line":17,"end_character":23},"updated":"2018-06-12 20:34:29.000000000","message":"nit: bp basic-default-roles\n\nThe currently linked specification doesn\u0027t resolve to anything in launchpad.","commit_id":"010eac0e91eef36317b51a9313ad6b025c30cc30"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"a2405e2112dc2e6b75e25881c14eb53400f03c70","unresolved":false,"context_lines":[{"line_number":14,"context_line":"role for \u0027member\u0027, and \u0027member\u0027 as an implied role for \u0027admin\u0027."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Juan Antonio Osorio Robles \u003cjaosorior@redhat.com\u003e"},{"line_number":17,"context_line":"bp define-default-roles"},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/574149"},{"line_number":19,"context_line":"Change-Id: Ie18a269e3d1075d955fe494acaf634a393c6bd7b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5f7c97a3_402c1b01","line":17,"range":{"start_line":17,"start_character":3,"end_line":17,"end_character":23},"in_reply_to":"5f7c97a3_85f00593","updated":"2018-06-12 21:23:04.000000000","message":"Done","commit_id":"010eac0e91eef36317b51a9313ad6b025c30cc30"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a6a8ea7f903fdf5b0689ec818dffdcbc9fe071ec","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Co-Authored-By: Juan Antonio Osorio Robles \u003cjaosorior@redhat.com\u003e"},{"line_number":17,"context_line":"bp define-default-roles"},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/574149"},{"line_number":19,"context_line":"Change-Id: Ie18a269e3d1075d955fe494acaf634a393c6bd7b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5f7c97a3_c5603d04","line":19,"updated":"2018-06-12 20:34:29.000000000","message":"This is also going to need a release note [0].\n\n[0] https://docs.openstack.org/keystone/latest/contributor/release-notes.html#release-notes-for-features","commit_id":"010eac0e91eef36317b51a9313ad6b025c30cc30"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"a2405e2112dc2e6b75e25881c14eb53400f03c70","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Co-Authored-By: Juan Antonio Osorio Robles \u003cjaosorior@redhat.com\u003e"},{"line_number":17,"context_line":"bp define-default-roles"},{"line_number":18,"context_line":"Depends-On: https://review.openstack.org/574149"},{"line_number":19,"context_line":"Change-Id: Ie18a269e3d1075d955fe494acaf634a393c6bd7b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5f7c97a3_3b85925a","line":19,"in_reply_to":"5f7c97a3_c5603d04","updated":"2018-06-12 21:23:04.000000000","message":"Done","commit_id":"010eac0e91eef36317b51a9313ad6b025c30cc30"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"f489b7a655ebc0db81b93a3a2f5076a7ebd16936","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Expand bootstrap process to include creation of roles outlined in"},{"line_number":10,"context_line":"basic default roles spec."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This creates two more roles, besdides the \u0027admin\u0027 one. Namely,"},{"line_number":13,"context_line":"\u0027member\u0027 and \u0027reader\u0027. It also sets \u0027reader\u0027 to be an implied"},{"line_number":14,"context_line":"role for \u0027member\u0027, and \u0027member\u0027 as an implied role for \u0027admin\u0027."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5f7c97a3_d398f969","line":12,"range":{"start_line":12,"start_character":29,"end_line":12,"end_character":37},"updated":"2018-06-13 11:06:10.000000000","message":"typo","commit_id":"3f2485df849b637a07d1f521a10bd61db3b31d7a"}],"keystone/assignment/core.py":[{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"3861ef4333fff97179fbb08a16b502d2daef795a","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        role_ids \u003d list(set([x[\u0027role_id\u0027] for x in assignment_list]))"},{"line_number":166,"context_line":"        return PROVIDERS.role_api.list_roles_from_ids(role_ids)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    # TDOO(hrybacki): Review this module"},{"line_number":169,"context_line":"    def ensure_default_role(self):"},{"line_number":170,"context_line":"        try:"},{"line_number":171,"context_line":"            PROVIDERS.role_api.get_role(CONF.member_role_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_efc8b8a8","line":168,"updated":"2018-06-12 18:44:23.000000000","message":"This might cause issues when doing a search on \"TODO\", keep in mind if that\u0027s how you track your work.","commit_id":"f194a2950d1458fbd5bda3f880cefd35bf38d8ef"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"18bdd10566b3373b526082420f7929b0c8b208de","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        role_ids \u003d list(set([x[\u0027role_id\u0027] for x in assignment_list]))"},{"line_number":166,"context_line":"        return PROVIDERS.role_api.list_roles_from_ids(role_ids)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    # TDOO(hrybacki): Review this module"},{"line_number":169,"context_line":"    def ensure_default_role(self):"},{"line_number":170,"context_line":"        try:"},{"line_number":171,"context_line":"            PROVIDERS.role_api.get_role(CONF.member_role_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_6a09f6da","line":168,"in_reply_to":"5f7c97a3_efc8b8a8","updated":"2018-06-12 19:23:43.000000000","message":"Good catch. I\u0027ll clean up my cruft.","commit_id":"f194a2950d1458fbd5bda3f880cefd35bf38d8ef"}],"keystone/cmd/bootstrap.py":[{"author":{"_account_id":27329,"name":"Federico Ressi","email":"fressi@redhat.com","username":"fressi_redhat"},"change_message_id":"5b741aac4db12fdd61b9109fee959f12282edcc3","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            LOG.info(\u0027Created role %s\u0027, role_name)"},{"line_number":121,"context_line":"            return role"},{"line_number":122,"context_line":"        except exception.Conflict:"},{"line_number":123,"context_line":"            LOG.info("},{"line_number":124,"context_line":"                \u0027Role %s exists, skipping creation.\u0027, role_name"},{"line_number":125,"context_line":"            )"},{"line_number":126,"context_line":"            # NOTE(davechen): There is no backend method to get the role"},{"line_number":127,"context_line":"            # by name, so build the hints to list the roles and filter by"},{"line_number":128,"context_line":"            # name instead."}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_3dee1321","line":125,"range":{"start_line":123,"start_character":12,"end_line":125,"end_character":12},"updated":"2018-06-11 12:58:27.000000000","message":"No need to break this line. You can use up to 79 characters","commit_id":"e8c3d7ce646faf1edb758f76379fe81bb49ddcd0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a6a8ea7f903fdf5b0689ec818dffdcbc9fe071ec","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.project_id \u003d project[\u0027id\u0027]"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _ensure_role(self, role_name):"},{"line_number":113,"context_line":"        # NOTE(morganfainberg): Do not create the role if it already exists."},{"line_number":114,"context_line":"        try:"},{"line_number":115,"context_line":"            role_id \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_059cf50b","line":112,"range":{"start_line":112,"start_character":8,"end_line":112,"end_character":20},"updated":"2018-06-12 20:34:29.000000000","message":"nit: s/_ensure_role/_ensure_role_exists/\n\nOnly because it is a bit more clear what exactly we\u0027re ensuring. Otherwise without looking at the implementation of the method and only the calling code, it\u0027s hard to know what we mean by the method name (are we ensuring the role name contains certain characters, has a specific length, meets a different criteria, et cetera).","commit_id":"010eac0e91eef36317b51a9313ad6b025c30cc30"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"a2405e2112dc2e6b75e25881c14eb53400f03c70","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.project_id \u003d project[\u0027id\u0027]"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _ensure_role(self, role_name):"},{"line_number":113,"context_line":"        # NOTE(morganfainberg): Do not create the role if it already exists."},{"line_number":114,"context_line":"        try:"},{"line_number":115,"context_line":"            role_id \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_e051a763","line":112,"range":{"start_line":112,"start_character":8,"end_line":112,"end_character":20},"in_reply_to":"5f7c97a3_059cf50b","updated":"2018-06-12 21:23:04.000000000","message":"Done","commit_id":"010eac0e91eef36317b51a9313ad6b025c30cc30"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a6a8ea7f903fdf5b0689ec818dffdcbc9fe071ec","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        self.admin_user_id \u003d user[\u0027id\u0027]"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def _bootstrap_admin_role(self):"},{"line_number":210,"context_line":"        role \u003d self._ensure_role(self.admin_role_name)"},{"line_number":211,"context_line":"        self.admin_role_id \u003d role[\u0027id\u0027]"},{"line_number":212,"context_line":"        self._ensure_implied_role(self.admin_role_id, self.member_role_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_e5ad3931","line":209,"updated":"2018-06-12 20:34:29.000000000","message":"nit: thanks for generalizing this enough for all cases. We could group this up with the other two wrapper methods for member and reader.","commit_id":"010eac0e91eef36317b51a9313ad6b025c30cc30"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"a2405e2112dc2e6b75e25881c14eb53400f03c70","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        self.admin_user_id \u003d user[\u0027id\u0027]"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def _bootstrap_admin_role(self):"},{"line_number":210,"context_line":"        role \u003d self._ensure_role(self.admin_role_name)"},{"line_number":211,"context_line":"        self.admin_role_id \u003d role[\u0027id\u0027]"},{"line_number":212,"context_line":"        self._ensure_implied_role(self.admin_role_id, self.member_role_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_20b8ff72","line":209,"in_reply_to":"5f7c97a3_e5ad3931","updated":"2018-06-12 21:23:04.000000000","message":"Done","commit_id":"010eac0e91eef36317b51a9313ad6b025c30cc30"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"f489b7a655ebc0db81b93a3a2f5076a7ebd16936","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            # name instead."},{"line_number":125,"context_line":"            hints \u003d driver_hints.Hints()"},{"line_number":126,"context_line":"            hints.add_filter(\u0027name\u0027, role_name)"},{"line_number":127,"context_line":"            return PROVIDERS.role_api.list_roles(hints)[0]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def _ensure_implied_role(self, prior_role_id, implied_role_id):"},{"line_number":130,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_b3e3fdd7","line":127,"range":{"start_line":127,"start_character":38,"end_line":127,"end_character":58},"updated":"2018-06-13 11:06:10.000000000","message":"You could use get_unique_role_by_name here.","commit_id":"3f2485df849b637a07d1f521a10bd61db3b31d7a"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"ef02d2cd6e890c5c01abc9a49eebc3c6a578c109","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            # name instead."},{"line_number":125,"context_line":"            hints \u003d driver_hints.Hints()"},{"line_number":126,"context_line":"            hints.add_filter(\u0027name\u0027, role_name)"},{"line_number":127,"context_line":"            return PROVIDERS.role_api.list_roles(hints)[0]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def _ensure_implied_role(self, prior_role_id, implied_role_id):"},{"line_number":130,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_f37975fb","line":127,"range":{"start_line":127,"start_character":38,"end_line":127,"end_character":58},"in_reply_to":"5f7c97a3_b3e3fdd7","updated":"2018-06-13 11:10:20.000000000","message":"Thanks for the suggestion, I think it can be addressed in a subsequent commit. This was directly taken from the previous implementation of _bootstrap_admin_role, which you can see on the left in line 159. It was left almost as-is in order to reduce the scope of the change. But it is a nice refactoring idea :)","commit_id":"3f2485df849b637a07d1f521a10bd61db3b31d7a"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"aa2f9812b4f136134d00d2916d9f24c97856f79e","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            # name instead."},{"line_number":125,"context_line":"            hints \u003d driver_hints.Hints()"},{"line_number":126,"context_line":"            hints.add_filter(\u0027name\u0027, role_name)"},{"line_number":127,"context_line":"            return PROVIDERS.role_api.list_roles(hints)[0]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def _ensure_implied_role(self, prior_role_id, implied_role_id):"},{"line_number":130,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_6e225854","line":127,"range":{"start_line":127,"start_character":38,"end_line":127,"end_character":58},"in_reply_to":"5f7c97a3_f37975fb","updated":"2018-06-13 11:45:06.000000000","message":"Totally agree, that was just a minor nitpick. My main question was on the overall review.","commit_id":"3f2485df849b637a07d1f521a10bd61db3b31d7a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3a80feb32ae1db5c0c2870dbfcc13e5737b95d8a","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                prior_role_id,"},{"line_number":136,"context_line":"                implied_role_id"},{"line_number":137,"context_line":"            )"},{"line_number":138,"context_line":"        except exception.Conflict:"},{"line_number":139,"context_line":"            LOG.info("},{"line_number":140,"context_line":"                \u0027Implied role where %s implies %s exists, skipping creation.\u0027,"},{"line_number":141,"context_line":"                prior_role_id,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_da73204d","line":138,"range":{"start_line":138,"start_character":8,"end_line":138,"end_character":34},"updated":"2018-06-13 18:29:18.000000000","message":"Can we add a test that ensures this case gets hit?","commit_id":"f5fb5035510536394a92727362d2c34308079abb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"edf798aaa3e0c74523821cb055b8e6c0691453ac","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                prior_role_id,"},{"line_number":136,"context_line":"                implied_role_id"},{"line_number":137,"context_line":"            )"},{"line_number":138,"context_line":"        except exception.Conflict:"},{"line_number":139,"context_line":"            LOG.info("},{"line_number":140,"context_line":"                \u0027Implied role where %s implies %s exists, skipping creation.\u0027,"},{"line_number":141,"context_line":"                prior_role_id,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_d25f733e","line":138,"range":{"start_line":138,"start_character":8,"end_line":138,"end_character":34},"in_reply_to":"5f7c97a3_14f5e082","updated":"2018-06-14 14:59:33.000000000","message":"Oh good call - thanks!","commit_id":"f5fb5035510536394a92727362d2c34308079abb"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"275434af35c3b49c04cfa037f6e89f82fd925ca4","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                prior_role_id,"},{"line_number":136,"context_line":"                implied_role_id"},{"line_number":137,"context_line":"            )"},{"line_number":138,"context_line":"        except exception.Conflict:"},{"line_number":139,"context_line":"            LOG.info("},{"line_number":140,"context_line":"                \u0027Implied role where %s implies %s exists, skipping creation.\u0027,"},{"line_number":141,"context_line":"                prior_role_id,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_14f5e082","line":138,"range":{"start_line":138,"start_character":8,"end_line":138,"end_character":34},"in_reply_to":"5f7c97a3_da73204d","updated":"2018-06-14 09:36:34.000000000","message":"From the test coverage report of this run, we can see that it gets called: http://logs.openstack.org/43/572243/13/check/openstack-tox-cover/d31954d/cover/keystone_cmd_bootstrap_py.html#n129\n\nThat one gets hit on this test (test_bootstrap_is_idempotent_when_password_does_not_change): https://github.com/openstack/keystone/blob/master/keystone/tests/unit/test_cli.py#L155\n\nwhich calls the bootstrap command twice.","commit_id":"f5fb5035510536394a92727362d2c34308079abb"}],"releasenotes/notes/bp-basic-default-roles-4ff6502b6ac57d48.yaml":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0368aee86d0c6e595bf052e942dd7567345178df","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"      [`blueprint basic-default-roles  \u003chttps://blueprints.launchpad.net/keystone/+spec/basic-default-roles\u003e`_]"},{"line_number":5,"context_line":"      Keystone now deploys two new roles during the bootstrap process -- `reader` and `member` in addition to the"},{"line_number":6,"context_line":"      `admin` role."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5f7c97a3_049f12b4","line":5,"range":{"start_line":5,"start_character":6,"end_line":5,"end_character":18},"updated":"2018-06-13 01:43:41.000000000","message":"This can probably be implied by the fact this will be published in the keystone release notes. Could just say \"Support had been added for...\"\n\nThese are also usually wrapped at 80 characters, but I don\u0027t think there is anything that performs a strict check on that.","commit_id":"7398386477363417a2761c69c14f070c30b94c74"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3a80feb32ae1db5c0c2870dbfcc13e5737b95d8a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"      role already exists, a role implication chain will be created: `admin`"},{"line_number":11,"context_line":"      implies `member` implies `reader`. See"},{"line_number":12,"context_line":"      [`blueprint basic-default-roles  \u003chttps://blueprints.launchpad.net/keystone/+spec/basic-default-roles\u003e`_]"},{"line_number":13,"context_line":"      for more details."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"5f7c97a3_3ac7b447","line":13,"updated":"2018-06-13 18:29:18.000000000","message":"We could elaborate on this further by saying \"if you do not want these role implications in place, please undo them after running bootstrap, or don\u0027t run bootstrap\".","commit_id":"f5fb5035510536394a92727362d2c34308079abb"}]}
