)]}'
{"specs/kilo/sync-api.rst":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b9b4d5a67a09dc1d66c1245d5d5b3adad498376e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"will be improved to handle the recorded_at fields."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Once the database samples are returned, the ceilometer-api subscribe to the"},{"line_number":41,"context_line":"metering topics to get new samples and yield the one that match the query."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The same thing will be done the events parts, the field to filter on is"},{"line_number":44,"context_line":"*generated* and it\u0027s already handled by *storage.get_events()*"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aa7fdbe_4df1f193","line":41,"updated":"2014-10-28 09:05:21.000000000","message":"I think it\u0027s a large road to race conditions somehow. I\u0027d be curious to have a clear path toward not having any race condition.","commit_id":"1ca1c7c6d505fad50fbde03827e16589bc9ea674"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"2c9666c7dd2f3436ac803309ad7998b5ef5a07af","unresolved":false,"context_lines":[{"line_number":38,"context_line":"will be improved to handle the recorded_at fields."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Once the database samples are returned, the ceilometer-api subscribe to the"},{"line_number":41,"context_line":"metering topics to get new samples and yield the one that match the query."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The same thing will be done the events parts, the field to filter on is"},{"line_number":44,"context_line":"*generated* and it\u0027s already handled by *storage.get_events()*"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aa7fdbe_3cb85c10","line":41,"in_reply_to":"9aa7fdbe_4df1f193","updated":"2014-10-28 10:24:47.000000000","message":"Yep this is a big con, perhaps bigger than the database polling issue.","commit_id":"1ca1c7c6d505fad50fbde03827e16589bc9ea674"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b9b4d5a67a09dc1d66c1245d5d5b3adad498376e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"* Pro: we will continue to connect only to the database, ceilometer-api"},{"line_number":58,"context_line":"  continue to be wsgi friendly"},{"line_number":59,"context_line":"* Pro: doesn\u0027t need additional oslo.messaging configuration to work"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"::"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  NOTE(sileht): I\u0027m really open between the choice between"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aa7fdbe_8d2e79f9","line":60,"updated":"2014-10-28 09:05:21.000000000","message":"And no race condition.","commit_id":"1ca1c7c6d505fad50fbde03827e16589bc9ea674"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"2c9666c7dd2f3436ac803309ad7998b5ef5a07af","unresolved":false,"context_lines":[{"line_number":57,"context_line":"* Pro: we will continue to connect only to the database, ceilometer-api"},{"line_number":58,"context_line":"  continue to be wsgi friendly"},{"line_number":59,"context_line":"* Pro: doesn\u0027t need additional oslo.messaging configuration to work"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"::"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  NOTE(sileht): I\u0027m really open between the choice between"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aa7fdbe_dc04b04b","line":60,"in_reply_to":"9aa7fdbe_8d2e79f9","updated":"2014-10-28 10:24:47.000000000","message":"The code path will be clear and simple in this case.","commit_id":"1ca1c7c6d505fad50fbde03827e16589bc9ea674"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"ea8210d4b2eb82793749cb3b4e0bdd6366511dec","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  NOTE(sileht): I\u0027m really open between the choice between"},{"line_number":64,"context_line":"  \u0027poll/notify of the database\u0027 method and"},{"line_number":65,"context_line":"  \u0027oslo.messaging samples subscription\u0027 method"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aa7fdbe_d9b687f8","line":65,"updated":"2014-10-28 05:13:50.000000000","message":"Hi sileht, for 1st choice, you mean ceilometer-api service to poll the new incoming samples to db? if so, the ceilometer-api will act a wsgi server and a listener for db data changes(or polling the db data changes), is it reasonable?\n\nfor 2ed choice, do you propose to implement that in ceilometer-collector or just add a new dispatcher?\ncan multi-publisher meet the requirements?","commit_id":"1ca1c7c6d505fad50fbde03827e16589bc9ea674"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"2c9666c7dd2f3436ac803309ad7998b5ef5a07af","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  NOTE(sileht): I\u0027m really open between the choice between"},{"line_number":64,"context_line":"  \u0027poll/notify of the database\u0027 method and"},{"line_number":65,"context_line":"  \u0027oslo.messaging samples subscription\u0027 method"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aa7fdbe_fce4140e","line":65,"in_reply_to":"9aa7fdbe_d9b687f8","updated":"2014-10-28 10:24:47.000000000","message":"For 1° choice, Yes that it is the question, is it more reasonable that connecting ceilometera-api to the messaging broker ? I guess yes.\n\nFor 2° choice, the ceilometer-api will act as notification listener (like the collector does, I guess some code will be shared in this case)","commit_id":"1ca1c7c6d505fad50fbde03827e16589bc9ea674"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"86ed5214fe8b125c040cc7d19be2fb19f2647e36","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Some applications need to keep in sync with ceilometer."},{"line_number":20,"context_line":"But currently they have to redo again and again the sames queries to maintain"},{"line_number":21,"context_line":"in sync their application with ceilometer."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_5b8c5d80","line":19,"updated":"2015-01-16 13:58:51.000000000","message":"sames \u003d\u003e same","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"86ed5214fe8b125c040cc7d19be2fb19f2647e36","unresolved":false,"context_lines":[{"line_number":29,"context_line":"::"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"  GET /v2/samples?q\u003d...\u0026stream_since\u003d2014-07-02T11:40:00"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"the returned samples list will reused the current *Sample* type for the sample"},{"line_number":34,"context_line":"format. Then Ceilometer API will returned the samples by querying the database"},{"line_number":35,"context_line":"with *storage.get_samples(...)*"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_bb3aa195","line":32,"updated":"2015-01-16 13:58:51.000000000","message":"reused \u003d\u003e reuse","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"86ed5214fe8b125c040cc7d19be2fb19f2647e36","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"  GET /v2/samples?q\u003d...\u0026stream_since\u003d2014-07-02T11:40:00"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"the returned samples list will reused the current *Sample* type for the sample"},{"line_number":34,"context_line":"format. Then Ceilometer API will returned the samples by querying the database"},{"line_number":35,"context_line":"with *storage.get_samples(...)*"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_1b72d57b","line":33,"updated":"2015-01-16 13:58:51.000000000","message":"returned \u003d\u003e return","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"cac974068faa3092e29249b5f50b6bc04f714537","unresolved":false,"context_lines":[{"line_number":37,"context_line":"*sample_storage.get_samples* (perhaps by enhancing the *SampleFilter* object)"},{"line_number":38,"context_line":"will be improved to handle the recorded_at fields."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Once the database samples are returned, the ceilometer-api will:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Option 1: Subscribe to the metering topics to get new samples and yield the"},{"line_number":43,"context_line":"  one that match the query."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_4c63cddc","line":40,"updated":"2015-01-16 10:33:09.000000000","message":"Hm, I would say that it should be publisher-subscriber model used here, not the polling, as this will allow much less database load impact. So option 1 is looking nicer I guess. I have kind of question - how will be the HA moment solved here? Let\u0027s imagine we\u0027re having client, that holds the connection to this ceilo api, let\u0027s imagine this host goes down. How will the client reconnect to the same endpoint of other ceilo-api? how it\u0027ll understand endpoint is not working, etc.? should it reconnect somehow itself after timeout? /me just interested :)","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"86ed5214fe8b125c040cc7d19be2fb19f2647e36","unresolved":false,"context_lines":[{"line_number":37,"context_line":"*sample_storage.get_samples* (perhaps by enhancing the *SampleFilter* object)"},{"line_number":38,"context_line":"will be improved to handle the recorded_at fields."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Once the database samples are returned, the ceilometer-api will:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Option 1: Subscribe to the metering topics to get new samples and yield the"},{"line_number":43,"context_line":"  one that match the query."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_3b2151fc","line":40,"in_reply_to":"3a961159_4c63cddc","updated":"2015-01-16 13:58:51.000000000","message":"Agreed with Dina about option 1. Besides, from the first sight, looks like it\u0027s easier to push samples to some topic in message queue (with embedded HA and so on) and let user poll this queue as it wants. I assume that I may be completely wrong here, just thoughts :)","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"86ed5214fe8b125c040cc7d19be2fb19f2647e36","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  one that match the query."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  * Con: deployer need additional messaging configuration to connect"},{"line_number":46,"context_line":"    ceilometer-api to its messaging broker."},{"line_number":47,"context_line":"  * Con: we depends on a oslo.messaging BP"},{"line_number":48,"context_line":"  * Con: We need write the SampleFilter for incoming samples"},{"line_number":49,"context_line":"  * Con: Difficulty to have a clear path toward not having any race condition "}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_7b1119f7","line":46,"updated":"2015-01-16 13:58:51.000000000","message":"depends \u003d\u003e depend","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"cac974068faa3092e29249b5f50b6bc04f714537","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    ceilometer-api to its messaging broker."},{"line_number":47,"context_line":"  * Con: we depends on a oslo.messaging BP"},{"line_number":48,"context_line":"  * Con: We need write the SampleFilter for incoming samples"},{"line_number":49,"context_line":"  * Con: Difficulty to have a clear path toward not having any race condition "},{"line_number":50,"context_line":"    between the time we query the database and the time we subscribe on new"},{"line_number":51,"context_line":"    samples. What if we miss samples ?"},{"line_number":52,"context_line":"  * Pro: doesn\u0027t rely on the scalability of the database"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_69a95b7b","line":49,"updated":"2015-01-16 10:33:09.000000000","message":"remove trailing space, please","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"cac974068faa3092e29249b5f50b6bc04f714537","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    samples. What if we miss samples ?"},{"line_number":52,"context_line":"  * Pro: doesn\u0027t rely on the scalability of the database"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* Option 2: Listen for database changes by polling the database "},{"line_number":55,"context_line":"  with a new value of *stream_since* (the one from latest queried sample) or"},{"line_number":56,"context_line":"  using the streaming feature of certain database backend (like NOTIFY for"},{"line_number":57,"context_line":"  postgresql)."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_c9b96fcc","line":54,"updated":"2015-01-16 10:33:09.000000000","message":"remove trailing space, please","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"86ed5214fe8b125c040cc7d19be2fb19f2647e36","unresolved":false,"context_lines":[{"line_number":57,"context_line":"  postgresql)."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"  * Con: no many database support builtin \u0027streaming\u0027, does polling the"},{"line_number":60,"context_line":"    database ourself is acceptable ?"},{"line_number":61,"context_line":"  * Pro: We reuse of storage code for filtering new incoming samples"},{"line_number":62,"context_line":"  * Pro: we will continue to connect only to the database, ceilometer-api"},{"line_number":63,"context_line":"    continue to be wsgi friendly"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_7be839df","line":60,"updated":"2015-01-16 13:58:51.000000000","message":"\u0027of\u0027 may be dropped","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"86ed5214fe8b125c040cc7d19be2fb19f2647e36","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Work Items"},{"line_number":138,"context_line":"----------"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"* Enhance REST API \u0027GET /v2/samples\u0027 and \u0027GET /v2/events\u0027 to allows"},{"line_number":141,"context_line":"  to request all samples/events with *recorded_at/generated* \u003e\u003d"},{"line_number":142,"context_line":"  *stream_since timestamp*."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_7bf3d96c","line":139,"updated":"2015-01-16 13:58:51.000000000","message":"allows \u003d\u003e allow","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"cac974068faa3092e29249b5f50b6bc04f714537","unresolved":false,"context_lines":[{"line_number":140,"context_line":"* Enhance REST API \u0027GET /v2/samples\u0027 and \u0027GET /v2/events\u0027 to allows"},{"line_number":141,"context_line":"  to request all samples/events with *recorded_at/generated* \u003e\u003d"},{"line_number":142,"context_line":"  *stream_since timestamp*."},{"line_number":143,"context_line":"* Extends get_samples an storage internal API to handled recorded_at"},{"line_number":144,"context_line":"* Subscribe to the new generated samples and events"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Future lifecycle"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_e931cb59","line":143,"range":{"start_line":143,"start_character":2,"end_line":143,"end_character":9},"updated":"2015-01-16 10:33:09.000000000","message":"Extend, handle","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"cac974068faa3092e29249b5f50b6bc04f714537","unresolved":false,"context_lines":[{"line_number":152,"context_line":"Dependencies"},{"line_number":153,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"Currently a limitation of the notification listener of oslo.messaging is that "},{"line_number":156,"context_line":"all notification listeners that subscribe to a topic are in the same pool of "},{"line_number":157,"context_line":"consumers and this is not (yet) configurable, this BP needs to be implemented"},{"line_number":158,"context_line":"the code already exists and just need to be reviewed."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_a9dd0316","line":155,"updated":"2015-01-16 10:33:09.000000000","message":"ditto","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"cac974068faa3092e29249b5f50b6bc04f714537","unresolved":false,"context_lines":[{"line_number":153,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"Currently a limitation of the notification listener of oslo.messaging is that "},{"line_number":156,"context_line":"all notification listeners that subscribe to a topic are in the same pool of "},{"line_number":157,"context_line":"consumers and this is not (yet) configurable, this BP needs to be implemented"},{"line_number":158,"context_line":"the code already exists and just need to be reviewed."},{"line_number":159,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_29d113fb","line":156,"updated":"2015-01-16 10:33:09.000000000","message":"ditto","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"cac974068faa3092e29249b5f50b6bc04f714537","unresolved":false,"context_lines":[{"line_number":168,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"The new API will automatically documented with docstring and wsme types in"},{"line_number":171,"context_line":"the pecan controlleur."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"References"},{"line_number":174,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_29f8337b","line":171,"range":{"start_line":171,"start_character":10,"end_line":171,"end_character":21},"updated":"2015-01-16 10:33:09.000000000","message":"controller","commit_id":"87e0f9964be2f9fa109ed49aa19d614188ccdbf3"}]}
