)]}'
{"specs/newton/approved/continuously-optimization.rst":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"8693731d14c28d1b383d0b477fe3d3d23ff7e2c1","unresolved":false,"context_lines":[{"line_number":26,"context_line":"Use Cases"},{"line_number":27,"context_line":"---------"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"As the Administrator I want to create `Audit`_ with CONTINUOUS type."},{"line_number":30,"context_line":"I specify periodic time with --period parameter (in seconds) to run audit"},{"line_number":31,"context_line":"every 600 seconds. Running audit will create and apply action plan every"},{"line_number":32,"context_line":"600 seconds."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bab6814e_bd41043c","line":29,"range":{"start_line":29,"start_character":52,"end_line":29,"end_character":62},"updated":"2016-05-18 16:35:13.000000000","message":"A better name would be \u0027PERIODIC\u0027, as \u0027CONTINUOUS\u0027 means that it would be constantly running, rather than running every N seconds.","commit_id":"c5b09a090a5c00b9c87b24d048788565116ff46a"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"9b5c96e6818c341916289590b4b4ab97f75ceee5","unresolved":false,"context_lines":[{"line_number":26,"context_line":"Use Cases"},{"line_number":27,"context_line":"---------"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"As the Administrator I want to create `Audit`_ with CONTINUOUS type."},{"line_number":30,"context_line":"I specify periodic time with --period parameter (in seconds) to run audit"},{"line_number":31,"context_line":"every 600 seconds. Running audit will create and apply action plan every"},{"line_number":32,"context_line":"600 seconds."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bab6814e_9e37d7af","line":29,"range":{"start_line":29,"start_character":52,"end_line":29,"end_character":62},"in_reply_to":"bab6814e_bd41043c","updated":"2016-05-19 08:57:42.000000000","message":"We need to discuss it at openstack-watcher channel with other members.","commit_id":"c5b09a090a5c00b9c87b24d048788565116ff46a"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"8693731d14c28d1b383d0b477fe3d3d23ff7e2c1","unresolved":false,"context_lines":[{"line_number":46,"context_line":"some of them should be launched, we call \u0027trigger_audit\u0027 method of"},{"line_number":47,"context_line":"AuditEndpoint class to run strategy and get new action plan. Then we update"},{"line_number":48,"context_line":"\u0027next_launch\u0027 field with current_time+period. If Audit was just created its"},{"line_number":49,"context_line":"\u0027next_launch\u0027 field set as created_at+period. We can specify frequency of"},{"line_number":50,"context_line":"periodic_time\u0027s calling by Watcher configuration file."},{"line_number":51,"context_line":"To keep track of the triggered audit, notification has to be pushed on"},{"line_number":52,"context_line":"the message bus every time the audit is re-triggered."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bab6814e_7d5afc84","line":50,"range":{"start_line":49,"start_character":46,"end_line":50,"end_character":54},"updated":"2016-05-18 16:35:13.000000000","message":"So there would be a single interval for all such periodic audits? That doesn\u0027t sound very flexible.\n\nHow about we add an optional \u0027period\u0027 parameter (default\u003d0) to the call that triggers the audit? If it is passed, the audit repeats every \u0027period\u0027 seconds.","commit_id":"c5b09a090a5c00b9c87b24d048788565116ff46a"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"9b5c96e6818c341916289590b4b4ab97f75ceee5","unresolved":false,"context_lines":[{"line_number":46,"context_line":"some of them should be launched, we call \u0027trigger_audit\u0027 method of"},{"line_number":47,"context_line":"AuditEndpoint class to run strategy and get new action plan. Then we update"},{"line_number":48,"context_line":"\u0027next_launch\u0027 field with current_time+period. If Audit was just created its"},{"line_number":49,"context_line":"\u0027next_launch\u0027 field set as created_at+period. We can specify frequency of"},{"line_number":50,"context_line":"periodic_time\u0027s calling by Watcher configuration file."},{"line_number":51,"context_line":"To keep track of the triggered audit, notification has to be pushed on"},{"line_number":52,"context_line":"the message bus every time the audit is re-triggered."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bab6814e_fe3703e1","line":50,"range":{"start_line":49,"start_character":46,"end_line":50,"end_character":54},"in_reply_to":"bab6814e_7d5afc84","updated":"2016-05-19 08:57:42.000000000","message":"periodic_time is a parameter for periodic_task decorator. I\u0027ll remove this sentence to avoid duality.","commit_id":"c5b09a090a5c00b9c87b24d048788565116ff46a"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"8693731d14c28d1b383d0b477fe3d3d23ff7e2c1","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Data model impact"},{"line_number":60,"context_line":"-----------------"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"There must be two new fields in Audit model: timestamp \u0027next_launch\u0027 and"},{"line_number":63,"context_line":"integer \u0027period\u0027. This ones are nullable."},{"line_number":64,"context_line":"\u0027next_launch\u0027 field has datetime.utcnow by default."},{"line_number":65,"context_line":"\u0027period\u0027 field has 0 by default."},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bab6814e_bdd104fe","line":63,"range":{"start_line":62,"start_character":69,"end_line":63,"end_character":16},"updated":"2016-05-18 16:35:13.000000000","message":"If this is a single configuration option, then this column isn\u0027t needed, as we would just increment by CONF.audit_period each time.","commit_id":"c5b09a090a5c00b9c87b24d048788565116ff46a"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"9b5c96e6818c341916289590b4b4ab97f75ceee5","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Data model impact"},{"line_number":60,"context_line":"-----------------"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"There must be two new fields in Audit model: timestamp \u0027next_launch\u0027 and"},{"line_number":63,"context_line":"integer \u0027period\u0027. This ones are nullable."},{"line_number":64,"context_line":"\u0027next_launch\u0027 field has datetime.utcnow by default."},{"line_number":65,"context_line":"\u0027period\u0027 field has 0 by default."},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bab6814e_9e823751","line":63,"range":{"start_line":62,"start_character":69,"end_line":63,"end_character":16},"in_reply_to":"bab6814e_bdd104fe","updated":"2016-05-19 08:57:42.000000000","message":"We considered to specify period for every audit.","commit_id":"c5b09a090a5c00b9c87b24d048788565116ff46a"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"8693731d14c28d1b383d0b477fe3d3d23ff7e2c1","unresolved":false,"context_lines":[{"line_number":67,"context_line":"REST API impact"},{"line_number":68,"context_line":"---------------"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"\u0027peroid\u0027 field has to be added as Audit attribute."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Security impact"},{"line_number":73,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bab6814e_fddb8c19","line":70,"range":{"start_line":70,"start_character":1,"end_line":70,"end_character":7},"updated":"2016-05-18 16:35:13.000000000","message":"s/peroid/period","commit_id":"c5b09a090a5c00b9c87b24d048788565116ff46a"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"9b5c96e6818c341916289590b4b4ab97f75ceee5","unresolved":false,"context_lines":[{"line_number":67,"context_line":"REST API impact"},{"line_number":68,"context_line":"---------------"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"\u0027peroid\u0027 field has to be added as Audit attribute."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Security impact"},{"line_number":73,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bab6814e_61ba5625","line":70,"range":{"start_line":70,"start_character":1,"end_line":70,"end_character":7},"in_reply_to":"bab6814e_fddb8c19","updated":"2016-05-19 08:57:42.000000000","message":"Done","commit_id":"c5b09a090a5c00b9c87b24d048788565116ff46a"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"8693731d14c28d1b383d0b477fe3d3d23ff7e2c1","unresolved":false,"context_lines":[{"line_number":130,"context_line":"Testing"},{"line_number":131,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Several unit tests will be provided to test various scenarios."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Documentation Impact"},{"line_number":136,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bab6814e_9d6a4019","line":133,"updated":"2016-05-18 16:35:13.000000000","message":"It would help to spell out just what scenarios will be covered.","commit_id":"c5b09a090a5c00b9c87b24d048788565116ff46a"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"9b5c96e6818c341916289590b4b4ab97f75ceee5","unresolved":false,"context_lines":[{"line_number":130,"context_line":"Testing"},{"line_number":131,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Several unit tests will be provided to test various scenarios."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Documentation Impact"},{"line_number":136,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bab6814e_39eb48b2","line":133,"in_reply_to":"bab6814e_9d6a4019","updated":"2016-05-19 08:57:42.000000000","message":"Done","commit_id":"c5b09a090a5c00b9c87b24d048788565116ff46a"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"d15dbb5028248cb9ce07bd9314ca05ac6871c4e4","unresolved":false,"context_lines":[{"line_number":11,"context_line":"`Cluster`_ can be optimized by different `Strategies`_ only when they have"},{"line_number":12,"context_line":"been triggered by `Administrator`_. Launching a recommended `Action Plan`_"},{"line_number":13,"context_line":"manually is not always suitable since state of cluster is constantly changing."},{"line_number":14,"context_line":"Watcher already has an advice mode which is represented as oneshot type."},{"line_number":15,"context_line":"It would be better to have two ways of launching audit: either by triggering"},{"line_number":16,"context_line":"it manually or by launching it periodically."},{"line_number":17,"context_line":"We propose to include continuous optimization as continuous type of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_ea0ec839","line":14,"range":{"start_line":14,"start_character":23,"end_line":14,"end_character":34},"updated":"2016-05-20 04:41:38.000000000","message":"s/changes/change  or s/this/these","commit_id":"b32de4a33835b9b5f510f7823c88d040e426eb41"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"f1725fe29101fea636080e032e50fec8c86597b7","unresolved":false,"context_lines":[{"line_number":11,"context_line":"`Cluster`_ can be optimized by different `Strategies`_ only when they have"},{"line_number":12,"context_line":"been triggered by `Administrator`_. Launching a recommended `Action Plan`_"},{"line_number":13,"context_line":"manually is not always suitable since state of cluster is constantly changing."},{"line_number":14,"context_line":"Watcher already has an advice mode which is represented as oneshot type."},{"line_number":15,"context_line":"It would be better to have two ways of launching audit: either by triggering"},{"line_number":16,"context_line":"it manually or by launching it periodically."},{"line_number":17,"context_line":"We propose to include continuous optimization as continuous type of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_6cdf900d","line":14,"range":{"start_line":14,"start_character":23,"end_line":14,"end_character":34},"in_reply_to":"bab6814e_1de6f443","updated":"2016-05-20 08:10:04.000000000","message":"Done","commit_id":"b32de4a33835b9b5f510f7823c88d040e426eb41"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"f1725fe29101fea636080e032e50fec8c86597b7","unresolved":false,"context_lines":[{"line_number":11,"context_line":"`Cluster`_ can be optimized by different `Strategies`_ only when they have"},{"line_number":12,"context_line":"been triggered by `Administrator`_. Launching a recommended `Action Plan`_"},{"line_number":13,"context_line":"manually is not always suitable since state of cluster is constantly changing."},{"line_number":14,"context_line":"Watcher already has an advice mode which is represented as oneshot type."},{"line_number":15,"context_line":"It would be better to have two ways of launching audit: either by triggering"},{"line_number":16,"context_line":"it manually or by launching it periodically."},{"line_number":17,"context_line":"We propose to include continuous optimization as continuous type of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_4ce44ce0","line":14,"range":{"start_line":14,"start_character":23,"end_line":14,"end_character":34},"in_reply_to":"bab6814e_ea0ec839","updated":"2016-05-20 08:10:04.000000000","message":"Done","commit_id":"b32de4a33835b9b5f510f7823c88d040e426eb41"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"17cc2b438bafdf2aea332b0ae519bfa42e706027","unresolved":false,"context_lines":[{"line_number":11,"context_line":"`Cluster`_ can be optimized by different `Strategies`_ only when they have"},{"line_number":12,"context_line":"been triggered by `Administrator`_. Launching a recommended `Action Plan`_"},{"line_number":13,"context_line":"manually is not always suitable since state of cluster is constantly changing."},{"line_number":14,"context_line":"Watcher already has an advice mode which is represented as oneshot type."},{"line_number":15,"context_line":"It would be better to have two ways of launching audit: either by triggering"},{"line_number":16,"context_line":"it manually or by launching it periodically."},{"line_number":17,"context_line":"We propose to include continuous optimization as continuous type of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_1de6f443","line":14,"range":{"start_line":14,"start_character":23,"end_line":14,"end_character":34},"in_reply_to":"bab6814e_ea0ec839","updated":"2016-05-20 04:46:58.000000000","message":"Sorry， mistake，s/advice/advise","commit_id":"b32de4a33835b9b5f510f7823c88d040e426eb41"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"d15dbb5028248cb9ce07bd9314ca05ac6871c4e4","unresolved":false,"context_lines":[{"line_number":17,"context_line":"We propose to include continuous optimization as continuous type of"},{"line_number":18,"context_line":"audit object in Watcher Project."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The main purpose of this changes is to design and implement active mode of"},{"line_number":21,"context_line":"Watcher\u0027s audit."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This specification relates to blueprint:"},{"line_number":24,"context_line":"https://blueprints.launchpad.net/watcher/+spec/continuously-optimization"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_47e42de0","line":21,"range":{"start_line":20,"start_character":0,"end_line":21,"end_character":16},"updated":"2016-05-20 04:41:38.000000000","message":"s/changes/change","commit_id":"b32de4a33835b9b5f510f7823c88d040e426eb41"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"f1725fe29101fea636080e032e50fec8c86597b7","unresolved":false,"context_lines":[{"line_number":17,"context_line":"We propose to include continuous optimization as continuous type of"},{"line_number":18,"context_line":"audit object in Watcher Project."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The main purpose of this changes is to design and implement active mode of"},{"line_number":21,"context_line":"Watcher\u0027s audit."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This specification relates to blueprint:"},{"line_number":24,"context_line":"https://blueprints.launchpad.net/watcher/+spec/continuously-optimization"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_ace5f8dc","line":21,"range":{"start_line":20,"start_character":0,"end_line":21,"end_character":16},"in_reply_to":"bab6814e_47e42de0","updated":"2016-05-20 08:10:04.000000000","message":"Done","commit_id":"b32de4a33835b9b5f510f7823c88d040e426eb41"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"d15dbb5028248cb9ce07bd9314ca05ac6871c4e4","unresolved":false,"context_lines":[{"line_number":46,"context_line":"time. If some of them should be launched, we call \u0027trigger_audit\u0027 method of"},{"line_number":47,"context_line":"AuditEndpoint class to run strategy and get new action plan. Then we update"},{"line_number":48,"context_line":"\u0027next_launch\u0027 field with current_time+period. If Audit was just created its"},{"line_number":49,"context_line":"\u0027next_launch\u0027 field set as created_at+period."},{"line_number":50,"context_line":"To keep track of the triggered audit, notification has to be pushed on"},{"line_number":51,"context_line":"the message bus every time the audit is re-triggered."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_2a8f3076","line":49,"range":{"start_line":49,"start_character":26,"end_line":49,"end_character":45},"updated":"2016-05-20 04:41:38.000000000","message":"Why not use current_time+period here also? It looks no problem. And i think it will be more accurate.","commit_id":"b32de4a33835b9b5f510f7823c88d040e426eb41"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"f1725fe29101fea636080e032e50fec8c86597b7","unresolved":false,"context_lines":[{"line_number":46,"context_line":"time. If some of them should be launched, we call \u0027trigger_audit\u0027 method of"},{"line_number":47,"context_line":"AuditEndpoint class to run strategy and get new action plan. Then we update"},{"line_number":48,"context_line":"\u0027next_launch\u0027 field with current_time+period. If Audit was just created its"},{"line_number":49,"context_line":"\u0027next_launch\u0027 field set as created_at+period."},{"line_number":50,"context_line":"To keep track of the triggered audit, notification has to be pushed on"},{"line_number":51,"context_line":"the message bus every time the audit is re-triggered."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_4cbd6cb6","line":49,"range":{"start_line":49,"start_character":26,"end_line":49,"end_character":45},"in_reply_to":"bab6814e_2a8f3076","updated":"2016-05-20 08:10:04.000000000","message":"Done","commit_id":"b32de4a33835b9b5f510f7823c88d040e426eb41"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"d15dbb5028248cb9ce07bd9314ca05ac6871c4e4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"There must be two new fields in Audit model: timestamp \u0027next_launch\u0027 and"},{"line_number":62,"context_line":"integer \u0027period\u0027. This ones are nullable."},{"line_number":63,"context_line":"\u0027next_launch\u0027 field has datetime.utcnow by default."},{"line_number":64,"context_line":"\u0027period\u0027 field has 0 by default."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"REST API impact"},{"line_number":67,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_0a686c86","line":64,"range":{"start_line":64,"start_character":0,"end_line":64,"end_character":32},"updated":"2016-05-20 04:41:38.000000000","message":"Set period to 0 by default are too dangerous. It should be other value.","commit_id":"b32de4a33835b9b5f510f7823c88d040e426eb41"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"f1725fe29101fea636080e032e50fec8c86597b7","unresolved":false,"context_lines":[{"line_number":61,"context_line":"There must be two new fields in Audit model: timestamp \u0027next_launch\u0027 and"},{"line_number":62,"context_line":"integer \u0027period\u0027. This ones are nullable."},{"line_number":63,"context_line":"\u0027next_launch\u0027 field has datetime.utcnow by default."},{"line_number":64,"context_line":"\u0027period\u0027 field has 0 by default."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"REST API impact"},{"line_number":67,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_2cc3c839","line":64,"range":{"start_line":64,"start_character":0,"end_line":64,"end_character":32},"in_reply_to":"bab6814e_0a686c86","updated":"2016-05-20 08:10:04.000000000","message":"Done","commit_id":"b32de4a33835b9b5f510f7823c88d040e426eb41"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"d15dbb5028248cb9ce07bd9314ca05ac6871c4e4","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Documentation Impact"},{"line_number":138,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"It will be necessary to add new content relating to this changes."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"References"},{"line_number":143,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_2af0d0c8","line":140,"range":{"start_line":140,"start_character":57,"end_line":140,"end_character":64},"updated":"2016-05-20 04:41:38.000000000","message":"s/changes/change  or s/this/these","commit_id":"b32de4a33835b9b5f510f7823c88d040e426eb41"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"f1725fe29101fea636080e032e50fec8c86597b7","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Documentation Impact"},{"line_number":138,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"It will be necessary to add new content relating to this changes."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"References"},{"line_number":143,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_0cc08429","line":140,"range":{"start_line":140,"start_character":57,"end_line":140,"end_character":64},"in_reply_to":"bab6814e_2af0d0c8","updated":"2016-05-20 08:10:04.000000000","message":"Done","commit_id":"b32de4a33835b9b5f510f7823c88d040e426eb41"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"ab41c14c848de5e97ddadfc459f46af6430ef609","unresolved":false,"context_lines":[{"line_number":11,"context_line":"`Cluster`_ can be optimized by different `Strategies`_ only when they have"},{"line_number":12,"context_line":"been triggered by `Administrator`_. Launching a recommended `Action Plan`_"},{"line_number":13,"context_line":"manually is not always suitable since state of cluster is constantly changing."},{"line_number":14,"context_line":"Watcher already has an advise mode which is represented as oneshot type."},{"line_number":15,"context_line":"It would be better to have two ways of launching audit: either by triggering"},{"line_number":16,"context_line":"it manually or by launching it periodically."},{"line_number":17,"context_line":"We propose to include continuous optimization as continuous type of"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab6814e_7ef0c4fe","line":14,"range":{"start_line":14,"start_character":23,"end_line":14,"end_character":34},"updated":"2016-05-20 13:14:38.000000000","message":"be careful, the advise mode does not start automatically the action plan after running the audit, we always need an action from the admin to run the action plan","commit_id":"ff51bb3e1afc7c22d7c98bb425ccc9330c9ad685"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"ab41c14c848de5e97ddadfc459f46af6430ef609","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"As the Administrator I want to create `Audit`_ with CONTINUOUS type."},{"line_number":30,"context_line":"I specify periodic time with --period parameter (in seconds) to run audit"},{"line_number":31,"context_line":"every 600 seconds. Running audit will create and apply action plan every"},{"line_number":32,"context_line":"600 seconds."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Project Priority"},{"line_number":35,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab6814e_be44ec1a","line":32,"range":{"start_line":31,"start_character":19,"end_line":32,"end_character":12},"updated":"2016-05-20 13:14:38.000000000","message":"The audit will be run every 600 seconds but the action plan will not be triggered without an admin action. Please fill a new BP if you need this feature.","commit_id":"ff51bb3e1afc7c22d7c98bb425ccc9330c9ad685"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"00b7bb7f87b6f8c14ad94a696ba124c05b09fc26","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Watcher Continuosly Optimization"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"https://blueprints.launchpad.net/watcher/+spec/continuously-optimization"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9abb7d3a_aed73222","line":2,"range":{"start_line":2,"start_character":8,"end_line":2,"end_character":19},"updated":"2016-05-27 10:04:06.000000000","message":"s/Continuosly/continuous","commit_id":"c3b0d17cddf87eab6e8c4a159d6bfec2c9b0a72f"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"860bad63f91825762a2b1e6f84ad428afce9287d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Watcher Continuosly Optimization"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"https://blueprints.launchpad.net/watcher/+spec/continuously-optimization"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9abb7d3a_41d134cd","line":2,"range":{"start_line":2,"start_character":8,"end_line":2,"end_character":19},"in_reply_to":"9abb7d3a_aed73222","updated":"2016-05-27 12:35:58.000000000","message":"Done","commit_id":"c3b0d17cddf87eab6e8c4a159d6bfec2c9b0a72f"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"9e89f36efb4010f7e27e115bfaf211e42b28f7cf","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"To perform audits with continuous type we can use periodic_task decorator"},{"line_number":42,"context_line":"from oslo_service module on \u0027launch_audits_periodically\u0027 method. This method"},{"line_number":43,"context_line":"gets continuous type audits to compare their \u0027next_launch\u0027 field to current"},{"line_number":44,"context_line":"time. If some of them should be launched, we call \u0027trigger_audit\u0027 method of"},{"line_number":45,"context_line":"AuditEndpoint class to run strategy and get new action plan. Then we update"},{"line_number":46,"context_line":"\u0027next_launch\u0027 field with current_time+period. If Audit was just created its"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9abb7d3a_4ef8467d","line":43,"range":{"start_line":43,"start_character":45,"end_line":43,"end_character":58},"updated":"2016-05-27 10:05:06.000000000","message":"IMHO, the time of the next launch should be computed in-memory instead of being stored in the database.","commit_id":"c3b0d17cddf87eab6e8c4a159d6bfec2c9b0a72f"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"860bad63f91825762a2b1e6f84ad428afce9287d","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"To perform audits with continuous type we can use periodic_task decorator"},{"line_number":42,"context_line":"from oslo_service module on \u0027launch_audits_periodically\u0027 method. This method"},{"line_number":43,"context_line":"gets continuous type audits to compare their \u0027next_launch\u0027 field to current"},{"line_number":44,"context_line":"time. If some of them should be launched, we call \u0027trigger_audit\u0027 method of"},{"line_number":45,"context_line":"AuditEndpoint class to run strategy and get new action plan. Then we update"},{"line_number":46,"context_line":"\u0027next_launch\u0027 field with current_time+period. If Audit was just created its"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9abb7d3a_c4bed2fe","line":43,"range":{"start_line":43,"start_character":45,"end_line":43,"end_character":58},"in_reply_to":"9abb7d3a_4ef8467d","updated":"2016-05-27 12:35:58.000000000","message":"Done","commit_id":"c3b0d17cddf87eab6e8c4a159d6bfec2c9b0a72f"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"92f15e41b99a2663de8ea295298515943e21b69f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"\u0027next_launch\u0027 field with current_time+period. If Audit was just created its"},{"line_number":47,"context_line":"\u0027next_launch\u0027 field set as current_time+period."},{"line_number":48,"context_line":"To keep track of the triggered audit, notification has to be pushed on"},{"line_number":49,"context_line":"the message bus every time the audit is re-triggered."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Alternatives"},{"line_number":52,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9abb7d3a_01260cba","line":49,"range":{"start_line":49,"start_character":53,"end_line":49,"end_character":53},"updated":"2016-05-27 11:59:56.000000000","message":"When a new action plan is proposed, Watcher should cancel all the previously generated action plans (and actions) with same Audit Template become obsolete and therefore their state should be changed to CANCELLED.","commit_id":"c3b0d17cddf87eab6e8c4a159d6bfec2c9b0a72f"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"860bad63f91825762a2b1e6f84ad428afce9287d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"\u0027next_launch\u0027 field with current_time+period. If Audit was just created its"},{"line_number":47,"context_line":"\u0027next_launch\u0027 field set as current_time+period."},{"line_number":48,"context_line":"To keep track of the triggered audit, notification has to be pushed on"},{"line_number":49,"context_line":"the message bus every time the audit is re-triggered."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Alternatives"},{"line_number":52,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9abb7d3a_8477aad3","line":49,"range":{"start_line":49,"start_character":53,"end_line":49,"end_character":53},"in_reply_to":"9abb7d3a_01260cba","updated":"2016-05-27 12:35:58.000000000","message":"Done","commit_id":"c3b0d17cddf87eab6e8c4a159d6bfec2c9b0a72f"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"9e89f36efb4010f7e27e115bfaf211e42b28f7cf","unresolved":false,"context_lines":[{"line_number":47,"context_line":"\u0027next_launch\u0027 field set as current_time+period."},{"line_number":48,"context_line":"To keep track of the triggered audit, notification has to be pushed on"},{"line_number":49,"context_line":"the message bus every time the audit is re-triggered."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Alternatives"},{"line_number":52,"context_line":"------------"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"9abb7d3a_0e359e45","line":50,"updated":"2016-05-27 10:05:06.000000000","message":"How about when we want to stop/cancel a periodic audit?","commit_id":"c3b0d17cddf87eab6e8c4a159d6bfec2c9b0a72f"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"92f15e41b99a2663de8ea295298515943e21b69f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"\u0027next_launch\u0027 field set as current_time+period."},{"line_number":48,"context_line":"To keep track of the triggered audit, notification has to be pushed on"},{"line_number":49,"context_line":"the message bus every time the audit is re-triggered."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Alternatives"},{"line_number":52,"context_line":"------------"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"9abb7d3a_81415c3c","line":50,"in_reply_to":"9abb7d3a_0e359e45","updated":"2016-05-27 11:59:56.000000000","message":"If it\u0027s time to launch a new audit but there is still a previously launched audit ONGOING (because the strategy takes a lot of time to find a solution), the launch of new audit should be postponed to the next coming period. In order to avoid accumulation of audits related to the same audit template.\nA WARNING message should then be added to the watcher logs advising the admin to configure a longer period for the continuous audit.","commit_id":"c3b0d17cddf87eab6e8c4a159d6bfec2c9b0a72f"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"860bad63f91825762a2b1e6f84ad428afce9287d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"\u0027next_launch\u0027 field set as current_time+period."},{"line_number":48,"context_line":"To keep track of the triggered audit, notification has to be pushed on"},{"line_number":49,"context_line":"the message bus every time the audit is re-triggered."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Alternatives"},{"line_number":52,"context_line":"------------"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"9abb7d3a_e4679623","line":50,"in_reply_to":"9abb7d3a_0e359e45","updated":"2016-05-27 12:35:58.000000000","message":"We take only audits in \u0027PENDING\u0027, \u0027ONGOING\u0027, \u0027SUCCEEDED\u0027 states.","commit_id":"c3b0d17cddf87eab6e8c4a159d6bfec2c9b0a72f"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"860bad63f91825762a2b1e6f84ad428afce9287d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"\u0027next_launch\u0027 field set as current_time+period."},{"line_number":48,"context_line":"To keep track of the triggered audit, notification has to be pushed on"},{"line_number":49,"context_line":"the message bus every time the audit is re-triggered."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Alternatives"},{"line_number":52,"context_line":"------------"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"9abb7d3a_04957ae3","line":50,"in_reply_to":"9abb7d3a_81415c3c","updated":"2016-05-27 12:35:58.000000000","message":"We will check if there is a UUID of audit in audits_to_launch list. If it is we just continue to the next audit.","commit_id":"c3b0d17cddf87eab6e8c4a159d6bfec2c9b0a72f"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"92f15e41b99a2663de8ea295298515943e21b69f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"Alternatives"},{"line_number":52,"context_line":"------------"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The alternative to this approach is to use advise mode of Watcher."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Data model impact"},{"line_number":57,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9abb7d3a_dd36a6b3","line":54,"range":{"start_line":54,"start_character":65,"end_line":54,"end_character":66},"updated":"2016-05-27 11:59:56.000000000","message":"Another alternatives would be :\n- to use Congress to automatically trigger audits when some conditions are met (new compute nodes added/removed, ...).\n- to use a cronjob which triggers new audit regularly via watcher-client","commit_id":"c3b0d17cddf87eab6e8c4a159d6bfec2c9b0a72f"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"860bad63f91825762a2b1e6f84ad428afce9287d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"Alternatives"},{"line_number":52,"context_line":"------------"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The alternative to this approach is to use advise mode of Watcher."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Data model impact"},{"line_number":57,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9abb7d3a_c4909298","line":54,"range":{"start_line":54,"start_character":65,"end_line":54,"end_character":66},"in_reply_to":"9abb7d3a_dd36a6b3","updated":"2016-05-27 12:35:58.000000000","message":"Done","commit_id":"c3b0d17cddf87eab6e8c4a159d6bfec2c9b0a72f"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"ac734c83a9b490624d5fe76063670bf450ad2f99","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"To perform audits with continuous type we can use periodic_task decorator"},{"line_number":42,"context_line":"from oslo_service module on \u0027launch_audits_periodically\u0027 method. This method"},{"line_number":43,"context_line":"gets continuous type audits with (PENDING, ONGOING, SUCCEEDED) states. If some"},{"line_number":44,"context_line":"of them are not in audits_to_launch list we add them to that list and to the"},{"line_number":45,"context_line":"ThreadPoolExecutor. Once audit is added to thread, this thread is going to"},{"line_number":46,"context_line":"sleep for PERIOD seconds. After this audit will be executed and UUID of audit"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_aad8b51e","line":43,"range":{"start_line":43,"start_character":52,"end_line":43,"end_character":61},"updated":"2016-05-27 13:03:59.000000000","message":"After taking a closer look at the code, the reason why you are telling me we should consider the SUCCEEDED state is because periodic audits are set as SUCCEEDED after each execution. This is creating a loop in the audit state machine whereby an audit can be \"reset\" to ONGOING. IMHO, we should instead maintain a periodic audit as ONGOING so that the only way for it to reach a \"final\" state is by being CANCELLED out.","commit_id":"ebc182e7822c2271a58d83d00047471ba76810be"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"e188ebf761e633884143b227161291eb7e954781","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"To perform audits with continuous type we can use periodic_task decorator"},{"line_number":42,"context_line":"from oslo_service module on \u0027launch_audits_periodically\u0027 method. This method"},{"line_number":43,"context_line":"gets continuous type audits with (PENDING, ONGOING, SUCCEEDED) states. If some"},{"line_number":44,"context_line":"of them are not in audits_to_launch list we add them to that list and to the"},{"line_number":45,"context_line":"ThreadPoolExecutor. Once audit is added to thread, this thread is going to"},{"line_number":46,"context_line":"sleep for PERIOD seconds. After this audit will be executed and UUID of audit"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9abb7d3a_caaa5919","line":43,"range":{"start_line":43,"start_character":52,"end_line":43,"end_character":61},"in_reply_to":"9abb7d3a_aad8b51e","updated":"2016-05-27 13:08:06.000000000","message":"Done","commit_id":"ebc182e7822c2271a58d83d00047471ba76810be"}]}
