)]}'
{"keystone/assignment/core.py":[{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"5351f9f8abf902d0f28c339d341f37ff39d29913","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        tenant \u003d tenant.copy()"},{"line_number":96,"context_line":"        if \u0027enabled\u0027 in tenant:"},{"line_number":97,"context_line":"            tenant[\u0027enabled\u0027] \u003d clean.project_enabled(tenant[\u0027enabled\u0027])"},{"line_number":98,"context_line":"        if (original_tenant.get(\u0027enabled\u0027, True) and"},{"line_number":99,"context_line":"                not tenant.get(\u0027enabled\u0027, True)):"},{"line_number":100,"context_line":"            self._disable_project(tenant_id)"},{"line_number":101,"context_line":"        ret \u003d self.driver.update_project(tenant_id, tenant)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_a97d3d6f","line":98,"updated":"2014-06-19 05:11:07.000000000","message":"May be I\u0027m missing something. How is notification affected by this change?","commit_id":"f2687379f7559e0e76b364d55207e9cf9ef39039"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"19ccf8fb040f5d6af2ebe6d3674dab9c22237c6d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        tenant \u003d tenant.copy()"},{"line_number":96,"context_line":"        if \u0027enabled\u0027 in tenant:"},{"line_number":97,"context_line":"            tenant[\u0027enabled\u0027] \u003d clean.project_enabled(tenant[\u0027enabled\u0027])"},{"line_number":98,"context_line":"        if (original_tenant.get(\u0027enabled\u0027, True) and"},{"line_number":99,"context_line":"                not tenant.get(\u0027enabled\u0027, True)):"},{"line_number":100,"context_line":"            self._disable_project(tenant_id)"},{"line_number":101,"context_line":"        ret \u003d self.driver.update_project(tenant_id, tenant)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_f605397a","line":98,"in_reply_to":"1ae5cdf2_6d95eee2","updated":"2014-06-20 03:30:06.000000000","message":"My question was, decorator emits the notification  unless there is exception.  So irrespective of the  status, the client is going to get the notification","commit_id":"f2687379f7559e0e76b364d55207e9cf9ef39039"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"36b15945d85698427dd2d08fc459ff10360fdcb1","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        tenant \u003d tenant.copy()"},{"line_number":96,"context_line":"        if \u0027enabled\u0027 in tenant:"},{"line_number":97,"context_line":"            tenant[\u0027enabled\u0027] \u003d clean.project_enabled(tenant[\u0027enabled\u0027])"},{"line_number":98,"context_line":"        if (original_tenant.get(\u0027enabled\u0027, True) and"},{"line_number":99,"context_line":"                not tenant.get(\u0027enabled\u0027, True)):"},{"line_number":100,"context_line":"            self._disable_project(tenant_id)"},{"line_number":101,"context_line":"        ret \u003d self.driver.update_project(tenant_id, tenant)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_b70561c3","line":98,"in_reply_to":"1ae5cdf2_986dd634","updated":"2014-06-28 04:53:18.000000000","message":"Thanks for the response. Got it","commit_id":"f2687379f7559e0e76b364d55207e9cf9ef39039"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"6321821bb6c35cb10f068dadbd39f07876cd5b1c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        tenant \u003d tenant.copy()"},{"line_number":96,"context_line":"        if \u0027enabled\u0027 in tenant:"},{"line_number":97,"context_line":"            tenant[\u0027enabled\u0027] \u003d clean.project_enabled(tenant[\u0027enabled\u0027])"},{"line_number":98,"context_line":"        if (original_tenant.get(\u0027enabled\u0027, True) and"},{"line_number":99,"context_line":"                not tenant.get(\u0027enabled\u0027, True)):"},{"line_number":100,"context_line":"            self._disable_project(tenant_id)"},{"line_number":101,"context_line":"        ret \u003d self.driver.update_project(tenant_id, tenant)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_6d95eee2","line":98,"in_reply_to":"1ae5cdf2_a97d3d6f","updated":"2014-06-19 15:15:19.000000000","message":"The disable wont be emitted if the original tenant is \u0027enabled\u0027 and the update isn\u0027t disabling it.\n\nPreviously we only looked at the update and even if the original tenant was disabled we would re-emit if the update contained \u0027enabled \u003d false\u0027.","commit_id":"f2687379f7559e0e76b364d55207e9cf9ef39039"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"084f3348b782762426995515d6a5f581e2848d1a","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        tenant \u003d tenant.copy()"},{"line_number":96,"context_line":"        if \u0027enabled\u0027 in tenant:"},{"line_number":97,"context_line":"            tenant[\u0027enabled\u0027] \u003d clean.project_enabled(tenant[\u0027enabled\u0027])"},{"line_number":98,"context_line":"        if (original_tenant.get(\u0027enabled\u0027, True) and"},{"line_number":99,"context_line":"                not tenant.get(\u0027enabled\u0027, True)):"},{"line_number":100,"context_line":"            self._disable_project(tenant_id)"},{"line_number":101,"context_line":"        ret \u003d self.driver.update_project(tenant_id, tenant)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_986dd634","line":98,"in_reply_to":"1ae5cdf2_f605397a","updated":"2014-06-22 16:55:22.000000000","message":"The update notification will always be emitted. The disabled (called via self._disable_project), will only be emitted when/if the projects enabled flag is toggled to False. \n\nThis simply prevents extra \u0027disabled\u0027 notifications from going out if the project is already disabled and the update contains \u0027enabled: False\u0027, since there was no change in the enabled flag state.","commit_id":"f2687379f7559e0e76b364d55207e9cf9ef39039"}],"keystone/tests/test_notifications.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"91e5bed5b3466818fadbd8758e856e7f42174237","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def test_disable_of_disabled_domain_does_not_notify(self):"},{"line_number":320,"context_line":"        domain_ref \u003d self.new_domain_ref()"},{"line_number":321,"context_line":"        domain_ref[\u0027enabled\u0027] \u003d False"},{"line_number":322,"context_line":"        self.assignment_api.create_domain(domain_ref[\u0027id\u0027], domain_ref)"},{"line_number":323,"context_line":"        domain_ref[\u0027enabled\u0027] \u003d False"},{"line_number":324,"context_line":"        self.assignment_api.update_domain(domain_ref[\u0027id\u0027], domain_ref)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_a970c108","line":321,"updated":"2014-06-12 18:18:38.000000000","message":"Should we be popping the \u0027id\u0027 out of the request here?","commit_id":"467802c5ca47b829c2e1d4bf87c633b768f83840"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"139c85d607bb184fd1d5548e998aaa94119d897f","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def test_disable_of_disabled_domain_does_not_notify(self):"},{"line_number":320,"context_line":"        domain_ref \u003d self.new_domain_ref()"},{"line_number":321,"context_line":"        domain_ref[\u0027enabled\u0027] \u003d False"},{"line_number":322,"context_line":"        self.assignment_api.create_domain(domain_ref[\u0027id\u0027], domain_ref)"},{"line_number":323,"context_line":"        domain_ref[\u0027enabled\u0027] \u003d False"},{"line_number":324,"context_line":"        self.assignment_api.update_domain(domain_ref[\u0027id\u0027], domain_ref)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_2cdf5f3b","line":321,"in_reply_to":"1ae5cdf2_a970c108","updated":"2014-06-12 18:38:39.000000000","message":"Shouldn\u0027t matter in either case. If it\u0027s a blocker I can pop it out.","commit_id":"467802c5ca47b829c2e1d4bf87c633b768f83840"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"91e5bed5b3466818fadbd8758e856e7f42174237","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        project_ref \u003d self.new_project_ref(domain_id\u003dself.domain_id)"},{"line_number":351,"context_line":"        project_ref[\u0027enabled\u0027] \u003d False"},{"line_number":352,"context_line":"        self.assignment_api.create_project(project_ref[\u0027id\u0027], project_ref)"},{"line_number":353,"context_line":"        project_ref[\u0027enabled\u0027] \u003d False"},{"line_number":354,"context_line":"        self.assignment_api.update_project(project_ref[\u0027id\u0027], project_ref)"},{"line_number":355,"context_line":"        self._assertNotifyNotSent(project_ref[\u0027id\u0027], \u0027disabled\u0027, \u0027project\u0027,"},{"line_number":356,"context_line":"                                  public\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_49dd7ddf","line":353,"updated":"2014-06-12 18:18:38.000000000","message":"couldn\u0027t we replace the\n\n    project_ref[\u0027enabled\u0027] \u003d False\n\nwith a note? Since project_ref[\u0027enabled\u0027] doesn\u0027t need to be assigned again?","commit_id":"467802c5ca47b829c2e1d4bf87c633b768f83840"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"139c85d607bb184fd1d5548e998aaa94119d897f","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        project_ref \u003d self.new_project_ref(domain_id\u003dself.domain_id)"},{"line_number":351,"context_line":"        project_ref[\u0027enabled\u0027] \u003d False"},{"line_number":352,"context_line":"        self.assignment_api.create_project(project_ref[\u0027id\u0027], project_ref)"},{"line_number":353,"context_line":"        project_ref[\u0027enabled\u0027] \u003d False"},{"line_number":354,"context_line":"        self.assignment_api.update_project(project_ref[\u0027id\u0027], project_ref)"},{"line_number":355,"context_line":"        self._assertNotifyNotSent(project_ref[\u0027id\u0027], \u0027disabled\u0027, \u0027project\u0027,"},{"line_number":356,"context_line":"                                  public\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_ccd51b1d","line":353,"in_reply_to":"1ae5cdf2_49dd7ddf","updated":"2014-06-12 18:38:39.000000000","message":"Good point. Removed in next patch.","commit_id":"467802c5ca47b829c2e1d4bf87c633b768f83840"}]}
