)]}'
{"specs/parallel.rst":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"fd2b9d0e2f85f3e449e0ba48ef7090d66badcebe","unresolved":false,"context_lines":[{"line_number":246,"context_line":"implicit knowledge into a config module regarding other config modules."},{"line_number":247,"context_line":"These \"drawbacks\" might not be as serious as it sounds, but it\u0027s better"},{"line_number":248,"context_line":"to know beforehand what each solution will bring to the table before"},{"line_number":249,"context_line":"implementing it."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Another point that we need to address with regard to config module"},{"line_number":252,"context_line":"dependencies is represented by the fact that the config modules"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da20952f_dddc5be6","line":249,"updated":"2015-09-03 19:58:12.000000000","message":"I personally prefer the second, creating a directed-graph of the depends_on() isn\u0027t really that hard and then going through that in a topologically sorted manner (if possible) isn\u0027t anything to crazy IMHO :)","commit_id":"d6aa4367e7fcbe2765b80982c3bd3e7028bbb64d"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"f354e21a372b8a207ca29ea0769552bf1ed9b7f6","unresolved":false,"context_lines":[{"line_number":290,"context_line":"where as the second approach is more complex and could be tricky to implement,"},{"line_number":291,"context_line":"but it can scale to a big number of possible data sources and config modules to execute."},{"line_number":292,"context_line":"The second approach also implies a central piece of code that manipulates both"},{"line_number":293,"context_line":"data sources and config modules, knowing how to handle config modules per stage and"},{"line_number":294,"context_line":"how to solve dependencies at runtime and so on. In a sense, this can be viewed"},{"line_number":295,"context_line":"as the event loop of cloud-init V2."},{"line_number":296,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"da20952f_fd759fca","line":293,"updated":"2015-09-03 20:00:23.000000000","message":"This also sounds alot like the taskflow engine concept (which also operates on directed graphs, ha).\n\nhttp://docs.openstack.org/developer/taskflow/engines.html#how-they-run","commit_id":"d6aa4367e7fcbe2765b80982c3bd3e7028bbb64d"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"fd2b9d0e2f85f3e449e0ba48ef7090d66badcebe","unresolved":false,"context_lines":[{"line_number":292,"context_line":"The second approach also implies a central piece of code that manipulates both"},{"line_number":293,"context_line":"data sources and config modules, knowing how to handle config modules per stage and"},{"line_number":294,"context_line":"how to solve dependencies at runtime and so on. In a sense, this can be viewed"},{"line_number":295,"context_line":"as the event loop of cloud-init V2."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":".. _concurrent.futures.as_completed: https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.as_completed"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da20952f_dd03fb40","line":295,"updated":"2015-09-03 19:58:12.000000000","message":"I like the second to, as long as its designed right I think it can work out.","commit_id":"d6aa4367e7fcbe2765b80982c3bd3e7028bbb64d"},{"author":{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},"change_message_id":"0821970cfe392a380d7c7ba1abf11a8946217633","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"   * the first data source that was loaded, even with the parallel discovery,"},{"line_number":38,"context_line":"     will still be used, even though there are data sources that exports"},{"line_number":39,"context_line":"     more information that can be used?"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   * how the config modules will be executed, with regard to config module"},{"line_number":42,"context_line":"     interdependency and dependencies between config modules and the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_47be7cd5","line":39,"updated":"2015-10-06 20:20:18.000000000","message":"I think the key here is that data sources that export less must be defensive.  Ie, in example of openstack where there is an EC2 datasource and an openstack datasource.  The EC2 datasource must be written to return \u0027not found\u0027.  Then the openstack datasource *would* be found and used.","commit_id":"0f09e74c7f070faab491b4ce5a7f44bcf9a4e881"},{"author":{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},"change_message_id":"0821970cfe392a380d7c7ba1abf11a8946217633","unresolved":false,"context_lines":[{"line_number":89,"context_line":"     to each data source."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"   * specify for each config module what capabilities are needed"},{"line_number":92,"context_line":"     and what capabilities are required."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"As an attemptive API, declaring the capabilities for a data source"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_27b7c0d9","line":92,"updated":"2015-10-06 20:20:18.000000000","message":"what is the difference between \u0027needed\u0027 and \u0027required\u0027 ?","commit_id":"0f09e74c7f070faab491b4ce5a7f44bcf9a4e881"},{"author":{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},"change_message_id":"0821970cfe392a380d7c7ba1abf11a8946217633","unresolved":false,"context_lines":[{"line_number":117,"context_line":"The capabilities for the config modules can be defined with the"},{"line_number":118,"context_line":"same API, with the distinction that we\u0027ll need to declare two types of"},{"line_number":119,"context_line":"capabilities, all the capabilities that a config module can use"},{"line_number":120,"context_line":"and all the capabilities that it absolutely needs."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Strategies"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_472f5cf6","line":120,"updated":"2015-10-06 20:20:18.000000000","message":"Why do we need to care about \u0027needs\u0027 and \u0027can use\u0027.  why not just \u0027needs\u0027 and the config module determine itself if the datasource class its provided has that or not.","commit_id":"0f09e74c7f070faab491b4ce5a7f44bcf9a4e881"},{"author":{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},"change_message_id":"0821970cfe392a380d7c7ba1abf11a8946217633","unresolved":false,"context_lines":[{"line_number":133,"context_line":"a new search strategy for selecting the most suitable data source"},{"line_number":134,"context_line":"for our current run. A nice side effect of this is that if the"},{"line_number":135,"context_line":"config modules that we need to execute don\u0027t need a data source"},{"line_number":136,"context_line":"capability at all, then we don\u0027t need to load them."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"The strategies aren\u0027t limited to filtering, they can be used to"},{"line_number":139,"context_line":"load the data sources as well, which is already done"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_c7504c61","line":136,"updated":"2015-10-06 20:20:18.000000000","message":"in cloud-init virtually all things are configurable and enableable/disableable.  Thus i\u0027d think that a datasource (with userdata and vendordata) and system configuration is always required for a config module.\n\nor at least in cloud-init 0.7 we have a fallback \u0027None\u0027 datasource that provides minimal information.","commit_id":"0f09e74c7f070faab491b4ce5a7f44bcf9a4e881"},{"author":{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},"change_message_id":"0821970cfe392a380d7c7ba1abf11a8946217633","unresolved":false,"context_lines":[{"line_number":147,"context_line":"start executing config modules before discovering all the data sources,"},{"line_number":148,"context_line":"as long as the available data source has the capabilities"},{"line_number":149,"context_line":"required to run the aforementioned config modules."},{"line_number":150,"context_line":"The rest of the config modules can be executed as soon as a data"},{"line_number":151,"context_line":"source capable for them is available."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"The technical problem is that ``cloudinit.sources.base.get_data_source``"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_87f8144b","line":150,"updated":"2015-10-06 20:20:18.000000000","message":"can you elaborate on multiple datasources?  I\u0027m not sure of the use case there.","commit_id":"0f09e74c7f070faab491b4ce5a7f44bcf9a4e881"}]}
