)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"1d1f1141afcb7baac089d0fac09e5145ed6bb1be","unresolved":false,"context_lines":[{"line_number":14,"context_line":"It also add a capability to the webhook task to be able to send more"},{"line_number":15,"context_line":"structured data in the notification, allowing to include the Zaqar"},{"line_number":16,"context_line":"message in the data."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I12b9c1b34cdd220fcf1bdc2720043d4a8f75dc85"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7aa08908_8652e233","line":17,"updated":"2016-06-16 09:05:42.000000000","message":"Add a link to the mistral bp?","commit_id":"a5c9dc9831c78b6c22a04bd70f6b7c4316fb6821"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"91e31362aaf4a7fc7d8caafef14fa37037cfd2a2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"It also add a capability to the webhook task to be able to send more"},{"line_number":15,"context_line":"structured data in the notification, allowing to include the Zaqar"},{"line_number":16,"context_line":"message in the data."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I12b9c1b34cdd220fcf1bdc2720043d4a8f75dc85"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_9bbef7d2","line":17,"updated":"2016-06-21 17:50:48.000000000","message":"Again, can we link this to the mistral bp?","commit_id":"d8fd1dd08c77e80c1450a6435fa7a767b8110b98"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"c12c1b61cc466f4872562629b044eb30b886ccc3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"It also add a capability to the webhook task to be able to send more"},{"line_number":15,"context_line":"structured data in the notification, allowing to include the Zaqar"},{"line_number":16,"context_line":"message in the data."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"blueprint mistral-notifications"},{"line_number":19,"context_line":"Change-Id: I12b9c1b34cdd220fcf1bdc2720043d4a8f75dc85"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1aa78d24_3c87e610","line":17,"updated":"2016-07-04 03:53:17.000000000","message":"Could you please add a release note for this feature?","commit_id":"a2a19509d0d36ab15acf63409f83572b5832c8c0"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"8190ff593d7b280a77e73eaf08f3d2f22b204b1a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"It also add a capability to the webhook task to be able to send more"},{"line_number":15,"context_line":"structured data in the notification, allowing to include the Zaqar"},{"line_number":16,"context_line":"message in the data."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"blueprint mistral-notifications"},{"line_number":19,"context_line":"Change-Id: I12b9c1b34cdd220fcf1bdc2720043d4a8f75dc85"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1aa78d24_8f8219ff","line":17,"in_reply_to":"1aa78d24_3c87e610","updated":"2016-07-04 07:22:31.000000000","message":"Done","commit_id":"a2a19509d0d36ab15acf63409f83572b5832c8c0"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"c80bf46d9f589586b3e6742f544c2dfc4f865753","unresolved":false,"context_lines":[{"line_number":14,"context_line":"It also add a capability to the webhook task to be able to send more"},{"line_number":15,"context_line":"structured data in the notification, allowing to include the Zaqar"},{"line_number":16,"context_line":"message in the data."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"blueprint mistral-notifications"},{"line_number":19,"context_line":"Change-Id: I12b9c1b34cdd220fcf1bdc2720043d4a8f75dc85"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1aa78d24_ff6642eb","line":17,"updated":"2016-07-07 03:05:42.000000000","message":"DocImpact","commit_id":"30ec3660389a8df01d70df460b32034b25bf9e78"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"4cce4d4ad5b5cf72adb649c18952bc686078c508","unresolved":false,"context_lines":[{"line_number":14,"context_line":"It also add a capability to the webhook task to be able to send more"},{"line_number":15,"context_line":"structured data in the notification, allowing to include the Zaqar"},{"line_number":16,"context_line":"message in the data."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"blueprint mistral-notifications"},{"line_number":19,"context_line":"Change-Id: I12b9c1b34cdd220fcf1bdc2720043d4a8f75dc85"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1aa78d24_9ff1fe6d","line":17,"in_reply_to":"1aa78d24_ff6642eb","updated":"2016-07-07 03:14:59.000000000","message":"+1","commit_id":"30ec3660389a8df01d70df460b32034b25bf9e78"}],"etc/oslo-config-generator/zaqar.conf":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"8a2af55d206374bd90696356c08c0cc9d4d7539f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"output_file \u003d etc/zaqar.conf.sample"},{"line_number":3,"context_line":"namespace \u003d zaqar.bootstrap"},{"line_number":4,"context_line":"namespace \u003d zaqar.common.auth"},{"line_number":5,"context_line":"namespace \u003d zaqar.common.configs"},{"line_number":6,"context_line":"namespace \u003d zaqar.storage.pipeline"},{"line_number":7,"context_line":"namespace \u003d zaqar.storage.pooling"}],"source_content_type":"text/plain","patch_set":9,"id":"1aa78d24_4f9ac864","line":4,"updated":"2016-07-05 02:47:10.000000000","message":"I mean, when you change this file, I\u0027m expecting those new config options under [trustee] group can be generated automatically in zaqar.conf.sample under /etc so that user can refer it.","commit_id":"30ec3660389a8df01d70df460b32034b25bf9e78"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"5871badc33f88129799903d2a64c1fdfdeb75bbc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"output_file \u003d etc/zaqar.conf.sample"},{"line_number":3,"context_line":"namespace \u003d zaqar.bootstrap"},{"line_number":4,"context_line":"namespace \u003d zaqar.common.auth"},{"line_number":5,"context_line":"namespace \u003d zaqar.common.configs"},{"line_number":6,"context_line":"namespace \u003d zaqar.storage.pipeline"},{"line_number":7,"context_line":"namespace \u003d zaqar.storage.pooling"}],"source_content_type":"text/plain","patch_set":9,"id":"1aa78d24_b89babc8","line":4,"in_reply_to":"1aa78d24_4f9ac864","updated":"2016-07-05 07:35:52.000000000","message":"Yes, and they are?","commit_id":"30ec3660389a8df01d70df460b32034b25bf9e78"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"cff5ee3b549d8fd438ea182592ecadfce94a3093","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"output_file \u003d etc/zaqar.conf.sample"},{"line_number":3,"context_line":"namespace \u003d zaqar.bootstrap"},{"line_number":4,"context_line":"namespace \u003d zaqar.common.auth"},{"line_number":5,"context_line":"namespace \u003d zaqar.common.configs"},{"line_number":6,"context_line":"namespace \u003d zaqar.storage.pipeline"},{"line_number":7,"context_line":"namespace \u003d zaqar.storage.pooling"}],"source_content_type":"text/plain","patch_set":9,"id":"1aa78d24_0908b32c","line":4,"in_reply_to":"1aa78d24_b89babc8","updated":"2016-07-05 08:49:56.000000000","message":"Hah, yep, in patch set 8 comments, I said \"In my test, those config options can been generated automatically in zaqar.conf.sample.\" but there is a typo, I was trying to say \"In my test, those config options can\u0027t been generated automatically in zaqar.conf.sample.\"\n\nYep, so you fixed it in patchset 9. Thanks.","commit_id":"30ec3660389a8df01d70df460b32034b25bf9e78"}],"setup.cfg":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"c12c1b61cc466f4872562629b044eb30b886ccc3","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    websocket \u003d zaqar.transport.websocket.driver:Driver"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"oslo.config.opts \u003d"},{"line_number":51,"context_line":"    zaqar.common.auth \u003d zaqar.common.auth:_config_options"},{"line_number":52,"context_line":"    zaqar.common.configs \u003d zaqar.common.configs:_config_options"},{"line_number":53,"context_line":"    zaqar.storage.pipeline \u003d zaqar.storage.pipeline:_config_options"},{"line_number":54,"context_line":"    zaqar.storage.pooling \u003d zaqar.storage.pooling:_config_options"}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"1aa78d24_c9c1c630","line":51,"updated":"2016-07-04 03:53:17.000000000","message":"In my test, those config options can been generated automatically in zaqar.conf.sample.","commit_id":"a2a19509d0d36ab15acf63409f83572b5832c8c0"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"8190ff593d7b280a77e73eaf08f3d2f22b204b1a","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    websocket \u003d zaqar.transport.websocket.driver:Driver"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"oslo.config.opts \u003d"},{"line_number":51,"context_line":"    zaqar.common.auth \u003d zaqar.common.auth:_config_options"},{"line_number":52,"context_line":"    zaqar.common.configs \u003d zaqar.common.configs:_config_options"},{"line_number":53,"context_line":"    zaqar.storage.pipeline \u003d zaqar.storage.pipeline:_config_options"},{"line_number":54,"context_line":"    zaqar.storage.pooling \u003d zaqar.storage.pooling:_config_options"}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"1aa78d24_efef5dae","line":51,"in_reply_to":"1aa78d24_c9c1c630","updated":"2016-07-04 07:22:31.000000000","message":"Not sure what you mean. It was actually not working because I didn\u0027t change oslo-config-generator config.","commit_id":"a2a19509d0d36ab15acf63409f83572b5832c8c0"}],"zaqar/common/auth.py":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"c12c1b61cc466f4872562629b044eb30b886ccc3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    return client.Client(session\u003dsess)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def create_trust_id(auth_plugin, trustor_user_id, trustor_project_id, roles,"},{"line_number":54,"context_line":"                    expires_at):"},{"line_number":55,"context_line":"    \"\"\"Create a trust with the given user for the configured trustee user.\"\"\""},{"line_number":56,"context_line":"    admin_session \u003d _get_admin_session()"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_3f2518ab","line":53,"updated":"2016-07-04 03:53:17.000000000","message":"Do we need an unit test for this file? at least this function?","commit_id":"a2a19509d0d36ab15acf63409f83572b5832c8c0"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"8190ff593d7b280a77e73eaf08f3d2f22b204b1a","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    return client.Client(session\u003dsess)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def create_trust_id(auth_plugin, trustor_user_id, trustor_project_id, roles,"},{"line_number":54,"context_line":"                    expires_at):"},{"line_number":55,"context_line":"    \"\"\"Create a trust with the given user for the configured trustee user.\"\"\""},{"line_number":56,"context_line":"    admin_session \u003d _get_admin_session()"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_cf26e115","line":53,"in_reply_to":"1aa78d24_3f2518ab","updated":"2016-07-04 07:22:31.000000000","message":"I don\u0027t think so. If I unit test this, I will mock everything. I think it has more value in integration tests.","commit_id":"a2a19509d0d36ab15acf63409f83572b5832c8c0"}],"zaqar/notification/tasks/trust.py":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"8d2af0cd5e8c69b4222939e2776f2e19ec14c062","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        subscription[\u0027subscriber\u0027] \u003d subscriber[6:]"},{"line_number":31,"context_line":"        headers \u003d {\u0027X-Auth-Token\u0027: auth.get_auth_token(client),"},{"line_number":32,"context_line":"                   \u0027Content-Type\u0027: \u0027application/json\u0027}"},{"line_number":33,"context_line":"        super(TrustTask, self).execute(subscription, messages, headers,"},{"line_number":34,"context_line":"                                       **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_a6fd6c0a","line":33,"updated":"2016-06-16 08:46:42.000000000","message":"What I\u0027m thinking is how the mistral task and senlin task can be benefited by this fantastic patch.\n\nIf we have this one, then it would be nice to let the mistral task inherit from this trust task. And we can just define the correct post body easily for mistral, senlin and any other openstack services. However, the hard part will be how Zaqar know what the service is. Since we can\u0027t figure out what the service is without talking with keystone. And that means it will introduce a lot of interaction with keystone with sending notifications.\n\nIn summary, I\u0027m thinking if we can use trust+mistral:// or just mistral:// and then without inheriting from trust task. And using the trust_id from options as well. And the only con is we may have to duplicate the line 24-31.","commit_id":"a5c9dc9831c78b6c22a04bd70f6b7c4316fb6821"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"91e31362aaf4a7fc7d8caafef14fa37037cfd2a2","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        subscription \u003d copy.deepcopy(subscription)"},{"line_number":33,"context_line":"        subscriber \u003d subscription[\u0027subscriber\u0027]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        trust_id \u003d subscription[\u0027options\u0027][\u0027trust_id\u0027]"},{"line_number":36,"context_line":"        token \u003d auth.get_trusted_token(trust_id)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        subscription[\u0027subscriber\u0027] \u003d subscriber[6:]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_9b93974f","line":35,"updated":"2016-06-21 17:50:48.000000000","message":"Could we use _ as prefix for those reserved attributes?","commit_id":"d8fd1dd08c77e80c1450a6435fa7a767b8110b98"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"8ea718be712a7876b7dc2f27fd6ddc9a2a161849","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        subscription \u003d copy.deepcopy(subscription)"},{"line_number":33,"context_line":"        subscriber \u003d subscription[\u0027subscriber\u0027]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        trust_id \u003d subscription[\u0027options\u0027][\u0027trust_id\u0027]"},{"line_number":36,"context_line":"        token \u003d auth.get_trusted_token(trust_id)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        subscription[\u0027subscriber\u0027] \u003d subscriber[6:]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_fdec4891","line":35,"in_reply_to":"3aaa91ec_9b93974f","updated":"2016-06-21 20:12:14.000000000","message":"We could, should we? We don\u0027t for the \"from\" and \"subject\" for mail subscriber.","commit_id":"d8fd1dd08c77e80c1450a6435fa7a767b8110b98"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"74411571eb4c172f6eb355702368c1c7f9ba4d35","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        subscription \u003d copy.deepcopy(subscription)"},{"line_number":33,"context_line":"        subscriber \u003d subscription[\u0027subscriber\u0027]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        trust_id \u003d subscription[\u0027options\u0027][\u0027trust_id\u0027]"},{"line_number":36,"context_line":"        token \u003d auth.get_trusted_token(trust_id)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        subscription[\u0027subscriber\u0027] \u003d subscriber[6:]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_a7e46a3b","line":35,"in_reply_to":"3aaa91ec_fdec4891","updated":"2016-06-21 21:35:52.000000000","message":"Yep, ok. I\u0027m fine with it.","commit_id":"d8fd1dd08c77e80c1450a6435fa7a767b8110b98"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"91e31362aaf4a7fc7d8caafef14fa37037cfd2a2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        super(TrustTask, self).execute(subscription, messages, headers,"},{"line_number":42,"context_line":"                                       **kwargs)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def register(self, subscriber, options, ttl, project_id, request_data):"},{"line_number":45,"context_line":"        if \u0027trust_id\u0027 not in options:"},{"line_number":46,"context_line":"            # We have a trust subscriber without a trust ID,"},{"line_number":47,"context_line":"            # create it"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_fb257b5c","line":44,"updated":"2016-06-21 17:50:48.000000000","message":"That\u0027s a smart design. With this we don\u0027t have duplicate the code for wsgi and websocket.","commit_id":"d8fd1dd08c77e80c1450a6435fa7a767b8110b98"}],"zaqar/notification/tasks/webhook.py":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"8d2af0cd5e8c69b4222939e2776f2e19ec14c062","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                msg[\u0027queue_name\u0027] \u003d subscription[\u0027source\u0027]"},{"line_number":36,"context_line":"                if \u0027post_data\u0027 in subscription[\u0027options\u0027]:"},{"line_number":37,"context_line":"                    data \u003d subscription[\u0027options\u0027][\u0027post_data\u0027]"},{"line_number":38,"context_line":"                    data \u003d data.replace(\u0027\"$zaqar_message$\"\u0027, json.dumps(msg))"},{"line_number":39,"context_line":"                else:"},{"line_number":40,"context_line":"                    data \u003d json.dumps(data)"},{"line_number":41,"context_line":"                requests.post(subscription[\u0027subscriber\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_4fe49bab","line":38,"updated":"2016-06-16 08:46:42.000000000","message":"IIUC, here we\u0027re assuming the post data is a string not a dict. It works, but I think it\u0027s not convenient when user create the subscription. So should we allow use input a dict as the post_data? and do dumps before this line? Especially given we\u0027re defining the content-type as json format.","commit_id":"a5c9dc9831c78b6c22a04bd70f6b7c4316fb6821"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"8d2af0cd5e8c69b4222939e2776f2e19ec14c062","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                    data \u003d subscription[\u0027options\u0027][\u0027post_data\u0027]"},{"line_number":38,"context_line":"                    data \u003d data.replace(\u0027\"$zaqar_message$\"\u0027, json.dumps(msg))"},{"line_number":39,"context_line":"                else:"},{"line_number":40,"context_line":"                    data \u003d json.dumps(data)"},{"line_number":41,"context_line":"                requests.post(subscription[\u0027subscriber\u0027],"},{"line_number":42,"context_line":"                              data\u003ddata,"},{"line_number":43,"context_line":"                              headers\u003dheaders)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_af7fff64","line":40,"updated":"2016-06-16 08:46:42.000000000","message":"shouldn\u0027t it be data \u003d json.dumps(msg) ?","commit_id":"a5c9dc9831c78b6c22a04bd70f6b7c4316fb6821"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"c12c1b61cc466f4872562629b044eb30b886ccc3","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                # our original messages(dicts) which will be later consumed in"},{"line_number":35,"context_line":"                # the storage controller. It seems safe though."},{"line_number":36,"context_line":"                msg[\u0027queue_name\u0027] \u003d subscription[\u0027source\u0027]"},{"line_number":37,"context_line":"                if \u0027post_data\u0027 in subscription[\u0027options\u0027]:"},{"line_number":38,"context_line":"                    data \u003d subscription[\u0027options\u0027][\u0027post_data\u0027]"},{"line_number":39,"context_line":"                    data \u003d data.replace(\u0027\"$zaqar_message$\"\u0027, json.dumps(msg))"},{"line_number":40,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_5c9f5203","line":37,"updated":"2016-07-04 03:53:17.000000000","message":"We really need a user document to explain how to set the correct content for this feature. And I even think we need a separate section in developer/user guide for subscription. We can merge this patch but could you pls create a following patch to add the user doc.","commit_id":"a2a19509d0d36ab15acf63409f83572b5832c8c0"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"8190ff593d7b280a77e73eaf08f3d2f22b204b1a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                # our original messages(dicts) which will be later consumed in"},{"line_number":35,"context_line":"                # the storage controller. It seems safe though."},{"line_number":36,"context_line":"                msg[\u0027queue_name\u0027] \u003d subscription[\u0027source\u0027]"},{"line_number":37,"context_line":"                if \u0027post_data\u0027 in subscription[\u0027options\u0027]:"},{"line_number":38,"context_line":"                    data \u003d subscription[\u0027options\u0027][\u0027post_data\u0027]"},{"line_number":39,"context_line":"                    data \u003d data.replace(\u0027\"$zaqar_message$\"\u0027, json.dumps(msg))"},{"line_number":40,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_ef747dfe","line":37,"in_reply_to":"1aa78d24_5c9f5203","updated":"2016-07-04 07:22:31.000000000","message":"As I mentioned previously, I won\u0027t write XML doc, so I was waiting on RST conversion.","commit_id":"a2a19509d0d36ab15acf63409f83572b5832c8c0"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"c80bf46d9f589586b3e6742f544c2dfc4f865753","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                msg[\u0027queue_name\u0027] \u003d subscription[\u0027source\u0027]"},{"line_number":37,"context_line":"                if \u0027post_data\u0027 in subscription[\u0027options\u0027]:"},{"line_number":38,"context_line":"                    data \u003d subscription[\u0027options\u0027][\u0027post_data\u0027]"},{"line_number":39,"context_line":"                    data \u003d data.replace(\u0027\"$zaqar_message$\"\u0027, json.dumps(msg))"},{"line_number":40,"context_line":"                else:"},{"line_number":41,"context_line":"                    data \u003d json.dumps(msg)"},{"line_number":42,"context_line":"                requests.post(subscription[\u0027subscriber\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_9fa45eba","line":39,"range":{"start_line":39,"start_character":20,"end_line":39,"end_character":77},"updated":"2016-07-07 03:05:42.000000000","message":"If the post_data doesn\u0027t include \"$zaqar_message$\", users message will not be contained in the post_data any more. Could we add this check here: https://github.com/openstack/zaqar/blob/master/zaqar/transport/validation.py#L478  or at less log a warning?","commit_id":"30ec3660389a8df01d70df460b32034b25bf9e78"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"42388049eeda30a99cce4ab95942605cce19325c","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                msg[\u0027queue_name\u0027] \u003d subscription[\u0027source\u0027]"},{"line_number":37,"context_line":"                if \u0027post_data\u0027 in subscription[\u0027options\u0027]:"},{"line_number":38,"context_line":"                    data \u003d subscription[\u0027options\u0027][\u0027post_data\u0027]"},{"line_number":39,"context_line":"                    data \u003d data.replace(\u0027\"$zaqar_message$\"\u0027, json.dumps(msg))"},{"line_number":40,"context_line":"                else:"},{"line_number":41,"context_line":"                    data \u003d json.dumps(msg)"},{"line_number":42,"context_line":"                requests.post(subscription[\u0027subscriber\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_6522c0a4","line":39,"range":{"start_line":39,"start_character":20,"end_line":39,"end_character":77},"in_reply_to":"1aa78d24_2106ed51","updated":"2016-07-07 07:25:21.000000000","message":"I think documentation is the way here.","commit_id":"30ec3660389a8df01d70df460b32034b25bf9e78"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"1259c5225d3873d7ef1d87867d391bae79cf6e89","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                msg[\u0027queue_name\u0027] \u003d subscription[\u0027source\u0027]"},{"line_number":37,"context_line":"                if \u0027post_data\u0027 in subscription[\u0027options\u0027]:"},{"line_number":38,"context_line":"                    data \u003d subscription[\u0027options\u0027][\u0027post_data\u0027]"},{"line_number":39,"context_line":"                    data \u003d data.replace(\u0027\"$zaqar_message$\"\u0027, json.dumps(msg))"},{"line_number":40,"context_line":"                else:"},{"line_number":41,"context_line":"                    data \u003d json.dumps(msg)"},{"line_number":42,"context_line":"                requests.post(subscription[\u0027subscriber\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_a6631341","line":39,"range":{"start_line":39,"start_character":20,"end_line":39,"end_character":77},"in_reply_to":"1aa78d24_3f444ab5","updated":"2016-07-07 06:57:49.000000000","message":"I don\u0027t think we should. You may not want to have the message in the data, if you only care about being notified.","commit_id":"30ec3660389a8df01d70df460b32034b25bf9e78"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"4cce4d4ad5b5cf72adb649c18952bc686078c508","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                msg[\u0027queue_name\u0027] \u003d subscription[\u0027source\u0027]"},{"line_number":37,"context_line":"                if \u0027post_data\u0027 in subscription[\u0027options\u0027]:"},{"line_number":38,"context_line":"                    data \u003d subscription[\u0027options\u0027][\u0027post_data\u0027]"},{"line_number":39,"context_line":"                    data \u003d data.replace(\u0027\"$zaqar_message$\"\u0027, json.dumps(msg))"},{"line_number":40,"context_line":"                else:"},{"line_number":41,"context_line":"                    data \u003d json.dumps(msg)"},{"line_number":42,"context_line":"                requests.post(subscription[\u0027subscriber\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_3f444ab5","line":39,"range":{"start_line":39,"start_character":20,"end_line":39,"end_character":77},"in_reply_to":"1aa78d24_9fa45eba","updated":"2016-07-07 03:14:59.000000000","message":"That\u0027s a good point. But I don\u0027t think we should check it in validation.py since it\u0027s not a necessary option for the other notification driver. So how about we check this in the register() method of trust.py? If there is no $zaqar_message$, just throw a validation error. Thoughts?","commit_id":"30ec3660389a8df01d70df460b32034b25bf9e78"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"9600b8a834e466a5614c90f4ad1304922ca23f3c","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                msg[\u0027queue_name\u0027] \u003d subscription[\u0027source\u0027]"},{"line_number":37,"context_line":"                if \u0027post_data\u0027 in subscription[\u0027options\u0027]:"},{"line_number":38,"context_line":"                    data \u003d subscription[\u0027options\u0027][\u0027post_data\u0027]"},{"line_number":39,"context_line":"                    data \u003d data.replace(\u0027\"$zaqar_message$\"\u0027, json.dumps(msg))"},{"line_number":40,"context_line":"                else:"},{"line_number":41,"context_line":"                    data \u003d json.dumps(msg)"},{"line_number":42,"context_line":"                requests.post(subscription[\u0027subscriber\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_2106ed51","line":39,"range":{"start_line":39,"start_character":20,"end_line":39,"end_character":77},"in_reply_to":"1aa78d24_a6631341","updated":"2016-07-07 07:19:11.000000000","message":"I means that if the post_data\u0027s format is not correct and users poat a messsage to a queue. Then the subscriber can\u0027 receive that messages. \n\nSo how can we tell users that \"if you want to send message, you should contain \u0027$zaqar_message$\u0027 in your post_body\"? by docs or to hard limit by codes?","commit_id":"30ec3660389a8df01d70df460b32034b25bf9e78"}],"zaqar/transport/wsgi/v2_0/subscriptions.py":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"1d1f1141afcb7baac089d0fac09e5145ed6bb1be","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            url \u003d netutils.urlsplit(subscriber)"},{"line_number":182,"context_line":"            ttl \u003d document.get(\u0027ttl\u0027, self._default_subscription_ttl)"},{"line_number":183,"context_line":"            if url.scheme in (\u0027trust+http\u0027, \u0027trust+https\u0027):"},{"line_number":184,"context_line":"                if \u0027trust_id\u0027 not in options:"},{"line_number":185,"context_line":"                    # We have a trust subscriber without a trust ID,"},{"line_number":186,"context_line":"                    # create it"},{"line_number":187,"context_line":"                    trustor_user_id \u003d req.headers.get(\u0027X-USER-ID\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_868dc2d5","line":184,"updated":"2016-06-16 09:05:42.000000000","message":"Can we use _trust_id, _headers and _post_data/_post_body as the reserved keys? Thanks.","commit_id":"a5c9dc9831c78b6c22a04bd70f6b7c4316fb6821"}]}
