)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"2e33d00fe522e570b3c53436161436e6a9efaedb","unresolved":false,"context_lines":[{"line_number":12,"context_line":"on data managing tasks."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ib63ce0ab9938343029d24938cdd828d29a5001aa"},{"line_number":15,"context_line":"Blueprint: upload-serialized-facts-to-configdb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1af94dfe_c642013e","line":15,"updated":"2016-03-17 10:09:49.000000000","message":"upload-deployment-facts-to-configdb ?","commit_id":"cab8e9b7a968829d9b3c9752a958a6f9420b887a"}],"specs/9.0/upload-deployment-facts-to-configdb.rst":[{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"544a825f389a87d3ae44f4d8e25f078bd12c355f","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"The solution is needed to perform actual upload of required information"},{"line_number":40,"context_line":"into the configuration database. It also must keep the data up to date"},{"line_number":41,"context_line":"by synchronizing them upon every change applied to the environment."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Synchronization required in the following cases:"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1af94dfe_1e489ccb","line":41,"updated":"2016-03-17 17:47:27.000000000","message":"Hm.. I don\u0027t think it\u0027s a good idea to update that store each time. Consider, for instance, the following example:\n\n* We make first deployment.\n* Post deployment task submit actual data to config storage.\n* We change something in that config storage, and some puppet master runs puppets once again using those changes.\n* However, what will be happened if that *post-deployment* puppet will be run? It will report old data (probably) since it will use old astute.yaml and globals.yaml.\n\nCould it be the case? Or I miss something in that flow?","commit_id":"02cda0c0f0be0a29598d0fb148208c71b0c26c0c"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"6feaa3166ed292a49225eac2f6dc064e8d0ee732","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"The solution is needed to perform actual upload of required information"},{"line_number":40,"context_line":"into the configuration database. It also must keep the data up to date"},{"line_number":41,"context_line":"by synchronizing them upon every change applied to the environment."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Synchronization required in the following cases:"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1af94dfe_cbdb064e","line":41,"in_reply_to":"1af94dfe_1e489ccb","updated":"2016-03-17 19:40:55.000000000","message":"As far as I understand, the puppet agent will be reconfigured to only work with the Puppet Master once the initial deployment is finished, this is done by the PM LCM plugin. So I don\u0027t think it is a viable use case, at least at this point.","commit_id":"02cda0c0f0be0a29598d0fb148208c71b0c26c0c"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"544a825f389a87d3ae44f4d8e25f078bd12c355f","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  extension of Nailgun API to the deployment task in question"},{"line_number":113,"context_line":"  in a secure way."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"**Deployment task details**"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The deployment task shall have the following ID:"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1af94dfe_a32350a6","line":115,"updated":"2016-03-17 17:47:27.000000000","message":"Minor: I think it\u0027d be enough just to provide YAML version of the task rather providing a lot of descriptions :) It could improve readability.","commit_id":"02cda0c0f0be0a29598d0fb148208c71b0c26c0c"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"d7131fad55f69a2ee0e0c0fd8a12e032f3246459","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  extension of Nailgun API to the deployment task in question"},{"line_number":113,"context_line":"  in a secure way."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"**Deployment task details**"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The deployment task shall have the following ID:"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1af94dfe_3554891f","line":115,"in_reply_to":"1af94dfe_a32350a6","updated":"2016-03-17 19:12:58.000000000","message":"Then it\u0027d be better to do directly in change request that adds task, not in the specification.","commit_id":"02cda0c0f0be0a29598d0fb148208c71b0c26c0c"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"544a825f389a87d3ae44f4d8e25f078bd12c355f","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  * The list of data sources is fetched from ``astute.yaml`` file,"},{"line_number":152,"context_line":"    from parameter ``data_sources`` of Puppet Master LCM plugin\u0027s metadata."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Read data from files in ``/etc/hiera`` directory via ``mcollective``"},{"line_number":155,"context_line":"  client into internal variable of the deployment task."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Upload data to ConfigDB API\u0027s data sources based on the filenames from which"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1af94dfe_83ebb412","line":154,"updated":"2016-03-17 17:47:27.000000000","message":"Hm.. Why do you need \u0027mcollective\u0027 here? I thought we just read those content using puppet instruments.","commit_id":"02cda0c0f0be0a29598d0fb148208c71b0c26c0c"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"d7131fad55f69a2ee0e0c0fd8a12e032f3246459","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  * The list of data sources is fetched from ``astute.yaml`` file,"},{"line_number":152,"context_line":"    from parameter ``data_sources`` of Puppet Master LCM plugin\u0027s metadata."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Read data from files in ``/etc/hiera`` directory via ``mcollective``"},{"line_number":155,"context_line":"  client into internal variable of the deployment task."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Upload data to ConfigDB API\u0027s data sources based on the filenames from which"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1af94dfe_352be995","line":154,"in_reply_to":"1af94dfe_83ebb412","updated":"2016-03-17 19:12:58.000000000","message":"Mcollective IS the puppet instrument. In this case, it just sends the contents of files over to the task\u0027s process at the Master node, which in turn uploads it  to ConfigDB API.","commit_id":"02cda0c0f0be0a29598d0fb148208c71b0c26c0c"},{"author":{"_account_id":17180,"name":"sryabin","email":"sryabin@mirantis.com","username":"sryabin"},"change_message_id":"59ab6939cce0f402d7e11ce5a0b228bdd2cfb9b4","unresolved":false,"context_lines":[{"line_number":162,"context_line":"ConfigDB API extension as a part of Nailgun API"},{"line_number":163,"context_line":"uses Keystone to verify and authorize users."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"The plugin that uses ConfigDB shall be extended to create"},{"line_number":166,"context_line":"a service user in Keystone as a part of installation"},{"line_number":167,"context_line":"of the plugin."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Command ``fuel plugins --install`` will be extended"},{"line_number":170,"context_line":"to create a temporary access to Keystone for the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1af94dfe_238f40cd","line":167,"range":{"start_line":165,"start_character":0,"end_line":167,"end_character":14},"updated":"2016-03-17 16:00:13.000000000","message":"Users are responsible for configuring the environment.(c)","commit_id":"02cda0c0f0be0a29598d0fb148208c71b0c26c0c"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"d7131fad55f69a2ee0e0c0fd8a12e032f3246459","unresolved":false,"context_lines":[{"line_number":162,"context_line":"ConfigDB API extension as a part of Nailgun API"},{"line_number":163,"context_line":"uses Keystone to verify and authorize users."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"The plugin that uses ConfigDB shall be extended to create"},{"line_number":166,"context_line":"a service user in Keystone as a part of installation"},{"line_number":167,"context_line":"of the plugin."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Command ``fuel plugins --install`` will be extended"},{"line_number":170,"context_line":"to create a temporary access to Keystone for the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1af94dfe_d510c55b","line":167,"range":{"start_line":165,"start_character":0,"end_line":167,"end_character":14},"in_reply_to":"1af94dfe_238f40cd","updated":"2016-03-17 19:12:58.000000000","message":"Done","commit_id":"02cda0c0f0be0a29598d0fb148208c71b0c26c0c"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"544a825f389a87d3ae44f4d8e25f078bd12c355f","unresolved":false,"context_lines":[{"line_number":166,"context_line":"a service user in Keystone as a part of installation"},{"line_number":167,"context_line":"of the plugin."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Command ``fuel plugins --install`` will be extended"},{"line_number":170,"context_line":"to create a temporary access to Keystone for the"},{"line_number":171,"context_line":"plugin being installed."},{"line_number":172,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1af94dfe_231c60c0","line":169,"updated":"2016-03-17 17:47:27.000000000","message":"Hm.. I\u0027d prefer to avoud extending install command. What about creating it in \"post_install\" RPM hook? It\u0027s weird, but isolated from Fuel and could be maintained  by plugin owners.","commit_id":"02cda0c0f0be0a29598d0fb148208c71b0c26c0c"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"d7131fad55f69a2ee0e0c0fd8a12e032f3246459","unresolved":false,"context_lines":[{"line_number":166,"context_line":"a service user in Keystone as a part of installation"},{"line_number":167,"context_line":"of the plugin."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Command ``fuel plugins --install`` will be extended"},{"line_number":170,"context_line":"to create a temporary access to Keystone for the"},{"line_number":171,"context_line":"plugin being installed."},{"line_number":172,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1af94dfe_90280b88","line":169,"in_reply_to":"1af94dfe_231c60c0","updated":"2016-03-17 19:12:58.000000000","message":"I think we will revert to more straightforward flow here and leave it up to the user to create an account for the plugin in Keystone and then pass the credentials of that account to plugin while configure the environment.","commit_id":"02cda0c0f0be0a29598d0fb148208c71b0c26c0c"},{"author":{"_account_id":17180,"name":"sryabin","email":"sryabin@mirantis.com","username":"sryabin"},"change_message_id":"bf633f74b2096416ab7ee846eeb34e410c286af1","unresolved":false,"context_lines":[{"line_number":501,"context_line":".. [1] Puppet Master LCM plugin specification TBD"},{"line_number":502,"context_line":".. [2] Nailgun API extension for serialized deployment facts https://review.openstack.org/#/c/284109/"},{"line_number":503,"context_line":".. [3] Nailgun API for Deployment Information https://github.com/openstack/fuel-web/blob/master/nailgun/nailgun/api/v1/handlers/orchestrator.py#L190"},{"line_number":504,"context_line":".. [4] Trusts API in Keystone https://specs.openstack.org/openstack/keystone-specs/api/v3/identity-api-v3-os-trust-ext.html"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa0719c6_8e9feb5e","line":504,"updated":"2016-03-20 14:13:39.000000000","message":"Deprecated","commit_id":"02cda0c0f0be0a29598d0fb148208c71b0c26c0c"},{"author":{"_account_id":17180,"name":"sryabin","email":"sryabin@mirantis.com","username":"sryabin"},"change_message_id":"f5b47308465cdf3e46cbd4ee0e6907543f33c3db","unresolved":false,"context_lines":[{"line_number":497,"context_line":".. [1] Puppet Master LCM plugin specification TBD"},{"line_number":498,"context_line":".. [2] Nailgun API extension for serialized deployment facts https://review.openstack.org/#/c/284109/"},{"line_number":499,"context_line":".. [3] Nailgun API for Deployment Information https://github.com/openstack/fuel-web/blob/master/nailgun/nailgun/api/v1/handlers/orchestrator.py#L190"},{"line_number":500,"context_line":".. [4] Trusts API in Keystone https://specs.openstack.org/openstack/keystone-specs/api/v3/identity-api-v3-os-trust-ext.html"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa0719c6_ce8e0327","line":500,"range":{"start_line":500,"start_character":0,"end_line":500,"end_character":123},"updated":"2016-03-20 14:15:54.000000000","message":"Deprecated","commit_id":"3f14acbb76a6f6caa05af950cae8419c1161d6d5"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"77f43c65129b0622d2e7e1fd7a4c242ba04367de","unresolved":false,"context_lines":[{"line_number":497,"context_line":".. [1] Puppet Master LCM plugin specification TBD"},{"line_number":498,"context_line":".. [2] Nailgun API extension for serialized deployment facts https://review.openstack.org/#/c/284109/"},{"line_number":499,"context_line":".. [3] Nailgun API for Deployment Information https://github.com/openstack/fuel-web/blob/master/nailgun/nailgun/api/v1/handlers/orchestrator.py#L190"},{"line_number":500,"context_line":".. [4] Trusts API in Keystone https://specs.openstack.org/openstack/keystone-specs/api/v3/identity-api-v3-os-trust-ext.html"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa0719c6_0e3bdbec","line":500,"range":{"start_line":500,"start_character":0,"end_line":500,"end_character":123},"in_reply_to":"fa0719c6_ce8e0327","updated":"2016-03-20 14:56:05.000000000","message":"Will remove it in the next patch set, thanks.","commit_id":"3f14acbb76a6f6caa05af950cae8419c1161d6d5"},{"author":{"_account_id":406,"name":"Mike Scherbakov","email":"mihgen@gmail.com","username":"mihgen"},"change_message_id":"2fb460fe277b179d7d2c826b3977f3ca4ef47b01","unresolved":false,"context_lines":[{"line_number":265,"context_line":"      data source."},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    * The LCM tool applies override configuration"},{"line_number":268,"context_line":"      to the new node."},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Web UI"},{"line_number":271,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":12,"id":"fa0719c6_91cfce7e","line":268,"range":{"start_line":268,"start_character":6,"end_line":268,"end_character":8},"updated":"2016-03-22 06:44:06.000000000","message":"excellent, very detailed examples. Thanks!","commit_id":"878613935fd2dab7c5191cb4e9950c045f9b6226"},{"author":{"_account_id":406,"name":"Mike Scherbakov","email":"mihgen@gmail.com","username":"mihgen"},"change_message_id":"2fb460fe277b179d7d2c826b3977f3ca4ef47b01","unresolved":false,"context_lines":[{"line_number":327,"context_line":""},{"line_number":328,"context_line":"Fuel client\u0027s ``plugins`` command shall be extended."},{"line_number":329,"context_line":"Flag ``--install`` used with that command shall pass an ``auth_token`` from"},{"line_number":330,"context_line":"the client to ``yum`` environment as a variable."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"This will allow a plugin aware about that environment variable to access"},{"line_number":333,"context_line":"Keystone with the admin permissions and"}],"source_content_type":"text/x-rst","patch_set":12,"id":"fa0719c6_11bbbee6","line":330,"range":{"start_line":330,"start_character":16,"end_line":330,"end_character":19},"updated":"2016-03-22 06:44:06.000000000","message":"yum environment? do you mean $yum env variable.. ?\nAny option to avoid hacks in fuel client, as we would need to enable plugin for older Fuel version? Or we would be able to just update fuelclient to the latest version in Fuel 8/7?","commit_id":"878613935fd2dab7c5191cb4e9950c045f9b6226"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"96175ce685b396d1e97c04d0560e997889ff3214","unresolved":false,"context_lines":[{"line_number":327,"context_line":""},{"line_number":328,"context_line":"Fuel client\u0027s ``plugins`` command shall be extended."},{"line_number":329,"context_line":"Flag ``--install`` used with that command shall pass an ``auth_token`` from"},{"line_number":330,"context_line":"the client to ``yum`` environment as a variable."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"This will allow a plugin aware about that environment variable to access"},{"line_number":333,"context_line":"Keystone with the admin permissions and"}],"source_content_type":"text/x-rst","patch_set":12,"id":"fa0719c6_89c0427e","line":330,"range":{"start_line":330,"start_character":16,"end_line":330,"end_character":19},"in_reply_to":"fa0719c6_11bbbee6","updated":"2016-03-22 08:32:09.000000000","message":"Thanks, Mike. We can and will avoid hacks in fuel client and plugins builder by using the auth approach described above. This section, as well as Work Items 1 and 2 are remnants from the original \u0027transparent\u0027 auth approach which we rejected after review with fuelclient and Nailgun devs and weighing security considerations.\n\nI will update the spec accordingly in no time.","commit_id":"878613935fd2dab7c5191cb4e9950c045f9b6226"},{"author":{"_account_id":406,"name":"Mike Scherbakov","email":"mihgen@gmail.com","username":"mihgen"},"change_message_id":"2fb460fe277b179d7d2c826b3977f3ca4ef47b01","unresolved":false,"context_lines":[{"line_number":455,"context_line":"* Extend Fuel client ``plugins`` command to provide"},{"line_number":456,"context_line":"  necessary access to Keystone API for plugin."},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"* Extend Fuel plugin builder by providing path to the plugin files in shell"},{"line_number":459,"context_line":"  env variable."},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"* Develop deployment task as a part of Puppet Master LCM"}],"source_content_type":"text/x-rst","patch_set":12,"id":"fa0719c6_1190de42","line":458,"range":{"start_line":458,"start_character":2,"end_line":458,"end_character":8},"updated":"2016-03-22 06:44:06.000000000","message":"If we build plugin for Fuel 7 or 8, can we use new/extended fpb? Or can we avoid hacking fpb otherwise, may be we can do this as a manual step?","commit_id":"878613935fd2dab7c5191cb4e9950c045f9b6226"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"96175ce685b396d1e97c04d0560e997889ff3214","unresolved":false,"context_lines":[{"line_number":455,"context_line":"* Extend Fuel client ``plugins`` command to provide"},{"line_number":456,"context_line":"  necessary access to Keystone API for plugin."},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"* Extend Fuel plugin builder by providing path to the plugin files in shell"},{"line_number":459,"context_line":"  env variable."},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"* Develop deployment task as a part of Puppet Master LCM"}],"source_content_type":"text/x-rst","patch_set":12,"id":"fa0719c6_ac3b94d0","line":458,"range":{"start_line":458,"start_character":2,"end_line":458,"end_character":8},"in_reply_to":"fa0719c6_1190de42","updated":"2016-03-22 08:32:09.000000000","message":"Yes, we don\u0027t need it. I updated the spec.","commit_id":"878613935fd2dab7c5191cb4e9950c045f9b6226"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"acbb0293df2578e77fc083defc5d3b3685df7e5c","unresolved":false,"context_lines":[{"line_number":158,"context_line":"  the data was read."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"* Read the *effective data* from ConfigDB API (i.e. values calculated by"},{"line_number":161,"context_line":"  merging uploaded data with configured overrides at all levels or hierarchy)"},{"line_number":162,"context_line":"  and write the data to files in ``/etc/hiera`` directory via ``mcollective``"},{"line_number":163,"context_line":"  client."},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"9a061dce_d6d61af0","line":161,"range":{"start_line":161,"start_character":64,"end_line":161,"end_character":66},"updated":"2016-04-06 11:16:00.000000000","message":"of","commit_id":"80c379f65e2803f7056095aeebb8dc180ad7cb11"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"acbb0293df2578e77fc083defc5d3b3685df7e5c","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"The latter function ensures that the deployment process accounts for data"},{"line_number":166,"context_line":"overriden in ConfigDB. This is required for 2nd day operations based on"},{"line_number":167,"context_line":"the Fuel workflow, specifically for scale-out opertaions (adding a node"},{"line_number":168,"context_line":"to the cluster) and replacement of failed nodes."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"**Auth mechanism details**"}],"source_content_type":"text/x-rst","patch_set":14,"id":"9a061dce_361af67d","line":167,"range":{"start_line":167,"start_character":46,"end_line":167,"end_character":56},"updated":"2016-04-06 11:16:00.000000000","message":"typo","commit_id":"80c379f65e2803f7056095aeebb8dc180ad7cb11"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"acbb0293df2578e77fc083defc5d3b3685df7e5c","unresolved":false,"context_lines":[{"line_number":261,"context_line":"      synchronizes ``astute.yaml`` file created at the node by Astute with"},{"line_number":262,"context_line":"      data overrides created in ConfigDB API: it uploads the contents of"},{"line_number":263,"context_line":"      the file to ConfigDB API and then downloads *effective data* for the"},{"line_number":264,"context_line":"      ``asuste`` data source from there."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    * After the pre-deployment finishes, the prepared deployment"},{"line_number":267,"context_line":"      data are synchronized to the ConfigDB API by task"}],"source_content_type":"text/x-rst","patch_set":14,"id":"9a061dce_6144aa1a","line":264,"range":{"start_line":264,"start_character":8,"end_line":264,"end_character":14},"updated":"2016-04-06 11:16:00.000000000","message":"typo","commit_id":"80c379f65e2803f7056095aeebb8dc180ad7cb11"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"acbb0293df2578e77fc083defc5d3b3685df7e5c","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    * Deployment data for the new node provided by"},{"line_number":258,"context_line":"      Nailgun\u0027s standard serializers."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    * When the deployment is initiated, the task ``upload_data_to_configdb``"},{"line_number":261,"context_line":"      synchronizes ``astute.yaml`` file created at the node by Astute with"},{"line_number":262,"context_line":"      data overrides created in ConfigDB API: it uploads the contents of"},{"line_number":263,"context_line":"      the file to ConfigDB API and then downloads *effective data* for the"},{"line_number":264,"context_line":"      ``asuste`` data source from there."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    * After the pre-deployment finishes, the prepared deployment"},{"line_number":267,"context_line":"      data are synchronized to the ConfigDB API by task"},{"line_number":268,"context_line":"      ``upload_data_to_configdb``. This ensures that override settings"},{"line_number":269,"context_line":"      from all data sources in the ConfigDB API are applied to all files"},{"line_number":270,"context_line":"      in ``/etc/hiera`` at the node."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    * Deployment is done by Fuel standard deployment tasks, but"},{"line_number":273,"context_line":"      with settings adjusted with overrides from ConfigDB."}],"source_content_type":"text/x-rst","patch_set":14,"id":"9a061dce_e1b9da16","line":270,"range":{"start_line":260,"start_character":0,"end_line":270,"end_character":36},"updated":"2016-04-06 11:16:00.000000000","message":"are these two actions done in one run of the task or in two runs?","commit_id":"80c379f65e2803f7056095aeebb8dc180ad7cb11"},{"author":{"_account_id":406,"name":"Mike Scherbakov","email":"mihgen@gmail.com","username":"mihgen"},"change_message_id":"9df224ca64ac8224bda14cf844cf21ce64546f83","unresolved":false,"context_lines":[{"line_number":270,"context_line":"      in ``/etc/hiera`` at the node."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    * Deployment is done by Fuel standard deployment tasks, but"},{"line_number":273,"context_line":"      with settings adjusted with overrides from ConfigDB."},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    * After successful deployment, the LCM plugin reconfigures the node to"},{"line_number":276,"context_line":"      work with 3rd-party LCM tool."}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba0121b8_e25f9773","line":273,"range":{"start_line":273,"start_character":49,"end_line":273,"end_character":57},"updated":"2016-03-28 18:24:35.000000000","message":"It is great that we can achieve it!","commit_id":"80c379f65e2803f7056095aeebb8dc180ad7cb11"}],"specs/9.0/upload-serialized-facts-to-configdb.rst":[{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"3ce01c6b9c0dfa4fbedb5d2fdc4a55fda5682dfe","unresolved":false,"context_lines":[{"line_number":47,"context_line":"   the Nailgun API and sending result to ConfigDB API. They are"},{"line_number":48,"context_line":"   accessible by Hiera as ``astute`` data source [2]_"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"#. Deployment data changed due to changes made to the node (e.g. hardware"},{"line_number":51,"context_line":"   updated, versions of packages updated, etc) outside the Fuel context."},{"line_number":52,"context_line":"   These changes are reflected in the serialized data generated and stored"},{"line_number":53,"context_line":"   on the node itself, in YaML files:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_4b857cab","line":50,"updated":"2016-03-02 13:29:13.000000000","message":"I doubt hardware or package updates generate additional YAMLs for Hiera. They are usually produced during puppet execution.","commit_id":"998e6b56c4e922a45ad9443b6e10b2caabcf3714"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"a456f04256a6d2ad0d67dd0acabdbfe63163b3e8","unresolved":false,"context_lines":[{"line_number":47,"context_line":"   the Nailgun API and sending result to ConfigDB API. They are"},{"line_number":48,"context_line":"   accessible by Hiera as ``astute`` data source [2]_"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"#. Deployment data changed due to changes made to the node (e.g. hardware"},{"line_number":51,"context_line":"   updated, versions of packages updated, etc) outside the Fuel context."},{"line_number":52,"context_line":"   These changes are reflected in the serialized data generated and stored"},{"line_number":53,"context_line":"   on the node itself, in YaML files:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_64ba17c2","line":50,"in_reply_to":"7af24918_03ad1031","updated":"2016-03-02 16:26:01.000000000","message":"The point is that globals.yaml is not accessible from outside the node, and we want it to be available for 3rd party application to consume. Otherwise puppet master can\u0027t compile the catalog properly.\n\nThe exact parameters to override are out of scope of this proposal. We just need to expose all parameters to external application (i.e. Puppet Master) and let it decide what to do with them.\n\nAs one way to control the overrides, however, I will suggest adding \u0027user\u0027 level to every data source, where the actual override will happen. Thus we can automatically update the \u0027system\u0027 level data sources when something changes in Nailgun or at node, and keep overrides intact.","commit_id":"998e6b56c4e922a45ad9443b6e10b2caabcf3714"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"32189a417388b9fbb6ac4964b92938a76074dcd0","unresolved":false,"context_lines":[{"line_number":47,"context_line":"   the Nailgun API and sending result to ConfigDB API. They are"},{"line_number":48,"context_line":"   accessible by Hiera as ``astute`` data source [2]_"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"#. Deployment data changed due to changes made to the node (e.g. hardware"},{"line_number":51,"context_line":"   updated, versions of packages updated, etc) outside the Fuel context."},{"line_number":52,"context_line":"   These changes are reflected in the serialized data generated and stored"},{"line_number":53,"context_line":"   on the node itself, in YaML files:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_7fe1129a","line":50,"in_reply_to":"7af24918_4b857cab","updated":"2016-03-02 14:01:48.000000000","message":"They don\u0027t generate _additional_ yamls, but certain values in some _standard_ yamls might change if something changed on the node. For example:\n\nhttps://github.com/openstack/fuel-library/blob/3d414ea868ed53b8fa6a32cb32523248661ec499/deployment/puppet/osnailyfacter/modular/globals/globals.pp#L311-L312\n\nIf you (hypothetically) add a processor to the node, and processorcount changes, it will affect the contents of globals.yaml on that particular node.\n\nThe number of such node-dependent parameters is not large (actually, there just 2 of them in globals.pp, and maybe more in some plugin-specific overrides). However, we still need to account for possibility of such changes.","commit_id":"998e6b56c4e922a45ad9443b6e10b2caabcf3714"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"5979854748867d1367da0814bc3e6fa0bf07ba5c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"   the Nailgun API and sending result to ConfigDB API. They are"},{"line_number":48,"context_line":"   accessible by Hiera as ``astute`` data source [2]_"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"#. Deployment data changed due to changes made to the node (e.g. hardware"},{"line_number":51,"context_line":"   updated, versions of packages updated, etc) outside the Fuel context."},{"line_number":52,"context_line":"   These changes are reflected in the serialized data generated and stored"},{"line_number":53,"context_line":"   on the node itself, in YaML files:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_03ad1031","line":50,"in_reply_to":"7af24918_7fe1129a","updated":"2016-03-02 15:59:39.000000000","message":"But when next time we run globals.pp it will be recalculated, isn\u0027t it? I mean it\u0027s not something you usually want to edit manually. Correct? If so, we can ignore that and rely on auto-calculation.","commit_id":"998e6b56c4e922a45ad9443b6e10b2caabcf3714"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"3ce01c6b9c0dfa4fbedb5d2fdc4a55fda5682dfe","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The following changes are proposed in scope of this specification:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"* Create a function in ``astute`` to download the serialized"},{"line_number":89,"context_line":"  deployment data from files in ``/etc/hiera`` of a target node"},{"line_number":90,"context_line":"  and then upload them to"},{"line_number":91,"context_line":"  the corresponding resources in ConfigDB API endpoint (e.g."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_eed0d655","line":88,"updated":"2016-03-02 13:29:13.000000000","message":"Hm..  I think it\u0027d be better to avoid hardcoding and use declarative tasks to do such job. What do you think?","commit_id":"998e6b56c4e922a45ad9443b6e10b2caabcf3714"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"a456f04256a6d2ad0d67dd0acabdbfe63163b3e8","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The following changes are proposed in scope of this specification:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"* Create a function in ``astute`` to download the serialized"},{"line_number":89,"context_line":"  deployment data from files in ``/etc/hiera`` of a target node"},{"line_number":90,"context_line":"  and then upload them to"},{"line_number":91,"context_line":"  the corresponding resources in ConfigDB API endpoint (e.g."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_44f43b85","line":88,"in_reply_to":"7af24918_4ebbbf0e","updated":"2016-03-02 16:26:01.000000000","message":"I will raise this in openstack-dev then, and maybe in IRC channel as well.","commit_id":"998e6b56c4e922a45ad9443b6e10b2caabcf3714"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"5979854748867d1367da0814bc3e6fa0bf07ba5c","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The following changes are proposed in scope of this specification:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"* Create a function in ``astute`` to download the serialized"},{"line_number":89,"context_line":"  deployment data from files in ``/etc/hiera`` of a target node"},{"line_number":90,"context_line":"  and then upload them to"},{"line_number":91,"context_line":"  the corresponding resources in ConfigDB API endpoint (e.g."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_4ebbbf0e","line":88,"in_reply_to":"7af24918_ba50c80b","updated":"2016-03-02 15:59:39.000000000","message":"\u003e We will need to pass access credentials to Nailgun API to the node level\n\nYes, that\u0027s correct. Still it makes solution more flexible and easy to remove.\n\n\u003e However, it allows to contain and limit the described function to a single plugin (e.g. Puppet Master LCM plugin) without need to add some flags in Nailgun\u0027s serialization.\n\nYep, and that\u0027s a big plus I think. I mean we want this scenario only because we do not support LCM in Fuel. Once it\u0027s not the case, we want to drop it. However, having it in plugin make it possible to use even in future releases.\n\nBut I agree, we need to hear opinion of Astute experts about that.","commit_id":"998e6b56c4e922a45ad9443b6e10b2caabcf3714"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"32189a417388b9fbb6ac4964b92938a76074dcd0","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The following changes are proposed in scope of this specification:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"* Create a function in ``astute`` to download the serialized"},{"line_number":89,"context_line":"  deployment data from files in ``/etc/hiera`` of a target node"},{"line_number":90,"context_line":"  and then upload them to"},{"line_number":91,"context_line":"  the corresponding resources in ConfigDB API endpoint (e.g."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_ba50c80b","line":88,"in_reply_to":"7af24918_eed0d655","updated":"2016-03-02 14:01:48.000000000","message":"I describe this approach in the Alternatives section, and this is something we really need more feedback on. With the deployment task, we will need to pass access credentials to Nailgun API to the node level, which doesn\u0027t seem aligned with the general architecture of Fuel. However, it allows to contain and limit the described function to a single plugin (e.g. Puppet Master LCM plugin) without need to add some flags in Nailgun\u0027s serialization.","commit_id":"998e6b56c4e922a45ad9443b6e10b2caabcf3714"},{"author":{"_account_id":17180,"name":"sryabin","email":"sryabin@mirantis.com","username":"sryabin"},"change_message_id":"514650e8b177a1b82eb4061299221579684d9557","unresolved":false,"context_lines":[{"line_number":92,"context_line":"* Create a deployment task that uploads the serialized"},{"line_number":93,"context_line":"  deployment data from files in ``/etc/hiera`` of a target node to"},{"line_number":94,"context_line":"  the corresponding resources in ConfigDB API endpoint (e.g."},{"line_number":95,"context_line":"  ``/environment\u003c:id\u003e/node/\u003c:id\u003e/resource/\u003c:datasource\u003e/values``)."},{"line_number":96,"context_line":"  See Orchestration_ section for details."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"* Integrate the a task into the deployment graph using plugins"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_037977f6","line":95,"range":{"start_line":95,"start_character":5,"end_line":95,"end_character":21},"updated":"2016-03-02 20:31:04.000000000","message":"typo? /environment/\u003c:id\u003e?","commit_id":"feeaa6de494a21bc65b96eaed445b01c189c65e5"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"160cfb7cc87694957fc9a4228f78813f278576a8","unresolved":false,"context_lines":[{"line_number":92,"context_line":"* Create a deployment task that uploads the serialized"},{"line_number":93,"context_line":"  deployment data from files in ``/etc/hiera`` of a target node to"},{"line_number":94,"context_line":"  the corresponding resources in ConfigDB API endpoint (e.g."},{"line_number":95,"context_line":"  ``/environment\u003c:id\u003e/node/\u003c:id\u003e/resource/\u003c:datasource\u003e/values``)."},{"line_number":96,"context_line":"  See Orchestration_ section for details."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"* Integrate the a task into the deployment graph using plugins"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_a38b2ec2","line":95,"range":{"start_line":95,"start_character":5,"end_line":95,"end_character":21},"in_reply_to":"7af24918_037977f6","updated":"2016-03-03 14:45:01.000000000","message":"Done","commit_id":"feeaa6de494a21bc65b96eaed445b01c189c65e5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"98b68c257685d62415b20773e382c37e04f730d8","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://blueprints.launchpad.net/fuel/+spec/upload-deployment-facts-to-configdb"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"There are multiple levels of hierarhy in Hiera used by deployment tasks on"},{"line_number":16,"context_line":"nodes. Some of those data exist only in YaML files on a node and can\u0027t be"},{"line_number":17,"context_line":"accessed by 3rd party components."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_2b8837e7","line":15,"range":{"start_line":15,"start_character":29,"end_line":15,"end_character":37},"updated":"2016-03-07 13:14:17.000000000","message":"typo","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"27779c9565c877b066594eb5fb7161d0e780ce1b","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://blueprints.launchpad.net/fuel/+spec/upload-deployment-facts-to-configdb"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"There are multiple levels of hierarhy in Hiera used by deployment tasks on"},{"line_number":16,"context_line":"nodes. Some of those data exist only in YaML files on a node and can\u0027t be"},{"line_number":17,"context_line":"accessed by 3rd party components."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_f0b19848","line":15,"range":{"start_line":15,"start_character":29,"end_line":15,"end_character":37},"in_reply_to":"5aef4532_2b8837e7","updated":"2016-03-09 14:51:06.000000000","message":"Done","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"04ccb03f7c10b6941868a55e124d5f02fa45a9e9","unresolved":false,"context_lines":[{"line_number":20,"context_line":"for later use. It requires though that we can upload the data from nodes to"},{"line_number":21,"context_line":"the service as a part of deployment process."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"We propose to add a task to the deployment graph and in fuel-library to"},{"line_number":24,"context_line":"upload the facts to external HTTP-based API."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"--------------------"},{"line_number":27,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_fffe0904","line":24,"range":{"start_line":23,"start_character":0,"end_line":24,"end_character":43},"updated":"2016-03-07 13:40:51.000000000","message":"I\u0027m not sure the very approach to populate date to the nodes and upload the data anywhere is correct. I believe the correct is to query the data source and consume data directly, leaving the nodes alone.","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"27779c9565c877b066594eb5fb7161d0e780ce1b","unresolved":false,"context_lines":[{"line_number":20,"context_line":"for later use. It requires though that we can upload the data from nodes to"},{"line_number":21,"context_line":"the service as a part of deployment process."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"We propose to add a task to the deployment graph and in fuel-library to"},{"line_number":24,"context_line":"upload the facts to external HTTP-based API."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"--------------------"},{"line_number":27,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_9cb16fe4","line":24,"range":{"start_line":23,"start_character":0,"end_line":24,"end_character":43},"in_reply_to":"5aef4532_9f31c5ef","updated":"2016-03-09 14:51:06.000000000","message":"Currently, due to the tech debt, we can\u0027t extract certain data generation code from node into Nailgun serializers. That data includes globals.yaml file and plugins override values which are generated by plugin tasks running on a node. The latter  bit is a kind of an architecture limitation, as far as I can tell, and might require some redesign in plugin framework.","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"01bccc649ee3a884d5f29c9b5c6f1d30555508b0","unresolved":false,"context_lines":[{"line_number":20,"context_line":"for later use. It requires though that we can upload the data from nodes to"},{"line_number":21,"context_line":"the service as a part of deployment process."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"We propose to add a task to the deployment graph and in fuel-library to"},{"line_number":24,"context_line":"upload the facts to external HTTP-based API."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"--------------------"},{"line_number":27,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_9f31c5ef","line":24,"range":{"start_line":23,"start_character":0,"end_line":24,"end_character":43},"in_reply_to":"5aef4532_fffe0904","updated":"2016-03-07 13:41:28.000000000","message":"to populate data*","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":406,"name":"Mike Scherbakov","email":"mihgen@gmail.com","username":"mihgen"},"change_message_id":"6fb958c45a077ed79f8a49aa02b2065f61c05b7b","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Problem description"},{"line_number":28,"context_line":"--------------------"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"The store for serialized deployment information (e.g. ConfigDB service)"},{"line_number":31,"context_line":"allows 3rd party applications to access it. It also enables alternative"},{"line_number":32,"context_line":"deployment/lifecycle management solutions to synchronize their"},{"line_number":33,"context_line":"configrations with Fuel installer. However, it doesn\u0027t solve the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7af24918_e00828dc","line":30,"range":{"start_line":30,"start_character":54,"end_line":30,"end_character":62},"updated":"2016-03-05 01:14:28.000000000","message":"In 9.0, we expect to have Nailgun API extension for this: https://review.openstack.org/#/c/284109/. Do we call it ConfigDB? Or how? I\u0027d whether avoid mentioning ConfigDB, or call that extension as ConfigDB and use it everywhere.","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"27779c9565c877b066594eb5fb7161d0e780ce1b","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Problem description"},{"line_number":28,"context_line":"--------------------"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"The store for serialized deployment information (e.g. ConfigDB service)"},{"line_number":31,"context_line":"allows 3rd party applications to access it. It also enables alternative"},{"line_number":32,"context_line":"deployment/lifecycle management solutions to synchronize their"},{"line_number":33,"context_line":"configrations with Fuel installer. However, it doesn\u0027t solve the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_1cdd5f0e","line":30,"range":{"start_line":30,"start_character":54,"end_line":30,"end_character":62},"in_reply_to":"7af24918_e00828dc","updated":"2016-03-09 14:51:06.000000000","message":"We call that extension a ConfigDB API. This particular mention of ConfigDB is just an example of possible solutions to store the deployment data. I will modify it to clarify the statement.","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"98b68c257685d62415b20773e382c37e04f730d8","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Synchronization required in the following cases:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"#. Deployment settings changed in Nailgun via UI/CLI/API."},{"line_number":44,"context_line":"   In this case, Nailgun DB will have the latest changes, and Nailgun API"},{"line_number":45,"context_line":"   will respond with properly updated serialized deployment data. [1]_"},{"line_number":46,"context_line":"   This data can be imported into ConfigDB directly by requesting"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_ae48d55c","line":43,"range":{"start_line":43,"start_character":0,"end_line":43,"end_character":57},"updated":"2016-03-07 13:14:17.000000000","message":"Is it about changes that were reported to orchestrator for deployment? Or changes are just in Nailgun DB and were not serialized yet?","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"27779c9565c877b066594eb5fb7161d0e780ce1b","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Synchronization required in the following cases:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"#. Deployment settings changed in Nailgun via UI/CLI/API."},{"line_number":44,"context_line":"   In this case, Nailgun DB will have the latest changes, and Nailgun API"},{"line_number":45,"context_line":"   will respond with properly updated serialized deployment data. [1]_"},{"line_number":46,"context_line":"   This data can be imported into ConfigDB directly by requesting"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_64ce85b5","line":43,"range":{"start_line":43,"start_character":0,"end_line":43,"end_character":57},"in_reply_to":"5aef4532_ae48d55c","updated":"2016-03-09 14:51:06.000000000","message":"At the moment, there is no support for changes in Nailgun DB non-serialized data after the deployment is done. It will be delivered as a part of \u0027Unlocked Settings\u0027 feature, but it\u0027s not there yet, so we can\u0027t really integrate with it.\n\nSo only changes to the deployment settings in Nailgun we\u0027re currently assume is changes to orchestration deployment info that override the default serialization.","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"3dd64b17938f072ffefd546b4cb12862e7b78644","unresolved":false,"context_lines":[{"line_number":47,"context_line":"   the Nailgun API and sending result to ConfigDB API. They are"},{"line_number":48,"context_line":"   accessible by Hiera as ``astute`` data source [2]_"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"#. Deployment data changed due to changes made to the node (e.g. hardware"},{"line_number":51,"context_line":"   updated, versions of packages updated, etc) outside the Fuel context."},{"line_number":52,"context_line":"   These changes are reflected in the serialized data generated and stored"},{"line_number":53,"context_line":"   on the node itself, in YaML files:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7af24918_9e544bca","line":50,"updated":"2016-03-04 13:49:20.000000000","message":"(moving conversation from ps#1)\n\n\u003e The point is that globals.yaml is not accessible from outside the node, and we want it to be available for 3rd party application to consume. Otherwise puppet master can\u0027t compile the catalog properly.\n\nglobals.yaml is mostly generated from astute.yaml. What if some value in globals.yaml will contradict the same value in astute.yaml? Seems non obvious which one will be applied. And the problem is even worse, since globals yaml has different data structure.. so no way to figure out that it\u0027s the same value.","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"920f1e833bae7411381bce4206aa45e2ea92602a","unresolved":false,"context_lines":[{"line_number":47,"context_line":"   the Nailgun API and sending result to ConfigDB API. They are"},{"line_number":48,"context_line":"   accessible by Hiera as ``astute`` data source [2]_"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"#. Deployment data changed due to changes made to the node (e.g. hardware"},{"line_number":51,"context_line":"   updated, versions of packages updated, etc) outside the Fuel context."},{"line_number":52,"context_line":"   These changes are reflected in the serialized data generated and stored"},{"line_number":53,"context_line":"   on the node itself, in YaML files:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7af24918_2111965d","line":50,"in_reply_to":"7af24918_9e544bca","updated":"2016-03-04 14:17:09.000000000","message":"It is responsibility of Hiera to pick value from proper data source. For Puppet Master, it will work just the same as it works for standalone puppet agent that we use now for deployment. The data source is selected based on \u0027hierarchy\u0027 configuration in Hiera config file. There are no decisions made on a level of ConfigDB, at least in this case. We only need to provide all data sources that are relevant for Puppet modules in fuel-library, and Hiera will decide what to pick.","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"98b68c257685d62415b20773e382c37e04f730d8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    for OpenStack configuration parameters which are not exposed"},{"line_number":64,"context_line":"    by Nailgun directly."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"  * ``/etc/hiera/override/\u003chostname\u003e.yaml`` - node-level configurations"},{"line_number":67,"context_line":"    that override the basic parameters from other sources."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"#. Deployment data changed in 3rd party deployment/lifecycle management"},{"line_number":70,"context_line":"   application (e.g. in Puppet Master\u0027s top-level manifests or in External"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_ee301da1","line":67,"range":{"start_line":66,"start_character":0,"end_line":67,"end_character":58},"updated":"2016-03-07 13:14:17.000000000","message":"it is not present in \"serialized-facts-nailgun-api\" spec","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"27779c9565c877b066594eb5fb7161d0e780ce1b","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    for OpenStack configuration parameters which are not exposed"},{"line_number":64,"context_line":"    by Nailgun directly."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"  * ``/etc/hiera/override/\u003chostname\u003e.yaml`` - node-level configurations"},{"line_number":67,"context_line":"    that override the basic parameters from other sources."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"#. Deployment data changed in 3rd party deployment/lifecycle management"},{"line_number":70,"context_line":"   application (e.g. in Puppet Master\u0027s top-level manifests or in External"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_04c0617a","line":67,"range":{"start_line":66,"start_character":0,"end_line":67,"end_character":58},"in_reply_to":"5aef4532_ee301da1","updated":"2016-03-09 14:51:06.000000000","message":"Done","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":406,"name":"Mike Scherbakov","email":"mihgen@gmail.com","username":"mihgen"},"change_message_id":"6fb958c45a077ed79f8a49aa02b2065f61c05b7b","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"The following changes are proposed in scope of this specification:"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"* Create a deployment task that uploads the serialized"},{"line_number":93,"context_line":"  deployment data from files in ``/etc/hiera`` of a target node to"},{"line_number":94,"context_line":"  the corresponding resources in ConfigDB API endpoint (e.g."},{"line_number":95,"context_line":"  ``/environment/\u003c:id\u003e/node/\u003c:id\u003e/resource/\u003c:datasource\u003e/values``)."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7af24918_801fa408","line":92,"range":{"start_line":92,"start_character":2,"end_line":92,"end_character":8},"updated":"2016-03-05 01:14:28.000000000","message":"Please reflect in the spec, how do you plan to authorize in Nailgun in order to upload data. Where do you get credentials, can we use separate Keystone user which has access only write access for security reasons, etc. We also need to support SSL connection.","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"27779c9565c877b066594eb5fb7161d0e780ce1b","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"The following changes are proposed in scope of this specification:"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"* Create a deployment task that uploads the serialized"},{"line_number":93,"context_line":"  deployment data from files in ``/etc/hiera`` of a target node to"},{"line_number":94,"context_line":"  the corresponding resources in ConfigDB API endpoint (e.g."},{"line_number":95,"context_line":"  ``/environment/\u003c:id\u003e/node/\u003c:id\u003e/resource/\u003c:datasource\u003e/values``)."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_b5db824e","line":92,"range":{"start_line":92,"start_character":2,"end_line":92,"end_character":8},"in_reply_to":"7af24918_801fa408","updated":"2016-03-09 14:51:06.000000000","message":"Done","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"98b68c257685d62415b20773e382c37e04f730d8","unresolved":false,"context_lines":[{"line_number":133,"context_line":"that all changes to files in ``/etc/hiera`` directory"},{"line_number":134,"context_line":"are synchronized with the ConfigDB."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"The task shall send a requests to the URI of the"},{"line_number":137,"context_line":"resource in ConfigDB based on the parameters"},{"line_number":138,"context_line":"of the deployment:"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_ce76013e","line":136,"range":{"start_line":136,"start_character":20,"end_line":136,"end_character":30},"updated":"2016-03-07 13:14:17.000000000","message":"plural","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"27779c9565c877b066594eb5fb7161d0e780ce1b","unresolved":false,"context_lines":[{"line_number":133,"context_line":"that all changes to files in ``/etc/hiera`` directory"},{"line_number":134,"context_line":"are synchronized with the ConfigDB."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"The task shall send a requests to the URI of the"},{"line_number":137,"context_line":"resource in ConfigDB based on the parameters"},{"line_number":138,"context_line":"of the deployment:"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_95ae4696","line":136,"range":{"start_line":136,"start_character":20,"end_line":136,"end_character":30},"in_reply_to":"5aef4532_ce76013e","updated":"2016-03-09 14:51:06.000000000","message":"Done","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"98b68c257685d62415b20773e382c37e04f730d8","unresolved":false,"context_lines":[{"line_number":137,"context_line":"resource in ConfigDB based on the parameters"},{"line_number":138,"context_line":"of the deployment:"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"``\u003c:service_uri\u003e/environment/\u003c:env_id\u003e/node/\u003c:node_id\u003e/resource/\u003c:datasource\u003e/values``"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* ``service_uri`` is a endpoint from Keystone Service Catalog,"},{"line_number":143,"context_line":"  defaults to ``/api/v1/config``."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_eef2dd6e","line":140,"range":{"start_line":140,"start_character":17,"end_line":140,"end_character":43},"updated":"2016-03-07 13:14:17.000000000","message":"we use \"clusters\" already. do we need it at all? seems that \"nodes\" is enough. we use \"nodes\" already. (same as for \"serialized-facts-nailgun-api\" spec)","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"27779c9565c877b066594eb5fb7161d0e780ce1b","unresolved":false,"context_lines":[{"line_number":137,"context_line":"resource in ConfigDB based on the parameters"},{"line_number":138,"context_line":"of the deployment:"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"``\u003c:service_uri\u003e/environment/\u003c:env_id\u003e/node/\u003c:node_id\u003e/resource/\u003c:datasource\u003e/values``"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* ``service_uri`` is a endpoint from Keystone Service Catalog,"},{"line_number":143,"context_line":"  defaults to ``/api/v1/config``."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_9a216ab7","line":140,"range":{"start_line":140,"start_character":17,"end_line":140,"end_character":43},"in_reply_to":"5aef4532_eef2dd6e","updated":"2016-03-09 14:51:06.000000000","message":"In theory (and in future ConfigDB API) we could have environment with more than single cluster in it (for example, for multi-DC OpenStack with cells employed).\n\nOverall, this \u0027environment\u0027 doesn\u0027t map 1-1 to \u0027cluster\u0027 in Nailgun API, even while it is used that way in the current version of implementation.\n\nSo I would refrain from using \u0027cluster\u0027 keyword here to prevent confusion in future.","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"3dd64b17938f072ffefd546b4cb12862e7b78644","unresolved":false,"context_lines":[{"line_number":279,"context_line":"Work Items"},{"line_number":280,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"* Develop deployment task in ``fuel-library`` source code repository."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"* Develop automated integration tests in ``openstack/fuel-library``"},{"line_number":285,"context_line":"  and ``openstack/fuel-qa`` repository."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7af24918_7ec21f54","line":282,"updated":"2016-03-04 13:49:20.000000000","message":"In fuel-library? or in separate plugin?","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"920f1e833bae7411381bce4206aa45e2ea92602a","unresolved":false,"context_lines":[{"line_number":279,"context_line":"Work Items"},{"line_number":280,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"* Develop deployment task in ``fuel-library`` source code repository."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"* Develop automated integration tests in ``openstack/fuel-library``"},{"line_number":285,"context_line":"  and ``openstack/fuel-qa`` repository."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7af24918_8c6b8184","line":282,"in_reply_to":"7af24918_7ec21f54","updated":"2016-03-04 14:17:09.000000000","message":"Per our decision, it will be in Puppet Master LCM plugin. I will change it in separate CR if no one objects.","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":406,"name":"Mike Scherbakov","email":"mihgen@gmail.com","username":"mihgen"},"change_message_id":"6fb958c45a077ed79f8a49aa02b2065f61c05b7b","unresolved":false,"context_lines":[{"line_number":293,"context_line":"Testing, QA"},{"line_number":294,"context_line":"------------"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"TBD"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Acceptance criteria"},{"line_number":299,"context_line":"\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":"7af24918_a0ed80f1","line":296,"range":{"start_line":296,"start_character":0,"end_line":296,"end_character":3},"updated":"2016-03-05 01:14:28.000000000","message":"Please cover this topic.","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"27779c9565c877b066594eb5fb7161d0e780ce1b","unresolved":false,"context_lines":[{"line_number":293,"context_line":"Testing, QA"},{"line_number":294,"context_line":"------------"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"TBD"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Acceptance criteria"},{"line_number":299,"context_line":"\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":"5aef4532_907134ab","line":296,"range":{"start_line":296,"start_character":0,"end_line":296,"end_character":3},"in_reply_to":"7af24918_a0ed80f1","updated":"2016-03-09 14:51:06.000000000","message":"Done","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":406,"name":"Mike Scherbakov","email":"mihgen@gmail.com","username":"mihgen"},"change_message_id":"6fb958c45a077ed79f8a49aa02b2065f61c05b7b","unresolved":false,"context_lines":[{"line_number":298,"context_line":"Acceptance criteria"},{"line_number":299,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"TBD"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"----------"},{"line_number":304,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7af24918_00b9d4ec","line":301,"range":{"start_line":301,"start_character":0,"end_line":301,"end_character":3},"updated":"2016-03-05 01:14:28.000000000","message":"as well as this one.","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"27779c9565c877b066594eb5fb7161d0e780ce1b","unresolved":false,"context_lines":[{"line_number":298,"context_line":"Acceptance criteria"},{"line_number":299,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"TBD"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"----------"},{"line_number":304,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aef4532_306140d4","line":301,"range":{"start_line":301,"start_character":0,"end_line":301,"end_character":3},"in_reply_to":"7af24918_00b9d4ec","updated":"2016-03-09 14:51:06.000000000","message":"Done","commit_id":"518d569a3039f3bbfcb238e264592ad185780347"},{"author":{"_account_id":406,"name":"Mike Scherbakov","email":"mihgen@gmail.com","username":"mihgen"},"change_message_id":"f15a62455dec8c1a240e8f5c4f36d18b0e3581b6","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  extension of Nailgun API to the deployment task in question"},{"line_number":113,"context_line":"  in a secure way."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"**Deployment task details**"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The deployment task shall have the following ID:"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afc51ec_01009a33","line":115,"range":{"start_line":115,"start_character":2,"end_line":115,"end_character":12},"updated":"2016-03-13 07:32:12.000000000","message":"Thank you for providing very specific details on task dependencies, id, etc.\nI can\u0027t find though an answer for where the task will actually be executed? On each node or on master node?\nIf on each node, then I can\u0027t find it very clear, where would it exactly take login/pass/token for keystone authz? If in astute.yaml, what will a put these values in there? Please reflect it in the spec.\nMay be it\u0027s somehow related to /var/lib/fuel/plugin_trust, but I didn\u0027t get it..","commit_id":"620ad0c26cbf34f0845d05b2c0062fe8fbff95c4"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"cee4f04b61c790c0629ab80a9d353492719330d0","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  extension of Nailgun API to the deployment task in question"},{"line_number":113,"context_line":"  in a secure way."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"**Deployment task details**"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The deployment task shall have the following ID:"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afc51ec_a53b99d0","line":115,"range":{"start_line":115,"start_character":2,"end_line":115,"end_character":12},"in_reply_to":"3afc51ec_01009a33","updated":"2016-03-14 10:31:32.000000000","message":"This task shall be executed at the master node. Thanks for noticing, I will add it to the spec.\n\nCredentials shall still go in astute.yaml, in plugin\u0027s parameters. This is actually a part of the Puppet Master plugin design, not exactly of this task, but I will highlight that as well.","commit_id":"620ad0c26cbf34f0845d05b2c0062fe8fbff95c4"},{"author":{"_account_id":406,"name":"Mike Scherbakov","email":"mihgen@gmail.com","username":"mihgen"},"change_message_id":"f15a62455dec8c1a240e8f5c4f36d18b0e3581b6","unresolved":false,"context_lines":[{"line_number":154,"context_line":"a service user in Keystone as a part of installation"},{"line_number":155,"context_line":"of the plugin."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Command ``fuel plugins --install`` will be extended"},{"line_number":158,"context_line":"to create a temporary access to Keystone for the"},{"line_number":159,"context_line":"plugin being installed."},{"line_number":160,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afc51ec_81bb0ac4","line":157,"range":{"start_line":157,"start_character":0,"end_line":157,"end_character":7},"updated":"2016-03-13 07:32:12.000000000","message":"What if we would want to install this on older versions of Fuel? How would it work?","commit_id":"620ad0c26cbf34f0845d05b2c0062fe8fbff95c4"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"cee4f04b61c790c0629ab80a9d353492719330d0","unresolved":false,"context_lines":[{"line_number":154,"context_line":"a service user in Keystone as a part of installation"},{"line_number":155,"context_line":"of the plugin."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Command ``fuel plugins --install`` will be extended"},{"line_number":158,"context_line":"to create a temporary access to Keystone for the"},{"line_number":159,"context_line":"plugin being installed."},{"line_number":160,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afc51ec_25eae90f","line":157,"range":{"start_line":157,"start_character":0,"end_line":157,"end_character":7},"in_reply_to":"3afc51ec_81bb0ac4","updated":"2016-03-14 10:31:32.000000000","message":"Can\u0027t answer at the moment. This requires additional design with plugin\u0027s developers. I will take an action item to follow up with them on it.","commit_id":"620ad0c26cbf34f0845d05b2c0062fe8fbff95c4"},{"author":{"_account_id":17180,"name":"sryabin","email":"sryabin@mirantis.com","username":"sryabin"},"change_message_id":"545a36438c9c3a12dffd61406bb0a60c7e6d67ea","unresolved":false,"context_lines":[{"line_number":232,"context_line":"Fuel Client"},{"line_number":233,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"Fuel client\u0027s ``plugins`` command shall be extended."},{"line_number":236,"context_line":"Flag ``--install`` used with that command shall create"},{"line_number":237,"context_line":"a \u0027trust\u0027 [4]_ in Keystone and write the token ID of the"},{"line_number":238,"context_line":"trust to file ``/var/lib/fuel/plugin_trust``. After"},{"line_number":239,"context_line":"the installation of plugin, the file shall be deleted."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"This will allow a plugin aware about the location of"},{"line_number":242,"context_line":"the file to access Keystone with the permission to"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3afc51ec_7075aa96","line":239,"range":{"start_line":235,"start_character":0,"end_line":239,"end_character":54},"updated":"2016-03-14 20:00:14.000000000","message":"Keystone trust mechanism don\u0027t solve authentication problem. We decided to use admin auth_token (from fuel_client) and pass it in yum environment. \nhttps://review.openstack.org/#/c/292128/","commit_id":"0c53c493de97c62ca81311216415b1a7341c9da8"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"1d493bbc051936b1d340db8c55e30b2395196e66","unresolved":false,"context_lines":[{"line_number":232,"context_line":"Fuel Client"},{"line_number":233,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"Fuel client\u0027s ``plugins`` command shall be extended."},{"line_number":236,"context_line":"Flag ``--install`` used with that command shall create"},{"line_number":237,"context_line":"a \u0027trust\u0027 [4]_ in Keystone and write the token ID of the"},{"line_number":238,"context_line":"trust to file ``/var/lib/fuel/plugin_trust``. After"},{"line_number":239,"context_line":"the installation of plugin, the file shall be deleted."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"This will allow a plugin aware about the location of"},{"line_number":242,"context_line":"the file to access Keystone with the permission to"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3afc51ec_ace6a812","line":239,"range":{"start_line":235,"start_character":0,"end_line":239,"end_character":54},"in_reply_to":"3afc51ec_7075aa96","updated":"2016-03-15 11:00:25.000000000","message":"Done","commit_id":"0c53c493de97c62ca81311216415b1a7341c9da8"},{"author":{"_account_id":17180,"name":"sryabin","email":"sryabin@mirantis.com","username":"sryabin"},"change_message_id":"545a36438c9c3a12dffd61406bb0a60c7e6d67ea","unresolved":false,"context_lines":[{"line_number":372,"context_line":""},{"line_number":373,"context_line":"* Develop automated integration tests for the plugin in"},{"line_number":374,"context_line":"  ``openstack/fuel-qa`` repository."},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"Dependencies"},{"line_number":377,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":378,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3afc51ec_105266dd","line":375,"updated":"2016-03-14 20:00:14.000000000","message":"+ small change in fuel plugin builder https://review.openstack.org/#/c/292139/","commit_id":"0c53c493de97c62ca81311216415b1a7341c9da8"},{"author":{"_account_id":6677,"name":"Oleg Gelbukh","email":"ogelbukh@mirantis.com","username":"gelbuhos"},"change_message_id":"1d493bbc051936b1d340db8c55e30b2395196e66","unresolved":false,"context_lines":[{"line_number":372,"context_line":""},{"line_number":373,"context_line":"* Develop automated integration tests for the plugin in"},{"line_number":374,"context_line":"  ``openstack/fuel-qa`` repository."},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"Dependencies"},{"line_number":377,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":378,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3afc51ec_4cbc44dc","line":375,"in_reply_to":"3afc51ec_105266dd","updated":"2016-03-15 11:00:25.000000000","message":"Done","commit_id":"0c53c493de97c62ca81311216415b1a7341c9da8"}]}
