)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"bc3bca8742e3c873dcc3ed87bc89af8e7a4f9ecf","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently a model of the cluster is constructed every time a strategy is"},{"line_number":10,"context_line":"executed, which will not scale in production or in larger environments."},{"line_number":11,"context_line":"If Watcher intends to be used by larger envirionments it needs a more"},{"line_number":12,"context_line":"robust way to construct and maintain a model of the cluster. An"},{"line_number":13,"context_line":"in-memory cache of this model can be built up and kept fresh via"},{"line_number":14,"context_line":"notifications from services of interest in addition to periodic syncing"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1af94dfe_6edd3270","line":11,"range":{"start_line":11,"start_character":40,"end_line":11,"end_character":53},"updated":"2016-03-15 16:44:59.000000000","message":"typo","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"}],"specs/mitaka/approved/cluster-model-objects-wrapper.rst":[{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"8d15952cc2f336de76a182ba9dec30d4ae63d290","unresolved":false,"context_lines":[{"line_number":24,"context_line":"As discussed above, Watcher currently constructs a model of the cluster every"},{"line_number":25,"context_line":"time a strategy is executed via the ``get_latest_cluster_data_model()``"},{"line_number":26,"context_line":"method. As it stands today Watcher only has one model collector defined"},{"line_number":27,"context_line":"(``NovaClusterModelCollector``). This method then fetches all hypervisors from"},{"line_number":28,"context_line":"Nova using the nova API and then for each hypervisor fetches all VMs on that"},{"line_number":29,"context_line":"hypervisor. For each of these hypervisors and VMs, a Watcher model object is"},{"line_number":30,"context_line":"created to represent the entity from the JSON response of the API. These"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_dfb2b493","line":27,"range":{"start_line":27,"start_character":3,"end_line":27,"end_character":28},"updated":"2016-03-03 02:52:17.000000000","message":"Don\u0027t all of these need reference pointers to the actual document?  e.g., see https://review.openstack.org/#/c/210549/15/specs/super-scheduler.rst as a reference - or am I overlooking something?","commit_id":"ca5bf005619da283b2e99030653f14e49275471c"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"2dbfb6793400376f8b5d5f75aa2d606a6973d627","unresolved":false,"context_lines":[{"line_number":24,"context_line":"As discussed above, Watcher currently constructs a model of the cluster every"},{"line_number":25,"context_line":"time a strategy is executed via the ``get_latest_cluster_data_model()``"},{"line_number":26,"context_line":"method. As it stands today Watcher only has one model collector defined"},{"line_number":27,"context_line":"(``NovaClusterModelCollector``). This method then fetches all hypervisors from"},{"line_number":28,"context_line":"Nova using the nova API and then for each hypervisor fetches all VMs on that"},{"line_number":29,"context_line":"hypervisor. For each of these hypervisors and VMs, a Watcher model object is"},{"line_number":30,"context_line":"created to represent the entity from the JSON response of the API. These"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_73a1c693","line":27,"range":{"start_line":27,"start_character":3,"end_line":27,"end_character":28},"in_reply_to":"7af24918_dfb2b493","updated":"2016-03-04 09:07:45.000000000","message":"Seems pretty standard in other projects to put method / class names in a single or double backtick that doesn\u0027t actually link.","commit_id":"ca5bf005619da283b2e99030653f14e49275471c"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"bc3bca8742e3c873dcc3ed87bc89af8e7a4f9ecf","unresolved":false,"context_lines":[{"line_number":24,"context_line":"As discussed above, Watcher currently constructs a model of the cluster every"},{"line_number":25,"context_line":"time a strategy is executed via the ``get_latest_cluster_data_model()``"},{"line_number":26,"context_line":"method. As it stands today Watcher only has one model collector defined"},{"line_number":27,"context_line":"(``NovaClusterModelCollector``). This method then fetches all hypervisors from"},{"line_number":28,"context_line":"Nova using the nova API and then for each hypervisor fetches all VMs on that"},{"line_number":29,"context_line":"hypervisor. For each of these hypervisors and VMs, a Watcher model object is"},{"line_number":30,"context_line":"created to represent the entity from the JSON response of the API. These"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1af94dfe_eec66215","line":27,"range":{"start_line":27,"start_character":62,"end_line":27,"end_character":72},"updated":"2016-03-15 16:44:59.000000000","message":"IMO, it\u0027s abusive to use \u0027hypervisor\u0027 term: this method rather fetches nova-compute services","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":19483,"name":"Sean Murphy","email":"murp@zhaw.ch","username":"murp"},"change_message_id":"2526d8c533a09a6bed307d9cb68b5043c32a4ed5","unresolved":false,"context_lines":[{"line_number":24,"context_line":"As discussed above, Watcher currently constructs a model of the cluster every"},{"line_number":25,"context_line":"time a strategy is executed via the ``get_latest_cluster_data_model()``"},{"line_number":26,"context_line":"method. As it stands today Watcher only has one model collector defined"},{"line_number":27,"context_line":"(``NovaClusterModelCollector``). This method then fetches all hypervisors from"},{"line_number":28,"context_line":"Nova using the nova API and then for each hypervisor fetches all VMs on that"},{"line_number":29,"context_line":"hypervisor. For each of these hypervisors and VMs, a Watcher model object is"},{"line_number":30,"context_line":"created to represent the entity from the JSON response of the API. These"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_45e9cd13","line":27,"range":{"start_line":27,"start_character":62,"end_line":27,"end_character":72},"in_reply_to":"1af94dfe_eec66215","updated":"2016-03-22 17:16:56.000000000","message":"I don\u0027t agree with this point. Hypervisor is perfectly well understood here.","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7458aa690b09f8ce45eed63f3de5f64bd895779f","unresolved":false,"context_lines":[{"line_number":24,"context_line":"As discussed above, Watcher currently constructs a model of the cluster every"},{"line_number":25,"context_line":"time a strategy is executed via the ``get_latest_cluster_data_model()``"},{"line_number":26,"context_line":"method. As it stands today Watcher only has one model collector defined"},{"line_number":27,"context_line":"(``NovaClusterModelCollector``). This method then fetches all hypervisors from"},{"line_number":28,"context_line":"Nova using the nova API and then for each hypervisor fetches all VMs on that"},{"line_number":29,"context_line":"hypervisor. For each of these hypervisors and VMs, a Watcher model object is"},{"line_number":30,"context_line":"created to represent the entity from the JSON response of the API. These"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_eae53738","line":27,"range":{"start_line":27,"start_character":62,"end_line":27,"end_character":72},"in_reply_to":"1af94dfe_eec66215","updated":"2016-03-23 05:59:56.000000000","message":"I\u0027m using that term because it is what Nova is using. For example: http://docs.openstack.org/developer/python-novaclient/ref/v2/hypervisors.html","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"bc3bca8742e3c873dcc3ed87bc89af8e7a4f9ecf","unresolved":false,"context_lines":[{"line_number":25,"context_line":"time a strategy is executed via the ``get_latest_cluster_data_model()``"},{"line_number":26,"context_line":"method. As it stands today Watcher only has one model collector defined"},{"line_number":27,"context_line":"(``NovaClusterModelCollector``). This method then fetches all hypervisors from"},{"line_number":28,"context_line":"Nova using the nova API and then for each hypervisor fetches all VMs on that"},{"line_number":29,"context_line":"hypervisor. For each of these hypervisors and VMs, a Watcher model object is"},{"line_number":30,"context_line":"created to represent the entity from the JSON response of the API. These"},{"line_number":31,"context_line":"objects are placed into a collection (the cluster data model) which is then"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1af94dfe_ad1a9f6c","line":28,"range":{"start_line":28,"start_character":65,"end_line":28,"end_character":67},"updated":"2016-03-15 16:44:59.000000000","message":"Watcher interacts with nova API. Should we use, for greater clarity, the term of \u0027Server\u0027 introduced here:  http://developer.openstack.org/api-guide/compute/server_concepts.html.","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7458aa690b09f8ce45eed63f3de5f64bd895779f","unresolved":false,"context_lines":[{"line_number":25,"context_line":"time a strategy is executed via the ``get_latest_cluster_data_model()``"},{"line_number":26,"context_line":"method. As it stands today Watcher only has one model collector defined"},{"line_number":27,"context_line":"(``NovaClusterModelCollector``). This method then fetches all hypervisors from"},{"line_number":28,"context_line":"Nova using the nova API and then for each hypervisor fetches all VMs on that"},{"line_number":29,"context_line":"hypervisor. For each of these hypervisors and VMs, a Watcher model object is"},{"line_number":30,"context_line":"created to represent the entity from the JSON response of the API. These"},{"line_number":31,"context_line":"objects are placed into a collection (the cluster data model) which is then"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_6a3f6787","line":28,"range":{"start_line":28,"start_character":65,"end_line":28,"end_character":67},"in_reply_to":"1af94dfe_ad1a9f6c","updated":"2016-03-23 05:59:56.000000000","message":"Done","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":19483,"name":"Sean Murphy","email":"murp@zhaw.ch","username":"murp"},"change_message_id":"2526d8c533a09a6bed307d9cb68b5043c32a4ed5","unresolved":false,"context_lines":[{"line_number":39,"context_line":"audit will potentially be very slow. Also consider a busy environment where a"},{"line_number":40,"context_line":"lot of audits are being requested in short succession - Watcher will need to"},{"line_number":41,"context_line":"construct this most recent cluster model via API requests to each service of"},{"line_number":42,"context_line":"interest, which is a lot of strain on the overall system for almost no point,"},{"line_number":43,"context_line":"assuming the environment has hardly changed between each audit request."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"It would be ideal that a strategy can use an in-memory cache of the cluster"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_45f38dd6","line":42,"range":{"start_line":42,"start_character":71,"end_line":42,"end_character":76},"updated":"2016-03-22 17:16:56.000000000","message":"gain (?)","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7458aa690b09f8ce45eed63f3de5f64bd895779f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"audit will potentially be very slow. Also consider a busy environment where a"},{"line_number":40,"context_line":"lot of audits are being requested in short succession - Watcher will need to"},{"line_number":41,"context_line":"construct this most recent cluster model via API requests to each service of"},{"line_number":42,"context_line":"interest, which is a lot of strain on the overall system for almost no point,"},{"line_number":43,"context_line":"assuming the environment has hardly changed between each audit request."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"It would be ideal that a strategy can use an in-memory cache of the cluster"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_ca5033d7","line":42,"range":{"start_line":42,"start_character":71,"end_line":42,"end_character":76},"in_reply_to":"fa0719c6_45f38dd6","updated":"2016-03-23 05:59:56.000000000","message":"Done","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":19483,"name":"Sean Murphy","email":"murp@zhaw.ch","username":"murp"},"change_message_id":"2526d8c533a09a6bed307d9cb68b5043c32a4ed5","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"It would be ideal that a strategy can use an in-memory cache of the cluster"},{"line_number":46,"context_line":"model in order to make informed decisions immediately without the need for"},{"line_number":47,"context_line":"Watcher to go ask every service for its most recent representation."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Use Cases"},{"line_number":50,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_657df1e6","line":47,"range":{"start_line":47,"start_character":11,"end_line":47,"end_character":17},"updated":"2016-03-22 17:16:56.000000000","message":"suggest \u0027go ask\u0027 -\u003e query (for readability reasons)....","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7458aa690b09f8ce45eed63f3de5f64bd895779f","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"It would be ideal that a strategy can use an in-memory cache of the cluster"},{"line_number":46,"context_line":"model in order to make informed decisions immediately without the need for"},{"line_number":47,"context_line":"Watcher to go ask every service for its most recent representation."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Use Cases"},{"line_number":50,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_2a60cfa4","line":47,"range":{"start_line":47,"start_character":11,"end_line":47,"end_character":17},"in_reply_to":"fa0719c6_657df1e6","updated":"2016-03-23 05:59:56.000000000","message":"Done","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":19483,"name":"Sean Murphy","email":"murp@zhaw.ch","username":"murp"},"change_message_id":"2526d8c533a09a6bed307d9cb68b5043c32a4ed5","unresolved":false,"context_lines":[{"line_number":50,"context_line":"----------"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The primary use case of this is addressing problems of scale. Strategies can"},{"line_number":53,"context_line":"be executed much quicker due to no delay in constructing the cluster model,"},{"line_number":54,"context_line":"which will result in faster audits delivered to the end users of Watcher. It"},{"line_number":55,"context_line":"will also alleviate strain on the overall OpenStack deployment due to the"},{"line_number":56,"context_line":"elimination of redundant API requests."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_85c80524","line":53,"range":{"start_line":53,"start_character":32,"end_line":53,"end_character":34},"updated":"2016-03-22 17:16:56.000000000","message":"minimizing/minimal? (There could still be some calls to find the deltas, but presumably they would be quicker).","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7458aa690b09f8ce45eed63f3de5f64bd895779f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"----------"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The primary use case of this is addressing problems of scale. Strategies can"},{"line_number":53,"context_line":"be executed much quicker due to no delay in constructing the cluster model,"},{"line_number":54,"context_line":"which will result in faster audits delivered to the end users of Watcher. It"},{"line_number":55,"context_line":"will also alleviate strain on the overall OpenStack deployment due to the"},{"line_number":56,"context_line":"elimination of redundant API requests."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_aafb3fc0","line":53,"range":{"start_line":53,"start_character":32,"end_line":53,"end_character":34},"in_reply_to":"fa0719c6_85c80524","updated":"2016-03-23 05:59:56.000000000","message":"Done","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":19483,"name":"Sean Murphy","email":"murp@zhaw.ch","username":"murp"},"change_message_id":"2526d8c533a09a6bed307d9cb68b5043c32a4ed5","unresolved":false,"context_lines":[{"line_number":52,"context_line":"The primary use case of this is addressing problems of scale. Strategies can"},{"line_number":53,"context_line":"be executed much quicker due to no delay in constructing the cluster model,"},{"line_number":54,"context_line":"which will result in faster audits delivered to the end users of Watcher. It"},{"line_number":55,"context_line":"will also alleviate strain on the overall OpenStack deployment due to the"},{"line_number":56,"context_line":"elimination of redundant API requests."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"For the developers of Watcher, this will create an easy way to fetch and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_05dd15e0","line":55,"range":{"start_line":55,"start_character":10,"end_line":55,"end_character":26},"updated":"2016-03-22 17:16:56.000000000","message":"reduce load?","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7458aa690b09f8ce45eed63f3de5f64bd895779f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"The primary use case of this is addressing problems of scale. Strategies can"},{"line_number":53,"context_line":"be executed much quicker due to no delay in constructing the cluster model,"},{"line_number":54,"context_line":"which will result in faster audits delivered to the end users of Watcher. It"},{"line_number":55,"context_line":"will also alleviate strain on the overall OpenStack deployment due to the"},{"line_number":56,"context_line":"elimination of redundant API requests."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"For the developers of Watcher, this will create an easy way to fetch and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_ca15d3e5","line":55,"range":{"start_line":55,"start_character":10,"end_line":55,"end_character":26},"in_reply_to":"fa0719c6_05dd15e0","updated":"2016-03-23 05:59:56.000000000","message":"Done","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"bc3bca8742e3c873dcc3ed87bc89af8e7a4f9ecf","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"For the developers of Watcher, this will create an easy way to fetch and"},{"line_number":59,"context_line":"consume the current cluster model."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Project Priority"},{"line_number":62,"context_line":"-----------------"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1af94dfe_81268c14","line":60,"updated":"2016-03-15 16:44:59.000000000","message":"Another use case. As a developer, my strategy requires cluster model data not collected by Watcher for now. How can easily extend the model ? \n\nSo, can I propose my own collector through a plugin ?","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7458aa690b09f8ce45eed63f3de5f64bd895779f","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"For the developers of Watcher, this will create an easy way to fetch and"},{"line_number":59,"context_line":"consume the current cluster model."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Project Priority"},{"line_number":62,"context_line":"-----------------"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_2ab8cfc7","line":60,"in_reply_to":"1af94dfe_81268c14","updated":"2016-03-23 05:59:56.000000000","message":"Yes, I think being able to load custom collectors through a plugin can be done. Do you think that\u0027s a necessity for this blueprint or something that could be done via a future blueprint to enhance this?","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"bc3bca8742e3c873dcc3ed87bc89af8e7a4f9ecf","unresolved":false,"context_lines":[{"line_number":129,"context_line":"receive any notifications sent by the services over the AMQP message bus for"},{"line_number":130,"context_line":"whatever reason, then the periodic sync up task will serve to correct any"},{"line_number":131,"context_line":"staleness of the cache. This boils down to the following idea: Watcher can"},{"line_number":132,"context_line":"live with eventual consistency."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Alternatives"},{"line_number":135,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1af94dfe_134db272","line":132,"range":{"start_line":132,"start_character":19,"end_line":132,"end_character":30},"updated":"2016-03-15 16:44:59.000000000","message":"s/consistency/lost of consistency ?","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7458aa690b09f8ce45eed63f3de5f64bd895779f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"receive any notifications sent by the services over the AMQP message bus for"},{"line_number":130,"context_line":"whatever reason, then the periodic sync up task will serve to correct any"},{"line_number":131,"context_line":"staleness of the cache. This boils down to the following idea: Watcher can"},{"line_number":132,"context_line":"live with eventual consistency."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Alternatives"},{"line_number":135,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_0ae4ebde","line":132,"range":{"start_line":132,"start_character":19,"end_line":132,"end_character":30},"in_reply_to":"1af94dfe_134db272","updated":"2016-03-23 05:59:56.000000000","message":"I don\u0027t understand - see https://en.wikipedia.org/wiki/Eventual_consistency for more info.","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":19483,"name":"Sean Murphy","email":"murp@zhaw.ch","username":"murp"},"change_message_id":"2526d8c533a09a6bed307d9cb68b5043c32a4ed5","unresolved":false,"context_lines":[{"line_number":129,"context_line":"receive any notifications sent by the services over the AMQP message bus for"},{"line_number":130,"context_line":"whatever reason, then the periodic sync up task will serve to correct any"},{"line_number":131,"context_line":"staleness of the cache. This boils down to the following idea: Watcher can"},{"line_number":132,"context_line":"live with eventual consistency."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Alternatives"},{"line_number":135,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_48af2481","line":132,"range":{"start_line":132,"start_character":19,"end_line":132,"end_character":30},"in_reply_to":"1af94dfe_134db272","updated":"2016-03-22 17:16:56.000000000","message":"I don\u0027t understand this point - to me, eventual consistency looks fine....","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"bc3bca8742e3c873dcc3ed87bc89af8e7a4f9ecf","unresolved":false,"context_lines":[{"line_number":130,"context_line":"whatever reason, then the periodic sync up task will serve to correct any"},{"line_number":131,"context_line":"staleness of the cache. This boils down to the following idea: Watcher can"},{"line_number":132,"context_line":"live with eventual consistency."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Alternatives"},{"line_number":135,"context_line":"------------"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1af94dfe_21b978ea","line":133,"updated":"2016-03-15 16:44:59.000000000","message":"Questions: \n. When will the first cluster model be built in-memory ? At Watcher\u0027s startup or on the first query done by a strategy ?\n. Are cluster model data timestamped ?\n. Shall all data collected by a Collector be refreshed by received notifications, or only part of them ?","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7458aa690b09f8ce45eed63f3de5f64bd895779f","unresolved":false,"context_lines":[{"line_number":130,"context_line":"whatever reason, then the periodic sync up task will serve to correct any"},{"line_number":131,"context_line":"staleness of the cache. This boils down to the following idea: Watcher can"},{"line_number":132,"context_line":"live with eventual consistency."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Alternatives"},{"line_number":135,"context_line":"------------"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_6a33e762","line":133,"in_reply_to":"1af94dfe_21b978ea","updated":"2016-03-23 05:59:56.000000000","message":"I think it would make sense for the \"first\" cluster model to be built in memory either 1) during initialization or 2) via a periodic task that is ran nearly immediately post initialization.\n\nNo, I was not planning on timestamping the data. What would the timestamp be used for? If it is stale then it should be the job of the periodic sync tasks or the notifications to sync things back up. I suppose the timestamps may be useful for error scenarios to determine possible causes?\n\nNot necessarily all data collected by a collector would be refreshed by a received notification. It is my intention that only part of the data that is related to the notification would be updated. For example, a compute node update notification would result in only data related to that compute node to be updated. It would not result in every other compute node to be updated. I added a sentence to clarify this.","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":19483,"name":"Sean Murphy","email":"murp@zhaw.ch","username":"murp"},"change_message_id":"2526d8c533a09a6bed307d9cb68b5043c32a4ed5","unresolved":false,"context_lines":[{"line_number":163,"context_line":"--------------------"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Watcher will not be generating any new notifications, but it will be consuming"},{"line_number":166,"context_line":"many, many more."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Other end user impact"},{"line_number":169,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_28d8f01c","line":166,"range":{"start_line":166,"start_character":0,"end_line":166,"end_character":10},"updated":"2016-03-22 17:16:56.000000000","message":"I would suggest reducing emphasis here - it looks like it might result in some significant load with notification processing, but I don\u0027t believe this is really a risk...","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7458aa690b09f8ce45eed63f3de5f64bd895779f","unresolved":false,"context_lines":[{"line_number":163,"context_line":"--------------------"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Watcher will not be generating any new notifications, but it will be consuming"},{"line_number":166,"context_line":"many, many more."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Other end user impact"},{"line_number":169,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_ca44b3b8","line":166,"range":{"start_line":166,"start_character":0,"end_line":166,"end_character":10},"in_reply_to":"fa0719c6_28d8f01c","updated":"2016-03-23 05:59:56.000000000","message":"It could potentially result in significant load in notification processing, but nothing that shouldn\u0027t be able to be handled. I will reduce emphasis.","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"bc3bca8742e3c873dcc3ed87bc89af8e7a4f9ecf","unresolved":false,"context_lines":[{"line_number":190,"context_line":"Other deployer impact"},{"line_number":191,"context_line":"---------------------"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Discuss things that will affect how you deploy and configure OpenStack"},{"line_number":194,"context_line":"that have not already been mentioned, such as:"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"* What config options are being added? Are the default values ones which will"},{"line_number":197,"context_line":"  work well in real deployments?"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"* Is this a change that takes immediate effect after its merged, or is it"},{"line_number":200,"context_line":"  something that has to be explicitly enabled?"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"* If this change is a new binary, how would it be deployed?"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"* Please state anything that those doing continuous deployment, or those"},{"line_number":205,"context_line":"  upgrading from the previous release, need to be aware of. Also describe"},{"line_number":206,"context_line":"  any plans to deprecate configuration values or features.  For example, if we"},{"line_number":207,"context_line":"  change the directory name that instances are stored in, how do we handle"},{"line_number":208,"context_line":"  instance directories created before the change landed?  Do we move them?  Do"},{"line_number":209,"context_line":"  we have a special case in the code? Do we assume that the operator will"},{"line_number":210,"context_line":"  recreate all the instances in their cloud?"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Developer impact"},{"line_number":213,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1af94dfe_b3f95e50","line":210,"range":{"start_line":193,"start_character":0,"end_line":210,"end_character":44},"updated":"2016-03-15 16:44:59.000000000","message":"Please, remove this template description :)\ninstead, Add a TODO marker,","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7458aa690b09f8ce45eed63f3de5f64bd895779f","unresolved":false,"context_lines":[{"line_number":190,"context_line":"Other deployer impact"},{"line_number":191,"context_line":"---------------------"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Discuss things that will affect how you deploy and configure OpenStack"},{"line_number":194,"context_line":"that have not already been mentioned, such as:"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"* What config options are being added? Are the default values ones which will"},{"line_number":197,"context_line":"  work well in real deployments?"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"* Is this a change that takes immediate effect after its merged, or is it"},{"line_number":200,"context_line":"  something that has to be explicitly enabled?"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"* If this change is a new binary, how would it be deployed?"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"* Please state anything that those doing continuous deployment, or those"},{"line_number":205,"context_line":"  upgrading from the previous release, need to be aware of. Also describe"},{"line_number":206,"context_line":"  any plans to deprecate configuration values or features.  For example, if we"},{"line_number":207,"context_line":"  change the directory name that instances are stored in, how do we handle"},{"line_number":208,"context_line":"  instance directories created before the change landed?  Do we move them?  Do"},{"line_number":209,"context_line":"  we have a special case in the code? Do we assume that the operator will"},{"line_number":210,"context_line":"  recreate all the instances in their cloud?"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Developer impact"},{"line_number":213,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_2a144f9e","line":210,"range":{"start_line":193,"start_character":0,"end_line":210,"end_character":44},"in_reply_to":"1af94dfe_b3f95e50","updated":"2016-03-23 05:59:56.000000000","message":"Done","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"bc3bca8742e3c873dcc3ed87bc89af8e7a4f9ecf","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"Strategies may need to have some refactoring done to handle the new cluster"},{"line_number":216,"context_line":"data models."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"Implementation"},{"line_number":220,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1af94dfe_2781884b","line":217,"updated":"2016-03-15 16:44:59.000000000","message":"Could you propose a piece of code with the new  BaseClusterModelCollector abstract class definition, including new methods if needed ?","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7458aa690b09f8ce45eed63f3de5f64bd895779f","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"Strategies may need to have some refactoring done to handle the new cluster"},{"line_number":216,"context_line":"data models."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"Implementation"},{"line_number":220,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_8d12d555","line":217,"in_reply_to":"1af94dfe_2781884b","updated":"2016-03-23 05:59:56.000000000","message":"Let me do some prototyping and whiteboarding this week and I will have a more concrete idea of how I want these interfaces to look.","commit_id":"568045e91be400a44bb5e8b9c694576c266698cf"},{"author":{"_account_id":20515,"name":"Tomasz Kaczynski","email":"tomasz.kaczynski@intel.com","username":"tkaczynski"},"change_message_id":"55fb6abdcf18635d61b9d9ee1bd8b6db664d5342","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Watcher will need to construct this most recent cluster model via API requests"},{"line_number":42,"context_line":"to each service of interest, which is a lot of strain on the overall system"},{"line_number":43,"context_line":"for almost no gain, assuming the environment has hardly changed between each"},{"line_number":44,"context_line":"audit request."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"It would be ideal that a strategy can use an in-memory cache of the cluster"},{"line_number":47,"context_line":"model in order to make informed decisions immediately without the need for"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa0719c6_814c4e9f","line":44,"updated":"2016-03-23 12:21:27.000000000","message":"I would also mention that this might be very important in the case of continuous audits, where the decisions will be made periodically and often, which will only get things worse.","commit_id":"ed6e33be137109a0b39220b14a6b646db618e92e"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"45b5be0dadb3865a70dfccb3042a33276b02bd43","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Watcher will need to construct this most recent cluster model via API requests"},{"line_number":42,"context_line":"to each service of interest, which is a lot of strain on the overall system"},{"line_number":43,"context_line":"for almost no gain, assuming the environment has hardly changed between each"},{"line_number":44,"context_line":"audit request."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"It would be ideal that a strategy can use an in-memory cache of the cluster"},{"line_number":47,"context_line":"model in order to make informed decisions immediately without the need for"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_99f00e69","line":44,"in_reply_to":"fa0719c6_814c4e9f","updated":"2016-04-28 14:26:45.000000000","message":"Done","commit_id":"ed6e33be137109a0b39220b14a6b646db618e92e"},{"author":{"_account_id":20515,"name":"Tomasz Kaczynski","email":"tomasz.kaczynski@intel.com","username":"tkaczynski"},"change_message_id":"55fb6abdcf18635d61b9d9ee1bd8b6db664d5342","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"What use cases does this address? What impact on actors does this change have?"},{"line_number":54,"context_line":"Ensure you are clear about the actors in each use case: Developer, End User,"},{"line_number":55,"context_line":"Deployer etc."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The primary use case of this is addressing problems of scale. Strategies can"},{"line_number":58,"context_line":"be executed much quicker due to minimal delay in constructing the cluster"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa0719c6_c13926f4","line":55,"updated":"2016-03-23 12:21:27.000000000","message":"Shouldn\u0027t this paragraph be removed?","commit_id":"ed6e33be137109a0b39220b14a6b646db618e92e"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"45b5be0dadb3865a70dfccb3042a33276b02bd43","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"What use cases does this address? What impact on actors does this change have?"},{"line_number":54,"context_line":"Ensure you are clear about the actors in each use case: Developer, End User,"},{"line_number":55,"context_line":"Deployer etc."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The primary use case of this is addressing problems of scale. Strategies can"},{"line_number":58,"context_line":"be executed much quicker due to minimal delay in constructing the cluster"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_79653243","line":55,"in_reply_to":"fa0719c6_c13926f4","updated":"2016-04-28 14:26:45.000000000","message":"Done","commit_id":"ed6e33be137109a0b39220b14a6b646db618e92e"},{"author":{"_account_id":19483,"name":"Sean Murphy","email":"murp@zhaw.ch","username":"murp"},"change_message_id":"13dcf15c8e9b435b4a5e14f86eef17b77e940581","unresolved":false,"context_lines":[{"line_number":170,"context_line":"Notifications impact"},{"line_number":171,"context_line":"--------------------"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Watcher will not be generating any new notifications, but it will be consuming"},{"line_number":174,"context_line":"many more."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Other end user impact"},{"line_number":177,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa0719c6_40bd17b6","line":174,"range":{"start_line":173,"start_character":0,"end_line":174,"end_character":10},"updated":"2016-03-23 10:30:39.000000000","message":"This is an important point with implications for the deployment context. I\u0027m not sure what is the best practice here, but I guess it does need to be flagged explicitly that (a)  that this will introduce the assumption that Watcher in deployment will need access to the notifications mechanism and (b) that the notification mechanism is configured appropriately.","commit_id":"ed6e33be137109a0b39220b14a6b646db618e92e"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"45b5be0dadb3865a70dfccb3042a33276b02bd43","unresolved":false,"context_lines":[{"line_number":170,"context_line":"Notifications impact"},{"line_number":171,"context_line":"--------------------"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Watcher will not be generating any new notifications, but it will be consuming"},{"line_number":174,"context_line":"many more."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Other end user impact"},{"line_number":177,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_796892f5","line":174,"range":{"start_line":173,"start_character":0,"end_line":174,"end_character":10},"in_reply_to":"fa0719c6_40bd17b6","updated":"2016-04-28 14:26:45.000000000","message":"This is an implicit requirement IMO and not something that needs to be called out here. Nearly all of the OpenStack projects tie into the messaging bus.","commit_id":"ed6e33be137109a0b39220b14a6b646db618e92e"}],"specs/newton/approved/cluster-model-objects-wrapper.rst":[{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9ce602b62fd756379bb06d1f92f1757373d512d9","unresolved":false,"context_lines":[{"line_number":271,"context_line":"  all the data models. This new service should be launched as part of the"},{"line_number":272,"context_line":"  ``Watcher Decision Engine`` daemon."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"  + It should implement the ``oslo_service.PeriodicTask`` class."},{"line_number":275,"context_line":"  + The period will have to be configurable via the configuration file."},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"- Implement an ``EventsNotificationEndpoint`` class that will be responsible"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a9d85d2_367870c4","line":274,"updated":"2016-06-21 09:59:15.000000000","message":"We are using APScheduler for continuous audit. IHMO, we could reuse the same library for this spec.","commit_id":"6f974e21ffbe9957c078962b254356fa5cffd23e"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b83908d3964f346703cad9594ee39bf01a325d93","unresolved":false,"context_lines":[{"line_number":271,"context_line":"  all the data models. This new service should be launched as part of the"},{"line_number":272,"context_line":"  ``Watcher Decision Engine`` daemon."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"  + It should implement the ``oslo_service.PeriodicTask`` class."},{"line_number":275,"context_line":"  + The period will have to be configurable via the configuration file."},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"- Implement an ``EventsNotificationEndpoint`` class that will be responsible"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_1ea3d550","line":274,"in_reply_to":"5a9d85d2_367870c4","updated":"2016-06-22 16:13:12.000000000","message":"Done","commit_id":"6f974e21ffbe9957c078962b254356fa5cffd23e"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9ce602b62fd756379bb06d1f92f1757373d512d9","unresolved":false,"context_lines":[{"line_number":283,"context_line":"  + Implement a ``NovaNotificationParser`` class extending the"},{"line_number":284,"context_line":"    ``NotificationParser`` so it handles the notification format currently used"},{"line_number":285,"context_line":"    by `Nova`_."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":""},{"line_number":288,"context_line":".. _Nova: http://docs.openstack.org/developer/nova/"},{"line_number":289,"context_line":".. _list of notifications: https://github.com/openstack/nova/blob/master/nova/rpc.py#L222-L336"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a9d85d2_996195ab","line":286,"updated":"2016-06-21 09:59:15.000000000","message":"IHMO, We can divided the works in three parts:\n- First, we can create the periodic puller and adapt the strategies to use the in-memory model.\n- Then, we can give the possibility to the model to be changed (e.g add a new field in the model) \n- finally, we can the notification logic.","commit_id":"6f974e21ffbe9957c078962b254356fa5cffd23e"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b83908d3964f346703cad9594ee39bf01a325d93","unresolved":false,"context_lines":[{"line_number":283,"context_line":"  + Implement a ``NovaNotificationParser`` class extending the"},{"line_number":284,"context_line":"    ``NotificationParser`` so it handles the notification format currently used"},{"line_number":285,"context_line":"    by `Nova`_."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":""},{"line_number":288,"context_line":".. _Nova: http://docs.openstack.org/developer/nova/"},{"line_number":289,"context_line":".. _list of notifications: https://github.com/openstack/nova/blob/master/nova/rpc.py#L222-L336"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3aaa91ec_7e8ad9c0","line":286,"in_reply_to":"5a9d85d2_996195ab","updated":"2016-06-22 16:13:12.000000000","message":"Done","commit_id":"6f974e21ffbe9957c078962b254356fa5cffd23e"}]}
