)]}'
{"specs/approved/torrent-provisioning.rst":[{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"eafa1a55672c05c6ee3e31cf5fd92a6b4e747b24","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Proposed feature allows user to provision images using BitTorrent protocol."},{"line_number":14,"context_line":"Peer-to-peer sharing can reduce load on image storage and network when"},{"line_number":15,"context_line":"provision big amount of instances with same image simultaneously."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"},{"line_number":18,"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":2,"id":"1a95cdbc_81437041","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":9},"updated":"2016-10-07 19:26:14.000000000","message":"nit: s/provision/provisioning\n\na couple other grammar nits, but i\u0027ll leave those out for now","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"eafa1a55672c05c6ee3e31cf5fd92a6b4e747b24","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"This change proposes to use BitTorrent protocol."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"The proposed design illustrated on sequence diagram::"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":" Ironic                Ironic            Glance                   Ironic"},{"line_number":37,"context_line":"  API                 Conductor         (storage)     Glare        Node"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_617f4466","line":34,"updated":"2016-10-07 19:26:14.000000000","message":"Can you put responses to requests on the diagram, too?","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"fbadd7ea9129c82e5d7c5bfb0df38fe81c1098cb","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"This change proposes to use BitTorrent protocol."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"The proposed design illustrated on sequence diagram::"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":" Ironic                Ironic            Glance                   Ironic"},{"line_number":37,"context_line":"  API                 Conductor         (storage)     Glare        Node"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_bc1d9bbf","line":34,"in_reply_to":"1a95cdbc_617f4466","updated":"2016-10-12 11:29:38.000000000","message":"what kind of responses do you mean? space is limited, not sure it fit in.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"80edbe351a7c783fa460ba7d59b88f204671e74c","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"This change proposes to use BitTorrent protocol."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"The proposed design illustrated on sequence diagram::"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":" Ironic                Ironic            Glance                   Ironic"},{"line_number":37,"context_line":"  API                 Conductor         (storage)     Glare        Node"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_97f22dd1","line":34,"in_reply_to":"fa6399be_bc1d9bbf","updated":"2016-10-12 13:54:20.000000000","message":"Responses to requests. For example, after you pass the request to get the torrent file, Glare would respond with the torrent file. I don\u0027t think (IMBW) that the conductor responds to the API after the do_deploy request, for a counterexample.\n\nI think you can add more vertical space to fit this in.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"eafa1a55672c05c6ee3e31cf5fd92a6b4e747b24","unresolved":false,"context_lines":[{"line_number":34,"context_line":"The proposed design illustrated on sequence diagram::"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":" Ironic                Ironic            Glance                   Ironic"},{"line_number":37,"context_line":"  API                 Conductor         (storage)     Glare        Node"},{"line_number":38,"context_line":"   |                      |               |             |           |"},{"line_number":39,"context_line":"   | --do_deploy---------\u003e|               |             |           |"},{"line_number":40,"context_line":"   |                      |     ...       |             |           |"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_e1b43436","line":37,"updated":"2016-10-07 19:26:14.000000000","message":"the torrent file is stored in Glare?\n\nalso, why not use a magnet link, or have the option for it?","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"fbadd7ea9129c82e5d7c5bfb0df38fe81c1098cb","unresolved":false,"context_lines":[{"line_number":34,"context_line":"The proposed design illustrated on sequence diagram::"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":" Ironic                Ironic            Glance                   Ironic"},{"line_number":37,"context_line":"  API                 Conductor         (storage)     Glare        Node"},{"line_number":38,"context_line":"   |                      |               |             |           |"},{"line_number":39,"context_line":"   | --do_deploy---------\u003e|               |             |           |"},{"line_number":40,"context_line":"   |                      |     ...       |             |           |"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_bdd720be","line":37,"in_reply_to":"1a95cdbc_e1b43436","updated":"2016-10-12 11:29:38.000000000","message":"Yes, I think we can also support url where torrent file could be find for standalone mode.\n\nWe can support magnet link, but what use case here. We still need to get image metadata somewhere, and at start we don\u0027t have seeds at all as we are using web seed.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"eafa1a55672c05c6ee3e31cf5fd92a6b4e747b24","unresolved":false,"context_lines":[{"line_number":51,"context_line":"   |                      | --- continue deploy, pass image info --\u003e|"},{"line_number":52,"context_line":"   |                      |       with torrent metadata |           |"},{"line_number":53,"context_line":"   |         ...          |               |             |           |"},{"line_number":54,"context_line":"   |                      |               | \u003c---download image------|"},{"line_number":55,"context_line":"   |                      |               |          ...            |"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"As described, this change proposes to use webseed_ feature of BitTorrent."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_356bb2f2","line":54,"range":{"start_line":54,"start_character":43,"end_line":54,"end_character":69},"updated":"2016-10-07 19:26:14.000000000","message":"Glance serves the image?","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"fbadd7ea9129c82e5d7c5bfb0df38fe81c1098cb","unresolved":false,"context_lines":[{"line_number":51,"context_line":"   |                      | --- continue deploy, pass image info --\u003e|"},{"line_number":52,"context_line":"   |                      |       with torrent metadata |           |"},{"line_number":53,"context_line":"   |         ...          |               |             |           |"},{"line_number":54,"context_line":"   |                      |               | \u003c---download image------|"},{"line_number":55,"context_line":"   |                      |               |          ...            |"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"As described, this change proposes to use webseed_ feature of BitTorrent."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_3cb50bcd","line":54,"range":{"start_line":54,"start_character":43,"end_line":54,"end_character":69},"in_reply_to":"1a95cdbc_356bb2f2","updated":"2016-10-12 11:29:38.000000000","message":"not by itself, depends on glance backend, for agent drivers it could be swift or ceph. I didn\u0027t elaborate this for saving place","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"80edbe351a7c783fa460ba7d59b88f204671e74c","unresolved":false,"context_lines":[{"line_number":51,"context_line":"   |                      | --- continue deploy, pass image info --\u003e|"},{"line_number":52,"context_line":"   |                      |       with torrent metadata |           |"},{"line_number":53,"context_line":"   |         ...          |               |             |           |"},{"line_number":54,"context_line":"   |                      |               | \u003c---download image------|"},{"line_number":55,"context_line":"   |                      |               |          ...            |"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"As described, this change proposes to use webseed_ feature of BitTorrent."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_976dcd9a","line":54,"range":{"start_line":54,"start_character":43,"end_line":54,"end_character":69},"in_reply_to":"fa6399be_3cb50bcd","updated":"2016-10-12 13:54:20.000000000","message":"OK. This may be obvious to others; I don\u0027t know a lot about Glance.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa42501c8e63a52f9323a3e0205529b7e755b227","unresolved":false,"context_lines":[{"line_number":68,"context_line":"and create torrent file for BitTorrent client."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"For proposed feature works, local BitTorrent client should be installed on"},{"line_number":71,"context_line":"agent ramdisk (e.g Deluged, Transmission, Aria2, etc...). Also Torrent"},{"line_number":72,"context_line":"tracker is required (Opentracker, bttrack, qbittorrent, etc...), but"},{"line_number":73,"context_line":"it\u0027s possible to avoid this requirement by using BitTorrent extentions"},{"line_number":74,"context_line":"like LPD and PEX (it\u0027s not covered by this spec)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_28647420","line":71,"updated":"2016-10-06 17:41:17.000000000","message":"Are you/we going to support all of these, or should we pick one or two? How big are those clients, we don\u0027t want the agent ramdisk to get too big.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"38c462012bc4a01ab5bb26ccceadf9302100d868","unresolved":false,"context_lines":[{"line_number":68,"context_line":"and create torrent file for BitTorrent client."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"For proposed feature works, local BitTorrent client should be installed on"},{"line_number":71,"context_line":"agent ramdisk (e.g Deluged, Transmission, Aria2, etc...). Also Torrent"},{"line_number":72,"context_line":"tracker is required (Opentracker, bttrack, qbittorrent, etc...), but"},{"line_number":73,"context_line":"it\u0027s possible to avoid this requirement by using BitTorrent extentions"},{"line_number":74,"context_line":"like LPD and PEX (it\u0027s not covered by this spec)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_37a9167c","line":71,"in_reply_to":"1a95cdbc_28647420","updated":"2016-10-07 08:57:57.000000000","message":"we come to aria2 client, it\u0027s pretty lightweight client, I\u0027ll elaborate on this","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"80edbe351a7c783fa460ba7d59b88f204671e74c","unresolved":false,"context_lines":[{"line_number":68,"context_line":"and create torrent file for BitTorrent client."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"For proposed feature works, local BitTorrent client should be installed on"},{"line_number":71,"context_line":"agent ramdisk (e.g Deluged, Transmission, Aria2, etc...). Also Torrent"},{"line_number":72,"context_line":"tracker is required (Opentracker, bttrack, qbittorrent, etc...), but"},{"line_number":73,"context_line":"it\u0027s possible to avoid this requirement by using BitTorrent extentions"},{"line_number":74,"context_line":"like LPD and PEX (it\u0027s not covered by this spec)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_17b53ded","line":71,"in_reply_to":"1a95cdbc_37a9167c","updated":"2016-10-12 13:54:20.000000000","message":"Thanks.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa42501c8e63a52f9323a3e0205529b7e755b227","unresolved":false,"context_lines":[{"line_number":71,"context_line":"agent ramdisk (e.g Deluged, Transmission, Aria2, etc...). Also Torrent"},{"line_number":72,"context_line":"tracker is required (Opentracker, bttrack, qbittorrent, etc...), but"},{"line_number":73,"context_line":"it\u0027s possible to avoid this requirement by using BitTorrent extentions"},{"line_number":74,"context_line":"like LPD and PEX (it\u0027s not covered by this spec)."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Final workflow for operators looks like:"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_68459c6e","line":74,"updated":"2016-10-06 17:41:17.000000000","message":"What is covered by this spec then, a Torrent tracker? Which one? Are we going to support all of them? Should we recommend one? Where is the torrent tracker going to be installed?","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"38c462012bc4a01ab5bb26ccceadf9302100d868","unresolved":false,"context_lines":[{"line_number":71,"context_line":"agent ramdisk (e.g Deluged, Transmission, Aria2, etc...). Also Torrent"},{"line_number":72,"context_line":"tracker is required (Opentracker, bttrack, qbittorrent, etc...), but"},{"line_number":73,"context_line":"it\u0027s possible to avoid this requirement by using BitTorrent extentions"},{"line_number":74,"context_line":"like LPD and PEX (it\u0027s not covered by this spec)."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Final workflow for operators looks like:"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_f725ee08","line":74,"in_reply_to":"1a95cdbc_68459c6e","updated":"2016-10-07 08:57:57.000000000","message":"Yep, torrent tracker, I\u0027ll elaborate more on this, we are using it only for peer announce. Not sure about recommendation, we can\u0027t test all possible trackers, but they should work.\n\nBasically, yeah it would be installed on conductor node, but no one can stop you from install it on separate node :)","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa42501c8e63a52f9323a3e0205529b7e755b227","unresolved":false,"context_lines":[{"line_number":79,"context_line":"* operator uploads torrent file to Glare;"},{"line_number":80,"context_line":"* operator uploads image to Glance and specify ``torrent_file`` property;"},{"line_number":81,"context_line":"* and it\u0027s possible to boot instance via BitTorrent protocol."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Alternatives"},{"line_number":84,"context_line":"------------"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_cb9f8a4e","line":82,"updated":"2016-10-06 17:41:17.000000000","message":"do we want a config to turn on torrent or no torrent? I don\u0027t know much about glance/torrent-file stuff, even if you add an image and specify the torrent_file property, you could you still grab the image w/o using torrent, right?","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"38c462012bc4a01ab5bb26ccceadf9302100d868","unresolved":false,"context_lines":[{"line_number":79,"context_line":"* operator uploads torrent file to Glare;"},{"line_number":80,"context_line":"* operator uploads image to Glance and specify ``torrent_file`` property;"},{"line_number":81,"context_line":"* and it\u0027s possible to boot instance via BitTorrent protocol."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Alternatives"},{"line_number":84,"context_line":"------------"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_97810ac6","line":82,"in_reply_to":"1a95cdbc_cb9f8a4e","updated":"2016-10-07 08:57:57.000000000","message":"yeah, you right. I can add new option for this","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa42501c8e63a52f9323a3e0205529b7e755b227","unresolved":false,"context_lines":[{"line_number":86,"context_line":"* Introduce seeding functionality in Ironic Conductor, the disadvantages of"},{"line_number":87,"context_line":"  this approach is the conductor doing the bulk work of seeding the images,"},{"line_number":88,"context_line":"  which can be avoided, as the image can be seeded directly from object store"},{"line_number":89,"context_line":"  via temporary URL."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* Glance BitTorrent delivery (Obsolete spec_)"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_082c18aa","line":89,"updated":"2016-10-06 17:41:17.000000000","message":"What\u0027s the advantage (if any) for the conductor doing this work?","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"38c462012bc4a01ab5bb26ccceadf9302100d868","unresolved":false,"context_lines":[{"line_number":86,"context_line":"* Introduce seeding functionality in Ironic Conductor, the disadvantages of"},{"line_number":87,"context_line":"  this approach is the conductor doing the bulk work of seeding the images,"},{"line_number":88,"context_line":"  which can be avoided, as the image can be seeded directly from object store"},{"line_number":89,"context_line":"  via temporary URL."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* Glance BitTorrent delivery (Obsolete spec_)"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_d23c80ca","line":89,"in_reply_to":"1a95cdbc_082c18aa","updated":"2016-10-07 08:57:57.000000000","message":"It would be a little bit faster download at the beginning( only when image already cached, all conductors will seed image immediately, and no needs for clients to download it via http). But advantage insignificant, because all load would be moved to conductor from storage, and at some point it could become performance problem.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa42501c8e63a52f9323a3e0205529b7e755b227","unresolved":false,"context_lines":[{"line_number":88,"context_line":"  which can be avoided, as the image can be seeded directly from object store"},{"line_number":89,"context_line":"  via temporary URL."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* Glance BitTorrent delivery (Obsolete spec_)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"* Create a new service which will provide torrents provisioning, like glance"},{"line_number":94,"context_line":"  in previous suggestion."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_2632e510","line":91,"updated":"2016-10-06 17:41:17.000000000","message":"Why not go with this approach?","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"38c462012bc4a01ab5bb26ccceadf9302100d868","unresolved":false,"context_lines":[{"line_number":88,"context_line":"  which can be avoided, as the image can be seeded directly from object store"},{"line_number":89,"context_line":"  via temporary URL."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* Glance BitTorrent delivery (Obsolete spec_)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"* Create a new service which will provide torrents provisioning, like glance"},{"line_number":94,"context_line":"  in previous suggestion."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_66a9317b","line":91,"in_reply_to":"1a95cdbc_2632e510","updated":"2016-10-07 08:57:57.000000000","message":"folks decided that it shouldn\u0027t be a part of glance, you can google history of discussion if you are interesting.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"80edbe351a7c783fa460ba7d59b88f204671e74c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"  which can be avoided, as the image can be seeded directly from object store"},{"line_number":89,"context_line":"  via temporary URL."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* Glance BitTorrent delivery (Obsolete spec_)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"* Create a new service which will provide torrents provisioning, like glance"},{"line_number":94,"context_line":"  in previous suggestion."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_179a9d63","line":91,"in_reply_to":"1a95cdbc_66a9317b","updated":"2016-10-12 13:54:20.000000000","message":"Mind linking to that discussion, at least in comments? It\u0027s good to link it here if \u003e\u003d1 person would find it useful.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa42501c8e63a52f9323a3e0205529b7e755b227","unresolved":false,"context_lines":[{"line_number":91,"context_line":"* Glance BitTorrent delivery (Obsolete spec_)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"* Create a new service which will provide torrents provisioning, like glance"},{"line_number":94,"context_line":"  in previous suggestion."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"* BitNBD, complex solution for VMs. It is very effective in minimizing"},{"line_number":97,"context_line":"  VM startup delays and providing a hibernating capability."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_6b0af622","line":94,"updated":"2016-10-06 17:41:17.000000000","message":"what\u0027s the difference between this alternative and the previous alternative?","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"38c462012bc4a01ab5bb26ccceadf9302100d868","unresolved":false,"context_lines":[{"line_number":91,"context_line":"* Glance BitTorrent delivery (Obsolete spec_)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"* Create a new service which will provide torrents provisioning, like glance"},{"line_number":94,"context_line":"  in previous suggestion."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"* BitNBD, complex solution for VMs. It is very effective in minimizing"},{"line_number":97,"context_line":"  VM startup delays and providing a hibernating capability."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_a632595d","line":94,"in_reply_to":"1a95cdbc_6b0af622","updated":"2016-10-07 08:57:57.000000000","message":"For ironic no diff, it\u0027s more technically who will provide this functionality.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"80edbe351a7c783fa460ba7d59b88f204671e74c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"* Glance BitTorrent delivery (Obsolete spec_)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"* Create a new service which will provide torrents provisioning, like glance"},{"line_number":94,"context_line":"  in previous suggestion."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"* BitNBD, complex solution for VMs. It is very effective in minimizing"},{"line_number":97,"context_line":"  VM startup delays and providing a hibernating capability."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_97c5cd3d","line":94,"in_reply_to":"1a95cdbc_a632595d","updated":"2016-10-12 13:54:20.000000000","message":"I think they can be merged into 1 point, but I believe that this point indicates *any* other service vs. just Glance as in the previous point.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa42501c8e63a52f9323a3e0205529b7e755b227","unresolved":false,"context_lines":[{"line_number":94,"context_line":"  in previous suggestion."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"* BitNBD, complex solution for VMs. It is very effective in minimizing"},{"line_number":97,"context_line":"  VM startup delays and providing a hibernating capability."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Data model impact"},{"line_number":100,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_062c09aa","line":97,"updated":"2016-10-06 17:41:17.000000000","message":"Why do we care about VMs?","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"38c462012bc4a01ab5bb26ccceadf9302100d868","unresolved":false,"context_lines":[{"line_number":94,"context_line":"  in previous suggestion."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"* BitNBD, complex solution for VMs. It is very effective in minimizing"},{"line_number":97,"context_line":"  VM startup delays and providing a hibernating capability."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Data model impact"},{"line_number":100,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_a6e419e1","line":97,"in_reply_to":"1a95cdbc_062c09aa","updated":"2016-10-07 08:57:57.000000000","message":"I will delete this, it could be implemented for bm too, but not optimized","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"eafa1a55672c05c6ee3e31cf5fd92a6b4e747b24","unresolved":false,"context_lines":[{"line_number":148,"context_line":"torrent file from received torrent metadata and provide it to BitTorrent"},{"line_number":149,"context_line":"client."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Also some BitTorrent client should be installed on ramdisk."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Security impact"},{"line_number":154,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_55a2fe4b","line":151,"updated":"2016-10-07 19:26:14.000000000","message":"Will IPA ship with this by default? That seems like a lot of overhead.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"fbadd7ea9129c82e5d7c5bfb0df38fe81c1098cb","unresolved":false,"context_lines":[{"line_number":148,"context_line":"torrent file from received torrent metadata and provide it to BitTorrent"},{"line_number":149,"context_line":"client."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Also some BitTorrent client should be installed on ramdisk."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Security impact"},{"line_number":154,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_f847e648","line":151,"in_reply_to":"1a95cdbc_55a2fe4b","updated":"2016-10-12 11:29:38.000000000","message":"installing one client(e.g. aria2) doesn\u0027t seem like a lot of overhead for me, but it could be optional I guess","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"80edbe351a7c783fa460ba7d59b88f204671e74c","unresolved":false,"context_lines":[{"line_number":148,"context_line":"torrent file from received torrent metadata and provide it to BitTorrent"},{"line_number":149,"context_line":"client."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Also some BitTorrent client should be installed on ramdisk."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Security impact"},{"line_number":154,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_77cd995c","line":151,"in_reply_to":"fa6399be_f847e648","updated":"2016-10-12 13:54:20.000000000","message":"It\u0027s still unnecessary, and ramdisk download times can be a bottleneck for some people. I\u0027d like to see it be optional when building IPA and not include it by default.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"eafa1a55672c05c6ee3e31cf5fd92a6b4e747b24","unresolved":false,"context_lines":[{"line_number":154,"context_line":"---------------"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"There will be no changes in image fetching mechanism, only one more"},{"line_number":157,"context_line":"protocol will be used - BitTorrent."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Other end user impact"},{"line_number":160,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_758b7ac3","line":157,"updated":"2016-10-07 19:26:14.000000000","message":"does bittorrent still use MD5 for hashing? that\u0027s potentially insecure","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"fbadd7ea9129c82e5d7c5bfb0df38fe81c1098cb","unresolved":false,"context_lines":[{"line_number":154,"context_line":"---------------"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"There will be no changes in image fetching mechanism, only one more"},{"line_number":157,"context_line":"protocol will be used - BitTorrent."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Other end user impact"},{"line_number":160,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_d891429b","line":157,"in_reply_to":"1a95cdbc_758b7ac3","updated":"2016-10-12 11:29:38.000000000","message":"SHA-1, we are using open url for download image, I don\u0027t think that sharing image pieces bring additional security impact","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"80edbe351a7c783fa460ba7d59b88f204671e74c","unresolved":false,"context_lines":[{"line_number":154,"context_line":"---------------"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"There will be no changes in image fetching mechanism, only one more"},{"line_number":157,"context_line":"protocol will be used - BitTorrent."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Other end user impact"},{"line_number":160,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_37024170","line":157,"in_reply_to":"fa6399be_d891429b","updated":"2016-10-12 13:54:20.000000000","message":"Thanks.","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa42501c8e63a52f9323a3e0205529b7e755b227","unresolved":false,"context_lines":[{"line_number":235,"context_line":"Dependencies"},{"line_number":236,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"* python-libtorrent_ library is required;"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"* BitTorrent client on deploy image."},{"line_number":241,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_0b7412fb","line":238,"updated":"2016-10-06 17:41:17.000000000","message":"that links to a c++ implementation. Does it mean a python library doesn\u0027t exist and needs to be written?","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"38c462012bc4a01ab5bb26ccceadf9302100d868","unresolved":false,"context_lines":[{"line_number":235,"context_line":"Dependencies"},{"line_number":236,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"* python-libtorrent_ library is required;"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"* BitTorrent client on deploy image."},{"line_number":241,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_529dd0ba","line":238,"in_reply_to":"1a95cdbc_0b7412fb","updated":"2016-10-07 08:57:57.000000000","message":"Yep, it\u0027s implemented in c++, but has python binding","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa42501c8e63a52f9323a3e0205529b7e755b227","unresolved":false,"context_lines":[{"line_number":250,"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"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"This change is backward compatible. Existing provisioning mechanism will be"},{"line_number":253,"context_line":"used by default."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Documentation Impact"},{"line_number":256,"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":2,"id":"1a95cdbc_ab8a3ebd","line":253,"updated":"2016-10-06 17:41:17.000000000","message":"how does one specify not to use that by default?","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"38c462012bc4a01ab5bb26ccceadf9302100d868","unresolved":false,"context_lines":[{"line_number":250,"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"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"This change is backward compatible. Existing provisioning mechanism will be"},{"line_number":253,"context_line":"used by default."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Documentation Impact"},{"line_number":256,"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":2,"id":"1a95cdbc_7289ec74","line":253,"in_reply_to":"1a95cdbc_ab8a3ebd","updated":"2016-10-07 08:57:57.000000000","message":"I guess we can add config option for this","commit_id":"5bdebffdbff897d00e690b7b6b244aeec21add15"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"c6776bc0b4f104afc3ae32d3e9d557655f1674fa","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Ironic allows provision images by downloading it from the centralized image"},{"line_number":21,"context_line":"store. This approach can be bottleneck when provision big amount of instances"},{"line_number":22,"context_line":"simultaneously (actually pseudo-simultaneously, in current architecture"},{"line_number":23,"context_line":"Ironic handle asynchronous provision requests one by one). As result possible"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa6399be_974f8dbc","line":20,"range":{"start_line":20,"start_character":46,"end_line":20,"end_character":48},"updated":"2016-10-12 14:06:34.000000000","message":"nit: s/it/them\n\nI\u0027ll leave out any other grammar nits for this patch set.","commit_id":"b32ebb55ee5e6af9683297640366d9e34947298a"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"c6776bc0b4f104afc3ae32d3e9d557655f1674fa","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Ironic allows provision images by downloading it from the centralized image"},{"line_number":21,"context_line":"store. This approach can be bottleneck when provision big amount of instances"},{"line_number":22,"context_line":"simultaneously (actually pseudo-simultaneously, in current architecture"},{"line_number":23,"context_line":"Ironic handle asynchronous provision requests one by one). As result possible"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa6399be_f763693f","line":20,"range":{"start_line":20,"start_character":14,"end_line":20,"end_character":23},"updated":"2016-10-12 14:06:34.000000000","message":"nit: s/provision/the provisioning of","commit_id":"b32ebb55ee5e6af9683297640366d9e34947298a"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"c6776bc0b4f104afc3ae32d3e9d557655f1674fa","unresolved":false,"context_lines":[{"line_number":67,"context_line":"file. Based on torrent file, Conductor can generate webseed_ torrent metadata."},{"line_number":68,"context_line":"And when node boots, it will get this metadata and create torrent file for"},{"line_number":69,"context_line":"BitTorrent client."},{"line_number":70,"context_line":"For using torrent provisioning always when image ``torrent_file`` is specified,"},{"line_number":71,"context_line":"ironic configuration option ``[deploy]always_use_torrent_provisioning`` should"},{"line_number":72,"context_line":"be enabled."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa6399be_da268cb9","line":70,"updated":"2016-10-12 14:06:34.000000000","message":"Is there a way to use torrent provisioning only some of the time? If torrent_file is specified, but always_use_torrent_provisioning is False, what is the behavior? Does it try to torrent the image first and fall back on some other mechanism?\n\nI\u0027m OK with any of these behaviors, but I think it should be clarified.","commit_id":"b32ebb55ee5e6af9683297640366d9e34947298a"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"399eb47e0a955926ad92ce42b3dd4b966cd7ac3a","unresolved":false,"context_lines":[{"line_number":67,"context_line":"file. Based on torrent file, Conductor can generate webseed_ torrent metadata."},{"line_number":68,"context_line":"And when node boots, it will get this metadata and create torrent file for"},{"line_number":69,"context_line":"BitTorrent client."},{"line_number":70,"context_line":"For using torrent provisioning always when image ``torrent_file`` is specified,"},{"line_number":71,"context_line":"ironic configuration option ``[deploy]always_use_torrent_provisioning`` should"},{"line_number":72,"context_line":"be enabled."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa6399be_6048c6cd","line":70,"in_reply_to":"fa6399be_da268cb9","updated":"2016-10-18 11:35:51.000000000","message":"I\u0027ll add","commit_id":"b32ebb55ee5e6af9683297640366d9e34947298a"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"c6776bc0b4f104afc3ae32d3e9d557655f1674fa","unresolved":false,"context_lines":[{"line_number":102,"context_line":"* Create a new service which will provide torrents provisioning, like glance"},{"line_number":103,"context_line":"  in previous suggestion."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"* Using magnet links. It\u0027s"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Data model impact"},{"line_number":108,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa6399be_9a91749c","line":105,"updated":"2016-10-12 14:06:34.000000000","message":"This is not complete. You can at least remove the \"It\u0027s\" at the end; I think that will be complete enough.","commit_id":"b32ebb55ee5e6af9683297640366d9e34947298a"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"399eb47e0a955926ad92ce42b3dd4b966cd7ac3a","unresolved":false,"context_lines":[{"line_number":102,"context_line":"* Create a new service which will provide torrents provisioning, like glance"},{"line_number":103,"context_line":"  in previous suggestion."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"* Using magnet links. It\u0027s"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Data model impact"},{"line_number":108,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa6399be_40f4a286","line":105,"in_reply_to":"fa6399be_9a91749c","updated":"2016-10-18 11:35:51.000000000","message":"Oops, missed, thanks","commit_id":"b32ebb55ee5e6af9683297640366d9e34947298a"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"c6776bc0b4f104afc3ae32d3e9d557655f1674fa","unresolved":false,"context_lines":[{"line_number":196,"context_line":"* Instances will do additional network calls to torrent tracker and exchange"},{"line_number":197,"context_line":"  meta information with peers."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"* All above impacts is insignificant in comparison with benefit about 50%"},{"line_number":200,"context_line":"  shorter deployment time."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa6399be_1acba4a6","line":199,"range":{"start_line":199,"start_character":70,"end_line":199,"end_character":73},"updated":"2016-10-12 14:06:34.000000000","message":"Where do you get this number from? This is awesome if you have the data to back it up.","commit_id":"b32ebb55ee5e6af9683297640366d9e34947298a"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"399eb47e0a955926ad92ce42b3dd4b966cd7ac3a","unresolved":false,"context_lines":[{"line_number":196,"context_line":"* Instances will do additional network calls to torrent tracker and exchange"},{"line_number":197,"context_line":"  meta information with peers."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"* All above impacts is insignificant in comparison with benefit about 50%"},{"line_number":200,"context_line":"  shorter deployment time."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa6399be_60da8619","line":199,"range":{"start_line":199,"start_character":70,"end_line":199,"end_character":73},"in_reply_to":"fa6399be_1acba4a6","updated":"2016-10-18 11:35:51.000000000","message":"We will post blog article with numbers, I\u0027ll remove this for now","commit_id":"b32ebb55ee5e6af9683297640366d9e34947298a"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"c6776bc0b4f104afc3ae32d3e9d557655f1674fa","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* Unit tests coverage;"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"* A new gate job will be created to ensure BitTorrent provisioning works."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":260,"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"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa6399be_faa430ba","line":257,"updated":"2016-10-12 14:06:34.000000000","message":"I\u0027m a little curious about how this will be done. Do we need to stand up new tracker infrastructure or make it a part of the conductor at least?\n\nThis can wait for the implementation, but I\u0027m just a bit curious.","commit_id":"b32ebb55ee5e6af9683297640366d9e34947298a"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"399eb47e0a955926ad92ce42b3dd4b966cd7ac3a","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* Unit tests coverage;"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"* A new gate job will be created to ensure BitTorrent provisioning works."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":260,"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"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa6399be_0039ca41","line":257,"in_reply_to":"fa6399be_faa430ba","updated":"2016-10-18 11:35:51.000000000","message":"yeah, we need to setup tracker service","commit_id":"b32ebb55ee5e6af9683297640366d9e34947298a"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"777c2cb1c21b55ed8d4dc5dbca303883c285bdd3","unresolved":false,"context_lines":[{"line_number":58,"context_line":"It will allow to avoid conductor seeding the images as they could be"},{"line_number":59,"context_line":"seeded directly from object storage via HTTP."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"For proposed feature works, local BitTorrent client should be installed on"},{"line_number":62,"context_line":"agent ramdisk (e.g Aria2). Also Torrent tracker is required (e.g. qbittorrent),"},{"line_number":63,"context_line":"Every BitTorrent client will announce to the tracker a number times during"},{"line_number":64,"context_line":"the course of a download to update its peers information."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_15771103","line":61,"updated":"2016-10-18 18:52:48.000000000","message":"This will not be included by any default mechanism in the IPA builders in-tree, right? I don\u0027t think we should include extra things like this unless they\u0027re used in a majority of deployments, especially for tinyIPA. Maybe this is OK with regular IPA.\n\nMaybe a good solution is to add an advanced option that will pull down the preferred BT client, like the ones shown here: https://github.com/openstack/ironic-python-agent/tree/master/imagebuild/tinyipa#advanced-options\n\nWe can hash this out in the implementation if necessary, but I\u0027m curious what your thoughts are.","commit_id":"7348707151f2a5cc6d11ee30c409650ba2025b30"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"154eab5122be7386deae11d955cd81416c7cf9f3","unresolved":false,"context_lines":[{"line_number":58,"context_line":"It will allow to avoid conductor seeding the images as they could be"},{"line_number":59,"context_line":"seeded directly from object storage via HTTP."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"For proposed feature works, local BitTorrent client should be installed on"},{"line_number":62,"context_line":"agent ramdisk (e.g Aria2). Also Torrent tracker is required (e.g. qbittorrent),"},{"line_number":63,"context_line":"Every BitTorrent client will announce to the tracker a number times during"},{"line_number":64,"context_line":"the course of a download to update its peers information."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_b71bb1c9","line":61,"in_reply_to":"fa6399be_15771103","updated":"2016-10-19 09:52:20.000000000","message":"As I said before, yes, I don\u0027t see any problem to do torrent client optional feature. It should be easy to implement.\n\nAs for \"preferred client\", we will support and test only one client, if you want another one, you can create your own extension for it","commit_id":"7348707151f2a5cc6d11ee30c409650ba2025b30"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"777c2cb1c21b55ed8d4dc5dbca303883c285bdd3","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"For using torrent provisioning as default provisioning mechanism image"},{"line_number":84,"context_line":"property ``torrent_file`` should be specified, and ironic configuration option"},{"line_number":85,"context_line":"``[deploy]always_use_torrent_provisioning`` should be enabled."},{"line_number":86,"context_line":"If ``[deploy]always_use_torrent_provisioning`` set to ``False``,"},{"line_number":87,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":88,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_d5c9195c","line":85,"updated":"2016-10-18 18:52:48.000000000","message":"OK - so this means that \"always_use_torrent_provisioning\" simply enables torrent provisioning for images with the property  \"torrent_file\"?\n\nWhat happens if I have an image that is both stored in some other backend *and* I have a torrent for it (torrent_file property is set), and downloading via torrent fails? Can I fall back to use this other backend?","commit_id":"7348707151f2a5cc6d11ee30c409650ba2025b30"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"154eab5122be7386deae11d955cd81416c7cf9f3","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"For using torrent provisioning as default provisioning mechanism image"},{"line_number":84,"context_line":"property ``torrent_file`` should be specified, and ironic configuration option"},{"line_number":85,"context_line":"``[deploy]always_use_torrent_provisioning`` should be enabled."},{"line_number":86,"context_line":"If ``[deploy]always_use_torrent_provisioning`` set to ``False``,"},{"line_number":87,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":88,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_f739a9a4","line":85,"in_reply_to":"fa6399be_d5c9195c","updated":"2016-10-19 09:52:20.000000000","message":"1) yes\n2) what kind of backend do you mean?\nyou have glance image with \u0027torrent_file\u0027 property, which points to torrent file location (we can support both glare id and some url here). You say:\n nova boot ... \u003cglance id of this image\u003e\nironic see that torrent provisioning is enabled, looking for \u0027torrent_file\u0027, if present - use torrent, if no - use http.","commit_id":"7348707151f2a5cc6d11ee30c409650ba2025b30"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"57e592a80f70f9b72d4d012b2559b7a896d3b138","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Ironic allows the deployment of images by downloading them from"},{"line_number":22,"context_line":"the centralized image store. This approach becomes a scalability"},{"line_number":23,"context_line":"bottleneck when provisioning large numbers of instances simultaneously"},{"line_number":24,"context_line":"(actually pseudo-simultaneously, in current architecture Ironic handle"},{"line_number":25,"context_line":"asynchronous provision requests one by one)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As a result, Ironic\u0027s current methods for deployment do not scale well"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_73225703","line":24,"updated":"2016-11-04 13:47:48.000000000","message":"Nits: s/in/in the/, s/handle/handles/","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":28,"context_line":"to support large-scale concurrent provisioning. Substantial control plane"},{"line_number":29,"context_line":"infrastructure is required to support concurrent provisioning at scale -"},{"line_number":30,"context_line":"and the requirement grows linearly with the size of the deployment."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"In research computing, an established use case in infrastructure"},{"line_number":33,"context_line":"management is the simultaneous deployment of large numbers of servers with"},{"line_number":34,"context_line":"a single system image. The Rocks Cluster Installer uses BitTorrent in this"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_6875e1f7","line":31,"updated":"2016-11-08 09:12:16.000000000","message":"I think the paragraph \"In research computing....\" would be better suited as the opening of the \"Proposed change\" section as the paragraph suggests\u0026justifies particular solution to the problem stated here.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":29,"context_line":"infrastructure is required to support concurrent provisioning at scale -"},{"line_number":30,"context_line":"and the requirement grows linearly with the size of the deployment."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"In research computing, an established use case in infrastructure"},{"line_number":33,"context_line":"management is the simultaneous deployment of large numbers of servers with"},{"line_number":34,"context_line":"a single system image. The Rocks Cluster Installer uses BitTorrent in this"},{"line_number":35,"context_line":"use case to good effect. The advantage of BitTorrent is that the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_c8826d00","line":32,"range":{"start_line":32,"start_character":23,"end_line":32,"end_character":46},"updated":"2016-11-08 09:12:16.000000000","message":"Ideally there would be a quotation/link here","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"In research computing, an established use case in infrastructure"},{"line_number":33,"context_line":"management is the simultaneous deployment of large numbers of servers with"},{"line_number":34,"context_line":"a single system image. The Rocks Cluster Installer uses BitTorrent in this"},{"line_number":35,"context_line":"use case to good effect. The advantage of BitTorrent is that the"},{"line_number":36,"context_line":"capacity to serve image data grows with the demand for that data."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_68740135","line":34,"range":{"start_line":34,"start_character":23,"end_line":34,"end_character":66},"updated":"2016-11-08 09:12:16.000000000","message":"Please, add a link to support this statement","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"89a8d9ed0eb34c2c161447f724517bccbab821e8","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"In research computing, an established use case in infrastructure"},{"line_number":33,"context_line":"management is the simultaneous deployment of large numbers of servers with"},{"line_number":34,"context_line":"a single system image. The Rocks Cluster Installer uses BitTorrent in this"},{"line_number":35,"context_line":"use case to good effect. The advantage of BitTorrent is that the"},{"line_number":36,"context_line":"capacity to serve image data grows with the demand for that data."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_82e209d4","line":34,"range":{"start_line":34,"start_character":23,"end_line":34,"end_character":66},"in_reply_to":"9a629dbe_68740135","updated":"2016-11-08 12:23:46.000000000","message":"There is reference, I\u0027ll link to it","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":32,"context_line":"In research computing, an established use case in infrastructure"},{"line_number":33,"context_line":"management is the simultaneous deployment of large numbers of servers with"},{"line_number":34,"context_line":"a single system image. The Rocks Cluster Installer uses BitTorrent in this"},{"line_number":35,"context_line":"use case to good effect. The advantage of BitTorrent is that the"},{"line_number":36,"context_line":"capacity to serve image data grows with the demand for that data."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_48dc9d12","line":36,"range":{"start_line":35,"start_character":25,"end_line":36,"end_character":64},"updated":"2016-11-08 09:12:16.000000000","message":"Please, either elaborate on how does the BitTorrent mechanism of capacity growth with the demand works, or link to support the statement.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"89a8d9ed0eb34c2c161447f724517bccbab821e8","unresolved":false,"context_lines":[{"line_number":32,"context_line":"In research computing, an established use case in infrastructure"},{"line_number":33,"context_line":"management is the simultaneous deployment of large numbers of servers with"},{"line_number":34,"context_line":"a single system image. The Rocks Cluster Installer uses BitTorrent in this"},{"line_number":35,"context_line":"use case to good effect. The advantage of BitTorrent is that the"},{"line_number":36,"context_line":"capacity to serve image data grows with the demand for that data."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_82bbe9c3","line":36,"range":{"start_line":35,"start_character":25,"end_line":36,"end_character":64},"in_reply_to":"9a629dbe_48dc9d12","updated":"2016-11-08 12:23:46.000000000","message":"I guess Stig trying to say here that with grows of consumers (nodes on deploy), there will be more seeders, as result the load will spread among them","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Simultaneously provisioning the same image to multiple instances can be more"},{"line_number":42,"context_line":"efficient by sharing the image data between instances."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"This change proposes to add support for the BitTorrent protocol."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_ae9aa112","line":42,"range":{"start_line":41,"start_character":0,"end_line":42,"end_character":53},"updated":"2016-11-08 09:12:16.000000000","message":"If I understand the proposed design, the IPA is going both to provide and to consume the image content (writing it to the disk). For this to work efficiently, the IPA should be providing the content longer than consuming it to avoid becoming a \"Leech\"[1].\nI\u0027d say this is crucial for the BitTorrent adoption justification and deserves elaboration ideally w/ some measured data.\n\n[1] https://en.wikipedia.org/wiki/BitTorrent#Challenges","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"89a8d9ed0eb34c2c161447f724517bccbab821e8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Proposed change"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Simultaneously provisioning the same image to multiple instances can be more"},{"line_number":42,"context_line":"efficient by sharing the image data between instances."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"This change proposes to add support for the BitTorrent protocol."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_a75abf81","line":42,"range":{"start_line":41,"start_character":0,"end_line":42,"end_character":53},"in_reply_to":"9a629dbe_ae9aa112","updated":"2016-11-08 12:23:46.000000000","message":"How do you define when node should stop seeding? we need some formal criteria","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"This change proposes to add support for the BitTorrent protocol."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"The proposed design illustrated as a sequence diagram::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":" Ironic                Ironic            Glance                   Ironic"},{"line_number":49,"context_line":"  API                 Conductor         (storage)     Glare        Node"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_e8a49158","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":55},"updated":"2016-11-08 09:12:16.000000000","message":"I think the diagram should contain the \"reuse\" of the torrent-provided media i.e the second- (or the N-th-) node deploy call-flow, especially how the bits are being streamed to the node being deployed. This may be split into more images for readability reasons.\nI\u0027d also recommend adding call-flows for the operator image uploading and possibly the torrent image canceling/phasing out.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"89a8d9ed0eb34c2c161447f724517bccbab821e8","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"This change proposes to add support for the BitTorrent protocol."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"The proposed design illustrated as a sequence diagram::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":" Ironic                Ironic            Glance                   Ironic"},{"line_number":49,"context_line":"  API                 Conductor         (storage)     Glare        Node"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_7d63d4b1","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":55},"in_reply_to":"9a629dbe_e8a49158","updated":"2016-11-08 12:23:46.000000000","message":"I\u0027m trying to show here how ironic workflow with torrents provisioning will look like, I didn\u0027t have plans to create doc, illustration for operators or show how torrents work.\n\nI\u0027ll try to add one more node to show data sharing between  nodes.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"The proposed design illustrated as a sequence diagram::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":" Ironic                Ironic            Glance                   Ironic"},{"line_number":49,"context_line":"  API                 Conductor         (storage)     Glare        Node"},{"line_number":50,"context_line":"   |                      |               |             |           |"},{"line_number":51,"context_line":"   | --do_deploy---------\u003e|               |             |           |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_4e63c5dc","line":48,"range":{"start_line":48,"start_character":1,"end_line":48,"end_character":7},"updated":"2016-11-08 09:12:16.000000000","message":"Is Ironic API playing the \"Tracker\" role here?\nIf so, the tracker call-flows are missing.\nElse the Tracker role may be missing in the diagram.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"The proposed design illustrated as a sequence diagram::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":" Ironic                Ironic            Glance                   Ironic"},{"line_number":49,"context_line":"  API                 Conductor         (storage)     Glare        Node"},{"line_number":50,"context_line":"   |                      |               |             |           |"},{"line_number":51,"context_line":"   | --do_deploy---------\u003e|               |             |           |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_2b23e3be","line":48,"range":{"start_line":48,"start_character":66,"end_line":48,"end_character":72},"updated":"2016-11-08 09:12:16.000000000","message":"s/Ironic Node/Ironic node (peer)/","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"89a8d9ed0eb34c2c161447f724517bccbab821e8","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"The proposed design illustrated as a sequence diagram::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":" Ironic                Ironic            Glance                   Ironic"},{"line_number":49,"context_line":"  API                 Conductor         (storage)     Glare        Node"},{"line_number":50,"context_line":"   |                      |               |             |           |"},{"line_number":51,"context_line":"   | --do_deploy---------\u003e|               |             |           |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_1d1bb81c","line":48,"range":{"start_line":48,"start_character":1,"end_line":48,"end_character":7},"in_reply_to":"9a629dbe_4e63c5dc","updated":"2016-11-08 12:23:46.000000000","message":"No, API doesn\u0027t play as tracker, I\u0027ll try to add tracker here","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":46,"context_line":"The proposed design illustrated as a sequence diagram::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":" Ironic                Ironic            Glance                   Ironic"},{"line_number":49,"context_line":"  API                 Conductor         (storage)     Glare        Node"},{"line_number":50,"context_line":"   |                      |               |             |           |"},{"line_number":51,"context_line":"   | --do_deploy---------\u003e|               |             |           |"},{"line_number":52,"context_line":"   |                      |     ...       |             |           |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_abbff3ce","line":49,"range":{"start_line":49,"start_character":54,"end_line":49,"end_character":59},"updated":"2016-11-08 09:12:16.000000000","message":"s/Glare/Glare (artifact store)/","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":66,"context_line":"   |                      |               | \u003c---download image------|"},{"line_number":67,"context_line":"   |                      |               |          ...            |"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"As described, this change proposes to use the webseed_ feature of"},{"line_number":70,"context_line":"BitTorrent.  This simplifies the role of the Ironic conductor, avoiding"},{"line_number":71,"context_line":"the need to seed the images.  The images can be seeded directly from"},{"line_number":72,"context_line":"object storage via HTTP.  The HTTP server must support the HTTP/1.1"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_a84ff990","line":69,"range":{"start_line":69,"start_character":0,"end_line":69,"end_character":12},"updated":"2016-11-08 09:12:16.000000000","message":"Maybe rephrase: \"We propose to use the webseed_ feature of BitTorrent to reduce conductor load...\"","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":10910,"name":"Stig Telfer","email":"stig.openstack@telfer.org","username":"stigtelfer"},"change_message_id":"f8f47f9e1f5fa7c73fc9fe79bd3eb461040f5bb5","unresolved":false,"context_lines":[{"line_number":72,"context_line":"object storage via HTTP.  The HTTP server must support the HTTP/1.1"},{"line_number":73,"context_line":"Accept-Ranges extension in order to perform this role."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2)."},{"line_number":76,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent). Every BitTorrent"},{"line_number":77,"context_line":"client will announce to the tracker a number times during"},{"line_number":78,"context_line":"the course of a download to update its peers information."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_73d97783","line":75,"range":{"start_line":75,"start_character":66,"end_line":75,"end_character":71},"updated":"2016-11-04 12:15:37.000000000","message":"A cross-reference to Aria2 and rationale for its choice would be good.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"a742c5e39928fa7b5d1137ae4e4b798dc1291a97","unresolved":false,"context_lines":[{"line_number":72,"context_line":"object storage via HTTP.  The HTTP server must support the HTTP/1.1"},{"line_number":73,"context_line":"Accept-Ranges extension in order to perform this role."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2)."},{"line_number":76,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent). Every BitTorrent"},{"line_number":77,"context_line":"client will announce to the tracker a number times during"},{"line_number":78,"context_line":"the course of a download to update its peers information."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_8e1c246c","line":75,"range":{"start_line":75,"start_character":66,"end_line":75,"end_character":71},"in_reply_to":"ba5da102_73d97783","updated":"2016-11-04 13:06:07.000000000","message":"Is is a pretty lightweight tool, and supports all required feature. It\u0027s opens question, so if you have better suggestion, please","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":72,"context_line":"object storage via HTTP.  The HTTP server must support the HTTP/1.1"},{"line_number":73,"context_line":"Accept-Ranges extension in order to perform this role."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2)."},{"line_number":76,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent). Every BitTorrent"},{"line_number":77,"context_line":"client will announce to the tracker a number times during"},{"line_number":78,"context_line":"the course of a download to update its peers information."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_080d453e","line":75,"range":{"start_line":75,"start_character":66,"end_line":75,"end_character":71},"in_reply_to":"ba5da102_8e1c246c","updated":"2016-11-08 09:12:16.000000000","message":"I think it should be sufficient to just link to Aria2 page and/or list other options in an \"Alternatives\" subsection.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":10910,"name":"Stig Telfer","email":"stig.openstack@telfer.org","username":"stigtelfer"},"change_message_id":"f8f47f9e1f5fa7c73fc9fe79bd3eb461040f5bb5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"Accept-Ranges extension in order to perform this role."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2)."},{"line_number":76,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent). Every BitTorrent"},{"line_number":77,"context_line":"client will announce to the tracker a number times during"},{"line_number":78,"context_line":"the course of a download to update its peers information."},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_f3d3c75d","line":76,"range":{"start_line":76,"start_character":42,"end_line":76,"end_character":53},"updated":"2016-11-04 12:15:37.000000000","message":"I am not sure that qbittorrent is a tracker?","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"89a8d9ed0eb34c2c161447f724517bccbab821e8","unresolved":false,"context_lines":[{"line_number":73,"context_line":"Accept-Ranges extension in order to perform this role."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2)."},{"line_number":76,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent). Every BitTorrent"},{"line_number":77,"context_line":"client will announce to the tracker a number times during"},{"line_number":78,"context_line":"the course of a download to update its peers information."},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_f4caa84e","line":76,"in_reply_to":"9a629dbe_cb7c2775","updated":"2016-11-08 12:23:46.000000000","message":"There is qbittorent-nox for this, it\u0027s pretty lightweight tracker \n https://github.com/qbittorrent/qBittorrent/wiki/Running-qBittorrent-without-X-server\n\nIt\u0027s proposed only for testing purpose, if you have better suggestions I\u0027m open","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":73,"context_line":"Accept-Ranges extension in order to perform this role."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2)."},{"line_number":76,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent). Every BitTorrent"},{"line_number":77,"context_line":"client will announce to the tracker a number times during"},{"line_number":78,"context_line":"the course of a download to update its peers information."},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_cb7c2775","line":76,"in_reply_to":"ba5da102_6e0fd02e","updated":"2016-11-08 09:12:16.000000000","message":"ditto, please add a link to the project page/usage guide and ideally state the reason why it was picked. Possibly give optional trackers in an \"Alternatives\" subsection.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"57e592a80f70f9b72d4d012b2559b7a896d3b138","unresolved":false,"context_lines":[{"line_number":73,"context_line":"Accept-Ranges extension in order to perform this role."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2)."},{"line_number":76,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent). Every BitTorrent"},{"line_number":77,"context_line":"client will announce to the tracker a number times during"},{"line_number":78,"context_line":"the course of a download to update its peers information."},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_6e0fd02e","line":76,"in_reply_to":"ba5da102_f3d3c75d","updated":"2016-11-04 13:47:48.000000000","message":"According to Wikipedia it can function as a tracker, but \"it is not designed for secure or large-scale application\" (https://en.wikipedia.org/wiki/Comparison_of_BitTorrent_tracker_software). Not sure what \"large-scale\" means in this context, or if we qualify. It also AFAICT has a lot of GUI and client functionality that we don\u0027t need, so we could perhaps use a lighter-weight tracker (if we use one at all: see below...)","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"a742c5e39928fa7b5d1137ae4e4b798dc1291a97","unresolved":false,"context_lines":[{"line_number":73,"context_line":"Accept-Ranges extension in order to perform this role."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2)."},{"line_number":76,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent). Every BitTorrent"},{"line_number":77,"context_line":"client will announce to the tracker a number times during"},{"line_number":78,"context_line":"the course of a download to update its peers information."},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_536c7336","line":76,"range":{"start_line":76,"start_character":42,"end_line":76,"end_character":53},"in_reply_to":"ba5da102_f3d3c75d","updated":"2016-11-04 13:06:07.000000000","message":"It is https://github.com/qbittorrent/qBittorrent/wiki/How-to-use-qBittorrent-as-a-tracker","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2)."},{"line_number":76,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent). Every BitTorrent"},{"line_number":77,"context_line":"client will announce to the tracker a number times during"},{"line_number":78,"context_line":"the course of a download to update its peers information."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Torrent files contain the URL of the torrent tracker, the block size of"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_cb6d0706","line":77,"range":{"start_line":77,"start_character":12,"end_line":77,"end_character":20},"updated":"2016-11-08 09:12:16.000000000","message":"s/announce/*announce*/\nmaybe add a link to the related BitTorrent protocol description","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2)."},{"line_number":76,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent). Every BitTorrent"},{"line_number":77,"context_line":"client will announce to the tracker a number times during"},{"line_number":78,"context_line":"the course of a download to update its peers information."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Torrent files contain the URL of the torrent tracker, the block size of"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_ae2b8181","line":77,"range":{"start_line":77,"start_character":0,"end_line":77,"end_character":6},"updated":"2016-11-08 09:12:16.000000000","message":"s/client/client, the node being deployed,/","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"89a8d9ed0eb34c2c161447f724517bccbab821e8","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2)."},{"line_number":76,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent). Every BitTorrent"},{"line_number":77,"context_line":"client will announce to the tracker a number times during"},{"line_number":78,"context_line":"the course of a download to update its peers information."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Torrent files contain the URL of the torrent tracker, the block size of"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_f810d250","line":77,"range":{"start_line":77,"start_character":12,"end_line":77,"end_character":20},"in_reply_to":"9a629dbe_cb6d0706","updated":"2016-11-08 12:23:46.000000000","message":"It\u0027s in references, link to general BitTorrent protocol specification","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"57e592a80f70f9b72d4d012b2559b7a896d3b138","unresolved":false,"context_lines":[{"line_number":93,"context_line":"torrent metadata.  When the node boots, it will use this metadata"},{"line_number":94,"context_line":"to retrieve the torrent file for the BitTorrent client, which"},{"line_number":95,"context_line":"announces peer information to the tracker. The node requires an"},{"line_number":96,"context_line":"endpoing URL for the tracker. This information will be provided via a new"},{"line_number":97,"context_line":"configuration option ``torrent_trackers``. This option contains multiple"},{"line_number":98,"context_line":"trackers. This provides redundancy in the case that one tracker fails,"},{"line_number":99,"context_line":"the other trackers can continue to maintain the swarm for the torrent."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_4e392cd8","line":96,"updated":"2016-11-04 13:47:48.000000000","message":"nit: \"endpoint\"","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":10910,"name":"Stig Telfer","email":"stig.openstack@telfer.org","username":"stigtelfer"},"change_message_id":"f8f47f9e1f5fa7c73fc9fe79bd3eb461040f5bb5","unresolved":false,"context_lines":[{"line_number":94,"context_line":"to retrieve the torrent file for the BitTorrent client, which"},{"line_number":95,"context_line":"announces peer information to the tracker. The node requires an"},{"line_number":96,"context_line":"endpoing URL for the tracker. This information will be provided via a new"},{"line_number":97,"context_line":"configuration option ``torrent_trackers``. This option contains multiple"},{"line_number":98,"context_line":"trackers. This provides redundancy in the case that one tracker fails,"},{"line_number":99,"context_line":"the other trackers can continue to maintain the swarm for the torrent."},{"line_number":100,"context_line":"Supporting multiple trackers applies restrictions on BitTorrent client,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_73c0977d","line":97,"range":{"start_line":97,"start_character":21,"end_line":97,"end_character":42},"updated":"2016-11-04 12:15:37.000000000","message":"An example value for this config would be good","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"a742c5e39928fa7b5d1137ae4e4b798dc1291a97","unresolved":false,"context_lines":[{"line_number":94,"context_line":"to retrieve the torrent file for the BitTorrent client, which"},{"line_number":95,"context_line":"announces peer information to the tracker. The node requires an"},{"line_number":96,"context_line":"endpoing URL for the tracker. This information will be provided via a new"},{"line_number":97,"context_line":"configuration option ``torrent_trackers``. This option contains multiple"},{"line_number":98,"context_line":"trackers. This provides redundancy in the case that one tracker fails,"},{"line_number":99,"context_line":"the other trackers can continue to maintain the swarm for the torrent."},{"line_number":100,"context_line":"Supporting multiple trackers applies restrictions on BitTorrent client,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_73697725","line":97,"range":{"start_line":97,"start_character":21,"end_line":97,"end_character":42},"in_reply_to":"ba5da102_73c0977d","updated":"2016-11-04 13:06:07.000000000","message":"I\u0027ll add","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"57e592a80f70f9b72d4d012b2559b7a896d3b138","unresolved":false,"context_lines":[{"line_number":97,"context_line":"configuration option ``torrent_trackers``. This option contains multiple"},{"line_number":98,"context_line":"trackers. This provides redundancy in the case that one tracker fails,"},{"line_number":99,"context_line":"the other trackers can continue to maintain the swarm for the torrent."},{"line_number":100,"context_line":"Supporting multiple trackers applies restrictions on BitTorrent client,"},{"line_number":101,"context_line":"it should support multi-tracker_ metadata extension"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"To use torrent provisioning as the default provisioning mechanism, Glance image"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_ae47284a","line":100,"updated":"2016-11-04 13:47:48.000000000","message":"I\u0027d reword this as \"restricts the possible choices of BitTorrent client\".","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"57e592a80f70f9b72d4d012b2559b7a896d3b138","unresolved":false,"context_lines":[{"line_number":98,"context_line":"trackers. This provides redundancy in the case that one tracker fails,"},{"line_number":99,"context_line":"the other trackers can continue to maintain the swarm for the torrent."},{"line_number":100,"context_line":"Supporting multiple trackers applies restrictions on BitTorrent client,"},{"line_number":101,"context_line":"it should support multi-tracker_ metadata extension"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"To use torrent provisioning as the default provisioning mechanism, Glance image"},{"line_number":104,"context_line":"property ``torrent_file`` should be specified, and Ironic configuration option"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_0e6d74cc","line":101,"updated":"2016-11-04 13:47:48.000000000","message":"Nit: missing full stop.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"57e592a80f70f9b72d4d012b2559b7a896d3b138","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Supporting multiple trackers applies restrictions on BitTorrent client,"},{"line_number":101,"context_line":"it should support multi-tracker_ metadata extension"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"To use torrent provisioning as the default provisioning mechanism, Glance image"},{"line_number":104,"context_line":"property ``torrent_file`` should be specified, and Ironic configuration option"},{"line_number":105,"context_line":"``[deploy]always_use_torrent_provisioning`` should be enabled."},{"line_number":106,"context_line":"If ``[deploy]always_use_torrent_provisioning`` set to ``False``,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_4e676cea","line":103,"updated":"2016-11-04 13:47:48.000000000","message":"\"the Glance\"","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":10910,"name":"Stig Telfer","email":"stig.openstack@telfer.org","username":"stigtelfer"},"change_message_id":"f8f47f9e1f5fa7c73fc9fe79bd3eb461040f5bb5","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"To use torrent provisioning as the default provisioning mechanism, Glance image"},{"line_number":104,"context_line":"property ``torrent_file`` should be specified, and Ironic configuration option"},{"line_number":105,"context_line":"``[deploy]always_use_torrent_provisioning`` should be enabled."},{"line_number":106,"context_line":"If ``[deploy]always_use_torrent_provisioning`` set to ``False``,"},{"line_number":107,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_d35c03f3","line":105,"range":{"start_line":105,"start_character":10,"end_line":105,"end_character":20},"updated":"2016-11-04 12:15:37.000000000","message":"Is it really \"always use\" or is it \"enable\"?","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"a742c5e39928fa7b5d1137ae4e4b798dc1291a97","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"To use torrent provisioning as the default provisioning mechanism, Glance image"},{"line_number":104,"context_line":"property ``torrent_file`` should be specified, and Ironic configuration option"},{"line_number":105,"context_line":"``[deploy]always_use_torrent_provisioning`` should be enabled."},{"line_number":106,"context_line":"If ``[deploy]always_use_torrent_provisioning`` set to ``False``,"},{"line_number":107,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_335e1f77","line":105,"range":{"start_line":105,"start_character":10,"end_line":105,"end_character":20},"in_reply_to":"ba5da102_d35c03f3","updated":"2016-11-04 13:06:07.000000000","message":"Yeah, I\u0027ll update","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":10910,"name":"Stig Telfer","email":"stig.openstack@telfer.org","username":"stigtelfer"},"change_message_id":"f8f47f9e1f5fa7c73fc9fe79bd3eb461040f5bb5","unresolved":false,"context_lines":[{"line_number":106,"context_line":"If ``[deploy]always_use_torrent_provisioning`` set to ``False``,"},{"line_number":107,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"It\u0027s possible to avoid tracker requirement by using BitTorrent extensions"},{"line_number":110,"context_line":"like LPD_ and PEX_ (but it\u0027s not covered by this spec)."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"The final workflow for operators looks like:"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_736ed797","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":55},"updated":"2016-11-04 12:15:37.000000000","message":"This concept seems to fit well and it would be interesting to hear your rationale for not using it.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"57e592a80f70f9b72d4d012b2559b7a896d3b138","unresolved":false,"context_lines":[{"line_number":107,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"It\u0027s possible to avoid tracker requirement by using BitTorrent extensions"},{"line_number":110,"context_line":"like LPD_ and PEX_ (but it\u0027s not covered by this spec)."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"The final workflow for operators looks like:"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_cee7fc44","line":110,"in_reply_to":"ba5da102_736ed797","updated":"2016-11-04 13:47:48.000000000","message":"+1, I\u0027d also like to know what the problem would be with trackerless torrents - ISTM it would reduce overall complexity, but I know very little about the BitTorrent protocol!","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"a742c5e39928fa7b5d1137ae4e4b798dc1291a97","unresolved":false,"context_lines":[{"line_number":106,"context_line":"If ``[deploy]always_use_torrent_provisioning`` set to ``False``,"},{"line_number":107,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"It\u0027s possible to avoid tracker requirement by using BitTorrent extensions"},{"line_number":110,"context_line":"like LPD_ and PEX_ (but it\u0027s not covered by this spec)."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"The final workflow for operators looks like:"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_93e44bad","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":55},"in_reply_to":"ba5da102_736ed797","updated":"2016-11-04 13:06:07.000000000","message":"I\u0027ll add clarification.\n\nThe main point here is how deploy works now, we don\u0027t know all nodes that would be deployed at one time (it would be  request sequence). So DHT peers have to discovering new nodes at a given time and peer may or may not provide a list, or only a partial list of peers, which changes during provisioning (and we don\u0027t continue seeding after node was deployed, because it\u0027s hard to say when all nodes done provisioning).\n\nI\u0027m consider using this extensions when we will accept a bulk of nodes on deploy at same time, so we know all deployed nodes and could effectively control the process.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":107,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"It\u0027s possible to avoid tracker requirement by using BitTorrent extensions"},{"line_number":110,"context_line":"like LPD_ and PEX_ (but it\u0027s not covered by this spec)."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"The final workflow for operators looks like:"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_ee401959","line":110,"in_reply_to":"ba5da102_cee7fc44","updated":"2016-11-08 09:12:16.000000000","message":"I think the biggest reason for it is the short lifespan of the deploying IPA.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f7b9f8c02d049a84fe1ce5a6aaaa24f1b80b7778","unresolved":false,"context_lines":[{"line_number":116,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":117,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Alternatives"},{"line_number":120,"context_line":"------------"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* Introduce seeding functionality in Ironic Conductor. It would be a little"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_b9cae99f","line":119,"range":{"start_line":119,"start_character":0,"end_line":119,"end_character":12},"updated":"2016-11-08 09:12:16.000000000","message":"I\u0027m wondering about the long-lived IPA playing the content source role instead of the deploying IPA; this would enhance the seeders/leech ratio and might allow for putting the trackers role on the IPA (or for tracker-less operation). It would require avoiding the Power-off after cleaning step (on a (randomly) selected node subset) so it might serve the \"hottest\" image bits. This would be limited by the amount of space in RAM to avoid having to keep the image bits on the drive which was cleaned.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"89a8d9ed0eb34c2c161447f724517bccbab821e8","unresolved":false,"context_lines":[{"line_number":116,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":117,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Alternatives"},{"line_number":120,"context_line":"------------"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* Introduce seeding functionality in Ironic Conductor. It would be a little"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_73d5c541","line":119,"range":{"start_line":119,"start_character":0,"end_line":119,"end_character":12},"in_reply_to":"9a629dbe_b9cae99f","updated":"2016-11-08 12:23:46.000000000","message":"In ideal world, I see image storage to serve it with torrent protocol. And all consumers just get it.\n\nAs for long-lived IPA , yeah, there are a lot problem here. We can serve images on conductor side too, it would be even much easily than have special long-lived IPA, but again we will move all the work of storing and serving images from image store on IPA or conductor. As result you will have a copy, or partial copy of your storage you need to support, with outgoing problems.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"57e592a80f70f9b72d4d012b2559b7a896d3b138","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* Introduce seeding functionality in Ironic Conductor. It would be a little"},{"line_number":123,"context_line":"  bit faster download at the beginning (only when image already cached,"},{"line_number":124,"context_line":"  all conductors will seed image immediately, and no needs for clients"},{"line_number":125,"context_line":"  to download it via HTTP). But the advantage is insignificant, because"},{"line_number":126,"context_line":"  all load would be moved to conductor from storage, and at some point it"},{"line_number":127,"context_line":"  could become a performance problem. The disadvantage of this approach"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_ce2a9c2f","line":124,"updated":"2016-11-04 13:47:48.000000000","message":"I\u0027d reword as \"Downloading would be a little faster at the beginning, if the image is already cached: in this case all conductors will seed the image immediately and clients will not need to download it via HTTP\".","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":10910,"name":"Stig Telfer","email":"stig.openstack@telfer.org","username":"stigtelfer"},"change_message_id":"f8f47f9e1f5fa7c73fc9fe79bd3eb461040f5bb5","unresolved":false,"context_lines":[{"line_number":135,"context_line":"* Using magnet links. But we still need to get image metadata somewhere, and"},{"line_number":136,"context_line":"  at start of deploying, we don\u0027t have seeds at all, as we are using web seed,"},{"line_number":137,"context_line":"  so there is no benefit of it."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Data model impact"},{"line_number":141,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_d30323bd","line":138,"updated":"2016-11-04 12:15:37.000000000","message":"I\u0027d be interested to hear about alternatives to introducing a dependency on Glare.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"a742c5e39928fa7b5d1137ae4e4b798dc1291a97","unresolved":false,"context_lines":[{"line_number":135,"context_line":"* Using magnet links. But we still need to get image metadata somewhere, and"},{"line_number":136,"context_line":"  at start of deploying, we don\u0027t have seeds at all, as we are using web seed,"},{"line_number":137,"context_line":"  so there is no benefit of it."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Data model impact"},{"line_number":141,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_d39323ff","line":138,"in_reply_to":"ba5da102_d30323bd","updated":"2016-11-04 13:06:07.000000000","message":"Store torrent file in glance as \"image\"?","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":10910,"name":"Stig Telfer","email":"stig.openstack@telfer.org","username":"stigtelfer"},"change_message_id":"f8f47f9e1f5fa7c73fc9fe79bd3eb461040f5bb5","unresolved":false,"context_lines":[{"line_number":136,"context_line":"  at start of deploying, we don\u0027t have seeds at all, as we are using web seed,"},{"line_number":137,"context_line":"  so there is no benefit of it."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Data model impact"},{"line_number":141,"context_line":"-----------------"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_73f5f7c9","line":139,"updated":"2016-11-04 12:15:37.000000000","message":"It would be useful to have a discussion here on options for tracker-less torrent deployments.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"a742c5e39928fa7b5d1137ae4e4b798dc1291a97","unresolved":false,"context_lines":[{"line_number":136,"context_line":"  at start of deploying, we don\u0027t have seeds at all, as we are using web seed,"},{"line_number":137,"context_line":"  so there is no benefit of it."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Data model impact"},{"line_number":141,"context_line":"-----------------"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_33a37f51","line":139,"in_reply_to":"ba5da102_73f5f7c9","updated":"2016-11-04 13:06:07.000000000","message":"I\u0027ll update","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"57e592a80f70f9b72d4d012b2559b7a896d3b138","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"The user has to specify which images require torrent provisioning. It"},{"line_number":204,"context_line":"could be done by providing an additional image property:"},{"line_number":205,"context_line":"``torrent_file\u003d\u003cglare id\u003e``, this flag will indicate that torrent"},{"line_number":206,"context_line":"provisioning should be used for this image. If ``torrent_file``"},{"line_number":207,"context_line":"is not provided, default provisioning will be used."},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_84f16398","line":205,"updated":"2016-11-04 13:47:48.000000000","message":"This might be a reasonable place to use magnet links: the magnet link could include a temporary Glare URL via an `as` parameter, or it could point to any other HTTP store. If we care about torrent-provider agnosticism, which perhaps we shouldn\u0027t.","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"89a8d9ed0eb34c2c161447f724517bccbab821e8","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"The user has to specify which images require torrent provisioning. It"},{"line_number":204,"context_line":"could be done by providing an additional image property:"},{"line_number":205,"context_line":"``torrent_file\u003d\u003cglare id\u003e``, this flag will indicate that torrent"},{"line_number":206,"context_line":"provisioning should be used for this image. If ``torrent_file``"},{"line_number":207,"context_line":"is not provided, default provisioning will be used."},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_143f1cb5","line":205,"in_reply_to":"ba5da102_84f16398","updated":"2016-11-08 12:23:46.000000000","message":"In proposed case, you need just provide glare id or link, in case of magnet link, you also need to generate it proper, and I don\u0027t see real benefit, ironic could generate it if needed","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"57e592a80f70f9b72d4d012b2559b7a896d3b138","unresolved":false,"context_lines":[{"line_number":210,"context_line":"------------------"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Using BitTorrent for image data distribution should reduce load on the"},{"line_number":213,"context_line":"OpenStack control plane, storage and networking. Deploying instances will"},{"line_number":214,"context_line":"take on additional load during deployment."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Using BitTorrent image distribution for concurrent provisioning allows to"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_844883ce","line":213,"updated":"2016-11-04 13:47:48.000000000","message":"Does it reduce load on the network, or just spread it out better?","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"89a8d9ed0eb34c2c161447f724517bccbab821e8","unresolved":false,"context_lines":[{"line_number":210,"context_line":"------------------"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Using BitTorrent for image data distribution should reduce load on the"},{"line_number":213,"context_line":"OpenStack control plane, storage and networking. Deploying instances will"},{"line_number":214,"context_line":"take on additional load during deployment."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Using BitTorrent image distribution for concurrent provisioning allows to"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a629dbe_b4caf09f","line":213,"in_reply_to":"ba5da102_844883ce","updated":"2016-11-08 12:23:46.000000000","message":"For sure you will have more load on deployed nodes, it says about control plane","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"57e592a80f70f9b72d4d012b2559b7a896d3b138","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"* Torrent tracker should be deployed for keeping information about peers."},{"line_number":240,"context_line":"  (There is no special requirements to torrent tracker, it would be used"},{"line_number":241,"context_line":"  only for peers announce. It could be installed on conductor node)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"* Glare service to store torrent files;"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_a41ca7c2","line":241,"updated":"2016-11-04 13:47:48.000000000","message":"Nits: \"requirements for the torrent tracker\", \"for peer announcement\"","commit_id":"2579e5eb77aa451a82e88fbdc8aace6af923e540"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Ironic allows the deployment of images by downloading them from"},{"line_number":22,"context_line":"the centralized image store. This approach becomes a scalability"},{"line_number":23,"context_line":"bottleneck when provisioning large numbers of instances simultaneously"},{"line_number":24,"context_line":"(actually pseudo-simultaneously, in the current architecture Ironic handles"},{"line_number":25,"context_line":"asynchronous provision requests one by one)."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_fae6cab2","line":23,"updated":"2016-12-14 17:50:23.000000000","message":"Could we add the use cases for this feature to the problem description? I see two major use cases:\n\n1. Provisioning of clusters for HPC/research computing, which may span some or all of the available bare metal resources.\n2. Provisioning of an \u0027undercloud\u0027 as part of an OpenStack deployment. TripleO uses Nova and Ironic to provision the undercloud and Kolla can use Bifrost and Ironic to bootstrap nodes.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":25,"context_line":"asynchronous provision requests one by one)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As a result, Ironic\u0027s current methods for deployment do not scale well"},{"line_number":28,"context_line":"to support large-scale concurrent provisioning. Substantial control plane"},{"line_number":29,"context_line":"infrastructure is required to support concurrent provisioning at scale -"},{"line_number":30,"context_line":"and the requirement grows linearly with the size of the deployment."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_7a6e3a02","line":28,"updated":"2016-12-14 17:50:23.000000000","message":"Do we have any evidence to back this up? It would add weight to the proposal.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"515e3ab87f718c2b6f8658a9c2cff104788f1800","unresolved":false,"context_lines":[{"line_number":46,"context_line":"The proposed design illustrated as a sequence diagram::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":" Ironic           Ironic        Glance    Glare     Ironic     Torrent  Ironic"},{"line_number":49,"context_line":"  API           Conductor    (image     (artifact    node1     Tracker   node2"},{"line_number":50,"context_line":"   |                |          storage)     store)    |          |           |"},{"line_number":51,"context_line":"   |---do_deploy---\u003e|              |        |         |          |           |"},{"line_number":52,"context_line":"   |                |     ...      |        |         |          |           |"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_329fb9b5","line":49,"range":{"start_line":49,"start_character":53,"end_line":49,"end_character":78},"updated":"2016-11-08 16:39:00.000000000","message":"the node1 and node2 sharing a 100% time life-span is quite unlikely IMO, should be better displayed as::\n\n  [glare]       [node1 IPA]     [node2 IPA]\n    |\u003e+             |\n    | |   chunks    |\n    | |------------\u003e|       \n    | |             |\u003e+  chunks     |\n    |\u003c+             | |------------\u003e|\n    |               |\u003c+             |\n    |\u003e+                             |\n    | |        chunks               |\n    | |----------------------------\u003e|\n    |\u003c+                             |\n    |\n    |\n\nI also think it is worth mentioning the diagram shows a situation when both node1 and node2 share the same image.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"8838802796c9326b04470c3b06f6858254062005","unresolved":false,"context_lines":[{"line_number":46,"context_line":"The proposed design illustrated as a sequence diagram::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":" Ironic           Ironic        Glance    Glare     Ironic     Torrent  Ironic"},{"line_number":49,"context_line":"  API           Conductor    (image     (artifact    node1     Tracker   node2"},{"line_number":50,"context_line":"   |                |          storage)     store)    |          |           |"},{"line_number":51,"context_line":"   |---do_deploy---\u003e|              |        |         |          |           |"},{"line_number":52,"context_line":"   |                |     ...      |        |         |          |           |"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_53ceb72e","line":49,"range":{"start_line":49,"start_character":53,"end_line":49,"end_character":78},"in_reply_to":"9a629dbe_329fb9b5","updated":"2016-11-09 19:49:37.000000000","message":"Yes, it\u0027s hard to say from what source client will start to download pieces (except first client). And we should remember there will be more nodes that possible to share other pieces as well. It\u0027s hard to show all this due limiting -  line wrapping, but I\u0027ll try","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"0ae9a222051caeb30d5d87cb00a686895bb18c8d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"The proposed design illustrated as a sequence diagram::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":" Ironic           Ironic        Glance    Glare     Ironic     Torrent  Ironic"},{"line_number":49,"context_line":"  API           Conductor    (image     (artifact    node1     Tracker   node2"},{"line_number":50,"context_line":"   |                |          storage)     store)    |          |           |"},{"line_number":51,"context_line":"   |---do_deploy---\u003e|              |        |         |          |           |"},{"line_number":52,"context_line":"   |                |     ...      |        |         |          |           |"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_fdce9b2b","line":49,"range":{"start_line":49,"start_character":53,"end_line":49,"end_character":78},"in_reply_to":"9a629dbe_53ceb72e","updated":"2016-11-10 11:26:55.000000000","message":"Yeah, maybe split it into two diagrams, initial node and the n-th node generic situation, thanks for considering.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":46,"context_line":"The proposed design illustrated as a sequence diagram::"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":" Ironic           Ironic        Glance    Glare     Ironic     Torrent  Ironic"},{"line_number":49,"context_line":"  API           Conductor    (image     (artifact    node1     Tracker   node2"},{"line_number":50,"context_line":"   |                |          storage)     store)    |          |           |"},{"line_number":51,"context_line":"   |---do_deploy---\u003e|              |        |         |          |           |"},{"line_number":52,"context_line":"   |                |     ...      |        |         |          |           |"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_3d13dcb9","line":49,"in_reply_to":"9a629dbe_fdce9b2b","updated":"2016-12-14 17:50:23.000000000","message":"Alternatively, it could be split into two diagrams showing the setup and downloading phases.\n\nDiagram 1 would show the first part of this diagram, the control flow involving Ironic, Glance, Glare and the continue deploy step. Diagram 2 would show the image download and sharing steps for a few nodes.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"515e3ab87f718c2b6f8658a9c2cff104788f1800","unresolved":false,"context_lines":[{"line_number":64,"context_line":"   |                |--------------------------------\u003e|          |           |"},{"line_number":65,"context_line":"   |                |-------------------------------------------------------\u003e|"},{"line_number":66,"context_line":"   |                |              |        |         |    client announce   |"},{"line_number":67,"context_line":"   |                |              |        |         |---------\u003e|\u003c----------|"},{"line_number":68,"context_line":"   |                |              |        |         |          |           |"},{"line_number":69,"context_line":"   |                |              |\u003c-download image--|          |           |"},{"line_number":70,"context_line":"   |                |              |\u003c--------------download image------------|"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_779da358","line":67,"range":{"start_line":67,"start_character":54,"end_line":67,"end_character":77},"updated":"2016-11-08 16:39:00.000000000","message":"these arrows should be both-ways (\u003c---\u003e)","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"8838802796c9326b04470c3b06f6858254062005","unresolved":false,"context_lines":[{"line_number":64,"context_line":"   |                |--------------------------------\u003e|          |           |"},{"line_number":65,"context_line":"   |                |-------------------------------------------------------\u003e|"},{"line_number":66,"context_line":"   |                |              |        |         |    client announce   |"},{"line_number":67,"context_line":"   |                |              |        |         |---------\u003e|\u003c----------|"},{"line_number":68,"context_line":"   |                |              |        |         |          |           |"},{"line_number":69,"context_line":"   |                |              |\u003c-download image--|          |           |"},{"line_number":70,"context_line":"   |                |              |\u003c--------------download image------------|"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_d3dac7e7","line":67,"range":{"start_line":67,"start_character":54,"end_line":67,"end_character":77},"in_reply_to":"9a629dbe_779da358","updated":"2016-11-09 19:49:37.000000000","message":"Yes","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":74,"context_line":"Conductor load. This simplifies the role of the  conductor, avoiding"},{"line_number":75,"context_line":"the need to seed the images.  The images can be seeded directly from"},{"line_number":76,"context_line":"object storage via HTTP.  The HTTP server must support the HTTP/1.1"},{"line_number":77,"context_line":"Accept-Ranges extension in order to perform this role."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2_,"},{"line_number":80,"context_line":"it is a lightweight multi-protocol utility, which supports BitTorrent"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_5d67b824","line":77,"updated":"2016-12-14 17:50:23.000000000","message":"Worth pointing out that Swift supports this?\n\nhttp://developer.openstack.org/api-ref/object-storage/?expanded\u003dget-object-content-and-metadata-detail\n\nI have tested this in a Newton DevStack environment, downloading Swift objects with the aria2c client.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":76,"context_line":"object storage via HTTP.  The HTTP server must support the HTTP/1.1"},{"line_number":77,"context_line":"Accept-Ranges extension in order to perform this role."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2_,"},{"line_number":80,"context_line":"it is a lightweight multi-protocol utility, which supports BitTorrent"},{"line_number":81,"context_line":"and Metalink)."},{"line_number":82,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent, qbittorent-nox_)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_b3555d51","line":79,"updated":"2016-12-14 17:50:23.000000000","message":"How about introducing the various new pieces that are required, then covering each in more detail?\n\nAFAICT, the pieces required are:\n- A Bittorrent client to download and share images\n- A mechanism for discovering torrents (tracker, DHT, LPD and/or PeX)\n- A mechanism for generating, storing and managing torrent files","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"74d5acc22f4f976c3a72ffc367eefc9916c40e24","unresolved":false,"context_lines":[{"line_number":76,"context_line":"object storage via HTTP.  The HTTP server must support the HTTP/1.1"},{"line_number":77,"context_line":"Accept-Ranges extension in order to perform this role."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2_,"},{"line_number":80,"context_line":"it is a lightweight multi-protocol utility, which supports BitTorrent"},{"line_number":81,"context_line":"and Metalink)."},{"line_number":82,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent, qbittorent-nox_)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_a93ec925","line":79,"in_reply_to":"1a6eadb0_b3555d51","updated":"2016-12-14 20:33:34.000000000","message":"I\u0027ll try to structure this pieces","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":79,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2_,"},{"line_number":80,"context_line":"it is a lightweight multi-protocol utility, which supports BitTorrent"},{"line_number":81,"context_line":"and Metalink)."},{"line_number":82,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent, qbittorent-nox_)."},{"line_number":83,"context_line":"Every BitTorrent client, the node being deployed, will announce to the"},{"line_number":84,"context_line":"tracker a number times during the course of a download to update its peers"},{"line_number":85,"context_line":"information."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_0917c2ed","line":82,"updated":"2016-12-14 17:50:23.000000000","message":"I couldn\u0027t get qbittorrent-nox to run a tracker. It worked with qbittorrent but this requires a GUI.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"74d5acc22f4f976c3a72ffc367eefc9916c40e24","unresolved":false,"context_lines":[{"line_number":79,"context_line":"A BitTorrent client should be installed on the agent ramdisk (e.g Aria2_,"},{"line_number":80,"context_line":"it is a lightweight multi-protocol utility, which supports BitTorrent"},{"line_number":81,"context_line":"and Metalink)."},{"line_number":82,"context_line":"Also, a torrent tracker is required (e.g. qbittorrent, qbittorent-nox_)."},{"line_number":83,"context_line":"Every BitTorrent client, the node being deployed, will announce to the"},{"line_number":84,"context_line":"tracker a number times during the course of a download to update its peers"},{"line_number":85,"context_line":"information."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_097b3df6","line":82,"in_reply_to":"1a6eadb0_0917c2ed","updated":"2016-12-14 20:33:34.000000000","message":"You could try this https://review.openstack.org/#/c/409711/","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":90,"context_line":"transmission_, and mktorrent_."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"For storing torrent files it\u0027s proposed to use Artifact"},{"line_number":93,"context_line":"Repository (Glare_). Operators will create torrent file using standard"},{"line_number":94,"context_line":"tools and upload it to Glare_ and provide link to it via image property"},{"line_number":95,"context_line":"``torrent_file\u003d\u003cglare id\u003e\u0027`` (in case standalone mode we be able to"},{"line_number":96,"context_line":"support url here). Ironic Conductor will fetch image properties and"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_9decf090","line":93,"updated":"2016-12-14 17:50:23.000000000","message":"How common is Glare in real world deployments? Would it be possible to use Glance instead?","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"74d5acc22f4f976c3a72ffc367eefc9916c40e24","unresolved":false,"context_lines":[{"line_number":90,"context_line":"transmission_, and mktorrent_."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"For storing torrent files it\u0027s proposed to use Artifact"},{"line_number":93,"context_line":"Repository (Glare_). Operators will create torrent file using standard"},{"line_number":94,"context_line":"tools and upload it to Glare_ and provide link to it via image property"},{"line_number":95,"context_line":"``torrent_file\u003d\u003cglare id\u003e\u0027`` (in case standalone mode we be able to"},{"line_number":96,"context_line":"support url here). Ironic Conductor will fetch image properties and"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_299c790e","line":93,"in_reply_to":"1a6eadb0_9decf090","updated":"2016-12-14 20:33:34.000000000","message":"Glare is pretty new project, so I don\u0027t think so. The problem with Glance that it\u0027s designed only for images, but yeah you could create torrent file as raw image for example (see link above)","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":92,"context_line":"For storing torrent files it\u0027s proposed to use Artifact"},{"line_number":93,"context_line":"Repository (Glare_). Operators will create torrent file using standard"},{"line_number":94,"context_line":"tools and upload it to Glare_ and provide link to it via image property"},{"line_number":95,"context_line":"``torrent_file\u003d\u003cglare id\u003e\u0027`` (in case standalone mode we be able to"},{"line_number":96,"context_line":"support url here). Ironic Conductor will fetch image properties and"},{"line_number":97,"context_line":"download torrent file."},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_eeba8c22","line":95,"updated":"2016-12-14 17:50:23.000000000","message":"It seems a little clunky that the operator needs to generate the torrent file. We should be able to do this on the fly. Are there tunables in the torrent file that an operator might want to configure? There is the piece size, but we should be able to choose something sensible here.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"74d5acc22f4f976c3a72ffc367eefc9916c40e24","unresolved":false,"context_lines":[{"line_number":92,"context_line":"For storing torrent files it\u0027s proposed to use Artifact"},{"line_number":93,"context_line":"Repository (Glare_). Operators will create torrent file using standard"},{"line_number":94,"context_line":"tools and upload it to Glare_ and provide link to it via image property"},{"line_number":95,"context_line":"``torrent_file\u003d\u003cglare id\u003e\u0027`` (in case standalone mode we be able to"},{"line_number":96,"context_line":"support url here). Ironic Conductor will fetch image properties and"},{"line_number":97,"context_line":"download torrent file."},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_2cf007fe","line":95,"in_reply_to":"1a6eadb0_eeba8c22","updated":"2016-12-14 20:33:34.000000000","message":"For generating torrent file on fly we need to get the image first, and it will take some time, and increase deploy time. Also the new problems appear, where to store torrent file, as we need to cache it, manage it\u0027s life cycle.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":97,"context_line":"download torrent file."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Based on the torrent file, the Ironic Conductor generates webseed_"},{"line_number":100,"context_line":"torrent metadata.  When the node boots, it will use this metadata"},{"line_number":101,"context_line":"to retrieve the torrent file for the BitTorrent client, which"},{"line_number":102,"context_line":"announces peer information [1]_ to the tracker. The node requires an"},{"line_number":103,"context_line":"endpoint URL for the tracker. This information will be provided via a new"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_aec5f48e","line":100,"updated":"2016-12-14 17:50:23.000000000","message":"What do we mean by webseed torrent metadata here? The webseed should be part of the torrent file.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"74d5acc22f4f976c3a72ffc367eefc9916c40e24","unresolved":false,"context_lines":[{"line_number":97,"context_line":"download torrent file."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Based on the torrent file, the Ironic Conductor generates webseed_"},{"line_number":100,"context_line":"torrent metadata.  When the node boots, it will use this metadata"},{"line_number":101,"context_line":"to retrieve the torrent file for the BitTorrent client, which"},{"line_number":102,"context_line":"announces peer information [1]_ to the tracker. The node requires an"},{"line_number":103,"context_line":"endpoint URL for the tracker. This information will be provided via a new"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_8cc67b98","line":100,"in_reply_to":"1a6eadb0_aec5f48e","updated":"2016-12-14 20:33:34.000000000","message":"I\u0027ll elaborate on this, we need to add trackers info from configuration to torrent file.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":101,"context_line":"to retrieve the torrent file for the BitTorrent client, which"},{"line_number":102,"context_line":"announces peer information [1]_ to the tracker. The node requires an"},{"line_number":103,"context_line":"endpoint URL for the tracker. This information will be provided via a new"},{"line_number":104,"context_line":"configuration option ``torrent_trackers``. This option contains multiple"},{"line_number":105,"context_line":"trackers. This provides redundancy in the case that one tracker fails,"},{"line_number":106,"context_line":"the other trackers can continue to maintain the swarm for the torrent::"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_4ebe20d5","line":104,"updated":"2016-12-14 17:50:23.000000000","message":"This information would be baked into the torrent file if generated by the operator. However I do agree that a better approach would be to use a config option for the trackers and to generate the torrent file from it in the conductor.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":114,"context_line":"To use torrent provisioning as the default provisioning mechanism, the Glance"},{"line_number":115,"context_line":"image property ``torrent_file`` should be specified, and Ironic configuration"},{"line_number":116,"context_line":"option ``[deploy]enable_use_torrent_provisioning`` should be enabled."},{"line_number":117,"context_line":"If ``[deploy]enable_use_torrent_provisioning`` set to ``False``,"},{"line_number":118,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_ae7df41d","line":117,"updated":"2016-12-14 17:50:23.000000000","message":"s/enable_use/enable/","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"515e3ab87f718c2b6f8658a9c2cff104788f1800","unresolved":false,"context_lines":[{"line_number":120,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":121,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":122,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":123,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":124,"context_line":"difference between image downloading time and API request delay is"},{"line_number":125,"context_line":"insignificant."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_b7781b2d","line":123,"range":{"start_line":123,"start_character":21,"end_line":123,"end_character":66},"updated":"2016-11-08 16:39:00.000000000","message":"I\u0027m afraid I have to disagree; since the IPA(peer) lifespan is so short the benefit of the nodes sharing the load are very low. Especially considering that the images being deployed by the tenants will vary. So the complexity overhead might not be justified by the benefits.\n\nAlso there might be various timeouts involved while the torrent client re-configures the stream source if the chunk source disappears. Ultimately almost all the chunks will be pulled from Glare by almost all the nodes.\n\nAlternatively the IPA could auto-share itself for itself via the BitTorrent to reduce resources utilization and leave the bandwidth for the tenant images download from Glance. IPA is going to be the \"hottest\" image by far.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"74d5acc22f4f976c3a72ffc367eefc9916c40e24","unresolved":false,"context_lines":[{"line_number":120,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":121,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":122,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":123,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":124,"context_line":"difference between image downloading time and API request delay is"},{"line_number":125,"context_line":"insignificant."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_ac25f709","line":123,"in_reply_to":"1a6eadb0_ee30cc03","updated":"2016-12-14 20:33:34.000000000","message":"Yeah it\u0027s hard to say the best value here, as mentioned it\u0027s depends on a lot of args.\n\nI don\u0027t think --seed-ratio ~1.0 will work due the webseed is used.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"8838802796c9326b04470c3b06f6858254062005","unresolved":false,"context_lines":[{"line_number":120,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":121,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":122,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":123,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":124,"context_line":"difference between image downloading time and API request delay is"},{"line_number":125,"context_line":"insignificant."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_c994d844","line":123,"in_reply_to":"9a629dbe_1b89c026","updated":"2016-11-09 19:49:37.000000000","message":"So, yeah, my bad, I didn\u0027t show some results here. We have plans to add blog post about torrent provisioning, and I thought I can pointing on it from spec (I hope I\u0027ll do this soon).\n\n I can say that using torrent-based image provisioning increase speed of image seeding in about 3 times, and deployment time (excluding bootstrap boot) was also about 50% shorter, it allows to offload storage cluster and fully utilize network bandwidth (which seems not bad for start).\n\nThe ratio depends on not only image peaces count, but also on count of deployed nodes, also using webseed brings some complexity. So it would be hard to do, I guess we will need our own torrent client realization to turn all this stuff.\nAs i said before, imo it would be an option only with group deploy, and not with multiple single requests","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":120,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":121,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":122,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":123,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":124,"context_line":"difference between image downloading time and API request delay is"},{"line_number":125,"context_line":"insignificant."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_ee30cc03","line":123,"in_reply_to":"9a629dbe_2c53866c","updated":"2016-12-14 17:50:23.000000000","message":"I think that unless you tell it not to, the bittorrent client should download the pieces in a random order, so we should not need to do any random sleeps before deployment.\n\nThe aria2c client has two options of interest here. --seed-time allows you to specify an amount of time to seed for after the download is complete. --seed-ratio allows you to specify a seed ratio at which to stop seeding. If both are specified, then if either case is hit seeding will finish. We could use a seed ratio of ~1.0 and a reasonable seed time to trade off responsiveness vs. overall efficiency (30 seconds?). A third mechanism to stop seeding would be to check the tracker or DHT to see if any other peers are downloading.\n\nOf course, I agree that this all needs to be backed up experimentally.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"845caab0e3373958b581a6244461f8a37cf19ef8","unresolved":false,"context_lines":[{"line_number":120,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":121,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":122,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":123,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":124,"context_line":"difference between image downloading time and API request delay is"},{"line_number":125,"context_line":"insignificant."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_e520189e","line":123,"range":{"start_line":123,"start_character":21,"end_line":123,"end_character":66},"in_reply_to":"9a629dbe_3a422b3f","updated":"2016-11-08 19:40:35.000000000","message":"I didn\u0027t quite see the usecase from the beginning.\nI agree that BitTorrent will reduce the content downloads in case a tenant deploys a big application stack at once.\n\nPlease, ignore my previous comment, the overhead pays of here.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"65a560659d86f752dcfbb7609645c168f7376328","unresolved":false,"context_lines":[{"line_number":120,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":121,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":122,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":123,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":124,"context_line":"difference between image downloading time and API request delay is"},{"line_number":125,"context_line":"insignificant."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_1b89c026","line":123,"in_reply_to":"9a629dbe_87b74085","updated":"2016-11-09 15:34:09.000000000","message":"Interesting video indeed :)\n\n+1 on the ratio, just unsure how to compute it. Should it be proportional to the image size? Will the tenants accept the delay? Should it be flavor-related, image-related, tenant related? Should there be a random deployment-start delay to make the torrent activity--time graph more \"smooth\"?","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":10910,"name":"Stig Telfer","email":"stig.openstack@telfer.org","username":"stigtelfer"},"change_message_id":"7dc94bd4052774a50992cedff3ffec015305aba8","unresolved":false,"context_lines":[{"line_number":120,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":121,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":122,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":123,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":124,"context_line":"difference between image downloading time and API request delay is"},{"line_number":125,"context_line":"insignificant."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_3a422b3f","line":123,"range":{"start_line":123,"start_character":21,"end_line":123,"end_character":66},"in_reply_to":"9a629dbe_b7781b2d","updated":"2016-11-08 18:15:34.000000000","message":"Can you back this up?  I find deployment wiith any concurrency slows down quite a bit...","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"0ae9a222051caeb30d5d87cb00a686895bb18c8d","unresolved":false,"context_lines":[{"line_number":120,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":121,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":122,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":123,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":124,"context_line":"difference between image downloading time and API request delay is"},{"line_number":125,"context_line":"insignificant."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_2c53866c","line":123,"in_reply_to":"9a629dbe_c994d844","updated":"2016-11-10 11:26:55.000000000","message":"+1 for experimental data esp if it shows the impact of BitTorrent for small-group/single deploys vs big-group deploys.\n\nI also expect a small random sleep before the deploy helps to distribute the load to the nodes as some starting chunks would already have been fetched by a couple of \"insomniac\" nodes. But I may be wrong :)","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"30649598e47543b50ec108c2fa0a01244cc5b957","unresolved":false,"context_lines":[{"line_number":120,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":121,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":122,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":123,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":124,"context_line":"difference between image downloading time and API request delay is"},{"line_number":125,"context_line":"insignificant."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_87b74085","line":123,"in_reply_to":"9a629dbe_e520189e","updated":"2016-11-09 12:31:46.000000000","message":"Yeah, I think the core use-case here is HPC workloads, which deploy identical images to dozens or hundreds of nodes at once. People do serious HPC with OpenStack! https://youtu.be/eDcDe485DGk?t\u003d12m58s\n\nAnother possibility: can we keep IPA up and seeding the image until one of the two following conditions is true?\n\n - a certain sharing ratio has been reached\n - the number of peers has dropped to zero and a timeout is reached\n\nI know a lot of BitTorrent clients support \"keep seeding until you\u0027ve reached a user-configurable sharing ratio\". That wouldn\u0027t work on its own in our case, because the last few nodes to be deployed wouldn\u0027t ever finish; hence the timeout alternative.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"afab1cf5b6d2f54f9c302b756095dc5255f2c57a","unresolved":false,"context_lines":[{"line_number":131,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":132,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Alternatives"},{"line_number":135,"context_line":"------------"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* Introduce seeding functionality in Ironic Conductor. Downloading would"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_ed19e47a","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":12},"updated":"2016-11-08 16:46:41.000000000","message":"Another alternative that comes to mind is a content proxy.\nConsidering the environment it might be a better fit.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"8838802796c9326b04470c3b06f6858254062005","unresolved":false,"context_lines":[{"line_number":131,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":132,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Alternatives"},{"line_number":135,"context_line":"------------"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* Introduce seeding functionality in Ironic Conductor. Downloading would"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_89b9007c","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":12},"in_reply_to":"9a629dbe_05afcc94","updated":"2016-11-09 19:49:37.000000000","message":"Yeah, I can add this link as example. As for deploying a big count of nodes at once (with same image) - I guess we have this in Problem description, this is the main point in spec. \n\nDo you want to use torrent if you deploy few nodes at time, you can, but why?\nMaybe we should elaborate on this more, I thought it was  obvious?","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"0ae9a222051caeb30d5d87cb00a686895bb18c8d","unresolved":false,"context_lines":[{"line_number":131,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":132,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Alternatives"},{"line_number":135,"context_line":"------------"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* Introduce seeding functionality in Ironic Conductor. Downloading would"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_b84b5186","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":12},"in_reply_to":"9a629dbe_89b9007c","updated":"2016-11-10 11:26:55.000000000","message":"Anton, it wasn\u0027t obvious for me from the problem description. I\u0027m afraid I didn\u0027t pay enough attention reading it.\n\nAnyways, I think the problem statement might benefit from describing the usecase in more detail:\n\n* BM tenants tend to deploy large amounts of nodes at once (e.g Hadoop but maybe there are more usecases?)\n* if a tenant deploys many nodes at once the load on the network is bad (why?)\n* there is a just a single or a couple of images being deployed in this case (why?)\n\nThen quoting that paper and your experiments would be great in the proposed solution as it shows how BitTorrent helps the situation.\n\nI\u0027m not sure we can/should programatically distinguish between the few nodes at a time and many nodes at a time cases, we\u0027d have to introduce arbitrary thresholds to be able to tell one from the other. So it\u0027s going to have to be either for all or none, up to the deployer to decide.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"845caab0e3373958b581a6244461f8a37cf19ef8","unresolved":false,"context_lines":[{"line_number":131,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":132,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Alternatives"},{"line_number":135,"context_line":"------------"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* Introduce seeding functionality in Ironic Conductor. Downloading would"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_05afcc94","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":12},"in_reply_to":"9a629dbe_da292f8b","updated":"2016-11-08 19:40:35.000000000","message":"Thanks for the paper link, it should be mentioned in the spec. Rocks Avalanche installer differs from Ironic environment a bit, it assumes following preconditions:\n\n* it operates during an installation phase --- many nodes at *exactly* the same time\n* it always deploys the same content (RHEL rpms of a single OS version) in an installation phase\n\nAs you say, BitTorrent may still be beneficial in cases where a tenant deploys a big application stack at once e.g Hadoop@RHEL6.2 on 200 nodes. I didn\u0027t realize that before, sorry.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":10910,"name":"Stig Telfer","email":"stig.openstack@telfer.org","username":"stigtelfer"},"change_message_id":"7dc94bd4052774a50992cedff3ffec015305aba8","unresolved":false,"context_lines":[{"line_number":131,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":132,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Alternatives"},{"line_number":135,"context_line":"------------"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* Introduce seeding functionality in Ironic Conductor. Downloading would"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_da292f8b","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":12},"in_reply_to":"9a629dbe_ed19e47a","updated":"2016-11-08 18:15:34.000000000","message":"The attraction of BitTorrent in this use case is that it places less load on the control plane through the creation of an ad-hoc deployment data delivery network.  Concurrent deployment of large numbers of nodes with the same image (our use case) benefits from this.  You can\u0027t (or don\u0027t want to) size a fan-out style of deployment to the largest scenario.\n\nSee http://www.rocksclusters.org/rocks-doc/papers/two-pager/paper.pdf","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Alternatives"},{"line_number":135,"context_line":"------------"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* Introduce seeding functionality in Ironic Conductor. Downloading would"},{"line_number":138,"context_line":"  be a little faster at the beginning, if the image is already cached: in"},{"line_number":139,"context_line":"  this case all conductors will seed the image immediately and clients"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_3375cd97","line":136,"updated":"2016-12-14 17:50:23.000000000","message":"Could we add something about the Bittorrent Distributed Hash Table (DHT) extension here? From what I understand, the torrent file must include a set of fixed nodes, which makes it less attractive in a dynamic environment where there are no permanent nodes. However, it could be possible to run DHT bootstrap node(s), perhaps on the conductors.\n\nFor example, the one used by router.bittorrent.com: https://github.com/bittorrent/bootstrap-dht.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"74d5acc22f4f976c3a72ffc367eefc9916c40e24","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Alternatives"},{"line_number":135,"context_line":"------------"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* Introduce seeding functionality in Ironic Conductor. Downloading would"},{"line_number":138,"context_line":"  be a little faster at the beginning, if the image is already cached: in"},{"line_number":139,"context_line":"  this case all conductors will seed the image immediately and clients"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_f746d84d","line":136,"in_reply_to":"1a6eadb0_3375cd97","updated":"2016-12-14 20:33:34.000000000","message":"Not sure what fixed nodes you mean here. How it would be better simple tracker? All we need in torrent file is pieces and their hashes.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":161,"context_line":"  doesn\u0027t support bulk deploy, deployed nodes (peers) have short lifespan."},{"line_number":162,"context_line":"  So peers have to discovering new nodes at a given time, and other peer may"},{"line_number":163,"context_line":"  not provide the list, or provide only a partial list of peers, which changes"},{"line_number":164,"context_line":"  during provisioning, as result we have notable overhead on peers discovering."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Data model impact"},{"line_number":167,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_b078f3c5","line":164,"updated":"2016-12-14 17:50:23.000000000","message":"I used LPD with some success in my test environment. I doubt it would add significant performance overhead as each node sends a multicast announcement once roughly every five minutes. I did find it to be a bit racy however - if two nodes start torrenting at the same time it seems to be possible that they will both send out multicast announcements before being able to process the other\u0027s, so discovery fails and they fall back to downloading the web seed. This is perhaps less likely to happen in this scenario but is still possible.\n\nI did not try PeX but looking into it it appears to be intended to run alongside either a tracker or DHT.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"8876f54c704ba4813c7839ca0a79d387ec6624ea","unresolved":false,"context_lines":[{"line_number":161,"context_line":"  doesn\u0027t support bulk deploy, deployed nodes (peers) have short lifespan."},{"line_number":162,"context_line":"  So peers have to discovering new nodes at a given time, and other peer may"},{"line_number":163,"context_line":"  not provide the list, or provide only a partial list of peers, which changes"},{"line_number":164,"context_line":"  during provisioning, as result we have notable overhead on peers discovering."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Data model impact"},{"line_number":167,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_01ac3bec","line":164,"in_reply_to":"1a6eadb0_370cd0ec","updated":"2017-01-02 18:26:07.000000000","message":"Is the LPD always in trouble? What if you repeat the test?\nWhat happens if there are multiple nodes, not just two?\nI\u0027d expect the race getting less significant with growing amount of clients.\n\nI don\u0027t think an extension should be avoided because it isn\u0027t \"basic\". I\u0027d encourage any extension that would reduce the amount of services this spec requires; so far we\u0027ve got Glare, Swift, a tracker and Glance.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"74d5acc22f4f976c3a72ffc367eefc9916c40e24","unresolved":false,"context_lines":[{"line_number":161,"context_line":"  doesn\u0027t support bulk deploy, deployed nodes (peers) have short lifespan."},{"line_number":162,"context_line":"  So peers have to discovering new nodes at a given time, and other peer may"},{"line_number":163,"context_line":"  not provide the list, or provide only a partial list of peers, which changes"},{"line_number":164,"context_line":"  during provisioning, as result we have notable overhead on peers discovering."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Data model impact"},{"line_number":167,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_370cd0ec","line":164,"in_reply_to":"1a6eadb0_b078f3c5","updated":"2016-12-14 20:33:34.000000000","message":"Yeah, the problem here not in multicast announcements performance as itself, but in discovery races.\n\nI don\u0027t consider PEX here, as I would focus on basic staff here for now, but it seams interesting.","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c2da8a48c9ddd234716a5b8424353dbc895004a8","unresolved":false,"context_lines":[{"line_number":305,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"* python-libtorrent_ library is required (libtorrent has"},{"line_number":308,"context_line":"  python binding);"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"* BitTorrent client on deploy image."},{"line_number":311,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_095262dd","line":308,"updated":"2016-12-14 17:50:23.000000000","message":"What is this required for in the proposed solution?","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"74d5acc22f4f976c3a72ffc367eefc9916c40e24","unresolved":false,"context_lines":[{"line_number":305,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"* python-libtorrent_ library is required (libtorrent has"},{"line_number":308,"context_line":"  python binding);"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"* BitTorrent client on deploy image."},{"line_number":311,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_d701dcb0","line":308,"in_reply_to":"1a6eadb0_095262dd","updated":"2016-12-14 20:33:34.000000000","message":"I\u0027ll remove it, it\u0027s not needed anymore","commit_id":"636a4e028221db058c8964b492267429c0319aaf"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":67,"context_line":"   |                |              |        |         |    client announce   |"},{"line_number":68,"context_line":"   |                |              |        |         |\u003c--------\u003e|\u003c---------\u003e|"},{"line_number":69,"context_line":"   |                |              |        |         |          |           |"},{"line_number":70,"context_line":"   |                |              |\u003c-download image--|          |           |"},{"line_number":71,"context_line":"   |                |              |\u003c--------------download image------------|"},{"line_number":72,"context_line":"   |                |              |                  |\u003c-share image pieces-\u003e|"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_86d4e147","line":70,"range":{"start_line":70,"start_character":53,"end_line":70,"end_character":54},"updated":"2016-12-21 09:52:18.000000000","message":"s/-/\u003e","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":67,"context_line":"   |                |              |        |         |    client announce   |"},{"line_number":68,"context_line":"   |                |              |        |         |\u003c--------\u003e|\u003c---------\u003e|"},{"line_number":69,"context_line":"   |                |              |        |         |          |           |"},{"line_number":70,"context_line":"   |                |              |\u003c-download image--|          |           |"},{"line_number":71,"context_line":"   |                |              |\u003c--------------download image------------|"},{"line_number":72,"context_line":"   |                |              |                  |\u003c-share image pieces-\u003e|"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_66cfc5b3","line":70,"range":{"start_line":70,"start_character":36,"end_line":70,"end_character":37},"updated":"2016-12-21 09:52:18.000000000","message":"s/\u003c/-","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":68,"context_line":"   |                |              |        |         |\u003c--------\u003e|\u003c---------\u003e|"},{"line_number":69,"context_line":"   |                |              |        |         |          |           |"},{"line_number":70,"context_line":"   |                |              |\u003c-download image--|          |           |"},{"line_number":71,"context_line":"   |                |              |\u003c--------------download image------------|"},{"line_number":72,"context_line":"   |                |              |                  |\u003c-share image pieces-\u003e|"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"This change proposes to use BitTorrent webseed_ feature to reduce Ironic"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_4bb6523e","line":71,"range":{"start_line":71,"start_character":76,"end_line":71,"end_character":77},"updated":"2016-12-21 09:52:18.000000000","message":"s/-/\u003e/","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":68,"context_line":"   |                |              |        |         |\u003c--------\u003e|\u003c---------\u003e|"},{"line_number":69,"context_line":"   |                |              |        |         |          |           |"},{"line_number":70,"context_line":"   |                |              |\u003c-download image--|          |           |"},{"line_number":71,"context_line":"   |                |              |\u003c--------------download image------------|"},{"line_number":72,"context_line":"   |                |              |                  |\u003c-share image pieces-\u003e|"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"This change proposes to use BitTorrent webseed_ feature to reduce Ironic"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_aba44608","line":71,"range":{"start_line":71,"start_character":36,"end_line":71,"end_character":37},"updated":"2016-12-21 09:52:18.000000000","message":"s/\u003c//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":75,"context_line":"Conductor load. This simplifies the role of the conductor, avoiding"},{"line_number":76,"context_line":"the need to seed the images. The images can be seeded directly from"},{"line_number":77,"context_line":"object storage via HTTP. The HTTP server must support the HTTP/1.1"},{"line_number":78,"context_line":"Accept-Ranges extension in order to perform this role (Swift_ support this)."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"So the implementation could be splitted into 3 parts:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_422c2799","line":78,"range":{"start_line":78,"start_character":55,"end_line":78,"end_character":62},"updated":"2016-12-21 09:52:18.000000000","message":"Is Glance support required?","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":75,"context_line":"Conductor load. This simplifies the role of the conductor, avoiding"},{"line_number":76,"context_line":"the need to seed the images. The images can be seeded directly from"},{"line_number":77,"context_line":"object storage via HTTP. The HTTP server must support the HTTP/1.1"},{"line_number":78,"context_line":"Accept-Ranges extension in order to perform this role (Swift_ support this)."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"So the implementation could be splitted into 3 parts:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_9d86f563","line":78,"range":{"start_line":78,"start_character":62,"end_line":78,"end_character":69},"updated":"2016-12-21 09:52:18.000000000","message":"nit supports","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"2fb5b75d713538dcfedcb6285bf286b15ace9f75","unresolved":false,"context_lines":[{"line_number":75,"context_line":"Conductor load. This simplifies the role of the conductor, avoiding"},{"line_number":76,"context_line":"the need to seed the images. The images can be seeded directly from"},{"line_number":77,"context_line":"object storage via HTTP. The HTTP server must support the HTTP/1.1"},{"line_number":78,"context_line":"Accept-Ranges extension in order to perform this role (Swift_ support this)."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"So the implementation could be splitted into 3 parts:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"da4df55a_1e61a3d3","line":78,"range":{"start_line":78,"start_character":55,"end_line":78,"end_character":62},"in_reply_to":"1a6eadb0_422c2799","updated":"2016-12-27 08:52:10.000000000","message":"We are supporting Glance, but using Swift temp urls for downloading images on target nodes.","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":77,"context_line":"object storage via HTTP. The HTTP server must support the HTTP/1.1"},{"line_number":78,"context_line":"Accept-Ranges extension in order to perform this role (Swift_ support this)."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"So the implementation could be splitted into 3 parts:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* A Bittorrent client to download and share images."},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_e139ffd9","line":80,"range":{"start_line":80,"start_character":36,"end_line":80,"end_character":39},"updated":"2016-12-21 09:52:18.000000000","message":"/ted//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":89,"context_line":"  tracker a number times during the course of a download to update its peers"},{"line_number":90,"context_line":"  information."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"* A mechanism for discovering torrents (tracker, DHT_, LPD_)."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"  It\u0027s possible to avoid tracker requirement by using BitTorrent extensions"},{"line_number":95,"context_line":"  like LPD_ and DHT_. But this approach has some problems. deployed nodes,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_61732fb5","line":92,"range":{"start_line":92,"start_character":49,"end_line":92,"end_character":53},"updated":"2016-12-21 09:52:18.000000000","message":"Please correct me if I\u0027m wrong but reading thru Kademila[1] a DHT benefits from long-lived nodes which isn\u0027t the case here.\n\n[1] https://en.wikipedia.org/wiki/Kademlia","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"2fb5b75d713538dcfedcb6285bf286b15ace9f75","unresolved":false,"context_lines":[{"line_number":89,"context_line":"  tracker a number times during the course of a download to update its peers"},{"line_number":90,"context_line":"  information."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"* A mechanism for discovering torrents (tracker, DHT_, LPD_)."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"  It\u0027s possible to avoid tracker requirement by using BitTorrent extensions"},{"line_number":95,"context_line":"  like LPD_ and DHT_. But this approach has some problems. deployed nodes,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da4df55a_5ed5eb19","line":92,"range":{"start_line":92,"start_character":49,"end_line":92,"end_character":53},"in_reply_to":"1a6eadb0_61732fb5","updated":"2016-12-27 08:52:10.000000000","message":"Sure, you don\u0027t need update swarm info very often, I\u0027ll try to test it and provide some numbers.","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":92,"context_line":"* A mechanism for discovering torrents (tracker, DHT_, LPD_)."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"  It\u0027s possible to avoid tracker requirement by using BitTorrent extensions"},{"line_number":95,"context_line":"  like LPD_ and DHT_. But this approach has some problems. deployed nodes,"},{"line_number":96,"context_line":"  which is peers by Ironic have short lifespan. So peers have to discovering"},{"line_number":97,"context_line":"  new nodes at a given time, and other peer may not provide the list, or"},{"line_number":98,"context_line":"  provide only a partial list of peers, which changes during provisioning,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_6255a3c0","line":95,"range":{"start_line":95,"start_character":6,"end_line":95,"end_character":20},"updated":"2016-12-21 09:52:18.000000000","message":"There\u0027s also the PEx. Maybe list their disadvantages:\n\nLPD:  can race, ...\nDHT: has to be long-lived, ...","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"2fb5b75d713538dcfedcb6285bf286b15ace9f75","unresolved":false,"context_lines":[{"line_number":92,"context_line":"* A mechanism for discovering torrents (tracker, DHT_, LPD_)."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"  It\u0027s possible to avoid tracker requirement by using BitTorrent extensions"},{"line_number":95,"context_line":"  like LPD_ and DHT_. But this approach has some problems. deployed nodes,"},{"line_number":96,"context_line":"  which is peers by Ironic have short lifespan. So peers have to discovering"},{"line_number":97,"context_line":"  new nodes at a given time, and other peer may not provide the list, or"},{"line_number":98,"context_line":"  provide only a partial list of peers, which changes during provisioning,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da4df55a_1ec7e364","line":95,"range":{"start_line":95,"start_character":6,"end_line":95,"end_character":20},"in_reply_to":"1a6eadb0_6255a3c0","updated":"2016-12-27 08:52:10.000000000","message":"I don\u0027t consider PEX as it doesn\u0027t standalone extension and could be used with tracker as well.","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"* A mechanism for discovering torrents (tracker, DHT_, LPD_)."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"  It\u0027s possible to avoid tracker requirement by using BitTorrent extensions"},{"line_number":95,"context_line":"  like LPD_ and DHT_. But this approach has some problems. deployed nodes,"},{"line_number":96,"context_line":"  which is peers by Ironic have short lifespan. So peers have to discovering"},{"line_number":97,"context_line":"  new nodes at a given time, and other peer may not provide the list, or"},{"line_number":98,"context_line":"  provide only a partial list of peers, which changes during provisioning,"},{"line_number":99,"context_line":"  as result the possible races and overhead on peers discovering."},{"line_number":100,"context_line":"  So in current deployment the tracker would be better choice. For example"},{"line_number":101,"context_line":"  qbittorrent (qbittorent-nox_)."},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_62a203fe","line":99,"range":{"start_line":94,"start_character":2,"end_line":99,"end_character":65},"updated":"2016-12-21 09:52:18.000000000","message":"move to Alternatives?","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"2fb5b75d713538dcfedcb6285bf286b15ace9f75","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"* A mechanism for discovering torrents (tracker, DHT_, LPD_)."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"  It\u0027s possible to avoid tracker requirement by using BitTorrent extensions"},{"line_number":95,"context_line":"  like LPD_ and DHT_. But this approach has some problems. deployed nodes,"},{"line_number":96,"context_line":"  which is peers by Ironic have short lifespan. So peers have to discovering"},{"line_number":97,"context_line":"  new nodes at a given time, and other peer may not provide the list, or"},{"line_number":98,"context_line":"  provide only a partial list of peers, which changes during provisioning,"},{"line_number":99,"context_line":"  as result the possible races and overhead on peers discovering."},{"line_number":100,"context_line":"  So in current deployment the tracker would be better choice. For example"},{"line_number":101,"context_line":"  qbittorrent (qbittorent-nox_)."},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"da4df55a_de7e3b18","line":99,"range":{"start_line":94,"start_character":2,"end_line":99,"end_character":65},"in_reply_to":"1a6eadb0_62a203fe","updated":"2016-12-27 08:52:10.000000000","message":"I\u0027ll move DHT and LPD mentioning to alternatives, but would prefer to keep explanation here to avoid questions in future","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":107,"context_line":"  transferred. Linux tools for creating torrent files include ctorrent_,"},{"line_number":108,"context_line":"  transmission_, and mktorrent_."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  For storing torrent files it\u0027s proposed to use Artifact"},{"line_number":111,"context_line":"  Repository (Glare_). Operators will create torrent file using standard"},{"line_number":112,"context_line":"  tools and upload it to Glare_ and provide link to it via image property"},{"line_number":113,"context_line":"  ``torrent_file\u003d\u003cglare id\u003e\u0027`` (in case standalone mode we be able to"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_65a20dfe","line":110,"range":{"start_line":110,"start_character":28,"end_line":110,"end_character":32},"updated":"2016-12-21 09:52:18.000000000","message":"we propose","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":110,"context_line":"  For storing torrent files it\u0027s proposed to use Artifact"},{"line_number":111,"context_line":"  Repository (Glare_). Operators will create torrent file using standard"},{"line_number":112,"context_line":"  tools and upload it to Glare_ and provide link to it via image property"},{"line_number":113,"context_line":"  ``torrent_file\u003d\u003cglare id\u003e\u0027`` (in case standalone mode we be able to"},{"line_number":114,"context_line":"  support url here). Ironic Conductor will fetch image properties and"},{"line_number":115,"context_line":"  nodes will download torrent file."},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_c5492133","line":113,"range":{"start_line":113,"start_character":35,"end_line":113,"end_character":40},"updated":"2016-12-21 09:52:18.000000000","message":"case of the","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":110,"context_line":"  For storing torrent files it\u0027s proposed to use Artifact"},{"line_number":111,"context_line":"  Repository (Glare_). Operators will create torrent file using standard"},{"line_number":112,"context_line":"  tools and upload it to Glare_ and provide link to it via image property"},{"line_number":113,"context_line":"  ``torrent_file\u003d\u003cglare id\u003e\u0027`` (in case standalone mode we be able to"},{"line_number":114,"context_line":"  support url here). Ironic Conductor will fetch image properties and"},{"line_number":115,"context_line":"  nodes will download torrent file."},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_8511e906","line":113,"range":{"start_line":113,"start_character":55,"end_line":113,"end_character":66},"updated":"2016-12-21 09:52:18.000000000","message":"it is possible to","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":110,"context_line":"  For storing torrent files it\u0027s proposed to use Artifact"},{"line_number":111,"context_line":"  Repository (Glare_). Operators will create torrent file using standard"},{"line_number":112,"context_line":"  tools and upload it to Glare_ and provide link to it via image property"},{"line_number":113,"context_line":"  ``torrent_file\u003d\u003cglare id\u003e\u0027`` (in case standalone mode we be able to"},{"line_number":114,"context_line":"  support url here). Ironic Conductor will fetch image properties and"},{"line_number":115,"context_line":"  nodes will download torrent file."},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_056799b7","line":113,"range":{"start_line":113,"start_character":31,"end_line":113,"end_character":32},"updated":"2016-12-21 09:52:18.000000000","message":"s/(in/In","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":111,"context_line":"  Repository (Glare_). Operators will create torrent file using standard"},{"line_number":112,"context_line":"  tools and upload it to Glare_ and provide link to it via image property"},{"line_number":113,"context_line":"  ``torrent_file\u003d\u003cglare id\u003e\u0027`` (in case standalone mode we be able to"},{"line_number":114,"context_line":"  support url here). Ironic Conductor will fetch image properties and"},{"line_number":115,"context_line":"  nodes will download torrent file."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Based on the torrent file, tracker and webseed_ info (Swift temp url),"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_c51e810b","line":114,"range":{"start_line":114,"start_character":2,"end_line":114,"end_character":9},"updated":"2016-12-21 09:52:18.000000000","message":"specify a torrent file URL instead.","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":111,"context_line":"  Repository (Glare_). Operators will create torrent file using standard"},{"line_number":112,"context_line":"  tools and upload it to Glare_ and provide link to it via image property"},{"line_number":113,"context_line":"  ``torrent_file\u003d\u003cglare id\u003e\u0027`` (in case standalone mode we be able to"},{"line_number":114,"context_line":"  support url here). Ironic Conductor will fetch image properties and"},{"line_number":115,"context_line":"  nodes will download torrent file."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Based on the torrent file, tracker and webseed_ info (Swift temp url),"},{"line_number":118,"context_line":"provided by Ironic Conductor, deployed nodes will generates torrent"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_450a718b","line":115,"range":{"start_line":114,"start_character":21,"end_line":115,"end_character":35},"updated":"2016-12-21 09:52:18.000000000","message":"Later on the Ironic Conductor fetches image torrent metadata and orders the node being deployed do download the image over the BitTorrent protocol.","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":114,"context_line":"  support url here). Ironic Conductor will fetch image properties and"},{"line_number":115,"context_line":"  nodes will download torrent file."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Based on the torrent file, tracker and webseed_ info (Swift temp url),"},{"line_number":118,"context_line":"provided by Ironic Conductor, deployed nodes will generates torrent"},{"line_number":119,"context_line":"metadata. When the node boots, it will use this metadata to retrieve"},{"line_number":120,"context_line":"the torrent file for the BitTorrent client, which announces peer"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_72edc38d","line":117,"range":{"start_line":117,"start_character":27,"end_line":117,"end_character":34},"updated":"2016-12-21 09:52:18.000000000","message":"nit: the tracker and the webseed","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  nodes will download torrent file."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Based on the torrent file, tracker and webseed_ info (Swift temp url),"},{"line_number":118,"context_line":"provided by Ironic Conductor, deployed nodes will generates torrent"},{"line_number":119,"context_line":"metadata. When the node boots, it will use this metadata to retrieve"},{"line_number":120,"context_line":"the torrent file for the BitTorrent client, which announces peer"},{"line_number":121,"context_line":"information [1]_ to the tracker."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_1dcbc573","line":118,"range":{"start_line":118,"start_character":58,"end_line":118,"end_character":59},"updated":"2016-12-21 09:52:18.000000000","message":"nit s/s//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  nodes will download torrent file."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Based on the torrent file, tracker and webseed_ info (Swift temp url),"},{"line_number":118,"context_line":"provided by Ironic Conductor, deployed nodes will generates torrent"},{"line_number":119,"context_line":"metadata. When the node boots, it will use this metadata to retrieve"},{"line_number":120,"context_line":"the torrent file for the BitTorrent client, which announces peer"},{"line_number":121,"context_line":"information [1]_ to the tracker."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_b29e7b05","line":118,"range":{"start_line":118,"start_character":9,"end_line":118,"end_character":12},"updated":"2016-12-21 09:52:18.000000000","message":"nit: by the Ironic Conductor","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  nodes will download torrent file."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Based on the torrent file, tracker and webseed_ info (Swift temp url),"},{"line_number":118,"context_line":"provided by Ironic Conductor, deployed nodes will generates torrent"},{"line_number":119,"context_line":"metadata. When the node boots, it will use this metadata to retrieve"},{"line_number":120,"context_line":"the torrent file for the BitTorrent client, which announces peer"},{"line_number":121,"context_line":"information [1]_ to the tracker."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_5e4b73b0","line":118,"range":{"start_line":118,"start_character":30,"end_line":118,"end_character":49},"updated":"2016-12-21 09:52:18.000000000","message":"s/deployed nodes will/the nodes being deployed/","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Based on the torrent file, tracker and webseed_ info (Swift temp url),"},{"line_number":118,"context_line":"provided by Ironic Conductor, deployed nodes will generates torrent"},{"line_number":119,"context_line":"metadata. When the node boots, it will use this metadata to retrieve"},{"line_number":120,"context_line":"the torrent file for the BitTorrent client, which announces peer"},{"line_number":121,"context_line":"information [1]_ to the tracker."},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_637edcaf","line":119,"range":{"start_line":119,"start_character":15,"end_line":119,"end_character":18},"updated":"2016-12-21 09:52:18.000000000","message":"Nit: s/the/another","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Based on the torrent file, tracker and webseed_ info (Swift temp url),"},{"line_number":118,"context_line":"provided by Ironic Conductor, deployed nodes will generates torrent"},{"line_number":119,"context_line":"metadata. When the node boots, it will use this metadata to retrieve"},{"line_number":120,"context_line":"the torrent file for the BitTorrent client, which announces peer"},{"line_number":121,"context_line":"information [1]_ to the tracker."},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_e3166c54","line":119,"range":{"start_line":119,"start_character":34,"end_line":119,"end_character":42},"updated":"2016-12-21 09:52:18.000000000","message":"s/will use/uses/","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":117,"context_line":"Based on the torrent file, tracker and webseed_ info (Swift temp url),"},{"line_number":118,"context_line":"provided by Ironic Conductor, deployed nodes will generates torrent"},{"line_number":119,"context_line":"metadata. When the node boots, it will use this metadata to retrieve"},{"line_number":120,"context_line":"the torrent file for the BitTorrent client, which announces peer"},{"line_number":121,"context_line":"information [1]_ to the tracker."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The node requires an endpoint URL for the tracker. This information will"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_f22473c7","line":120,"range":{"start_line":120,"start_character":44,"end_line":120,"end_character":49},"updated":"2016-12-21 09:52:18.000000000","message":"The deploying node client in turn announces itself back to the tracker for other nodes to reach out.","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":117,"context_line":"Based on the torrent file, tracker and webseed_ info (Swift temp url),"},{"line_number":118,"context_line":"provided by Ironic Conductor, deployed nodes will generates torrent"},{"line_number":119,"context_line":"metadata. When the node boots, it will use this metadata to retrieve"},{"line_number":120,"context_line":"the torrent file for the BitTorrent client, which announces peer"},{"line_number":121,"context_line":"information [1]_ to the tracker."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The node requires an endpoint URL for the tracker. This information will"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_72622318","line":120,"range":{"start_line":120,"start_character":42,"end_line":120,"end_character":43},"updated":"2016-12-21 09:52:18.000000000","message":"s/,/.","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":120,"context_line":"the torrent file for the BitTorrent client, which announces peer"},{"line_number":121,"context_line":"information [1]_ to the tracker."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The node requires an endpoint URL for the tracker. This information will"},{"line_number":124,"context_line":"be provided via a new configuration option ``torrent_trackers``. This option"},{"line_number":125,"context_line":"contains multiple trackers. This provides redundancy in the case that one"},{"line_number":126,"context_line":"tracker fails, the other trackers can continue to maintain the swarm for"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_9503290d","line":123,"range":{"start_line":123,"start_character":34,"end_line":123,"end_character":37},"updated":"2016-12-21 09:52:18.000000000","message":"s/for/of","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":120,"context_line":"the torrent file for the BitTorrent client, which announces peer"},{"line_number":121,"context_line":"information [1]_ to the tracker."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The node requires an endpoint URL for the tracker. This information will"},{"line_number":124,"context_line":"be provided via a new configuration option ``torrent_trackers``. This option"},{"line_number":125,"context_line":"contains multiple trackers. This provides redundancy in the case that one"},{"line_number":126,"context_line":"tracker fails, the other trackers can continue to maintain the swarm for"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_3206eb20","line":123,"range":{"start_line":123,"start_character":4,"end_line":123,"end_character":8},"updated":"2016-12-21 09:52:18.000000000","message":"s/node/deploying node torrent client/","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":121,"context_line":"information [1]_ to the tracker."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The node requires an endpoint URL for the tracker. This information will"},{"line_number":124,"context_line":"be provided via a new configuration option ``torrent_trackers``. This option"},{"line_number":125,"context_line":"contains multiple trackers. This provides redundancy in the case that one"},{"line_number":126,"context_line":"tracker fails, the other trackers can continue to maintain the swarm for"},{"line_number":127,"context_line":"the torrent::"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    torrent_trackers \u003d http://\u003chost1\u003e:\u003cport1\u003e/announce,"},{"line_number":130,"context_line":"                       http://\u003chost2\u003e:\u003cport2\u003e/announce"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_b543c56b","line":127,"range":{"start_line":124,"start_character":65,"end_line":127,"end_character":11},"updated":"2016-12-21 09:52:18.000000000","message":"s/.*/Multiple URLs can be tracked to achieve redundancy of the torrent swarm::","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    torrent_trackers \u003d http://\u003chost1\u003e:\u003cport1\u003e/announce,"},{"line_number":130,"context_line":"                       http://\u003chost2\u003e:\u003cport2\u003e/announce"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Supporting multiple trackers restricts the possible choices of BitTorrent"},{"line_number":133,"context_line":"client, it should support multi-tracker_ metadata extension."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"To use torrent provisioning as the default provisioning mechanism, the Glance"},{"line_number":136,"context_line":"image property ``torrent_file`` should be specified, and Ironic configuration"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_8b514a11","line":133,"range":{"start_line":132,"start_character":0,"end_line":133,"end_character":60},"updated":"2016-12-21 09:52:18.000000000","message":"The redundancy requirement narrows the client choice down to those supporting the multi-tracker_ metadata extension.","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":132,"context_line":"Supporting multiple trackers restricts the possible choices of BitTorrent"},{"line_number":133,"context_line":"client, it should support multi-tracker_ metadata extension."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"To use torrent provisioning as the default provisioning mechanism, the Glance"},{"line_number":136,"context_line":"image property ``torrent_file`` should be specified, and Ironic configuration"},{"line_number":137,"context_line":"option ``[deploy]enable_torrent_provisioning`` should be enabled."},{"line_number":138,"context_line":"If ``[deploy]enable_torrent_provisioning`` set to ``False``,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_8b786a91","line":135,"range":{"start_line":135,"start_character":15,"end_line":135,"end_character":27},"updated":"2016-12-21 09:52:18.000000000","message":"s/provisioning//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":138,"context_line":"If ``[deploy]enable_torrent_provisioning`` set to ``False``,"},{"line_number":139,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":142,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":143,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":144,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_62da034d","line":141,"range":{"start_line":141,"start_character":74,"end_line":141,"end_character":77},"updated":"2016-12-21 09:52:18.000000000","message":"nit: due to","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":138,"context_line":"If ``[deploy]enable_torrent_provisioning`` set to ``False``,"},{"line_number":139,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":142,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":143,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":144,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_22d48b1e","line":141,"range":{"start_line":141,"start_character":59,"end_line":141,"end_character":61},"updated":"2016-12-21 09:52:18.000000000","message":"nit: s/\u0027s//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":138,"context_line":"If ``[deploy]enable_torrent_provisioning`` set to ``False``,"},{"line_number":139,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":142,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":143,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":144,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_c2f757d1","line":141,"range":{"start_line":141,"start_character":11,"end_line":141,"end_character":22},"updated":"2016-12-21 09:52:18.000000000","message":"nit: shortcomings","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":138,"context_line":"If ``[deploy]enable_torrent_provisioning`` set to ``False``,"},{"line_number":139,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":142,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":143,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":144,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_423267a8","line":141,"range":{"start_line":141,"start_character":47,"end_line":141,"end_character":54},"updated":"2016-12-21 09:52:18.000000000","message":"nit: the low","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":138,"context_line":"If ``[deploy]enable_torrent_provisioning`` set to ``False``,"},{"line_number":139,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":142,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":143,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":144,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_42c0a750","line":141,"range":{"start_line":141,"start_character":26,"end_line":141,"end_character":34},"updated":"2016-12-21 09:52:18.000000000","message":"nit: the proposed","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":139,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":142,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":143,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":144,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":145,"context_line":"difference between image downloading time and API request delay is"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_829b9f65","line":142,"range":{"start_line":142,"start_character":40,"end_line":142,"end_character":78},"updated":"2016-12-21 09:52:18.000000000","message":"Having finished downloading an image,","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":139,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":142,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":143,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":144,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":145,"context_line":"difference between image downloading time and API request delay is"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_2289eb26","line":142,"range":{"start_line":142,"start_character":4,"end_line":142,"end_character":11},"updated":"2016-12-21 09:52:18.000000000","message":"nit: s/fact of//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":142,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":143,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":144,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":145,"context_line":"difference between image downloading time and API request delay is"},{"line_number":146,"context_line":"insignificant."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_e2aa9370","line":143,"range":{"start_line":143,"start_character":0,"end_line":143,"end_character":2},"updated":"2016-12-21 09:52:18.000000000","message":"the node","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":142,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":143,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":144,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":145,"context_line":"difference between image downloading time and API request delay is"},{"line_number":146,"context_line":"insignificant."},{"line_number":147,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_c28757b3","line":144,"range":{"start_line":143,"start_character":39,"end_line":144,"end_character":21},"updated":"2016-12-21 09:52:18.000000000","message":"Therefore the sharing ratio in a swarm cannot be enforced without delaying a client BM instance boot and has a random distribution over time.","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":141,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":142,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":143,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":144,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":145,"context_line":"difference between image downloading time and API request delay is"},{"line_number":146,"context_line":"insignificant."},{"line_number":147,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_826f1ffb","line":144,"range":{"start_line":144,"start_character":25,"end_line":144,"end_character":27},"updated":"2016-12-21 09:52:18.000000000","message":"nit: s/it/this/","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":141,"context_line":"One of the shortcoming of proposed approach is not big peer\u0027s share ratio due"},{"line_number":142,"context_line":"the fact of node (peer) short lifespan. After peer finishes to download image,"},{"line_number":143,"context_line":"it doesn\u0027t continue seeding the image. Because It\u0027s hard to say when all nodes"},{"line_number":144,"context_line":"finish provisioning. But it doesn\u0027t have big impact on performance, the"},{"line_number":145,"context_line":"difference between image downloading time and API request delay is"},{"line_number":146,"context_line":"insignificant."},{"line_number":147,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_2232cb10","line":144,"range":{"start_line":144,"start_character":55,"end_line":144,"end_character":66},"updated":"2016-12-21 09:52:18.000000000","message":"nit: the overall deployment performance","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"The final workflow for operators looks like:"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* operator creates deploy image and its torrent file;"},{"line_number":151,"context_line":"* operator uploads torrent file to Glare;"},{"line_number":152,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":153,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_e51a9d6e","line":150,"range":{"start_line":150,"start_character":2,"end_line":150,"end_character":18},"updated":"2016-12-21 09:52:18.000000000","message":"create the deployment","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"The final workflow for operators looks like:"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* operator creates deploy image and its torrent file;"},{"line_number":151,"context_line":"* operator uploads torrent file to Glare;"},{"line_number":152,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":153,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_c53f61b2","line":150,"range":{"start_line":150,"start_character":52,"end_line":150,"end_character":53},"updated":"2016-12-21 09:52:18.000000000","message":"s/;//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":148,"context_line":"The final workflow for operators looks like:"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* operator creates deploy image and its torrent file;"},{"line_number":151,"context_line":"* operator uploads torrent file to Glare;"},{"line_number":152,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":153,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_e548dd5e","line":151,"range":{"start_line":151,"start_character":40,"end_line":151,"end_character":41},"updated":"2016-12-21 09:52:18.000000000","message":"s/;//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":148,"context_line":"The final workflow for operators looks like:"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* operator creates deploy image and its torrent file;"},{"line_number":151,"context_line":"* operator uploads torrent file to Glare;"},{"line_number":152,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":153,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_452c3199","line":151,"range":{"start_line":151,"start_character":2,"end_line":151,"end_character":18},"updated":"2016-12-21 09:52:18.000000000","message":"upload the","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* operator creates deploy image and its torrent file;"},{"line_number":151,"context_line":"* operator uploads torrent file to Glare;"},{"line_number":152,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":153,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_25757597","line":152,"range":{"start_line":152,"start_character":75,"end_line":152,"end_character":76},"updated":"2016-12-21 09:52:18.000000000","message":"s/;//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* operator creates deploy image and its torrent file;"},{"line_number":151,"context_line":"* operator uploads torrent file to Glare;"},{"line_number":152,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":153,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_8559e937","line":152,"range":{"start_line":152,"start_character":40,"end_line":152,"end_character":49},"updated":"2016-12-21 09:52:18.000000000","message":"set the","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* operator creates deploy image and its torrent file;"},{"line_number":151,"context_line":"* operator uploads torrent file to Glare;"},{"line_number":152,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":153,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_254e556f","line":152,"range":{"start_line":152,"start_character":25,"end_line":152,"end_character":28},"updated":"2016-12-21 09:52:18.000000000","message":"to","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* operator creates deploy image and its torrent file;"},{"line_number":151,"context_line":"* operator uploads torrent file to Glare;"},{"line_number":152,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":153,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_052f9988","line":152,"range":{"start_line":152,"start_character":2,"end_line":152,"end_character":18},"updated":"2016-12-21 09:52:18.000000000","message":"upload the","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":150,"context_line":"* operator creates deploy image and its torrent file;"},{"line_number":151,"context_line":"* operator uploads torrent file to Glare;"},{"line_number":152,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":153,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"Alternatives"},{"line_number":156,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_e203730e","line":153,"range":{"start_line":153,"start_character":2,"end_line":153,"end_character":26},"updated":"2016-12-21 09:52:18.000000000","message":"s/.*//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":150,"context_line":"* operator creates deploy image and its torrent file;"},{"line_number":151,"context_line":"* operator uploads torrent file to Glare;"},{"line_number":152,"context_line":"* operator uploads image via Glance and specifies ``torrent_file`` property;"},{"line_number":153,"context_line":"* and now it\u0027s possible to deploy instances via BitTorrent protocol."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"Alternatives"},{"line_number":156,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_656bedb9","line":153,"range":{"start_line":153,"start_character":67,"end_line":153,"end_character":68},"updated":"2016-12-21 09:52:18.000000000","message":"s/.//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":156,"context_line":"------------"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* Introduce seeding functionality in Ironic Conductor. Downloading would"},{"line_number":159,"context_line":"  be a little faster at the beginning, if the image is already cached: in"},{"line_number":160,"context_line":"  this case all conductors will seed the image immediately and clients"},{"line_number":161,"context_line":"  will not need to download it via HTTP. But the advantage is insignificant,"},{"line_number":162,"context_line":"  because all load would be moved to conductor from storage, and at some point"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_65092d84","line":159,"range":{"start_line":159,"start_character":21,"end_line":159,"end_character":23},"updated":"2016-12-21 09:52:18.000000000","message":"in","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":158,"context_line":"* Introduce seeding functionality in Ironic Conductor. Downloading would"},{"line_number":159,"context_line":"  be a little faster at the beginning, if the image is already cached: in"},{"line_number":160,"context_line":"  this case all conductors will seed the image immediately and clients"},{"line_number":161,"context_line":"  will not need to download it via HTTP. But the advantage is insignificant,"},{"line_number":162,"context_line":"  because all load would be moved to conductor from storage, and at some point"},{"line_number":163,"context_line":"  it could become a performance problem. The disadvantage of this approach"},{"line_number":164,"context_line":"  is that the conductor does the bulk work of seeding the images, which"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_c5ae812d","line":161,"range":{"start_line":161,"start_character":49,"end_line":161,"end_character":58},"updated":"2016-12-21 09:52:18.000000000","message":"overall deployment performance enhancement","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":162,"context_line":"  because all load would be moved to conductor from storage, and at some point"},{"line_number":163,"context_line":"  it could become a performance problem. The disadvantage of this approach"},{"line_number":164,"context_line":"  is that the conductor does the bulk work of seeding the images, which"},{"line_number":165,"context_line":"  can be avoided, as the image can be seeded directly from object store"},{"line_number":166,"context_line":"  via temporary URL."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"* Create a new service which will perform torrent provisioning, like Glance"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_a50d0540","line":165,"range":{"start_line":165,"start_character":59,"end_line":165,"end_character":64},"updated":"2016-12-21 09:52:18.000000000","message":"the object store","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":163,"context_line":"  it could become a performance problem. The disadvantage of this approach"},{"line_number":164,"context_line":"  is that the conductor does the bulk work of seeding the images, which"},{"line_number":165,"context_line":"  can be avoided, as the image can be seeded directly from object store"},{"line_number":166,"context_line":"  via temporary URL."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"* Create a new service which will perform torrent provisioning, like Glance"},{"line_number":169,"context_line":"  in previous suggestion."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_05015906","line":166,"range":{"start_line":166,"start_character":6,"end_line":166,"end_character":16},"updated":"2016-12-21 09:52:18.000000000","message":"a temporary","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":168,"context_line":"* Create a new service which will perform torrent provisioning, like Glance"},{"line_number":169,"context_line":"  in previous suggestion."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"* Using magnet links. But we still need to get image metadata somewhere, and"},{"line_number":172,"context_line":"  at start of deploying, we don\u0027t have seeds at all, as we are using web seed,"},{"line_number":173,"context_line":"  so there is no benefit of it."},{"line_number":174,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_602cbb99","line":171,"range":{"start_line":171,"start_character":7,"end_line":171,"end_character":15},"updated":"2016-12-21 09:52:18.000000000","message":"link to some magnet spec maybe?","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":225,"context_line":"Ramdisk impact"},{"line_number":226,"context_line":"--------------"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Changes to the ramdisk agent are required.  The agent should be able to"},{"line_number":229,"context_line":"generate the torrent file from received torrent metadata and provide it"},{"line_number":230,"context_line":"to the BitTorrent client."},{"line_number":231,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_607afb89","line":228,"range":{"start_line":228,"start_character":0,"end_line":228,"end_character":43},"updated":"2016-12-21 09:52:18.000000000","message":"s/.*/","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":229,"context_line":"generate the torrent file from received torrent metadata and provide it"},{"line_number":230,"context_line":"to the BitTorrent client."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"Also some BitTorrent client should be installed on ramdisk."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"Security impact"},{"line_number":235,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_0610d14d","line":232,"range":{"start_line":232,"start_character":48,"end_line":232,"end_character":50},"updated":"2016-12-21 09:52:18.000000000","message":"nit: on the","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":235,"context_line":"---------------"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"There will be no changes in image fetching mechanism, only one more"},{"line_number":238,"context_line":"protocol will be used - BitTorrent."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"Other end user impact"},{"line_number":241,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_80c71797","line":238,"updated":"2016-12-21 09:52:18.000000000","message":"Now one can e.g hack more services to hijack a server?","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"2fb5b75d713538dcfedcb6285bf286b15ace9f75","unresolved":false,"context_lines":[{"line_number":235,"context_line":"---------------"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"There will be no changes in image fetching mechanism, only one more"},{"line_number":238,"context_line":"protocol will be used - BitTorrent."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"Other end user impact"},{"line_number":241,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da4df55a_698af71c","line":238,"in_reply_to":"1a6eadb0_80c71797","updated":"2016-12-27 08:52:10.000000000","message":"Yeah, but why? you have one http, it\u0027s much easy :)","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"The user has to specify which images require torrent provisioning. It"},{"line_number":244,"context_line":"could be done by providing an additional image property:"},{"line_number":245,"context_line":"``torrent_file\u003d\u003cglare id\u003e``, this flag will indicate that torrent"},{"line_number":246,"context_line":"provisioning should be used for this image. If ``torrent_file``"},{"line_number":247,"context_line":"is not provided, default provisioning will be used."},{"line_number":248,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_00bce704","line":245,"range":{"start_line":245,"start_character":34,"end_line":245,"end_character":38},"updated":"2016-12-21 09:52:18.000000000","message":"parameter","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":244,"context_line":"could be done by providing an additional image property:"},{"line_number":245,"context_line":"``torrent_file\u003d\u003cglare id\u003e``, this flag will indicate that torrent"},{"line_number":246,"context_line":"provisioning should be used for this image. If ``torrent_file``"},{"line_number":247,"context_line":"is not provided, default provisioning will be used."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"Scalability impact"},{"line_number":250,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_803e3789","line":247,"range":{"start_line":247,"start_character":25,"end_line":247,"end_character":37},"updated":"2016-12-21 09:52:18.000000000","message":"provisioning method","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":244,"context_line":"could be done by providing an additional image property:"},{"line_number":245,"context_line":"``torrent_file\u003d\u003cglare id\u003e``, this flag will indicate that torrent"},{"line_number":246,"context_line":"provisioning should be used for this image. If ``torrent_file``"},{"line_number":247,"context_line":"is not provided, default provisioning will be used."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"Scalability impact"},{"line_number":250,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_e049ab32","line":247,"range":{"start_line":247,"start_character":17,"end_line":247,"end_character":24},"updated":"2016-12-21 09:52:18.000000000","message":"the default","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":250,"context_line":"------------------"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Using BitTorrent for image data distribution should reduce load on the"},{"line_number":253,"context_line":"OpenStack control plane, storage and networking. Deploying instances will"},{"line_number":254,"context_line":"take on additional load during deployment."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Using BitTorrent image distribution for concurrent provisioning allows to"},{"line_number":257,"context_line":"offload storage cluster and fully utilize concurrent network bandwidth. The"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_6032fba8","line":254,"range":{"start_line":253,"start_character":49,"end_line":254,"end_character":42},"updated":"2016-12-21 09:52:18.000000000","message":"The load will move to the BMs being deployed.","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":254,"context_line":"take on additional load during deployment."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Using BitTorrent image distribution for concurrent provisioning allows to"},{"line_number":257,"context_line":"offload storage cluster and fully utilize concurrent network bandwidth. The"},{"line_number":258,"context_line":"BitTorrent provisioning improves overall timing for both node provisioning"},{"line_number":259,"context_line":"during concurrent deployment and total time frame."},{"line_number":260,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_60d91b57","line":257,"range":{"start_line":257,"start_character":42,"end_line":257,"end_character":53},"updated":"2016-12-21 09:52:18.000000000","message":"s/.*//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":254,"context_line":"take on additional load during deployment."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Using BitTorrent image distribution for concurrent provisioning allows to"},{"line_number":257,"context_line":"offload storage cluster and fully utilize concurrent network bandwidth. The"},{"line_number":258,"context_line":"BitTorrent provisioning improves overall timing for both node provisioning"},{"line_number":259,"context_line":"during concurrent deployment and total time frame."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"Performance Impact"},{"line_number":262,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_00ab0776","line":259,"range":{"start_line":257,"start_character":72,"end_line":259,"end_character":50},"updated":"2016-12-21 09:52:18.000000000","message":"The BitTorrent provisioning reduces overall time required to deploy an image to a number of nodes \u003clink the Rocks cluster\u003e.","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":261,"context_line":"Performance Impact"},{"line_number":262,"context_line":"------------------"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"* Additional CPU resources required for generating torrent metadata."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"* Torrent tracker will additionally utilize CPU and networking when"},{"line_number":267,"context_line":"  instances provisioning."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_80ad5786","line":264,"range":{"start_line":264,"start_character":67,"end_line":264,"end_character":68},"updated":"2016-12-21 09:52:18.000000000","message":"on the BMs","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":264,"context_line":"* Additional CPU resources required for generating torrent metadata."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"* Torrent tracker will additionally utilize CPU and networking when"},{"line_number":267,"context_line":"  instances provisioning."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"* Instances will do additional network calls to torrent tracker and exchange"},{"line_number":270,"context_line":"  meta information with peers."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_2b067620","line":267,"range":{"start_line":267,"start_character":2,"end_line":267,"end_character":11},"updated":"2016-12-21 09:52:18.000000000","message":"nit s/instances/during node/","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":266,"context_line":"* Torrent tracker will additionally utilize CPU and networking when"},{"line_number":267,"context_line":"  instances provisioning."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"* Instances will do additional network calls to torrent tracker and exchange"},{"line_number":270,"context_line":"  meta information with peers."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"* All above impacts is insignificant in comparison with benefit shorter"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_40dedf11","line":269,"range":{"start_line":269,"start_character":2,"end_line":269,"end_character":12},"updated":"2016-12-21 09:52:18.000000000","message":"BM nodes","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":269,"context_line":"* Instances will do additional network calls to torrent tracker and exchange"},{"line_number":270,"context_line":"  meta information with peers."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"* All above impacts is insignificant in comparison with benefit shorter"},{"line_number":273,"context_line":"  deployment time."},{"line_number":274,"context_line":""},{"line_number":275,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_c0d2efff","line":272,"range":{"start_line":272,"start_character":20,"end_line":272,"end_character":22},"updated":"2016-12-21 09:52:18.000000000","message":"are","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":269,"context_line":"* Instances will do additional network calls to torrent tracker and exchange"},{"line_number":270,"context_line":"  meta information with peers."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"* All above impacts is insignificant in comparison with benefit shorter"},{"line_number":273,"context_line":"  deployment time."},{"line_number":274,"context_line":""},{"line_number":275,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_20d643f1","line":272,"range":{"start_line":272,"start_character":56,"end_line":272,"end_character":63},"updated":"2016-12-21 09:52:18.000000000","message":"the benefit of","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":276,"context_line":"Other deployer impact"},{"line_number":277,"context_line":"---------------------"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"* Torrent tracker should be deployed for keeping information about peers."},{"line_number":280,"context_line":"  (There is no special requirements for the  torrent tracker, it would be"},{"line_number":281,"context_line":"  used only for peer announcement. It could be installed on conductor node)"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_402c1f02","line":279,"range":{"start_line":279,"start_character":10,"end_line":279,"end_character":17},"updated":"2016-12-21 09:52:18.000000000","message":"a (redundant) torrent tracker service","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":277,"context_line":"---------------------"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"* Torrent tracker should be deployed for keeping information about peers."},{"line_number":280,"context_line":"  (There is no special requirements for the  torrent tracker, it would be"},{"line_number":281,"context_line":"  used only for peer announcement. It could be installed on conductor node)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"* Glare service to store torrent files;"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_204483b5","line":280,"range":{"start_line":280,"start_character":9,"end_line":280,"end_character":11},"updated":"2016-12-21 09:52:18.000000000","message":"are","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":277,"context_line":"---------------------"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"* Torrent tracker should be deployed for keeping information about peers."},{"line_number":280,"context_line":"  (There is no special requirements for the  torrent tracker, it would be"},{"line_number":281,"context_line":"  used only for peer announcement. It could be installed on conductor node)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"* Glare service to store torrent files;"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_004787bc","line":280,"range":{"start_line":280,"start_character":2,"end_line":280,"end_character":3},"updated":"2016-12-21 09:52:18.000000000","message":"s/(//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"* Torrent tracker should be deployed for keeping information about peers."},{"line_number":280,"context_line":"  (There is no special requirements for the  torrent tracker, it would be"},{"line_number":281,"context_line":"  used only for peer announcement. It could be installed on conductor node)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"* Glare service to store torrent files;"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_8032b75c","line":281,"range":{"start_line":281,"start_character":70,"end_line":281,"end_character":74},"updated":"2016-12-21 09:52:18.000000000","message":"nodes","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"* Torrent tracker should be deployed for keeping information about peers."},{"line_number":280,"context_line":"  (There is no special requirements for the  torrent tracker, it would be"},{"line_number":281,"context_line":"  used only for peer announcement. It could be installed on conductor node)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"* Glare service to store torrent files;"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_001ea7ba","line":281,"range":{"start_line":281,"start_character":74,"end_line":281,"end_character":75},"updated":"2016-12-21 09:52:18.000000000","message":"s/)//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":280,"context_line":"  (There is no special requirements for the  torrent tracker, it would be"},{"line_number":281,"context_line":"  used only for peer announcement. It could be installed on conductor node)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"* Glare service to store torrent files;"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"* Bootstrap image requires torrent client inside."},{"line_number":286,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_407a5ff2","line":283,"range":{"start_line":283,"start_character":38,"end_line":283,"end_character":39},"updated":"2016-12-21 09:52:18.000000000","message":"s/;//","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"ae2d350ef86fc3e6a933f15b68997569b2b73472","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"* Glare service to store torrent files;"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"* Bootstrap image requires torrent client inside."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"* Additional configuration for Ironic (configuration option"},{"line_number":288,"context_line":"  ``[deploy]enable_torrent_provisioning`` is enabled ``True`` and"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_e06b6b1c","line":285,"range":{"start_line":285,"start_character":2,"end_line":285,"end_character":11},"updated":"2016-12-21 09:52:18.000000000","message":"the bootstrap will require a torrent client","commit_id":"c2d3a9d54ef2a021834a48f1c7cdc8dbf64eb7b1"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"e67f31da04e9e0635929c03de7ee97db4cf384bd","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"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"},{"line_number":8,"context_line":"BitTorrent-based image provisioning"},{"line_number":9,"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/ironic/+bug/1576661"}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5201f7_283f63d7","line":8,"updated":"2017-01-03 11:23:45.000000000","message":"nit: Bittorrent","commit_id":"3e693fbcb8e9f0a31f61bd74b4e35c3e2d0f4a02"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"0209d1ebb4addac8a4b8366d66398c5b1d67dd27","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"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"},{"line_number":8,"context_line":"BitTorrent-based image provisioning"},{"line_number":9,"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/ironic/+bug/1576661"}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5201f7_ec46124e","line":8,"in_reply_to":"ba5201f7_283f63d7","updated":"2017-01-11 16:26:47.000000000","message":"It\u0027s from torrent specification, see first link in references","commit_id":"3e693fbcb8e9f0a31f61bd74b4e35c3e2d0f4a02"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"1b9a8fec03b77d0fd881cde033f433b011db7606","unresolved":false,"context_lines":[{"line_number":55,"context_line":"   |                |   info       |        |         |          |           |"},{"line_number":56,"context_line":"   |                |--get torrent---------\u003e|         |          |           |"},{"line_number":57,"context_line":"   |                |    file      |        |         |          |           |"},{"line_number":58,"context_line":"   |generate torrent|              |        |         |          |           |"},{"line_number":59,"context_line":"   |metadata with---|              |        |         |          |           |"},{"line_number":60,"context_line":"   |webseed url |   |              |        |         |          |           |"},{"line_number":61,"context_line":"   |             --\u003e|              |        |         |          |           |"}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5201f7_dfc5808e","line":58,"updated":"2017-01-04 10:00:06.000000000","message":"This should be done by conductor and passed to \u0027Ironic node1\u0027, isnt it? It is not clear in this flow diagram.","commit_id":"3e693fbcb8e9f0a31f61bd74b4e35c3e2d0f4a02"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"0209d1ebb4addac8a4b8366d66398c5b1d67dd27","unresolved":false,"context_lines":[{"line_number":55,"context_line":"   |                |   info       |        |         |          |           |"},{"line_number":56,"context_line":"   |                |--get torrent---------\u003e|         |          |           |"},{"line_number":57,"context_line":"   |                |    file      |        |         |          |           |"},{"line_number":58,"context_line":"   |generate torrent|              |        |         |          |           |"},{"line_number":59,"context_line":"   |metadata with---|              |        |         |          |           |"},{"line_number":60,"context_line":"   |webseed url |   |              |        |         |          |           |"},{"line_number":61,"context_line":"   |             --\u003e|              |        |         |          |           |"}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5201f7_87af1fe2","line":58,"in_reply_to":"ba5201f7_dfc5808e","updated":"2017-01-11 16:26:47.000000000","message":"Yes, that\u0027s why arrow points to conductor","commit_id":"3e693fbcb8e9f0a31f61bd74b4e35c3e2d0f4a02"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"e67f31da04e9e0635929c03de7ee97db4cf384bd","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"* A mechanism for discovering torrents (tracker, DHT_, LPD_)."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"  In current spect it\u0027s proposed to use the BitTorrent tracker. For example"},{"line_number":95,"context_line":"  qbittorrent (qbittorent-nox_)."},{"line_number":96,"context_line":"  It\u0027s possible to avoid tracker requirement by using BitTorrent extensions"},{"line_number":97,"context_line":"  like LPD_ and DHT_. But this approach has some problems. deployed nodes,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5201f7_eb77159d","line":94,"updated":"2017-01-03 11:23:45.000000000","message":"s/spect/spec/","commit_id":"3e693fbcb8e9f0a31f61bd74b4e35c3e2d0f4a02"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"e67f31da04e9e0635929c03de7ee97db4cf384bd","unresolved":false,"context_lines":[{"line_number":94,"context_line":"  In current spect it\u0027s proposed to use the BitTorrent tracker. For example"},{"line_number":95,"context_line":"  qbittorrent (qbittorent-nox_)."},{"line_number":96,"context_line":"  It\u0027s possible to avoid tracker requirement by using BitTorrent extensions"},{"line_number":97,"context_line":"  like LPD_ and DHT_. But this approach has some problems. deployed nodes,"},{"line_number":98,"context_line":"  which is peers by Ironic have short lifespan. So peers have to discovering"},{"line_number":99,"context_line":"  new nodes at a given time, and other peer may not provide the list, or"},{"line_number":100,"context_line":"  provide only a partial list of peers, which changes during provisioning,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5201f7_ab1c2dc2","line":97,"updated":"2017-01-03 11:23:45.000000000","message":"How about:\n\nThese approaches have some drawbacks.\n\nLPD can suffer from race conditions when peers start sharing at similar times. The peers - the nodes being deployed - have a short lifetime, limited to the duration of deployment. Due to the relatively large discovery interval (5 minutes) recommended by the LPD specification, this issue may persist for the entire duration of deployment.\n\nDHT requires at least one bootstrap router node to be permanently available. This makes it no easier to manage than a tracker.","commit_id":"3e693fbcb8e9f0a31f61bd74b4e35c3e2d0f4a02"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"0209d1ebb4addac8a4b8366d66398c5b1d67dd27","unresolved":false,"context_lines":[{"line_number":94,"context_line":"  In current spect it\u0027s proposed to use the BitTorrent tracker. For example"},{"line_number":95,"context_line":"  qbittorrent (qbittorent-nox_)."},{"line_number":96,"context_line":"  It\u0027s possible to avoid tracker requirement by using BitTorrent extensions"},{"line_number":97,"context_line":"  like LPD_ and DHT_. But this approach has some problems. deployed nodes,"},{"line_number":98,"context_line":"  which is peers by Ironic have short lifespan. So peers have to discovering"},{"line_number":99,"context_line":"  new nodes at a given time, and other peer may not provide the list, or"},{"line_number":100,"context_line":"  provide only a partial list of peers, which changes during provisioning,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5201f7_ac6dea9a","line":97,"in_reply_to":"ba5201f7_ab1c2dc2","updated":"2017-01-11 16:26:47.000000000","message":"Yep, I\u0027ll add this to spec","commit_id":"3e693fbcb8e9f0a31f61bd74b4e35c3e2d0f4a02"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"e67f31da04e9e0635929c03de7ee97db4cf384bd","unresolved":false,"context_lines":[{"line_number":111,"context_line":"  would be best choice here. Operators will create torrent file using standard"},{"line_number":112,"context_line":"  tools and upload it to Glare_ and provide link to it via image property"},{"line_number":113,"context_line":"  ``torrent_file\u003d\u003cglare id\u003e\u0027`` (In case of the standalone mode it\u0027s possible"},{"line_number":114,"context_line":"  to specify a torrent file URL instead). Later on the Ironic Conductor"},{"line_number":115,"context_line":"  fetches image torrent metadata and orders the node being deployed do"},{"line_number":116,"context_line":"  download the image over the BitTorrent protocol."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5201f7_cbeed18a","line":114,"updated":"2017-01-03 11:23:45.000000000","message":"I definitely think this should not be tied to Glare. How about encoding the scheme using something like:\n\nglance://\u003cuuid\u003e\nglare://\u003cuuid\u003e\nhttps://\u003chost\u003e/\u003cpath\u003e","commit_id":"3e693fbcb8e9f0a31f61bd74b4e35c3e2d0f4a02"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"0209d1ebb4addac8a4b8366d66398c5b1d67dd27","unresolved":false,"context_lines":[{"line_number":111,"context_line":"  would be best choice here. Operators will create torrent file using standard"},{"line_number":112,"context_line":"  tools and upload it to Glare_ and provide link to it via image property"},{"line_number":113,"context_line":"  ``torrent_file\u003d\u003cglare id\u003e\u0027`` (In case of the standalone mode it\u0027s possible"},{"line_number":114,"context_line":"  to specify a torrent file URL instead). Later on the Ironic Conductor"},{"line_number":115,"context_line":"  fetches image torrent metadata and orders the node being deployed do"},{"line_number":116,"context_line":"  download the image over the BitTorrent protocol."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5201f7_4c263e69","line":114,"in_reply_to":"ba5201f7_cbeed18a","updated":"2017-01-11 16:26:47.000000000","message":"yeah, we could support all cases","commit_id":"3e693fbcb8e9f0a31f61bd74b4e35c3e2d0f4a02"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"e67f31da04e9e0635929c03de7ee97db4cf384bd","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  tools and upload it to Glare_ and provide link to it via image property"},{"line_number":113,"context_line":"  ``torrent_file\u003d\u003cglare id\u003e\u0027`` (In case of the standalone mode it\u0027s possible"},{"line_number":114,"context_line":"  to specify a torrent file URL instead). Later on the Ironic Conductor"},{"line_number":115,"context_line":"  fetches image torrent metadata and orders the node being deployed do"},{"line_number":116,"context_line":"  download the image over the BitTorrent protocol."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Based on the torrent file, the tracker and webseed_ info (Swift temp url),"}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5201f7_0be9b980","line":115,"updated":"2017-01-03 11:23:45.000000000","message":"s/do/to/","commit_id":"3e693fbcb8e9f0a31f61bd74b4e35c3e2d0f4a02"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"1b9a8fec03b77d0fd881cde033f433b011db7606","unresolved":false,"context_lines":[{"line_number":245,"context_line":"---------------------"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"The user has to specify which images require torrent provisioning. It"},{"line_number":248,"context_line":"could be done by providing an additional image property:"},{"line_number":249,"context_line":"``torrent_file\u003d\u003cglare id\u003e``, this parameter will indicate that torrent"},{"line_number":250,"context_line":"provisioning should be used for this image. If ``torrent_file``"},{"line_number":251,"context_line":"is not provided, the default provisioning method will be used."},{"line_number":252,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5201f7_dfcf407d","line":249,"range":{"start_line":248,"start_character":41,"end_line":249,"end_character":27},"updated":"2017-01-04 10:00:06.000000000","message":"Would it be better to differentiate based on additional node/instance_info field instead of image property so that same image could be used for non-torrent based deploy as well. Also it becomes more explicit.","commit_id":"3e693fbcb8e9f0a31f61bd74b4e35c3e2d0f4a02"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"0209d1ebb4addac8a4b8366d66398c5b1d67dd27","unresolved":false,"context_lines":[{"line_number":245,"context_line":"---------------------"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"The user has to specify which images require torrent provisioning. It"},{"line_number":248,"context_line":"could be done by providing an additional image property:"},{"line_number":249,"context_line":"``torrent_file\u003d\u003cglare id\u003e``, this parameter will indicate that torrent"},{"line_number":250,"context_line":"provisioning should be used for this image. If ``torrent_file``"},{"line_number":251,"context_line":"is not provided, the default provisioning method will be used."},{"line_number":252,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5201f7_e7fe2bad","line":249,"range":{"start_line":248,"start_character":41,"end_line":249,"end_character":27},"in_reply_to":"ba5201f7_dfcf407d","updated":"2017-01-11 16:26:47.000000000","message":"I guess we could add one more option to driver info for disable torrent-provisioning for specific nodes.","commit_id":"3e693fbcb8e9f0a31f61bd74b4e35c3e2d0f4a02"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"e67f31da04e9e0635929c03de7ee97db4cf384bd","unresolved":false,"context_lines":[{"line_number":290,"context_line":"* Glare service to store torrent files"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"* The bootstrap will require a torrent client image requires torrent"},{"line_number":293,"context_line":"  client inside."},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"* Additional configuration for Ironic (configuration option"},{"line_number":296,"context_line":"  ``[deploy]enable_torrent_provisioning`` is enabled ``True`` and"}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba5201f7_4efaefbe","line":293,"updated":"2017-01-03 11:23:45.000000000","message":"The bootstrap image will require a torrent client.","commit_id":"3e693fbcb8e9f0a31f61bd74b4e35c3e2d0f4a02"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"93893058fc47a87611eade5b042e9d3f01fcdc90","unresolved":false,"context_lines":[{"line_number":65,"context_line":"   |                |--------------------------------\u003e|          |           |"},{"line_number":66,"context_line":"   |                |-------------------------------------------------------\u003e|"},{"line_number":67,"context_line":"   |                |              |        |         |    client announce   |"},{"line_number":68,"context_line":"   |                |              |        |         |\u003c--------\u003e|\u003c---------\u003e|"},{"line_number":69,"context_line":"   |                |              |        |         |          |           |"},{"line_number":70,"context_line":"   |                |              |--download image-\u003e|          |           |"},{"line_number":71,"context_line":"   |                |              |---------------download image-----------\u003e|"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_6320eaf8","line":68,"range":{"start_line":68,"start_character":53,"end_line":68,"end_character":78},"updated":"2017-01-12 09:52:01.000000000","message":"since we don\u0027t seem to require conductors to talk to the tracker, I think the tracking mechanism shouldn\u0027t be prescribed but recommended.","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"c01077e7ab2a2555736054c36fd7195babe29607","unresolved":false,"context_lines":[{"line_number":65,"context_line":"   |                |--------------------------------\u003e|          |           |"},{"line_number":66,"context_line":"   |                |-------------------------------------------------------\u003e|"},{"line_number":67,"context_line":"   |                |              |        |         |    client announce   |"},{"line_number":68,"context_line":"   |                |              |        |         |\u003c--------\u003e|\u003c---------\u003e|"},{"line_number":69,"context_line":"   |                |              |        |         |          |           |"},{"line_number":70,"context_line":"   |                |              |--download image-\u003e|          |           |"},{"line_number":71,"context_line":"   |                |              |---------------download image-----------\u003e|"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da36d5c6_b7a9f87d","line":68,"range":{"start_line":68,"start_character":53,"end_line":68,"end_character":78},"in_reply_to":"1a430d35_bc5dfb7a","updated":"2017-02-21 09:48:11.000000000","message":"I don\u0027t want to provide \u0027some\u0027 tracker info and complicate configuration with complex data structure, do you have examples? Maybe would be better to create torrent group with more options.\n\nAlso there is a way to provide custom options to IPA via pxe_params.\n\nLets wait other opinions.","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"d670c72074be99d8b59dd6bc1ce204fd556d248f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"   |                |--------------------------------\u003e|          |           |"},{"line_number":66,"context_line":"   |                |-------------------------------------------------------\u003e|"},{"line_number":67,"context_line":"   |                |              |        |         |    client announce   |"},{"line_number":68,"context_line":"   |                |              |        |         |\u003c--------\u003e|\u003c---------\u003e|"},{"line_number":69,"context_line":"   |                |              |        |         |          |           |"},{"line_number":70,"context_line":"   |                |              |--download image-\u003e|          |           |"},{"line_number":71,"context_line":"   |                |              |---------------download image-----------\u003e|"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a430d35_bc5dfb7a","line":68,"range":{"start_line":68,"start_character":53,"end_line":68,"end_character":78},"in_reply_to":"9a57fde8_0c3bc6ec","updated":"2017-02-07 15:12:51.000000000","message":"What I meant is rather for this to work, the conductor talking to the torrent tracker isn\u0027t necessary. Therefore the trackers can be opaque to the conductor and the operator can chose what they prefer; ironic should just provide the way to propagate some tracking configuration information to the IPA (like the tracker URL or some custom blob in case of a tracker-less solution).","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"113d1d0cb5d695fb042a548f662f05cd98154690","unresolved":false,"context_lines":[{"line_number":65,"context_line":"   |                |--------------------------------\u003e|          |           |"},{"line_number":66,"context_line":"   |                |-------------------------------------------------------\u003e|"},{"line_number":67,"context_line":"   |                |              |        |         |    client announce   |"},{"line_number":68,"context_line":"   |                |              |        |         |\u003c--------\u003e|\u003c---------\u003e|"},{"line_number":69,"context_line":"   |                |              |        |         |          |           |"},{"line_number":70,"context_line":"   |                |              |--download image-\u003e|          |           |"},{"line_number":71,"context_line":"   |                |              |---------------download image-----------\u003e|"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_0c3bc6ec","line":68,"range":{"start_line":68,"start_character":53,"end_line":68,"end_character":78},"in_reply_to":"9a57fde8_6320eaf8","updated":"2017-01-12 13:26:12.000000000","message":"It will not work w/o tracker, I hope we will test this on CI","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"113d1d0cb5d695fb042a548f662f05cd98154690","unresolved":false,"context_lines":[{"line_number":90,"context_line":"  tracker a number times during the course of a download to update its peers"},{"line_number":91,"context_line":"  information."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"* A mechanism for discovering torrents (tracker, DHT_, LPD_)."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"  In current spec it\u0027s proposed to use the BitTorrent tracker. For example"},{"line_number":96,"context_line":"  qbittorrent (qbittorent-nox_)."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_42caf750","line":93,"range":{"start_line":93,"start_character":30,"end_line":93,"end_character":38},"updated":"2017-01-12 13:26:12.000000000","message":"peers","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"93893058fc47a87611eade5b042e9d3f01fcdc90","unresolved":false,"context_lines":[{"line_number":101,"context_line":"  times. The peers - the nodes being deployed - have a short lifetime,"},{"line_number":102,"context_line":"  limited to the duration of deployment. Due to the relatively large discovery"},{"line_number":103,"context_line":"  interval (5 minutes) recommended by the LPD specification_, this issue may"},{"line_number":104,"context_line":"  persist for the entire duration of deployment. All popular BitTorrent"},{"line_number":105,"context_line":"  clients don\u0027t allow to configure discovery interval. Also sending LSD"},{"line_number":106,"context_line":"  announce very often on large networks may cause multicast storms."},{"line_number":107,"context_line":"  It\u0027s also possible that multicast could be disabled on deployment network"},{"line_number":108,"context_line":"  due security reasons."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_355b7856","line":105,"range":{"start_line":104,"start_character":49,"end_line":105,"end_character":53},"updated":"2017-01-12 09:52:01.000000000","message":"One could select a client that supports this configuration. Shouldn\u0027t be a reason to exclude LPD","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"113d1d0cb5d695fb042a548f662f05cd98154690","unresolved":false,"context_lines":[{"line_number":101,"context_line":"  times. The peers - the nodes being deployed - have a short lifetime,"},{"line_number":102,"context_line":"  limited to the duration of deployment. Due to the relatively large discovery"},{"line_number":103,"context_line":"  interval (5 minutes) recommended by the LPD specification_, this issue may"},{"line_number":104,"context_line":"  persist for the entire duration of deployment. All popular BitTorrent"},{"line_number":105,"context_line":"  clients don\u0027t allow to configure discovery interval. Also sending LSD"},{"line_number":106,"context_line":"  announce very often on large networks may cause multicast storms."},{"line_number":107,"context_line":"  It\u0027s also possible that multicast could be disabled on deployment network"},{"line_number":108,"context_line":"  due security reasons."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_4cb06e8c","line":105,"range":{"start_line":104,"start_character":49,"end_line":105,"end_character":53},"in_reply_to":"9a57fde8_355b7856","updated":"2017-01-12 13:26:12.000000000","message":"I didn\u0027t find any client that allow this configuration. I think they just follow torrent specification, which recommend 5 min. Yes, we could implement our own client, but what the benefit? I see only drawbacks. \n\nWhat do you mean \"One could select a client that supports this configuration\"? it would be hardcoded, how admin could select client?\n\n\"Shouldn\u0027t be a reason to exclude LPD\"\nI\u0027ve specified few reasons, using LPD is better for long live seeds. It brings only more problems w/o real benefit in deploy case.","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"93893058fc47a87611eade5b042e9d3f01fcdc90","unresolved":false,"context_lines":[{"line_number":102,"context_line":"  limited to the duration of deployment. Due to the relatively large discovery"},{"line_number":103,"context_line":"  interval (5 minutes) recommended by the LPD specification_, this issue may"},{"line_number":104,"context_line":"  persist for the entire duration of deployment. All popular BitTorrent"},{"line_number":105,"context_line":"  clients don\u0027t allow to configure discovery interval. Also sending LSD"},{"line_number":106,"context_line":"  announce very often on large networks may cause multicast storms."},{"line_number":107,"context_line":"  It\u0027s also possible that multicast could be disabled on deployment network"},{"line_number":108,"context_line":"  due security reasons."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_188949cb","line":106,"range":{"start_line":105,"start_character":55,"end_line":106,"end_character":66},"updated":"2017-01-12 09:52:01.000000000","message":"Unless the network infrastructure is \"smart\" enough not to flood the packets [1]\n\n[1] https://en.wikipedia.org/wiki/IP_multicast#Technical_description","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"113d1d0cb5d695fb042a548f662f05cd98154690","unresolved":false,"context_lines":[{"line_number":102,"context_line":"  limited to the duration of deployment. Due to the relatively large discovery"},{"line_number":103,"context_line":"  interval (5 minutes) recommended by the LPD specification_, this issue may"},{"line_number":104,"context_line":"  persist for the entire duration of deployment. All popular BitTorrent"},{"line_number":105,"context_line":"  clients don\u0027t allow to configure discovery interval. Also sending LSD"},{"line_number":106,"context_line":"  announce very often on large networks may cause multicast storms."},{"line_number":107,"context_line":"  It\u0027s also possible that multicast could be disabled on deployment network"},{"line_number":108,"context_line":"  due security reasons."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_a2ef23af","line":106,"range":{"start_line":105,"start_character":55,"end_line":106,"end_character":66},"in_reply_to":"9a57fde8_188949cb","updated":"2017-01-12 13:26:12.000000000","message":"You need somehow to discover nodes, and send LPD announces anyway. Also you have some interval before nodes startup.","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"93893058fc47a87611eade5b042e9d3f01fcdc90","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  DHT_ requires at least one node (a node is a client/server listening on"},{"line_number":111,"context_line":"  a UDP port implementing the distributed hash table protocol) to be"},{"line_number":112,"context_line":"  permanently available. It could be running on conductor host. The protocol"},{"line_number":113,"context_line":"  is based on Kademila_ and is implemented over UDP. So this makes it no"},{"line_number":114,"context_line":"  easier to manage than a tracker."},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_d50b0c7c","line":112,"range":{"start_line":112,"start_character":2,"end_line":112,"end_character":23},"updated":"2017-01-12 09:52:01.000000000","message":"is this the node that keeps the DHT itself or a node that shares the content that is required to be available permanently?  Does it have to be the same node all the time?","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"93893058fc47a87611eade5b042e9d3f01fcdc90","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  DHT_ requires at least one node (a node is a client/server listening on"},{"line_number":111,"context_line":"  a UDP port implementing the distributed hash table protocol) to be"},{"line_number":112,"context_line":"  permanently available. It could be running on conductor host. The protocol"},{"line_number":113,"context_line":"  is based on Kademila_ and is implemented over UDP. So this makes it no"},{"line_number":114,"context_line":"  easier to manage than a tracker."},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_38228dba","line":112,"range":{"start_line":112,"start_character":45,"end_line":112,"end_character":62},"updated":"2017-01-12 09:52:01.000000000","message":"nit: on the conductor","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"113d1d0cb5d695fb042a548f662f05cd98154690","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  DHT_ requires at least one node (a node is a client/server listening on"},{"line_number":111,"context_line":"  a UDP port implementing the distributed hash table protocol) to be"},{"line_number":112,"context_line":"  permanently available. It could be running on conductor host. The protocol"},{"line_number":113,"context_line":"  is based on Kademila_ and is implemented over UDP. So this makes it no"},{"line_number":114,"context_line":"  easier to manage than a tracker."},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_a22c83ac","line":112,"range":{"start_line":112,"start_character":2,"end_line":112,"end_character":23},"in_reply_to":"9a57fde8_d50b0c7c","updated":"2017-01-12 13:26:12.000000000","message":"We are talking about discovery here, it\u0027s the node that stores routing table, so we need at least one node which should be always available, otherwise there are no way to guarantee discovery.","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"93893058fc47a87611eade5b042e9d3f01fcdc90","unresolved":false,"context_lines":[{"line_number":145,"context_line":"``torrent_trackers``. This option contains multiple trackers. Multiple URLs"},{"line_number":146,"context_line":"can be tracked to achieve redundancy of the torrent swarm::"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    torrent_trackers \u003d http://\u003chost1\u003e:\u003cport1\u003e/announce,"},{"line_number":149,"context_line":"                       http://\u003chost2\u003e:\u003cport1\u003e/announce"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"The redundancy requirement narrows the client choice down to those supporting"},{"line_number":152,"context_line":"the multi-tracker_ metadata extension."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_a3d2d232","line":149,"range":{"start_line":148,"start_character":4,"end_line":149,"end_character":54},"updated":"2017-01-12 09:52:01.000000000","message":"in case someone found LPD as a reasonable option, would it be possible to reuse the client for that? Would it make sense to support it through  torrent_trackers\u003d\u0027lpd://\u003cmulticast_group\u003e\u0027? Could we perhaps use some torrent_client_config blob for passing any configuration options?","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"c01077e7ab2a2555736054c36fd7195babe29607","unresolved":false,"context_lines":[{"line_number":145,"context_line":"``torrent_trackers``. This option contains multiple trackers. Multiple URLs"},{"line_number":146,"context_line":"can be tracked to achieve redundancy of the torrent swarm::"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    torrent_trackers \u003d http://\u003chost1\u003e:\u003cport1\u003e/announce,"},{"line_number":149,"context_line":"                       http://\u003chost2\u003e:\u003cport1\u003e/announce"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"The redundancy requirement narrows the client choice down to those supporting"},{"line_number":152,"context_line":"the multi-tracker_ metadata extension."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da36d5c6_da74d19d","line":149,"range":{"start_line":148,"start_character":4,"end_line":149,"end_character":54},"in_reply_to":"1a430d35_0796bc92","updated":"2017-02-21 09:48:11.000000000","message":"imo complex dict is not good idea, it would only complicate configuration. We could always add new option if needed.\n\nThere are a lot of options which are not needed if you don\u0027t use certain feature, imo it\u0027s fine.","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"113d1d0cb5d695fb042a548f662f05cd98154690","unresolved":false,"context_lines":[{"line_number":145,"context_line":"``torrent_trackers``. This option contains multiple trackers. Multiple URLs"},{"line_number":146,"context_line":"can be tracked to achieve redundancy of the torrent swarm::"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    torrent_trackers \u003d http://\u003chost1\u003e:\u003cport1\u003e/announce,"},{"line_number":149,"context_line":"                       http://\u003chost2\u003e:\u003cport1\u003e/announce"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"The redundancy requirement narrows the client choice down to those supporting"},{"line_number":152,"context_line":"the multi-tracker_ metadata extension."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_e2304ba1","line":149,"range":{"start_line":148,"start_character":4,"end_line":149,"end_character":54},"in_reply_to":"9a57fde8_a3d2d232","updated":"2017-01-12 13:26:12.000000000","message":"if admins want to use lpd, they just need to enable lpd on ramdisk and optionally specify interface. It would be not ironic configuration option.\nWhat problem are you trying to solve with LPD?","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"d670c72074be99d8b59dd6bc1ce204fd556d248f","unresolved":false,"context_lines":[{"line_number":145,"context_line":"``torrent_trackers``. This option contains multiple trackers. Multiple URLs"},{"line_number":146,"context_line":"can be tracked to achieve redundancy of the torrent swarm::"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    torrent_trackers \u003d http://\u003chost1\u003e:\u003cport1\u003e/announce,"},{"line_number":149,"context_line":"                       http://\u003chost2\u003e:\u003cport1\u003e/announce"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"The redundancy requirement narrows the client choice down to those supporting"},{"line_number":152,"context_line":"the multi-tracker_ metadata extension."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a430d35_0796bc92","line":149,"range":{"start_line":148,"start_character":4,"end_line":149,"end_character":54},"in_reply_to":"9a57fde8_e2304ba1","updated":"2017-02-07 15:12:51.000000000","message":"The torrent_trackers field is not necessary because conductor doesn\u0027t need to talk to the a tracker. Instead it could be an opaque field such as tracking_config where the operator puts what they need for their tracker(-less) configuration to work. It needn\u0027t always be a list of URLs","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"93893058fc47a87611eade5b042e9d3f01fcdc90","unresolved":false,"context_lines":[{"line_number":190,"context_line":"  of seeding the images, which can be avoided, as the image can be seeded"},{"line_number":191,"context_line":"  directly from the object store via a temporary URL."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"* Using DHT_ and LPD_ instead of tracker, as mentioned in proposed section."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"* Create a new service which will perform torrent provisioning, like Glance"},{"line_number":196,"context_line":"  in previous suggestion."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_e3c93aae","line":193,"range":{"start_line":193,"start_character":13,"end_line":193,"end_character":16},"updated":"2017-01-12 09:52:01.000000000","message":"s/and/or, missing PEx?","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"113d1d0cb5d695fb042a548f662f05cd98154690","unresolved":false,"context_lines":[{"line_number":190,"context_line":"  of seeding the images, which can be avoided, as the image can be seeded"},{"line_number":191,"context_line":"  directly from the object store via a temporary URL."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"* Using DHT_ and LPD_ instead of tracker, as mentioned in proposed section."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"* Create a new service which will perform torrent provisioning, like Glance"},{"line_number":196,"context_line":"  in previous suggestion."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_076d6104","line":193,"range":{"start_line":193,"start_character":13,"end_line":193,"end_character":16},"in_reply_to":"9a57fde8_e3c93aae","updated":"2017-01-12 13:26:12.000000000","message":"I\u0027ll add PEX, but it isn\u0027t alternative","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"93893058fc47a87611eade5b042e9d3f01fcdc90","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"The user has to specify which images require torrent provisioning. It"},{"line_number":265,"context_line":"could be done by providing an additional image property:"},{"line_number":266,"context_line":"``torrent_file\u003d\u003cglare id\u003e``, this parameter will indicate that torrent"},{"line_number":267,"context_line":"provisioning should be used for this image. If ``torrent_file``"},{"line_number":268,"context_line":"is not provided, the default provisioning method will be used."},{"line_number":269,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a57fde8_838dce7d","line":266,"range":{"start_line":266,"start_character":16,"end_line":266,"end_character":24},"updated":"2017-01-12 09:52:01.000000000","message":"update to support different URI schemes as above","commit_id":"e9c696b2f1f0014c33edd4ad215447f491ee4bb6"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"710c762aeddf6925c2de10e97a03972c5730a6fa","unresolved":false,"context_lines":[{"line_number":100,"context_line":"  LPD_ can suffer from race conditions, when peers start sharing at similar"},{"line_number":101,"context_line":"  times. The peers - the nodes being deployed - have a short lifetime,"},{"line_number":102,"context_line":"  limited to the duration of deployment. Due to the relatively large discovery"},{"line_number":103,"context_line":"  interval (5 minutes) recommended by the LPD specification_, this issue may"},{"line_number":104,"context_line":"  persist for the entire duration of deployment. So BitTorrent clients don\u0027t"},{"line_number":105,"context_line":"  allow to configure discovery interval due specification_ recommendation."},{"line_number":106,"context_line":"  Also sending LSD announce very often on large networks may cause multicast"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_a27a3675","line":103,"range":{"start_line":103,"start_character":42,"end_line":103,"end_character":61},"updated":"2017-02-07 15:12:42.000000000","message":"nit: `LPD specification`_ or LPD_ specification","commit_id":"2f16e1f4c8e055b1bc9eb9d6d635d48f457b8e1e"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"710c762aeddf6925c2de10e97a03972c5730a6fa","unresolved":false,"context_lines":[{"line_number":102,"context_line":"  limited to the duration of deployment. Due to the relatively large discovery"},{"line_number":103,"context_line":"  interval (5 minutes) recommended by the LPD specification_, this issue may"},{"line_number":104,"context_line":"  persist for the entire duration of deployment. So BitTorrent clients don\u0027t"},{"line_number":105,"context_line":"  allow to configure discovery interval due specification_ recommendation."},{"line_number":106,"context_line":"  Also sending LSD announce very often on large networks may cause multicast"},{"line_number":107,"context_line":"  storms."},{"line_number":108,"context_line":"  It\u0027s also possible that multicast could be disabled on deployment network"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_e24d1e3f","line":105,"range":{"start_line":105,"start_character":44,"end_line":105,"end_character":58},"updated":"2017-02-07 15:12:42.000000000","message":"nit: ditto","commit_id":"2f16e1f4c8e055b1bc9eb9d6d635d48f457b8e1e"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"710c762aeddf6925c2de10e97a03972c5730a6fa","unresolved":false,"context_lines":[{"line_number":194,"context_line":"  performance issue."},{"line_number":195,"context_line":"  The disadvantage of this approach is that the conductor does the bulk work"},{"line_number":196,"context_line":"  of seeding the images, which can be avoided, as the image can be seeded"},{"line_number":197,"context_line":"  directly from the object store via a temporary URL."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"* Using DHT_ and LPD_ instead of tracker, as mentioned in proposed section."},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_67df800d","line":197,"updated":"2017-02-07 15:12:42.000000000","message":"Also the conductors would end up seeding all the images for ever unless some image seeding retention policy is adopted.","commit_id":"2f16e1f4c8e055b1bc9eb9d6d635d48f457b8e1e"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"710c762aeddf6925c2de10e97a03972c5730a6fa","unresolved":false,"context_lines":[{"line_number":298,"context_line":"* BM nodes will do additional network calls to torrent tracker and exchange"},{"line_number":299,"context_line":"  meta information with peers."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"* All above impacts are insignificant in comparison with the  benefit shorter"},{"line_number":302,"context_line":"  deployment time."},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_c70f5486","line":301,"range":{"start_line":301,"start_character":58,"end_line":301,"end_character":64},"updated":"2017-02-07 15:12:42.000000000","message":"nit: double space","commit_id":"2f16e1f4c8e055b1bc9eb9d6d635d48f457b8e1e"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"710c762aeddf6925c2de10e97a03972c5730a6fa","unresolved":false,"context_lines":[{"line_number":298,"context_line":"* BM nodes will do additional network calls to torrent tracker and exchange"},{"line_number":299,"context_line":"  meta information with peers."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"* All above impacts are insignificant in comparison with the  benefit shorter"},{"line_number":302,"context_line":"  deployment time."},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_e704504b","line":301,"range":{"start_line":301,"start_character":68,"end_line":301,"end_character":73},"updated":"2017-02-07 15:12:42.000000000","message":"nit: of the shorter deployment time and of the control plane resources spared.","commit_id":"2f16e1f4c8e055b1bc9eb9d6d635d48f457b8e1e"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"710c762aeddf6925c2de10e97a03972c5730a6fa","unresolved":false,"context_lines":[{"line_number":315,"context_line":"* The bootstrap image will require a torrent client."},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"* Additional configuration for Ironic (configuration option"},{"line_number":318,"context_line":"  ``[deploy]enable_torrent_provisioning`` is enabled ``True`` and"},{"line_number":319,"context_line":"  ``[deploy]torrent_trackers`` is provided)."},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"* Setting driver_info option ``use_torrent_provisioning`` to ``False`` allow"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_0725dcbf","line":318,"range":{"start_line":318,"start_character":45,"end_line":318,"end_character":52},"updated":"2017-02-07 15:12:42.000000000","message":"nit: s/enabled//","commit_id":"2f16e1f4c8e055b1bc9eb9d6d635d48f457b8e1e"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"710c762aeddf6925c2de10e97a03972c5730a6fa","unresolved":false,"context_lines":[{"line_number":318,"context_line":"  ``[deploy]enable_torrent_provisioning`` is enabled ``True`` and"},{"line_number":319,"context_line":"  ``[deploy]torrent_trackers`` is provided)."},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"* Setting driver_info option ``use_torrent_provisioning`` to ``False`` allow"},{"line_number":322,"context_line":"  to disable BitTorrent provisioning for specific ironic node."},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_27057813","line":321,"range":{"start_line":321,"start_character":9,"end_line":321,"end_character":22},"updated":"2017-02-07 15:12:42.000000000","message":"nit: ``driver_info``","commit_id":"2f16e1f4c8e055b1bc9eb9d6d635d48f457b8e1e"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"01f57b93e7e873d98d0ab3f811eecd59b5d18151","unresolved":false,"context_lines":[{"line_number":41,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Simultaneously provisioning the same image to multiple instances can be more"},{"line_number":44,"context_line":"efficient by sharing the image data between instances."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"This change proposes to add support for the BitTorrent protocol."},{"line_number":47,"context_line":"The proposed design illustrated as a sequence diagram::"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da36d5c6_ba1b981a","line":44,"range":{"start_line":44,"start_character":44,"end_line":44,"end_character":53},"updated":"2017-02-21 12:47:42.000000000","message":"s/between instances/between deploy agents","commit_id":"2a584852c466141d59a681ca3a4e036059318624"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f7a9f0c8713f6604515cbe14359ad8cf53a71f9e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"   |                |   info       |        |         |          |           |"},{"line_number":56,"context_line":"   |                |--get torrent---------\u003e|         |          |           |"},{"line_number":57,"context_line":"   |                |    file      |        |         |          |           |"},{"line_number":58,"context_line":"   |generate torrent|              |        |         |          |           |"},{"line_number":59,"context_line":"   |metadata with---|              |        |         |          |           |"},{"line_number":60,"context_line":"   |webseed url |   |              |        |         |          |           |"},{"line_number":61,"context_line":"   |             --\u003e|              |        |         |          |           |"},{"line_number":62,"context_line":"   |      ...       |     ...      |        |         |          |           |"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da36d5c6_cf921f9f","line":59,"range":{"start_line":58,"start_character":4,"end_line":59,"end_character":12},"updated":"2017-02-22 14:53:38.000000000","message":"AFAIK this metadata is part of torrent file and should be generated once.","commit_id":"2a584852c466141d59a681ca3a4e036059318624"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"01f57b93e7e873d98d0ab3f811eecd59b5d18151","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  from BitTorrent clients. The requests include metrics from clients that"},{"line_number":119,"context_line":"  help the tracker keep overall statistics about the torrent. The response"},{"line_number":120,"context_line":"  includes a peer list that helps the client participate in the torrent swarm."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* A mechanism for generating and managing torrent files."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"  Torrent files contain the URL of the torrent tracker, the block size of"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da36d5c6_fab6f0da","line":121,"updated":"2017-02-21 12:47:42.000000000","message":"Please describe an example of HA mechanism for BitTorrent tracker. If one of conductors dies, we can continue to use cluster. How about BitTorrent tracker?","commit_id":"2a584852c466141d59a681ca3a4e036059318624"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"92f7310672acaffa0232347f317d2eff39ad1554","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  from BitTorrent clients. The requests include metrics from clients that"},{"line_number":119,"context_line":"  help the tracker keep overall statistics about the torrent. The response"},{"line_number":120,"context_line":"  includes a peer list that helps the client participate in the torrent swarm."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* A mechanism for generating and managing torrent files."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"  Torrent files contain the URL of the torrent tracker, the block size of"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da36d5c6_4100c801","line":121,"in_reply_to":"da36d5c6_7d275a12","updated":"2017-02-22 13:29:19.000000000","message":"Thanks for clarification.","commit_id":"2a584852c466141d59a681ca3a4e036059318624"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"cb31de5104c8821417336119b38b5c0d659e29fc","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  from BitTorrent clients. The requests include metrics from clients that"},{"line_number":119,"context_line":"  help the tracker keep overall statistics about the torrent. The response"},{"line_number":120,"context_line":"  includes a peer list that helps the client participate in the torrent swarm."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* A mechanism for generating and managing torrent files."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"  Torrent files contain the URL of the torrent tracker, the block size of"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da36d5c6_7d275a12","line":121,"in_reply_to":"da36d5c6_fab6f0da","updated":"2017-02-21 13:24:39.000000000","message":"We could use multiple trackers, each node will announce itself to all trackers, line 144\n\nI\u0027ll mention about HA explicitly, thanks","commit_id":"2a584852c466141d59a681ca3a4e036059318624"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f7a9f0c8713f6604515cbe14359ad8cf53a71f9e","unresolved":false,"context_lines":[{"line_number":129,"context_line":"  So the storage for torrent files is required, Artifact Repository (Glare_)"},{"line_number":130,"context_line":"  would be best choice here. Operators will create torrent file using standard"},{"line_number":131,"context_line":"  tools and upload it to Glare_ and provide link to it via image property"},{"line_number":132,"context_line":"  ``torrent_file\u003d\u003cglare id\u003e\u0027`` (it\u0027s possible to support glance UUIDs and http"},{"line_number":133,"context_line":"  URLs as well, URI schemes could be used to distinguish torrent file source,"},{"line_number":134,"context_line":"  like ``glare://uuid``, ``glance://uuid``, ``http://path/``). Later on the"},{"line_number":135,"context_line":"  Ironic Conductor fetches image torrent metadata and orders the node being"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da36d5c6_0fd8b71c","line":132,"updated":"2017-02-22 14:53:38.000000000","message":"Ironic supports also direct http links for image source. Please provide information where torrent files will be placed in this case. Or this feature will work only with glance?","commit_id":"2a584852c466141d59a681ca3a4e036059318624"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f7a9f0c8713f6604515cbe14359ad8cf53a71f9e","unresolved":false,"context_lines":[{"line_number":135,"context_line":"  Ironic Conductor fetches image torrent metadata and orders the node being"},{"line_number":136,"context_line":"  deployed to download the image over the BitTorrent protocol."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Based on the torrent file, the tracker and webseed_ info (Swift temp url),"},{"line_number":139,"context_line":"provided by the Ironic Conductor, the nodes being deployed generate torrent"},{"line_number":140,"context_line":"metadata. When another node boots, it uses this metadata to retrieve the"},{"line_number":141,"context_line":"torrent file for the BitTorrent client. The deploying node client in turn"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da36d5c6_4fc0efe0","line":138,"range":{"start_line":138,"start_character":58,"end_line":138,"end_character":72},"updated":"2017-02-22 14:53:38.000000000","message":"Image source can be also direct http(s) link.","commit_id":"2a584852c466141d59a681ca3a4e036059318624"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f7a9f0c8713f6604515cbe14359ad8cf53a71f9e","unresolved":false,"context_lines":[{"line_number":152,"context_line":"The redundancy requirement narrows the client choice down to those supporting"},{"line_number":153,"context_line":"the multi-tracker_ metadata extension."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"To use BitTorrent as the default provisioning mechanism, the Glance image"},{"line_number":156,"context_line":"property ``torrent_file`` should be specified, and Ironic configuration"},{"line_number":157,"context_line":"option ``[deploy]enable_torrent_provisioning`` should be enabled."},{"line_number":158,"context_line":"If ``[deploy]enable_torrent_provisioning`` set to ``False``,"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da36d5c6_0aa7c54f","line":155,"range":{"start_line":155,"start_character":0,"end_line":155,"end_character":55},"updated":"2017-02-22 14:53:38.000000000","message":"This is driver specific. For example I use 3-party deploy interface for all of my nodes, and this interface does not support torrent.","commit_id":"2a584852c466141d59a681ca3a4e036059318624"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f7a9f0c8713f6604515cbe14359ad8cf53a71f9e","unresolved":false,"context_lines":[{"line_number":157,"context_line":"option ``[deploy]enable_torrent_provisioning`` should be enabled."},{"line_number":158,"context_line":"If ``[deploy]enable_torrent_provisioning`` set to ``False``,"},{"line_number":159,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":160,"context_line":"For disabling BitTorrent provisioning for specific nodes, new driver info"},{"line_number":161,"context_line":"option will be added ``use_torrent_provisioning: False``"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"One of the shortcomings of the proposed approach is the low peer share ratio"},{"line_number":164,"context_line":"due to node (peer) short lifespan. Having finished downloading an image, the"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da36d5c6_aadeb96a","line":161,"range":{"start_line":160,"start_character":0,"end_line":161,"end_character":56},"updated":"2017-02-22 14:53:38.000000000","message":"I\u0027m not sure that this per-node option is needed. Please provide use case example. If deploy interface and ramdisk combination for some nodes does not support torrent they should use image url for compatibility (will be good mention this in the spec). Ironic conductor service does not know is torrent supported by deploy interface on node or not.","commit_id":"2a584852c466141d59a681ca3a4e036059318624"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5987f9813345f2f12defcc3980397ac2b1bde0c3","unresolved":false,"context_lines":[{"line_number":157,"context_line":"option ``[deploy]enable_torrent_provisioning`` should be enabled."},{"line_number":158,"context_line":"If ``[deploy]enable_torrent_provisioning`` set to ``False``,"},{"line_number":159,"context_line":"``torrent_file`` will be ignored, and image will be downloaded via HTTP."},{"line_number":160,"context_line":"For disabling BitTorrent provisioning for specific nodes, new driver info"},{"line_number":161,"context_line":"option will be added ``use_torrent_provisioning: False``"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"One of the shortcomings of the proposed approach is the low peer share ratio"},{"line_number":164,"context_line":"due to node (peer) short lifespan. Having finished downloading an image, the"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da36d5c6_b5fa9ebb","line":161,"range":{"start_line":160,"start_character":0,"end_line":161,"end_character":56},"in_reply_to":"da36d5c6_aadeb96a","updated":"2017-02-22 14:58:33.000000000","message":"More correctly: if deploy interface does not support torrent provisioning it should use own mechanism, torrent config options will be ignored.","commit_id":"2a584852c466141d59a681ca3a4e036059318624"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"92f7310672acaffa0232347f317d2eff39ad1554","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"* Additional configuration for Ironic (configuration option"},{"line_number":319,"context_line":"  ``[deploy]enable_torrent_provisioning`` is enabled ``True`` and"},{"line_number":320,"context_line":"  ``[deploy]torrent_trackers`` is provided)."},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"* Setting ``driver_info`` option ``use_torrent_provisioning`` to ``False``"},{"line_number":323,"context_line":"  allow to disable BitTorrent provisioning for specific ironic node."}],"source_content_type":"text/x-rst","patch_set":12,"id":"da36d5c6_61786c90","line":320,"updated":"2017-02-22 13:29:19.000000000","message":"Maybe makes sense add this option(s) to new separate group?","commit_id":"2a584852c466141d59a681ca3a4e036059318624"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"f80863934c05eb091410d0bc40c68dc2de93effd","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"* Additional configuration for Ironic (configuration option"},{"line_number":319,"context_line":"  ``[deploy]enable_torrent_provisioning`` is enabled ``True`` and"},{"line_number":320,"context_line":"  ``[deploy]torrent_trackers`` is provided)."},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"* Setting ``driver_info`` option ``use_torrent_provisioning`` to ``False``"},{"line_number":323,"context_line":"  allow to disable BitTorrent provisioning for specific ironic node."}],"source_content_type":"text/x-rst","patch_set":12,"id":"da36d5c6_634d3ec4","line":320,"in_reply_to":"da36d5c6_61786c90","updated":"2017-03-01 17:47:06.000000000","message":"I think it would make sense when we have more than 1 option","commit_id":"2a584852c466141d59a681ca3a4e036059318624"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"92d76e16ac8c1bdd4f8fbf4094005505df859bfd","unresolved":false,"context_lines":[{"line_number":341,"context_line":"Work Items"},{"line_number":342,"context_line":"----------"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"* Implement BitTorrent provisioning in deploy drivers;"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"* Implement new functionality on agent ramdisk side;"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"da36d5c6_7545866e","line":344,"range":{"start_line":344,"start_character":39,"end_line":344,"end_character":53},"updated":"2017-02-22 15:06:40.000000000","message":"Torrent provisioning will not work with iSCSI deploy.","commit_id":"2a584852c466141d59a681ca3a4e036059318624"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b060aea1bd3675e8e1912e72a913b3c26d6900da","unresolved":false,"context_lines":[{"line_number":261,"context_line":"Ramdisk impact"},{"line_number":262,"context_line":"--------------"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"The agent should be able to generate the torrent file from received"},{"line_number":265,"context_line":"torrent metadata and provide it to the BitTorrent client."},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"Also some BitTorrent client should be installed on the ramdisk."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"9a30ddce_884961d3","line":265,"range":{"start_line":264,"start_character":0,"end_line":265,"end_character":57},"updated":"2017-03-07 09:56:14.000000000","message":"This looks strange, torrent files should be pre-created and uploaded to Glance or HTTP server (l187-189).","commit_id":"907a631e5f7e54bf05ded821c0a6a29c427f77d6"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"38dc938a283303f440ee35d9180701fe30cc72b6","unresolved":false,"context_lines":[{"line_number":261,"context_line":"Ramdisk impact"},{"line_number":262,"context_line":"--------------"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"The agent should be able to generate the torrent file from received"},{"line_number":265,"context_line":"torrent metadata and provide it to the BitTorrent client."},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"Also some BitTorrent client should be installed on the ramdisk."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"9a30ddce_f8b9c6ed","line":265,"range":{"start_line":264,"start_character":0,"end_line":265,"end_character":57},"in_reply_to":"9a30ddce_884961d3","updated":"2017-03-07 11:51:02.000000000","message":"indeed, missed this part, it was changed some time ago","commit_id":"907a631e5f7e54bf05ded821c0a6a29c427f77d6"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b060aea1bd3675e8e1912e72a913b3c26d6900da","unresolved":false,"context_lines":[{"line_number":329,"context_line":"Developer impact"},{"line_number":330,"context_line":"----------------"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"Each deploy driver should implement BitTorrent provisioning to support"},{"line_number":333,"context_line":"the new feature."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"Implementation"},{"line_number":336,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9a30ddce_88fc0140","line":333,"range":{"start_line":332,"start_character":0,"end_line":333,"end_character":16},"updated":"2017-03-07 09:56:14.000000000","message":"I think torrent provisioning should be optional for deploy driver (for example in my env simultaneously provisioning of the same image is rarely case).","commit_id":"907a631e5f7e54bf05ded821c0a6a29c427f77d6"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"38dc938a283303f440ee35d9180701fe30cc72b6","unresolved":false,"context_lines":[{"line_number":329,"context_line":"Developer impact"},{"line_number":330,"context_line":"----------------"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"Each deploy driver should implement BitTorrent provisioning to support"},{"line_number":333,"context_line":"the new feature."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"Implementation"},{"line_number":336,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9a30ddce_58b012f5","line":333,"range":{"start_line":332,"start_character":0,"end_line":333,"end_character":16},"in_reply_to":"9a30ddce_88fc0140","updated":"2017-03-07 11:51:02.000000000","message":"Yeah, wrong modal verb, I guess `might` is possible value here","commit_id":"907a631e5f7e54bf05ded821c0a6a29c427f77d6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fcda4c65f7b76037e63353f95f25731fd9532c46","unresolved":false,"context_lines":[{"line_number":69,"context_line":"   |                |              |        |         |          |           |"},{"line_number":70,"context_line":"   |                |              |--download image-\u003e|          |           |"},{"line_number":71,"context_line":"   |                |              |---------------download image-----------\u003e|"},{"line_number":72,"context_line":"   |                |              |                  |\u003c-share image pieces-\u003e|"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"This change proposes to use BitTorrent webseed_ feature to reduce Ironic"},{"line_number":75,"context_line":"Conductor load. This simplifies the role of the conductor, avoiding"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ab384182_93e65e07","line":72,"updated":"2021-08-31 16:32:10.000000000","message":"A useful addition: per https://blog.project-insanity.org/2018/01/08/download-an-installation-medium-directly-to-your-flash-drive/ we can probably write raw images directly to the block device.","commit_id":"18f97e6816e87cc5cce615e0a4f0c3986e7c4824"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"f0a97cc000fdd99667661ca51c7eacb9f00c8d57","unresolved":false,"context_lines":[{"line_number":148,"context_line":"The deploying node client in turn announces [1]_ itself back to the tracker"},{"line_number":149,"context_line":"for other nodes to reach out."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"The deploying node torrent client requires an endpoint URL of the tracker."},{"line_number":152,"context_line":"This information will be provided via a new configuration option"},{"line_number":153,"context_line":"``torrent_trackers``. This option contains multiple trackers. Multiple URLs"},{"line_number":154,"context_line":"can be tracked to achieve redundancy of the torrent swarm::"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    torrent_trackers \u003d http://\u003chost1\u003e:\u003cport1\u003e/announce,"},{"line_number":157,"context_line":"                       http://\u003chost2\u003e:\u003cport1\u003e/announce"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"The redundancy requirement narrows the client choice down to those supporting"},{"line_number":160,"context_line":"the multi-tracker_ metadata extension."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"To use BitTorrent as the default provisioning mechanism, the Glance image"},{"line_number":163,"context_line":"property ``torrent_file`` should be specified, and Ironic configuration"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ffe62b97_6b1bcd80","line":160,"range":{"start_line":151,"start_character":0,"end_line":160,"end_character":38},"updated":"2017-03-27 12:06:00.000000000","message":"I\u0027m still worried that a torrent-client-specific information is being \"enforced\" here. I\u0027d rather like to see an *optional* parameter:\n\n  torrent_client_config \u003d \u003cwhatever is necessary for your env to work\u003e","commit_id":"18f97e6816e87cc5cce615e0a4f0c3986e7c4824"}]}
