)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9bec78bda743c4282bc33bf53d5abba74c1bfa3a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"resources (project, user, role, etc...) for specific actions,"},{"line_number":11,"context_line":"such as: create/update/delete."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The end user have a choice, in the form of a config option to emit"},{"line_number":14,"context_line":"either cadf notifications, or the previous (basic) format."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"A seperate patch will include the refactoring needed in the manager"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"da86d52c_aa300202","line":13,"updated":"2015-02-03 15:28:22.000000000","message":"nit: s/have/has/","commit_id":"43e5435ed71b866dfe6e064235e9114fc8daf059"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"51c5b83cbd27f825e4e3fb63315176f8395e6b03","unresolved":false,"context_lines":[{"line_number":10,"context_line":"resources (project, user, role, etc...) for specific actions,"},{"line_number":11,"context_line":"such as: create/update/delete."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The end user have a choice, in the form of a config option to emit"},{"line_number":14,"context_line":"either cadf notifications, or the previous (basic) format."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"A seperate patch will include the refactoring needed in the manager"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"da86d52c_9e19bf7b","line":13,"in_reply_to":"da86d52c_aa300202","updated":"2015-02-03 16:15:18.000000000","message":"fixed in next patch","commit_id":"43e5435ed71b866dfe6e064235e9114fc8daf059"}],"etc/keystone.conf.sample":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"817b837b706d127320c202a69721d7de113925ad","unresolved":false,"context_lines":[{"line_number":360,"context_line":"#rpc_zmq_bind_address \u003d *"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"# MatchMaker driver. (string value)"},{"line_number":363,"context_line":"#rpc_zmq_matchmaker \u003d oslo.messaging._drivers.matchmaker.MatchMakerLocalhost"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"# ZeroMQ receiver listening port. (integer value)"},{"line_number":366,"context_line":"#rpc_zmq_port \u003d 9501"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"da86d52c_759381a3","line":363,"updated":"2015-02-02 16:48:09.000000000","message":"i\u0027m assuming this was incorrectly changed.","commit_id":"2b02babaded63535f5eb3895bdf00d2b5a1798af"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"fdc40fc0af8c89b316ab7d95f47ccf7750263ebf","unresolved":false,"context_lines":[{"line_number":360,"context_line":"#rpc_zmq_bind_address \u003d *"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"# MatchMaker driver. (string value)"},{"line_number":363,"context_line":"#rpc_zmq_matchmaker \u003d oslo.messaging._drivers.matchmaker.MatchMakerLocalhost"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"# ZeroMQ receiver listening port. (integer value)"},{"line_number":366,"context_line":"#rpc_zmq_port \u003d 9501"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"da86d52c_3747484d","line":363,"in_reply_to":"da86d52c_759381a3","updated":"2015-02-02 18:28:47.000000000","message":"most of these will be fixed once https://review.openstack.org/#/c/151505/ merges","commit_id":"2b02babaded63535f5eb3895bdf00d2b5a1798af"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"464844483afe5c411c8847a3a8942ec5638af319","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"# Define the notification format for Identity Service events. Valid options"},{"line_number":122,"context_line":"# are: basic and cadf (string value)"},{"line_number":123,"context_line":"#notification_format \u003d basic"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"#"},{"line_number":126,"context_line":"# From keystone.openstack.common.eventlet_backdoor"}],"source_content_type":"application/octet-stream","patch_set":18,"id":"da86d52c_6f6e1c98","line":123,"updated":"2015-02-03 14:47:38.000000000","message":"AFAIK, Mogran Fainberg asked not to update config samples to avoid rebase issues.","commit_id":"43e5435ed71b866dfe6e064235e9114fc8daf059"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"51c5b83cbd27f825e4e3fb63315176f8395e6b03","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"# Define the notification format for Identity Service events. Valid options"},{"line_number":122,"context_line":"# are: basic and cadf (string value)"},{"line_number":123,"context_line":"#notification_format \u003d basic"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"#"},{"line_number":126,"context_line":"# From keystone.openstack.common.eventlet_backdoor"}],"source_content_type":"application/octet-stream","patch_set":18,"id":"da86d52c_7b07bd1c","line":123,"in_reply_to":"da86d52c_6f6e1c98","updated":"2015-02-03 16:15:18.000000000","message":"i will undo these changes","commit_id":"43e5435ed71b866dfe6e064235e9114fc8daf059"}],"keystone/notifications.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"17e80a34239a439e4004a26a3fe7bb9cdda1e419","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    emits CADF events (_send_audit_notification). Specifically the"},{"line_number":238,"context_line":"    ``resource_type`` (role, user, etc) must be transformed into a CADF"},{"line_number":239,"context_line":"    keyword, such as: ``data/security/role``. The ``resource_id`` is added as a"},{"line_number":240,"context_line":"    top level value for the ``resource_info`` key. Lastly, the ``operation`` is"},{"line_number":241,"context_line":"    used to create the CADF ``action``, and the ``event_type`` name."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    As per the CADF specification, the ``action`` must start with create,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_9d121357","line":240,"updated":"2015-01-30 21:42:43.000000000","message":"Great comments!","commit_id":"0ecafb89f7a29b30d9b873830bd05d691c8642ed"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"17e80a34239a439e4004a26a3fe7bb9cdda1e419","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    As per the CADF specification, the ``action`` must start with create,"},{"line_number":244,"context_line":"    update, delete, etc... i.e.: created.user or deleted.role"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    However the ``event_type`` is an OpenStack-ism that is typically of the"},{"line_number":247,"context_line":"    form project.resource.operation. i.e.: identity.project.updated"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    :param operation: operation being performed (created, updated, or deleted)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_7d255faa","line":246,"updated":"2015-01-30 21:42:43.000000000","message":"Nit: OpenStack-ism should be perhaps OpenStack artifact","commit_id":"0ecafb89f7a29b30d9b873830bd05d691c8642ed"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"17e80a34239a439e4004a26a3fe7bb9cdda1e419","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    update, delete, etc... i.e.: created.user or deleted.role"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    However the ``event_type`` is an OpenStack-ism that is typically of the"},{"line_number":247,"context_line":"    form project.resource.operation. i.e.: identity.project.updated"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    :param operation: operation being performed (created, updated, or deleted)"},{"line_number":250,"context_line":"    :param resource_type: type of resource being operated on (role, user, etc)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_bd3d17be","line":247,"updated":"2015-01-30 21:42:43.000000000","message":"NIt: but it really bugs me.   i.e. really should be e.g.","commit_id":"0ecafb89f7a29b30d9b873830bd05d691c8642ed"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"70e2c19862d38171109b287bbaf7964de61ebb69","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                # Do not emit CADF notifications for non-public events"},{"line_number":112,"context_line":"                if (CONF.enable_cadf_notifications and self.public):"},{"line_number":113,"context_line":"                    outcome \u003d taxonomy.OUTCOME_SUCCESS"},{"line_number":114,"context_line":"                    context \u003d {}"},{"line_number":115,"context_line":"                    # call_args \u003d inspect.getcallargs(f, *args, **kwargs)"},{"line_number":116,"context_line":"                    # context \u003d call_args[\u0027context\u0027]"},{"line_number":117,"context_line":"                    _create_cadf_payload(self.operation, self.resource_type,"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_bcc9905c","line":114,"updated":"2015-01-31 09:49:22.000000000","message":"Although I know you mention it in the commit comment, I think it is worth adding a TODO here explaining why this is commented out.","commit_id":"e3adc7122bdade9a120d19814105095d59afac90"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"ebcb1e1a1fe31eec1ca633bfe0ff07efa1d81b71","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                # Do not emit CADF notifications for non-public events"},{"line_number":112,"context_line":"                if (CONF.enable_cadf_notifications and self.public):"},{"line_number":113,"context_line":"                    outcome \u003d taxonomy.OUTCOME_SUCCESS"},{"line_number":114,"context_line":"                    context \u003d {}"},{"line_number":115,"context_line":"                    # call_args \u003d inspect.getcallargs(f, *args, **kwargs)"},{"line_number":116,"context_line":"                    # context \u003d call_args[\u0027context\u0027]"},{"line_number":117,"context_line":"                    _create_cadf_payload(self.operation, self.resource_type,"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_20e56ea8","line":114,"in_reply_to":"da86d52c_bcc9905c","updated":"2015-02-01 00:56:38.000000000","message":"Done","commit_id":"e3adc7122bdade9a120d19814105095d59afac90"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8656bdec2381cba8a72080ef3fba464187493123","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                    resource_id \u003d result[self.result_id_arg_attr]"},{"line_number":103,"context_line":"                else:"},{"line_number":104,"context_line":"                    resource_id \u003d args[self.resource_id_arg_index]"},{"line_number":105,"context_line":"                _send_notification("},{"line_number":106,"context_line":"                    self.operation,"},{"line_number":107,"context_line":"                    self.resource_type,"},{"line_number":108,"context_line":"                    resource_id,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_c0173250","line":105,"updated":"2015-02-01 01:55:13.000000000","message":"I was thinking of making the config option a ternary option, where we can send either basic, cadf, or both notifications.\n\nWe could check the notification option at line 112 to check if it\u0027s either \u0027both or cadf\u0027.\n\nThen at line 303 we could check if it\u0027s either \u0027both or basic\u0027, this way the callbacks are still registered (something I was originally worried about breaking)","commit_id":"0ca1dbd6ac467883dc4c717e9236403c2b21de14"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"8317893386b5fdebd76354b8217e3701f78e3ab6","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                    # initially. In a future patch when we pass the context"},{"line_number":116,"context_line":"                    # from the controller to the core then the context is"},{"line_number":117,"context_line":"                    # available and we can disable the commented out code"},{"line_number":118,"context_line":"                    # below"},{"line_number":119,"context_line":"                    context \u003d {}"},{"line_number":120,"context_line":"                    # call_args \u003d inspect.getcallargs(f, *args, **kwargs)"},{"line_number":121,"context_line":"                    # context \u003d call_args[\u0027context\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"da86d52c_66369e05","line":118,"updated":"2015-02-01 07:18:35.000000000","message":"Shouldn\u0027t this be a TODO as opposed to a NOTE?  Also the comment doesn\u0027t make sense.  Because by definition, if code is commented out it is already disabled.  I think you are trying to say \"In a future patch when we pass the context from the controller to the core then the context will be available and we can enable the commented out code below.\"","commit_id":"1b5c5f3ba7b85fccd0e134e6c90bbb761d7973f6"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5230db4c453882eabda2fa2059e40bd2013a958c","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                    # initially. In a future patch when we pass the context"},{"line_number":116,"context_line":"                    # from the controller to the core then the context is"},{"line_number":117,"context_line":"                    # available and we can disable the commented out code"},{"line_number":118,"context_line":"                    # below"},{"line_number":119,"context_line":"                    context \u003d {}"},{"line_number":120,"context_line":"                    # call_args \u003d inspect.getcallargs(f, *args, **kwargs)"},{"line_number":121,"context_line":"                    # context \u003d call_args[\u0027context\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"da86d52c_ab1211b2","line":118,"in_reply_to":"da86d52c_66369e05","updated":"2015-02-02 07:14:17.000000000","message":"blah, you are right, me no write good past 1 am","commit_id":"1b5c5f3ba7b85fccd0e134e6c90bbb761d7973f6"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"817b837b706d127320c202a69721d7de113925ad","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                    public\u003dself.public)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"                # Do not emit CADF notifications for non-public events"},{"line_number":112,"context_line":"                if (CONF.notification_format \u003d\u003d \u0027cadf\u0027 and self.public):"},{"line_number":113,"context_line":"                    outcome \u003d taxonomy.OUTCOME_SUCCESS"},{"line_number":114,"context_line":"                    # TODO(stevemar): In a future patch when we pass the"},{"line_number":115,"context_line":"                    # context from the controller to the core then the context"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_905563c8","line":112,"updated":"2015-02-02 16:48:09.000000000","message":"from ceilometer pov, we\u0027d see two notifications for each action, one cadf and one non-cadf... maybe one or the other might be better, not both...\n\ni\u0027m not sure how the standardise schema work is going but i don\u0027t know if they\u0027ll have issues with two msgs with same event_type having completely different payloads. it could cause confusion in ceilometer side when you query on data and it\u0027s sort of a toss up on what you get back.","commit_id":"2b02babaded63535f5eb3895bdf00d2b5a1798af"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"fdc40fc0af8c89b316ab7d95f47ccf7750263ebf","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                    public\u003dself.public)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"                # Do not emit CADF notifications for non-public events"},{"line_number":112,"context_line":"                if (CONF.notification_format \u003d\u003d \u0027cadf\u0027 and self.public):"},{"line_number":113,"context_line":"                    outcome \u003d taxonomy.OUTCOME_SUCCESS"},{"line_number":114,"context_line":"                    # TODO(stevemar): In a future patch when we pass the"},{"line_number":115,"context_line":"                    # context from the controller to the core then the context"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_d796ec93","line":112,"in_reply_to":"da86d52c_905563c8","updated":"2015-02-02 18:28:47.000000000","message":"actually, check out lines 285-303, _send_notification doesn\u0027t quite send it right away, i check the new config option.\n\ni believe the Keystone team want to abandon the \u0027basic\u0027 notification format in favor of CADF, so the config option will provide the scaffolding to do so, and the same event_type name will ensure any consumers won\u0027t be broken.\n\njust my reasoning for all this","commit_id":"2b02babaded63535f5eb3895bdf00d2b5a1798af"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"817b837b706d127320c202a69721d7de113925ad","unresolved":false,"context_lines":[{"line_number":258,"context_line":"    \"\"\""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    initiator \u003d _get_request_audit_info(context)"},{"line_number":261,"context_line":"    if resource_type \u003d\u003d \u0027group\u0027:"},{"line_number":262,"context_line":"        target_uri \u003d taxonomy.SECURITY_GROUP"},{"line_number":263,"context_line":"    elif resource_type \u003d\u003d \u0027project\u0027:"},{"line_number":264,"context_line":"        target_uri \u003d taxonomy.SECURITY_PROJECT"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_75a0e190","line":261,"updated":"2015-02-02 16:48:09.000000000","message":"this switch/if stuff could be a module-level dict mapping... but not a big deal.","commit_id":"2b02babaded63535f5eb3895bdf00d2b5a1798af"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"fdc40fc0af8c89b316ab7d95f47ccf7750263ebf","unresolved":false,"context_lines":[{"line_number":258,"context_line":"    \"\"\""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    initiator \u003d _get_request_audit_info(context)"},{"line_number":261,"context_line":"    if resource_type \u003d\u003d \u0027group\u0027:"},{"line_number":262,"context_line":"        target_uri \u003d taxonomy.SECURITY_GROUP"},{"line_number":263,"context_line":"    elif resource_type \u003d\u003d \u0027project\u0027:"},{"line_number":264,"context_line":"        target_uri \u003d taxonomy.SECURITY_PROJECT"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_170404bf","line":261,"in_reply_to":"da86d52c_75a0e190","updated":"2015-02-02 18:28:47.000000000","message":"good call","commit_id":"2b02babaded63535f5eb3895bdf00d2b5a1798af"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"817b837b706d127320c202a69721d7de113925ad","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    target \u003d resource.Resource(typeURI\u003dtarget_uri)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    audit_kwargs \u003d {}"},{"line_number":277,"context_line":"    audit_kwargs[\u0027resource_info\u0027] \u003d resource_id"},{"line_number":278,"context_line":"    cadf_action \u003d \"%s.%s\" % (operation, resource_type)"},{"line_number":279,"context_line":"    event_type \u003d \"%s.%s.%s\" % (SERVICE, resource_type, operation)"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_15ffa568","line":277,"updated":"2015-02-02 16:48:09.000000000","message":"you could probably just merge the two lines above","commit_id":"2b02babaded63535f5eb3895bdf00d2b5a1798af"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"fdc40fc0af8c89b316ab7d95f47ccf7750263ebf","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    target \u003d resource.Resource(typeURI\u003dtarget_uri)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    audit_kwargs \u003d {}"},{"line_number":277,"context_line":"    audit_kwargs[\u0027resource_info\u0027] \u003d resource_id"},{"line_number":278,"context_line":"    cadf_action \u003d \"%s.%s\" % (operation, resource_type)"},{"line_number":279,"context_line":"    event_type \u003d \"%s.%s.%s\" % (SERVICE, resource_type, operation)"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_97b554f0","line":277,"in_reply_to":"da86d52c_15ffa568","updated":"2015-02-02 18:28:47.000000000","message":"Done","commit_id":"2b02babaded63535f5eb3895bdf00d2b5a1798af"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9bec78bda743c4282bc33bf53d5abba74c1bfa3a","unresolved":false,"context_lines":[{"line_number":37,"context_line":"               help\u003d\u0027Default publisher_id for outgoing notifications\u0027),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027notification_format\u0027, default\u003d\u0027basic\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027Define the notification format for Identity Service \u0027"},{"line_number":40,"context_line":"                    \u0027events. Valid options are: basic and cadf\u0027),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"config_section \u003d None"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_c5c0c92c","line":40,"updated":"2015-02-03 15:28:22.000000000","message":"nit: at what point should we make a config group for these?","commit_id":"43e5435ed71b866dfe6e064235e9114fc8daf059"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"51c5b83cbd27f825e4e3fb63315176f8395e6b03","unresolved":false,"context_lines":[{"line_number":37,"context_line":"               help\u003d\u0027Default publisher_id for outgoing notifications\u0027),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027notification_format\u0027, default\u003d\u0027basic\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027Define the notification format for Identity Service \u0027"},{"line_number":40,"context_line":"                    \u0027events. Valid options are: basic and cadf\u0027),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"config_section \u003d None"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_3b2625cf","line":40,"in_reply_to":"da86d52c_c5c0c92c","updated":"2015-02-03 16:15:18.000000000","message":"that\u0027s a good point, fwiw it\u0027s at least made a bit clearer since it\u0027s prefixed with:\n\n  # From keystone.notifications\n\nhttps://github.com/openstack/keystone/blob/master/etc/keystone.conf.sample#L114-L119","commit_id":"43e5435ed71b866dfe6e064235e9114fc8daf059"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9bec78bda743c4282bc33bf53d5abba74c1bfa3a","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                if (CONF.notification_format \u003d\u003d \u0027cadf\u0027 and self.public):"},{"line_number":127,"context_line":"                    outcome \u003d taxonomy.OUTCOME_SUCCESS"},{"line_number":128,"context_line":"                    # TODO(stevemar): In a future patch when we pass the"},{"line_number":129,"context_line":"                    # context from the controller to the core then the context"},{"line_number":130,"context_line":"                    # will be available and we can enable the commented out"},{"line_number":131,"context_line":"                    # code below."},{"line_number":132,"context_line":"                    context \u003d {}"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_856ed194","line":129,"updated":"2015-02-03 15:28:22.000000000","message":"by core do we mean manager layer?","commit_id":"43e5435ed71b866dfe6e064235e9114fc8daf059"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"51c5b83cbd27f825e4e3fb63315176f8395e6b03","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                if (CONF.notification_format \u003d\u003d \u0027cadf\u0027 and self.public):"},{"line_number":127,"context_line":"                    outcome \u003d taxonomy.OUTCOME_SUCCESS"},{"line_number":128,"context_line":"                    # TODO(stevemar): In a future patch when we pass the"},{"line_number":129,"context_line":"                    # context from the controller to the core then the context"},{"line_number":130,"context_line":"                    # will be available and we can enable the commented out"},{"line_number":131,"context_line":"                    # code below."},{"line_number":132,"context_line":"                    context \u003d {}"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_dbc0a9e2","line":129,"in_reply_to":"da86d52c_856ed194","updated":"2015-02-03 16:15:18.000000000","message":"yes, i can use that terminology instead","commit_id":"43e5435ed71b866dfe6e064235e9114fc8daf059"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"d0438f4cb68260306439ac5aa413962e26648705","unresolved":false,"context_lines":[{"line_number":37,"context_line":"               help\u003d\u0027Default publisher_id for outgoing notifications\u0027),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027notification_format\u0027, default\u003d\u0027basic\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027Define the notification format for Identity Service \u0027"},{"line_number":40,"context_line":"                    \u0027events. Valid options are: basic and cadf\u0027),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"config_section \u003d None"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_58e2b72f","line":40,"updated":"2015-02-05 02:00:30.000000000","message":"aren\u0027t we going to support \"both\" options too?","commit_id":"14aba288966df411938787a628ef944ab69c73ed"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"2ce46924e654e54fdfca7c6080a2f7814807c9a7","unresolved":false,"context_lines":[{"line_number":37,"context_line":"               help\u003d\u0027Default publisher_id for outgoing notifications\u0027),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027notification_format\u0027, default\u003d\u0027basic\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027Define the notification format for Identity Service \u0027"},{"line_number":40,"context_line":"                    \u0027events. Valid options are: basic and cadf\u0027),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"config_section \u003d None"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_253237f2","line":40,"in_reply_to":"da86d52c_0f40f232","updated":"2015-02-05 05:11:03.000000000","message":"Ah okay, makes sense.","commit_id":"14aba288966df411938787a628ef944ab69c73ed"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"43bd9b5bfbcb0943eccc7b098bff2563515a1f4a","unresolved":false,"context_lines":[{"line_number":37,"context_line":"               help\u003d\u0027Default publisher_id for outgoing notifications\u0027),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027notification_format\u0027, default\u003d\u0027basic\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027Define the notification format for Identity Service \u0027"},{"line_number":40,"context_line":"                    \u0027events. Valid options are: basic and cadf\u0027),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"config_section \u003d None"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_0f40f232","line":40,"in_reply_to":"da86d52c_58e2b72f","updated":"2015-02-05 03:19:09.000000000","message":"no, after talking with gordc, we decided that wasn\u0027t a good idea, since a user looking at these events in ceilometer will think that the event happened twice.","commit_id":"14aba288966df411938787a628ef944ab69c73ed"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"65788fe7a2b93552011b2af6591ccf994d23a4a3","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                    resource_id,"},{"line_number":123,"context_line":"                    public\u003dself.public)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"                # Do not emit CADF notifications for non-public events"},{"line_number":126,"context_line":"                if (CONF.notification_format \u003d\u003d \u0027cadf\u0027 and self.public):"},{"line_number":127,"context_line":"                    outcome \u003d taxonomy.OUTCOME_SUCCESS"},{"line_number":128,"context_line":"                    # TODO(stevemar): In a future patch when we pass the"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_6d1f765b","line":125,"updated":"2015-02-06 14:45:19.000000000","message":"(nit): every time I read this and the next line of code it jars a bit...since the line of code tests the inverse of the comment...perhaps a better comment would be:\n\n\"Only emit CADF notifications for public events\"","commit_id":"14aba288966df411938787a628ef944ab69c73ed"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c1de14a15f4d9a3cbb98284c534fde76e3696a32","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                    resource_id,"},{"line_number":123,"context_line":"                    public\u003dself.public)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"                # Do not emit CADF notifications for non-public events"},{"line_number":126,"context_line":"                if (CONF.notification_format \u003d\u003d \u0027cadf\u0027 and self.public):"},{"line_number":127,"context_line":"                    outcome \u003d taxonomy.OUTCOME_SUCCESS"},{"line_number":128,"context_line":"                    # TODO(stevemar): In a future patch when we pass the"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_17ea8dd7","line":125,"in_reply_to":"da86d52c_6d1f765b","updated":"2015-02-13 04:24:50.000000000","message":"Done","commit_id":"14aba288966df411938787a628ef944ab69c73ed"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"0aa49924132e7cbb6c71ecab30985a9b2d534791","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                # Do not emit CADF notifications for non-public events"},{"line_number":126,"context_line":"                if (CONF.notification_format \u003d\u003d \u0027cadf\u0027 and self.public):"},{"line_number":127,"context_line":"                    outcome \u003d taxonomy.OUTCOME_SUCCESS"},{"line_number":128,"context_line":"                    # TODO(stevemar): In a future patch when we pass the"},{"line_number":129,"context_line":"                    # context from the controller to the manager then the"},{"line_number":130,"context_line":"                    # context will be available and we can enable the commented"},{"line_number":131,"context_line":"                    # out code below."}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_185b0c2f","line":128,"updated":"2015-02-04 03:35:45.000000000","message":"much better!","commit_id":"14aba288966df411938787a628ef944ab69c73ed"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"d0438f4cb68260306439ac5aa413962e26648705","unresolved":false,"context_lines":[{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    audit_kwargs \u003d {\u0027resource_info\u0027: resource_id}"},{"line_number":283,"context_line":"    cadf_action \u003d \"%s.%s\" % (operation, resource_type)"},{"line_number":284,"context_line":"    event_type \u003d \"%s.%s.%s\" % (SERVICE, resource_type, operation)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    _send_audit_notification(cadf_action, initiator, outcome,"},{"line_number":287,"context_line":"                             target, event_type, **audit_kwargs)"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_184aff25","line":284,"updated":"2015-02-05 02:00:30.000000000","message":"NIT: third time this formatting is done in this file, maybe move to a function?","commit_id":"14aba288966df411938787a628ef944ab69c73ed"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c1de14a15f4d9a3cbb98284c534fde76e3696a32","unresolved":false,"context_lines":[{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    audit_kwargs \u003d {\u0027resource_info\u0027: resource_id}"},{"line_number":283,"context_line":"    cadf_action \u003d \"%s.%s\" % (operation, resource_type)"},{"line_number":284,"context_line":"    event_type \u003d \"%s.%s.%s\" % (SERVICE, resource_type, operation)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    _send_audit_notification(cadf_action, initiator, outcome,"},{"line_number":287,"context_line":"                             target, event_type, **audit_kwargs)"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_f79099ee","line":284,"in_reply_to":"da86d52c_184aff25","updated":"2015-02-13 04:24:50.000000000","message":"so, I agree, but I\u0027ll defer this to after the CADF work is done, so i can have a separate patch just for this refactoring, apparently this whole file needs to be refactored :)","commit_id":"14aba288966df411938787a628ef944ab69c73ed"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"0aa49924132e7cbb6c71ecab30985a9b2d534791","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    notify_event_callbacks(SERVICE, resource_type, operation, payload)"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    # Only send this notification if the \u0027basic\u0027 format is used, otherwise"},{"line_number":308,"context_line":"    # let the CADF functions handle sending the notification. But we check"},{"line_number":309,"context_line":"    # here so as to not disrupt the notify_event_callbacks function."},{"line_number":310,"context_line":"    if public and CONF.notification_format \u003d\u003d \u0027basic\u0027:"}],"source_content_type":"text/x-python","patch_set":21,"id":"da86d52c_1845cc16","line":307,"updated":"2015-02-04 03:35:45.000000000","message":"Great comment. Very helpful!","commit_id":"14aba288966df411938787a628ef944ab69c73ed"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"310f7d12e3354327417d60ed1d1425f20762fe3e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"               help\u003d\u0027Default publisher_id for outgoing notifications\u0027),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027notification_format\u0027, default\u003d\u0027basic\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027Define the notification format for Identity Service \u0027"},{"line_number":40,"context_line":"                    \u0027events. Valid options are: basic and cadf\u0027),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"config_section \u003d None"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_c0cd72b9","line":40,"updated":"2015-02-13 16:09:35.000000000","message":"it\u0027d be nice if this described what the difference was (or at least what \"basic\" means)","commit_id":"d058a55601a261a09a07cce56a834dcfe13f6b6f"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"895f418ed1fe6977b13c986d50b4dfc8af8270c0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"               help\u003d\u0027Default publisher_id for outgoing notifications\u0027),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027notification_format\u0027, default\u003d\u0027basic\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027Define the notification format for Identity Service \u0027"},{"line_number":40,"context_line":"                    \u0027events. Valid options are: basic and cadf\u0027),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"config_section \u003d None"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_02b80074","line":40,"in_reply_to":"da86d52c_c0cd72b9","updated":"2015-02-17 20:11:07.000000000","message":"Done","commit_id":"d058a55601a261a09a07cce56a834dcfe13f6b6f"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"310f7d12e3354327417d60ed1d1425f20762fe3e","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                    public\u003dself.public)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"                # Only emit CADF notifications for public events"},{"line_number":126,"context_line":"                if (CONF.notification_format \u003d\u003d \u0027cadf\u0027 and self.public):"},{"line_number":127,"context_line":"                    outcome \u003d taxonomy.OUTCOME_SUCCESS"},{"line_number":128,"context_line":"                    # TODO(stevemar): In a future patch when we pass the"},{"line_number":129,"context_line":"                    # context from the controller to the manager then the"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_6035a6a7","line":126,"updated":"2015-02-13 16:09:35.000000000","message":"nit: outer parens aren\u0027t necessary","commit_id":"d058a55601a261a09a07cce56a834dcfe13f6b6f"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"895f418ed1fe6977b13c986d50b4dfc8af8270c0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                    public\u003dself.public)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"                # Only emit CADF notifications for public events"},{"line_number":126,"context_line":"                if (CONF.notification_format \u003d\u003d \u0027cadf\u0027 and self.public):"},{"line_number":127,"context_line":"                    outcome \u003d taxonomy.OUTCOME_SUCCESS"},{"line_number":128,"context_line":"                    # TODO(stevemar): In a future patch when we pass the"},{"line_number":129,"context_line":"                    # context from the controller to the manager then the"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_e2b20c95","line":126,"in_reply_to":"da86d52c_6035a6a7","updated":"2015-02-17 20:11:07.000000000","message":"Done","commit_id":"d058a55601a261a09a07cce56a834dcfe13f6b6f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2737fbcc356a2239643e83cdc9b448aeddea41dd","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                    \u0027the resource being operated on. A \"cadf\" notification \u0027"},{"line_number":42,"context_line":"                    \u0027has the same information, as well as information about \u0027"},{"line_number":43,"context_line":"                    \u0027the initiator of the event. Valid options are: basic \u0027"},{"line_number":44,"context_line":"                    \u0027and cadf\u0027),"},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"config_section \u003d None"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba7be1f8_10c18f80","line":44,"updated":"2015-02-20 15:12:44.000000000","message":"Could we use the choices keyword here: \n\nhttps://docs.python.org/3/library/argparse.html#choices","commit_id":"ee596ca952d39289870346a27711dfc4e84fb858"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7e23b40c78958a331d3349b36729a2e57679cd01","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                    \u0027the resource being operated on. A \"cadf\" notification \u0027"},{"line_number":42,"context_line":"                    \u0027has the same information, as well as information about \u0027"},{"line_number":43,"context_line":"                    \u0027the initiator of the event. Valid options are: basic \u0027"},{"line_number":44,"context_line":"                    \u0027and cadf\u0027),"},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"config_section \u003d None"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba7be1f8_ab9f7802","line":44,"in_reply_to":"ba7be1f8_10c18f80","updated":"2015-02-20 15:35:51.000000000","message":"Actually, not sure if this is supported by oslo_config. Removing my -1.","commit_id":"ee596ca952d39289870346a27711dfc4e84fb858"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b6e31a028c068964cbc0e9c84429c50138574c60","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                    \u0027the resource being operated on. A \"cadf\" notification \u0027"},{"line_number":42,"context_line":"                    \u0027has the same information, as well as information about \u0027"},{"line_number":43,"context_line":"                    \u0027the initiator of the event. Valid options are: basic \u0027"},{"line_number":44,"context_line":"                    \u0027and cadf\u0027),"},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"config_section \u003d None"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba7be1f8_e640c537","line":44,"in_reply_to":"ba7be1f8_ab9f7802","updated":"2015-02-20 15:40:08.000000000","message":"Looks like it is supported! https://github.com/openstack/oslo.config/blob/578f9f4e60f58c210a9e1cb455925b9f310fe10e/oslo_config/cfg.py#L929\n\nI won\u0027t hold this up for that change though.","commit_id":"ee596ca952d39289870346a27711dfc4e84fb858"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"b113f9c4445190fffedfd7df2eb07fad8f00ca85","unresolved":false,"context_lines":[{"line_number":263,"context_line":"    top level value for the ``resource_info`` key. Lastly, the ``operation`` is"},{"line_number":264,"context_line":"    used to create the CADF ``action``, and the ``event_type`` name."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    As per the CADF specification, the ``action`` must start with create,"},{"line_number":267,"context_line":"    update, delete, etc... i.e.: created.user or deleted.role"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    However the ``event_type`` is an OpenStack-ism that is typically of the"}],"source_content_type":"text/x-python","patch_set":24,"id":"da86d52c_368538cf","line":266,"updated":"2015-02-18 06:36:45.000000000","message":"nit: created, updated, deleted","commit_id":"ee596ca952d39289870346a27711dfc4e84fb858"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"8865c87829b8ed778c84c1da527fd43d3ccb54b4","unresolved":false,"context_lines":[{"line_number":263,"context_line":"    top level value for the ``resource_info`` key. Lastly, the ``operation`` is"},{"line_number":264,"context_line":"    used to create the CADF ``action``, and the ``event_type`` name."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    As per the CADF specification, the ``action`` must start with create,"},{"line_number":267,"context_line":"    update, delete, etc... i.e.: created.user or deleted.role"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    However the ``event_type`` is an OpenStack-ism that is typically of the"}],"source_content_type":"text/x-python","patch_set":24,"id":"da86d52c_16ce742d","line":266,"in_reply_to":"da86d52c_368538cf","updated":"2015-02-18 06:38:48.000000000","message":"on second thought, my suggestion sounds weird. Either way is fine :)","commit_id":"ee596ca952d39289870346a27711dfc4e84fb858"}],"keystone/tests/unit/common/test_notifications.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"817b837b706d127320c202a69721d7de113925ad","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            audit \u003d {"},{"line_number":205,"context_line":"                \u0027action\u0027: action,"},{"line_number":206,"context_line":"                \u0027initiator\u0027: initiator,"},{"line_number":207,"context_line":"                \u0027event\u0027: event,"},{"line_number":208,"context_line":"                \u0027target\u0027: target,"},{"line_number":209,"context_line":"                \u0027event_type\u0027: event_type,"},{"line_number":210,"context_line":"                \u0027send_notification_called\u0027: True}"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_7522a1ba","line":207,"updated":"2015-02-02 16:48:09.000000000","message":"this isn\u0027t the same as the real code. from what i can tell, the _send_audit_notification method doesn\u0027t attach to an event attr within the audit event to but to the actual audit event itself.","commit_id":"2b02babaded63535f5eb3895bdf00d2b5a1798af"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"2ffea6b9eeb0707b4341627a2afab220d18f991b","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            audit \u003d {"},{"line_number":205,"context_line":"                \u0027action\u0027: action,"},{"line_number":206,"context_line":"                \u0027initiator\u0027: initiator,"},{"line_number":207,"context_line":"                \u0027event\u0027: event,"},{"line_number":208,"context_line":"                \u0027target\u0027: target,"},{"line_number":209,"context_line":"                \u0027event_type\u0027: event_type,"},{"line_number":210,"context_line":"                \u0027send_notification_called\u0027: True}"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_9d99ee21","line":207,"in_reply_to":"da86d52c_3ae3ad34","updated":"2015-02-02 21:13:34.000000000","message":"oh... yeah. tbh, i\u0027m not sure what is happening here but i\u0027m not really familiar with the patterns you guys use in keystone so ignore if it this seems normal.","commit_id":"2b02babaded63535f5eb3895bdf00d2b5a1798af"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"fdc40fc0af8c89b316ab7d95f47ccf7750263ebf","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            audit \u003d {"},{"line_number":205,"context_line":"                \u0027action\u0027: action,"},{"line_number":206,"context_line":"                \u0027initiator\u0027: initiator,"},{"line_number":207,"context_line":"                \u0027event\u0027: event,"},{"line_number":208,"context_line":"                \u0027target\u0027: target,"},{"line_number":209,"context_line":"                \u0027event_type\u0027: event_type,"},{"line_number":210,"context_line":"                \u0027send_notification_called\u0027: True}"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_3ae3ad34","line":207,"in_reply_to":"da86d52c_7522a1ba","updated":"2015-02-02 18:28:47.000000000","message":"right, `audit` and `_audits` are just some data that we pass around for verifying stuff in the tests, I suppose I could change it so that it\u0027s just the payload:\n\n  payload \u003d event.as_dict()\n\ni guess it should be:\n\n  audit \u003d {\n    \u0027payload\u0027: event.as_dict(),\n    \u0027event_type\u0027: event_type,\n    \u0027send_notification_called\u0027: True\n  }","commit_id":"2b02babaded63535f5eb3895bdf00d2b5a1798af"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"ff7d97a8e7f89663c4bb21daeb95dba485de5146","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            audit \u003d {"},{"line_number":205,"context_line":"                \u0027action\u0027: action,"},{"line_number":206,"context_line":"                \u0027initiator\u0027: initiator,"},{"line_number":207,"context_line":"                \u0027event\u0027: event,"},{"line_number":208,"context_line":"                \u0027target\u0027: target,"},{"line_number":209,"context_line":"                \u0027event_type\u0027: event_type,"},{"line_number":210,"context_line":"                \u0027send_notification_called\u0027: True}"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_bd131265","line":207,"in_reply_to":"da86d52c_9d99ee21","updated":"2015-02-02 21:19:53.000000000","message":"it was a convention we started to use for the regular notifications see _assert_last_note. I was already planning on refactoring a bunch of the test-code anyway, this is just more incentive","commit_id":"2b02babaded63535f5eb3895bdf00d2b5a1798af"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2737fbcc356a2239643e83cdc9b448aeddea41dd","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        self._assert_last_audit(user_ref[\u0027id\u0027], UPDATED_OPERATION, \u0027user\u0027,"},{"line_number":534,"context_line":"                                cadftaxonomy.SECURITY_ACCOUNT_USER)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    def test_config_option_no_events(self):"},{"line_number":537,"context_line":"        self.config_fixture.config(notification_format\u003d\u0027basic\u0027)"},{"line_number":538,"context_line":"        role_ref \u003d self.new_role_ref()"},{"line_number":539,"context_line":"        self.role_api.create_role(role_ref[\u0027id\u0027], role_ref)"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba7be1f8_50aa2771","line":536,"updated":"2015-02-20 15:12:44.000000000","message":"real nit picky, but we could have \u0027basic\u0027 in the test name.  \n\n    def test_basic_notification_config_does_not_emit_events(self):","commit_id":"ee596ca952d39289870346a27711dfc4e84fb858"}]}
