)]}'
{"doc/source/event_notifications.rst":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"e97908726817c49c25cd6663b652ac4f31ac467c","unresolved":false,"context_lines":[{"line_number":29,"context_line":"A notification is sent when a resource is successfully ``created``,"},{"line_number":30,"context_line":"``updated``, or ``deleted``. The following resource types (where a"},{"line_number":31,"context_line":"``\u003cresource type\u003e`` is always a singular noun) produce notifications. For"},{"line_number":32,"context_line":"resources types that are immutable, like trusts, notifications are only sent"},{"line_number":33,"context_line":"on creation and deletion of that resource:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"- ``group``"}],"source_content_type":"text/x-rst","patch_set":6,"id":"AAAAUH%2F%2FK7Q%3D","line":32,"updated":"2014-01-16 19:11:38.000000000","message":"For resource types that are immutable, like trust, notifications are only sent","commit_id":"1f660c449f5891f999ff5285dc95fc5f705a6b85"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"113f24fa908107979741bfc61a38a0ffb4aacbc1","unresolved":false,"context_lines":[{"line_number":29,"context_line":"A notification is sent when a resource is successfully ``created``,"},{"line_number":30,"context_line":"``updated``, or ``deleted``. The following resource types (where a"},{"line_number":31,"context_line":"``\u003cresource type\u003e`` is always a singular noun) produce notifications. For"},{"line_number":32,"context_line":"resources types that are immutable, like trusts, notifications are only sent"},{"line_number":33,"context_line":"on creation and deletion of that resource:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"- ``group``"}],"source_content_type":"text/x-rst","patch_set":6,"id":"AAAAUH%2F%2FKz4%3D","line":32,"in_reply_to":"AAAAUH%2F%2FK7Q%3D","updated":"2014-01-16 19:23:49.000000000","message":"Done","commit_id":"1f660c449f5891f999ff5285dc95fc5f705a6b85"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"286ab5a228ff62093d09b58f4c7236e63030c2c0","unresolved":false,"context_lines":[{"line_number":29,"context_line":"A notification is sent when a resource is successfully ``created``,"},{"line_number":30,"context_line":"``updated``, or ``deleted``. The following resource types (where a"},{"line_number":31,"context_line":"``\u003cresource type\u003e`` is always a singular noun) produce notifications. For"},{"line_number":32,"context_line":"resource types that are immutable, like trust, notifications are only sent"},{"line_number":33,"context_line":"on creation and deletion of that resource:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"- ``group``"}],"source_content_type":"text/x-rst","patch_set":8,"id":"AAAAUH%2F%2B7wY%3D","line":32,"updated":"2014-01-20 16:33:28.000000000","message":"nit: i think trust should be pluralized to trusts.","commit_id":"4c74bc92db207514d5595cf8e447bf9fe52a7068"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"98c4c82badab947db678af627f893def768dfe35","unresolved":false,"context_lines":[{"line_number":29,"context_line":"A notification is sent when a resource is successfully ``created``,"},{"line_number":30,"context_line":"``updated``, or ``deleted``. The following resource types (where a"},{"line_number":31,"context_line":"``\u003cresource type\u003e`` is always a singular noun) produce notifications. For"},{"line_number":32,"context_line":"resource types that are immutable, like trust, notifications are only sent"},{"line_number":33,"context_line":"on creation and deletion of that resource:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"- ``group``"}],"source_content_type":"text/x-rst","patch_set":8,"id":"AAAAUH%2F%2B0H8%3D","line":32,"in_reply_to":"AAAAUH%2F%2B7n8%3D","updated":"2014-01-21 20:29:29.000000000","message":"I would vote for trusts here.","commit_id":"4c74bc92db207514d5595cf8e447bf9fe52a7068"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d048cc71cd0ef5628f14f8ca1f3da4647c6559fb","unresolved":false,"context_lines":[{"line_number":29,"context_line":"A notification is sent when a resource is successfully ``created``,"},{"line_number":30,"context_line":"``updated``, or ``deleted``. The following resource types (where a"},{"line_number":31,"context_line":"``\u003cresource type\u003e`` is always a singular noun) produce notifications. For"},{"line_number":32,"context_line":"resource types that are immutable, like trust, notifications are only sent"},{"line_number":33,"context_line":"on creation and deletion of that resource:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"- ``group``"}],"source_content_type":"text/x-rst","patch_set":8,"id":"AAAAUH%2F%2B7n8%3D","line":32,"in_reply_to":"AAAAUH%2F%2B7wY%3D","updated":"2014-01-20 16:48:37.000000000","message":"I think I originally had it that way, but gyee thought it should be \u0027trust\u0027 \u003d) \n\nhttps://review.openstack.org/#/c/66719/6/doc/source/event_notifications.rst\n\nI\u0027m fine with changing it either way.","commit_id":"4c74bc92db207514d5595cf8e447bf9fe52a7068"}],"keystone/tests/test_notifications.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"749c808f0d1ffba01d9d75320fe62043a0a75fc2","unresolved":false,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def test_delete_trust(self):"},{"line_number":243,"context_line":"        trustor \u003d self.new_user_ref(domain_id\u003dself.domain_id)"},{"line_number":244,"context_line":"        trustee \u003d self.new_user_ref(domain_id\u003dself.domain_id)"},{"line_number":245,"context_line":"        role_ref \u003d self.new_role_ref()"},{"line_number":246,"context_line":"        trust_ref \u003d self.new_trust_ref(trustor[\u0027id\u0027], trustee[\u0027id\u0027])"},{"line_number":247,"context_line":"        self.trust_api.create_trust(trust_ref[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FOlM%3D","line":244,"updated":"2014-01-16 06:14:42.000000000","message":"hmm, the trustee and trustor are never actually created","commit_id":"15c4a41a28852502f36bc408fc22da0435d8cb7c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"70703429c5bc4ecd91cf437b2fb39f4397000d30","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        trustee \u003d self.new_user_ref(domain_id\u003dself.domain_id)"},{"line_number":245,"context_line":"        role_ref \u003d self.new_role_ref()"},{"line_number":246,"context_line":"        trust_ref \u003d self.new_trust_ref(trustor[\u0027id\u0027], trustee[\u0027id\u0027])"},{"line_number":247,"context_line":"        self.trust_api.create_trust(trust_ref[\u0027id\u0027],"},{"line_number":248,"context_line":"                                    trust_ref,"},{"line_number":249,"context_line":"                                    [role_ref])"},{"line_number":250,"context_line":"        self.trust_api.delete_trust(trust_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FPBs%3D","line":247,"updated":"2014-01-16 03:33:25.000000000","message":"i apologize, as this is totally out of scope, but shouldn\u0027t the trustor or trustee need to have the role assigned to them first? before the trust is actually created? \n\nunless the notification is triggered regardless of (un)successful completion of the event?","commit_id":"15c4a41a28852502f36bc408fc22da0435d8cb7c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7126315664af8f0c43138a5e432833dbcd094cbf","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        trustee \u003d self.new_user_ref(domain_id\u003dself.domain_id)"},{"line_number":245,"context_line":"        role_ref \u003d self.new_role_ref()"},{"line_number":246,"context_line":"        trust_ref \u003d self.new_trust_ref(trustor[\u0027id\u0027], trustee[\u0027id\u0027])"},{"line_number":247,"context_line":"        self.trust_api.create_trust(trust_ref[\u0027id\u0027],"},{"line_number":248,"context_line":"                                    trust_ref,"},{"line_number":249,"context_line":"                                    [role_ref])"},{"line_number":250,"context_line":"        self.trust_api.delete_trust(trust_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FMfc%3D","line":247,"in_reply_to":"AAAAUH%2F%2FNmY%3D","updated":"2014-01-16 15:16:49.000000000","message":"Steve, I think I am going to have to leave the role in the trust_api call. The trust_api is expecting it: \n\nhttp://paste.openstack.org/show/61367/","commit_id":"15c4a41a28852502f36bc408fc22da0435d8cb7c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"749c808f0d1ffba01d9d75320fe62043a0a75fc2","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        trustee \u003d self.new_user_ref(domain_id\u003dself.domain_id)"},{"line_number":245,"context_line":"        role_ref \u003d self.new_role_ref()"},{"line_number":246,"context_line":"        trust_ref \u003d self.new_trust_ref(trustor[\u0027id\u0027], trustee[\u0027id\u0027])"},{"line_number":247,"context_line":"        self.trust_api.create_trust(trust_ref[\u0027id\u0027],"},{"line_number":248,"context_line":"                                    trust_ref,"},{"line_number":249,"context_line":"                                    [role_ref])"},{"line_number":250,"context_line":"        self.trust_api.delete_trust(trust_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FOkk%3D","line":247,"in_reply_to":"AAAAUH%2F%2FO%2Bo%3D","updated":"2014-01-16 06:14:42.000000000","message":"as you mentioned, a trust can actually be created without any roles.\n\ncan you call identity_api to actually create the users, right now they are just refs, and get rid of the roles stuff? since roles can be just an empty list. that way, i know for certain that the trust is being created successfully.\n\nrepeat for create case","commit_id":"15c4a41a28852502f36bc408fc22da0435d8cb7c"},{"author":{"_account_id":9954,"name":"Lance Bragstad","username":"lbragstad","inactive":true},"change_message_id":"8ed11183e3d7f2a19c35e96b646454c4662a4041","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        trustee \u003d self.new_user_ref(domain_id\u003dself.domain_id)"},{"line_number":245,"context_line":"        role_ref \u003d self.new_role_ref()"},{"line_number":246,"context_line":"        trust_ref \u003d self.new_trust_ref(trustor[\u0027id\u0027], trustee[\u0027id\u0027])"},{"line_number":247,"context_line":"        self.trust_api.create_trust(trust_ref[\u0027id\u0027],"},{"line_number":248,"context_line":"                                    trust_ref,"},{"line_number":249,"context_line":"                                    [role_ref])"},{"line_number":250,"context_line":"        self.trust_api.delete_trust(trust_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FNmY%3D","line":247,"in_reply_to":"AAAAUH%2F%2FOkk%3D","updated":"2014-01-16 10:18:39.000000000","message":"sure, I\u0027ll get a new patchset on the way","commit_id":"15c4a41a28852502f36bc408fc22da0435d8cb7c"},{"author":{"_account_id":9954,"name":"Lance Bragstad","username":"lbragstad","inactive":true},"change_message_id":"e580242104c16c291df440511728a290c748e923","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        trustee \u003d self.new_user_ref(domain_id\u003dself.domain_id)"},{"line_number":245,"context_line":"        role_ref \u003d self.new_role_ref()"},{"line_number":246,"context_line":"        trust_ref \u003d self.new_trust_ref(trustor[\u0027id\u0027], trustee[\u0027id\u0027])"},{"line_number":247,"context_line":"        self.trust_api.create_trust(trust_ref[\u0027id\u0027],"},{"line_number":248,"context_line":"                                    trust_ref,"},{"line_number":249,"context_line":"                                    [role_ref])"},{"line_number":250,"context_line":"        self.trust_api.delete_trust(trust_ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FO%2Bo%3D","line":247,"in_reply_to":"AAAAUH%2F%2FPBs%3D","updated":"2014-01-16 04:05:09.000000000","message":"I believe bknudson what the one who originally suggested using decorators: \n\nhttps://review.openstack.org/#/c/41970/14/keystone/identity/core.py\n\nI thought there was some discussion going on in #openstack-dev about this as well around the time that patch landed. \n\nDigging to see if I can find some docs for decorators, so we can include those if possible.","commit_id":"15c4a41a28852502f36bc408fc22da0435d8cb7c"}],"keystone/trust/core.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"30640307867e12112f8dce7d83df3d7be0f33858","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        :raises: keystone.exception.TrustNotFound"},{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        try:"},{"line_number":63,"context_line":"            self.driver.delete_trust(trust_id)"},{"line_number":64,"context_line":"        except exception.NotFound:"},{"line_number":65,"context_line":"            raise exception.TrustNotFound(trust_id\u003dtrust_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FRNA%3D","line":62,"updated":"2014-01-15 16:55:40.000000000","message":"i don\u0027t think you need to try/except, sine the drivers will handle that","commit_id":"d41a6091eef38b9b60e685cbc39d9694828b9fd0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"74a1616dd0827d077557e57666a6df1f8ed02b1f","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        :raises: keystone.exception.TrustNotFound"},{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        try:"},{"line_number":63,"context_line":"            self.driver.delete_trust(trust_id)"},{"line_number":64,"context_line":"        except exception.NotFound:"},{"line_number":65,"context_line":"            raise exception.TrustNotFound(trust_id\u003dtrust_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FQCY%3D","line":62,"in_reply_to":"AAAAUH%2F%2FRNA%3D","updated":"2014-01-15 21:46:14.000000000","message":"Done","commit_id":"d41a6091eef38b9b60e685cbc39d9694828b9fd0"}]}
