)]}'
{"specs/juno/use-configdrive-with-ironic.rst":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"456f28eae9937ec347dcb50f8d7b9467602bf8ab","unresolved":false,"context_lines":[{"line_number":36,"context_line":"service. In the VM world, this is typically handled by the hypervisor exposing"},{"line_number":37,"context_line":"a configdrive image to the VM as a volume."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"In Ironic\u0027s case, there is no hypervisor, so this image needs to be written to"},{"line_number":40,"context_line":"the instance\u0027s disk; this needs to be handled by Ironic, rather than Nova."},{"line_number":41,"context_line":"However, Nova has the data that belongs in the configdrive, as well as the code"},{"line_number":42,"context_line":"to generate the image. So, it makes sense for Nova to generate an image and"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_95662f28","line":39,"updated":"2014-06-10 01:22:01.000000000","message":"this statement should be broadened - writing the configdrive to the instance\u0027s local disk is not the only implementation that may be enabled by ironic\u0027s drivers (it\u0027s just the one IPA is using). For instance, other drivers may mount the configdrive via the OOB channel, or use the OOB channel to configure an HBA to mount it from a SAN.","commit_id":"37517bf23aef4f9511d5b01411a5c8191e63d52f"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"1063466a29f01cfe721cb03f5b5be0f64514a19c","unresolved":false,"context_lines":[{"line_number":36,"context_line":"service. In the VM world, this is typically handled by the hypervisor exposing"},{"line_number":37,"context_line":"a configdrive image to the VM as a volume."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"In Ironic\u0027s case, there is no hypervisor, so this image needs to be written to"},{"line_number":40,"context_line":"the instance\u0027s disk; this needs to be handled by Ironic, rather than Nova."},{"line_number":41,"context_line":"However, Nova has the data that belongs in the configdrive, as well as the code"},{"line_number":42,"context_line":"to generate the image. So, it makes sense for Nova to generate an image and"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_61fe45b0","line":39,"in_reply_to":"1ae5cdf2_95662f28","updated":"2014-06-10 03:45:27.000000000","message":"Done","commit_id":"37517bf23aef4f9511d5b01411a5c8191e63d52f"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"456f28eae9937ec347dcb50f8d7b9467602bf8ab","unresolved":false,"context_lines":[{"line_number":76,"context_line":"network configuration and user data directly to the image to be deployed, on"},{"line_number":77,"context_line":"the fly. I think it is suffice to say that Ironic should not be in the business"},{"line_number":78,"context_line":"of injecting files directly into images, nor should we force end users to"},{"line_number":79,"context_line":"use custom images with this data already injected."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Data model impact"},{"line_number":82,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_b56deb06","line":79,"updated":"2014-06-10 01:22:01.000000000","message":"it bears mentioning that, while Ironic drivers may provide alternatives to \"write to local disk\" (eg, mount virtual media), the interaction will be no different on Nova\u0027s side.","commit_id":"37517bf23aef4f9511d5b01411a5c8191e63d52f"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"1063466a29f01cfe721cb03f5b5be0f64514a19c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"network configuration and user data directly to the image to be deployed, on"},{"line_number":77,"context_line":"the fly. I think it is suffice to say that Ironic should not be in the business"},{"line_number":78,"context_line":"of injecting files directly into images, nor should we force end users to"},{"line_number":79,"context_line":"use custom images with this data already injected."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Data model impact"},{"line_number":82,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_812c314c","line":79,"in_reply_to":"1ae5cdf2_b56deb06","updated":"2014-06-10 03:45:27.000000000","message":"Done","commit_id":"37517bf23aef4f9511d5b01411a5c8191e63d52f"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"456f28eae9937ec347dcb50f8d7b9467602bf8ab","unresolved":false,"context_lines":[{"line_number":92,"context_line":"---------------"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"This proposal involves storing end user data in either Swift or Ironic\u0027s"},{"line_number":95,"context_line":"database. This may be a security concern, as this data is not encrypted as"},{"line_number":96,"context_line":"rest. It would be preferable to store this data in Barbican, once it is"},{"line_number":97,"context_line":"an integrated project. (Is it feasible to encrypt this data before storing"},{"line_number":98,"context_line":"it with Swift or Ironic?)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_9598ef1c","line":95,"updated":"2014-06-10 01:22:01.000000000","message":"typo\n\ns/as/at/","commit_id":"37517bf23aef4f9511d5b01411a5c8191e63d52f"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"1063466a29f01cfe721cb03f5b5be0f64514a19c","unresolved":false,"context_lines":[{"line_number":92,"context_line":"---------------"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"This proposal involves storing end user data in either Swift or Ironic\u0027s"},{"line_number":95,"context_line":"database. This may be a security concern, as this data is not encrypted as"},{"line_number":96,"context_line":"rest. It would be preferable to store this data in Barbican, once it is"},{"line_number":97,"context_line":"an integrated project. (Is it feasible to encrypt this data before storing"},{"line_number":98,"context_line":"it with Swift or Ironic?)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_a12f6d3d","line":95,"in_reply_to":"1ae5cdf2_9598ef1c","updated":"2014-06-10 03:45:27.000000000","message":"Done","commit_id":"37517bf23aef4f9511d5b01411a5c8191e63d52f"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"456f28eae9937ec347dcb50f8d7b9467602bf8ab","unresolved":false,"context_lines":[{"line_number":118,"context_line":"---------------------"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"The force_config_drive option defaults to False, as does instance.config_drive,"},{"line_number":121,"context_line":"so deploying this code should have no impace on deployers."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Developer impact"},{"line_number":124,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_f57693d7","line":121,"updated":"2014-06-10 01:22:01.000000000","message":"s/impace/impact/","commit_id":"37517bf23aef4f9511d5b01411a5c8191e63d52f"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"1063466a29f01cfe721cb03f5b5be0f64514a19c","unresolved":false,"context_lines":[{"line_number":118,"context_line":"---------------------"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"The force_config_drive option defaults to False, as does instance.config_drive,"},{"line_number":121,"context_line":"so deploying this code should have no impace on deployers."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Developer impact"},{"line_number":124,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_e1297538","line":121,"in_reply_to":"1ae5cdf2_f57693d7","updated":"2014-06-10 03:45:27.000000000","message":"Done","commit_id":"37517bf23aef4f9511d5b01411a5c8191e63d52f"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"456f28eae9937ec347dcb50f8d7b9467602bf8ab","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"The force_config_drive option defaults to False, as does instance.config_drive,"},{"line_number":121,"context_line":"so deploying this code should have no impace on deployers."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Developer impact"},{"line_number":124,"context_line":"----------------"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_15721fe3","line":122,"updated":"2014-06-10 01:22:01.000000000","message":"worth calling out the (recommended) dependence on an external image object storage service","commit_id":"37517bf23aef4f9511d5b01411a5c8191e63d52f"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"1063466a29f01cfe721cb03f5b5be0f64514a19c","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"The force_config_drive option defaults to False, as does instance.config_drive,"},{"line_number":121,"context_line":"so deploying this code should have no impace on deployers."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Developer impact"},{"line_number":124,"context_line":"----------------"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_c1263968","line":122,"in_reply_to":"1ae5cdf2_15721fe3","updated":"2014-06-10 03:45:27.000000000","message":"Done","commit_id":"37517bf23aef4f9511d5b01411a5c8191e63d52f"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"456f28eae9937ec347dcb50f8d7b9467602bf8ab","unresolved":false,"context_lines":[{"line_number":138,"context_line":"Work Items"},{"line_number":139,"context_line":"----------"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* Implement the code and unit tests."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"* Write Tempest tests"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_7531a30a","line":141,"updated":"2014-06-10 01:22:01.000000000","message":"this could be fleshed out a bit","commit_id":"37517bf23aef4f9511d5b01411a5c8191e63d52f"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"1063466a29f01cfe721cb03f5b5be0f64514a19c","unresolved":false,"context_lines":[{"line_number":138,"context_line":"Work Items"},{"line_number":139,"context_line":"----------"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* Implement the code and unit tests."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"* Write Tempest tests"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_01202148","line":141,"in_reply_to":"1ae5cdf2_7531a30a","updated":"2014-06-10 03:45:27.000000000","message":"Done","commit_id":"37517bf23aef4f9511d5b01411a5c8191e63d52f"},{"author":{"_account_id":7080,"name":"Mathieu Mitchell","email":"mat128@gmail.com","username":"mat128"},"change_message_id":"49a5f4eba413ec2582b1433b70e4717b62959268","unresolved":false,"context_lines":[{"line_number":40,"context_line":"the instance in some other fashion. This could be accomplished by writing the"},{"line_number":41,"context_line":"image to a partition on the node, exposing the image via the out-of-band"},{"line_number":42,"context_line":"mechanism (e.g. a virtual floppy in HP\u0027s iLO), or configuring the node to mount"},{"line_number":43,"context_line":"the image from a SAN. In any case, this needs to be handled by Ironic, rather"},{"line_number":44,"context_line":"than Nova. However, Nova has the data that belongs in the configdrive, as well"},{"line_number":45,"context_line":"as the code to generate the image. So, it makes sense for Nova to generate an"},{"line_number":46,"context_line":"image and pass it to Ironic."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_e2118054","line":43,"updated":"2014-06-17 11:37:49.000000000","message":"Would that choice be up to the deploy driver used? If so, how would that be accomplished? A new method in DeployInterface?","commit_id":"a0f47158d4ecd9ad9653e9b9148edec2c48aaa59"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"856542d833e330614fba3b342b439d0a1631d2b4","unresolved":false,"context_lines":[{"line_number":40,"context_line":"the instance in some other fashion. This could be accomplished by writing the"},{"line_number":41,"context_line":"image to a partition on the node, exposing the image via the out-of-band"},{"line_number":42,"context_line":"mechanism (e.g. a virtual floppy in HP\u0027s iLO), or configuring the node to mount"},{"line_number":43,"context_line":"the image from a SAN. In any case, this needs to be handled by Ironic, rather"},{"line_number":44,"context_line":"than Nova. However, Nova has the data that belongs in the configdrive, as well"},{"line_number":45,"context_line":"as the code to generate the image. So, it makes sense for Nova to generate an"},{"line_number":46,"context_line":"image and pass it to Ironic."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_9f2e4e41","line":43,"in_reply_to":"1ae5cdf2_e2118054","updated":"2014-06-17 13:22:10.000000000","message":"Yes, the deploy driver will implement this bit internally as a private method, as the deploy driver needs to decide when to expose the configdrive to the instance as well. See also https://review.openstack.org/#/c/99235","commit_id":"a0f47158d4ecd9ad9653e9b9148edec2c48aaa59"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"2de4742dc452257f5b7328bab572fb94ff33600f","unresolved":false,"context_lines":[{"line_number":56,"context_line":"This will consist of these steps:"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* The Ironic virt driver decides if a configdrive should be generated for this"},{"line_number":59,"context_line":"  instance. If so:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* The virt driver generates the configdrive, gzips it, and encodes it as"},{"line_number":62,"context_line":"  base64."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_6e70bf40","line":59,"updated":"2014-06-11 04:36:03.000000000","message":"Can you elaborate how will the virt driver make decision? Does that mean Ironic will have different mechanism of current implementation?","commit_id":"a0f47158d4ecd9ad9653e9b9148edec2c48aaa59"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4feeb5c031960650c879e14378505a335428bafb","unresolved":false,"context_lines":[{"line_number":56,"context_line":"This will consist of these steps:"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* The Ironic virt driver decides if a configdrive should be generated for this"},{"line_number":59,"context_line":"  instance. If so:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* The virt driver generates the configdrive, gzips it, and encodes it as"},{"line_number":62,"context_line":"  base64."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_e3a218ad","line":59,"in_reply_to":"1ae5cdf2_6e70bf40","updated":"2014-06-11 13:43:37.000000000","message":"This is outlined on lines 53-54, and uses nova.virt.configdrive:required_by: https://github.com/openstack/nova/blob/master/nova/virt/configdrive.py#L179-180","commit_id":"a0f47158d4ecd9ad9653e9b9148edec2c48aaa59"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d8f5f194fe3a9cef63a3deb8937fbe6911f0a519","unresolved":false,"context_lines":[{"line_number":69,"context_line":"* The virt driver posts the (base64\u0027d blob or Swift URL) to Ironic, as a"},{"line_number":70,"context_line":"  part of the node\u0027s instance_info, with a key of configdrive."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"* Ironic uses this (blob or URL) to write a configdrive partition on the"},{"line_number":73,"context_line":"  instance during provisioning."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_4cf1d869","line":72,"updated":"2014-07-07 20:30:47.000000000","message":"This line is specific to IPA, whereas you appropriately outlined the alternatives at L40-43.\n\nI would prefer this line be rewritten as:\n\n* If present, Ironic will pass this (blob or URL) to its DeployDriver, which will in turn provide it to the instance during provisioning by the means appropriate to that driver.","commit_id":"a0f47158d4ecd9ad9653e9b9148edec2c48aaa59"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"0a934c99c3a90796a94424e080971932752d8598","unresolved":false,"context_lines":[{"line_number":69,"context_line":"* The virt driver posts the (base64\u0027d blob or Swift URL) to Ironic, as a"},{"line_number":70,"context_line":"  part of the node\u0027s instance_info, with a key of configdrive."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"* Ironic uses this (blob or URL) to write a configdrive partition on the"},{"line_number":73,"context_line":"  instance during provisioning."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_32622017","line":72,"in_reply_to":"baada198_4cf1d869","updated":"2014-07-08 13:30:56.000000000","message":"Will do.","commit_id":"a0f47158d4ecd9ad9653e9b9148edec2c48aaa59"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d8f5f194fe3a9cef63a3deb8937fbe6911f0a519","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Generating the configdrive image and sending it to another service will cause"},{"line_number":123,"context_line":"Nova to spend more time in Ironic\u0027s virt driver, although the additional time"},{"line_number":124,"context_line":"spent should be relatively small."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Other deployer impact"},{"line_number":127,"context_line":"---------------------"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_ccb24893","line":125,"updated":"2014-07-07 20:30:47.000000000","message":"it will also create additional swift objects (one per instance) which should be GC\u0027d or created with a reasonable TTL. I don\u0027t think I see that mentioned anywhere in this spec","commit_id":"a0f47158d4ecd9ad9653e9b9148edec2c48aaa59"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"0a934c99c3a90796a94424e080971932752d8598","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Generating the configdrive image and sending it to another service will cause"},{"line_number":123,"context_line":"Nova to spend more time in Ironic\u0027s virt driver, although the additional time"},{"line_number":124,"context_line":"spent should be relatively small."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Other deployer impact"},{"line_number":127,"context_line":"---------------------"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_2d2565ae","line":125,"in_reply_to":"baada198_ccb24893","updated":"2014-07-08 13:30:56.000000000","message":"Yeah, but rebuilds. :)\n\nDmitry and I talked about using Glance instead. Doesn\u0027t quite solve this problem, but I am moving the spec to use Glance.","commit_id":"a0f47158d4ecd9ad9653e9b9148edec2c48aaa59"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"40fd77a64213abe13fa95f30bac303039cdc37d1","unresolved":false,"context_lines":[{"line_number":166,"context_line":"Dependencies"},{"line_number":167,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"This change depends on the Ironic virt driver landing in Nova, as well as"},{"line_number":170,"context_line":"Ironic support for writing the configdrive to the instance."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_cbf001cc","line":169,"updated":"2014-06-17 20:57:50.000000000","message":"can you include a link to that spec","commit_id":"a0f47158d4ecd9ad9653e9b9148edec2c48aaa59"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"108c386ccbe31782b7b166e4beeb72ea256bdb06","unresolved":false,"context_lines":[{"line_number":166,"context_line":"Dependencies"},{"line_number":167,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"This change depends on the Ironic virt driver landing in Nova, as well as"},{"line_number":170,"context_line":"Ironic support for writing the configdrive to the instance."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_5f93f0a3","line":169,"in_reply_to":"1ae5cdf2_cbf001cc","updated":"2014-06-24 13:46:16.000000000","message":"This is included in the references section.","commit_id":"a0f47158d4ecd9ad9653e9b9148edec2c48aaa59"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d8f5f194fe3a9cef63a3deb8937fbe6911f0a519","unresolved":false,"context_lines":[{"line_number":173,"context_line":"Testing"},{"line_number":174,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Two tempest tests will be added that deploy a bare metal instance with a"},{"line_number":177,"context_line":"configdrive. One will send a base64 blob of the image to Ironic, and the"},{"line_number":178,"context_line":"other will send a swift URL. The tests will verify that the configdrive is"},{"line_number":179,"context_line":"properly written to the instance."}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_6702350b","line":176,"updated":"2014-07-07 20:30:47.000000000","message":"so... I don\u0027t think this is reasonable.\n\nWe\u0027re moving away from separate scenario testing for Ironic, and aiming to simply leverage the compute/api and baremetal/admin/api tests.\n\nI think this should include a brief summary of the current tempest testing of configdrive within Nova, and then detail how the same methods will be used with an ironic virt driver to test both configdrive and cloudinit in the same tempest environment.","commit_id":"a0f47158d4ecd9ad9653e9b9148edec2c48aaa59"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"0a934c99c3a90796a94424e080971932752d8598","unresolved":false,"context_lines":[{"line_number":173,"context_line":"Testing"},{"line_number":174,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Two tempest tests will be added that deploy a bare metal instance with a"},{"line_number":177,"context_line":"configdrive. One will send a base64 blob of the image to Ironic, and the"},{"line_number":178,"context_line":"other will send a swift URL. The tests will verify that the configdrive is"},{"line_number":179,"context_line":"properly written to the instance."}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_cd3ce9c2","line":176,"in_reply_to":"baada198_6702350b","updated":"2014-07-08 13:30:56.000000000","message":"Will do","commit_id":"a0f47158d4ecd9ad9653e9b9148edec2c48aaa59"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"62d64c11d7fae0f9bbb2eb85aa91f1dcbb2476af","unresolved":false,"context_lines":[{"line_number":66,"context_line":"  in turn provide it to the instance during provisioning, by means appropriate"},{"line_number":67,"context_line":"  to that driver."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* Ironic uses this Glance URL to write a configdrive partition on the"},{"line_number":70,"context_line":"  instance during provisioning."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_319e8d55","line":69,"updated":"2014-07-16 06:36:32.000000000","message":"Who cleans up the image?","commit_id":"29773ba4e590bd08a2e5eaf8edada8f108e4d72b"},{"author":{"_account_id":11015,"name":"Paul Querna","email":"pquerna@apache.org","username":"pquerna"},"change_message_id":"786aa56f79141ccfbb5a063966dea3a5f310f1f4","unresolved":false,"context_lines":[{"line_number":66,"context_line":"  in turn provide it to the instance during provisioning, by means appropriate"},{"line_number":67,"context_line":"  to that driver."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* Ironic uses this Glance URL to write a configdrive partition on the"},{"line_number":70,"context_line":"  instance during provisioning."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_0be45b0b","line":69,"in_reply_to":"baada198_319e8d55","updated":"2014-07-21 00:16:53.000000000","message":"I\u0027d vote for instead of using Glance URLs, to make a first version that puts it directly into Swift with a configurable TTL, defaulting to a few days.  In the message to Ironic, instead of using a Glance URL, pass a Swift Temporary URL to Ironic\n\nThen you don\u0027t need to tackle all of the complexities of Garbage Collection in Glance -- just let Swift manage it with a TTL.\n\nIn the long run the storage would need to be plug able for different deployments, but Swift seems like a reasonable first stab.","commit_id":"29773ba4e590bd08a2e5eaf8edada8f108e4d72b"}],"specs/kilo/approved/use-configdrive-with-ironic.rst":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"5a6a6d2b81fb42426139b29488d164312fed5641","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* The virt driver generates the configdrive and gzips it."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"* The virt driver puts the gzipped configdrive image in Swift, with a"},{"line_number":64,"context_line":"  configurable TTL."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* If present, Ironic will pass this Swift URL to its DeployDriver, which will"}],"source_content_type":"text/x-rst","patch_set":6,"id":"baa201ad_de007004","line":63,"updated":"2014-10-15 17:00:39.000000000","message":"Why shouldn\u0027t this just be passed to Ironic, and let Ironic store it in Swift?\n\nThis would add a *lot* of code to integrate with swift into Nova and the virt driver. Keeping most of the work on the Ironic side also continues to support the use case of using Ironic without Nova.","commit_id":"3c99406f630c84e8ff8aed28a7c12adc562bc8d6"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"5a6a6d2b81fb42426139b29488d164312fed5641","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"This will require adding a config option for the TTL to use when uploading"},{"line_number":123,"context_line":"the image to Swift, however the default should be a sane amount for a"},{"line_number":124,"context_line":"production deployment."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Developer impact"},{"line_number":127,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"baa201ad_5c05690f","line":124,"updated":"2014-10-15 17:00:39.000000000","message":"Adds a dependency on swift for using Ironic w/this feature.","commit_id":"3c99406f630c84e8ff8aed28a7c12adc562bc8d6"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"741cfe60f5b74b1b4b9c9934c1b5a4d41b096993","unresolved":false,"context_lines":[{"line_number":44,"context_line":"than Nova. However, Nova has the data that belongs in the configdrive, as well"},{"line_number":45,"context_line":"as the code to generate the image. So, it makes sense for Nova to generate an"},{"line_number":46,"context_line":"image and pass it to Ironic."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"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":7,"id":"5a890539_9f049ac7","line":47,"updated":"2014-11-19 18:19:40.000000000","message":"Please note, you need too extra sections here:\nUse Cases, Project Priority\n\nThey need to be added for all kilo specs, see the kilo template.","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"528fd5fe64d7b1f9dde551f68013b480003f339b","unresolved":false,"context_lines":[{"line_number":44,"context_line":"than Nova. However, Nova has the data that belongs in the configdrive, as well"},{"line_number":45,"context_line":"as the code to generate the image. So, it makes sense for Nova to generate an"},{"line_number":46,"context_line":"image and pass it to Ironic."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"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":7,"id":"5a890539_ff9afdc3","line":47,"in_reply_to":"5a890539_9f049ac7","updated":"2014-11-19 18:50:48.000000000","message":"Done","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"741cfe60f5b74b1b4b9c9934c1b5a4d41b096993","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  to that driver."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* Ironic uses this Swift URL to write a configdrive partition on the"},{"line_number":71,"context_line":"  instance during provisioning."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"},{"line_number":74,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_5f3312f6","line":71,"updated":"2014-11-19 18:19:40.000000000","message":"Can we reword this slightly?\n\nIt needs to be stored somewhere, where you can pass a URI to ironic, that it understands how to use.\n\nAnd maybe you will provide a swift reference implementation, that has the added benefit that TTL means it tidies things up in a simple way.","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"528fd5fe64d7b1f9dde551f68013b480003f339b","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  to that driver."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* Ironic uses this Swift URL to write a configdrive partition on the"},{"line_number":71,"context_line":"  instance during provisioning."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"},{"line_number":74,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_1fa0a9f3","line":71,"in_reply_to":"5a890539_5f3312f6","updated":"2014-11-19 18:50:48.000000000","message":"Done","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"741cfe60f5b74b1b4b9c9934c1b5a4d41b096993","unresolved":false,"context_lines":[{"line_number":122,"context_line":"This will add a hard dependency on Swift for deployers that wish to use"},{"line_number":123,"context_line":"configdrive support with Ironic."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"It will also add corresponding config options for the Swift client."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Developer impact"},{"line_number":128,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_bf787690","line":125,"updated":"2014-11-19 18:19:40.000000000","message":"I would reword this too, so it says:\n\"this will only implement swift support\"","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"528fd5fe64d7b1f9dde551f68013b480003f339b","unresolved":false,"context_lines":[{"line_number":122,"context_line":"This will add a hard dependency on Swift for deployers that wish to use"},{"line_number":123,"context_line":"configdrive support with Ironic."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"It will also add corresponding config options for the Swift client."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Developer impact"},{"line_number":128,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_1f87c962","line":125,"in_reply_to":"5a890539_bf787690","updated":"2014-11-19 18:50:48.000000000","message":"Done","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"741cfe60f5b74b1b4b9c9934c1b5a4d41b096993","unresolved":false,"context_lines":[{"line_number":142,"context_line":"Work Items"},{"line_number":143,"context_line":"----------"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"* Add a Swift client that can, at a minimum, upload objects to Swift."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"* Implement the code and unit tests. This will involve changing the deploy()"},{"line_number":148,"context_line":"  function in Ironic\u0027s virt driver to generate the configdrive, upload"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_bf9f96b3","line":145,"updated":"2014-11-19 18:19:40.000000000","message":"Can we not add a dependency on python-swiftclient instead?\n\nIf not, its possible worth mentioning that, but honestly, this is probably better discussed in the code review. Maybe skip over the detail here. Seeing 10 lines of code to upload to swift would probably change my mind, for example.","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"528fd5fe64d7b1f9dde551f68013b480003f339b","unresolved":false,"context_lines":[{"line_number":142,"context_line":"Work Items"},{"line_number":143,"context_line":"----------"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"* Add a Swift client that can, at a minimum, upload objects to Swift."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"* Implement the code and unit tests. This will involve changing the deploy()"},{"line_number":148,"context_line":"  function in Ironic\u0027s virt driver to generate the configdrive, upload"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_1feee922","line":145,"in_reply_to":"5a890539_bf9f96b3","updated":"2014-11-19 18:50:48.000000000","message":"Right, but there will need to be some wrapper code, which is what I meant here. Done.","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"741cfe60f5b74b1b4b9c9934c1b5a4d41b096993","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  be changed to remove the configdrive key from instance_info. Unit tests will"},{"line_number":152,"context_line":"  need to be updated accordingly."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Write Tempest tests - see testing plan below."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_df7b8279","line":154,"updated":"2014-11-19 18:19:40.000000000","message":"I think it will be more a case of configuring the tempest environment to test this.","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"528fd5fe64d7b1f9dde551f68013b480003f339b","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  be changed to remove the configdrive key from instance_info. Unit tests will"},{"line_number":152,"context_line":"  need to be updated accordingly."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Write Tempest tests - see testing plan below."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_9fc0197e","line":154,"in_reply_to":"5a890539_df7b8279","updated":"2014-11-19 18:50:48.000000000","message":"Done","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f64cf844e44c6f44630f46e347ff4309fb2bfb75","unresolved":false,"context_lines":[{"line_number":158,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"This change depends on Ironic support for writing the configdrive to the"},{"line_number":161,"context_line":"instance."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_bfd79622","line":161,"updated":"2014-11-19 18:20:38.000000000","message":"could you add a link to the ironic blueprint please, so we can confirm when its approved in ironic?","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"528fd5fe64d7b1f9dde551f68013b480003f339b","unresolved":false,"context_lines":[{"line_number":158,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"This change depends on Ironic support for writing the configdrive to the"},{"line_number":161,"context_line":"instance."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_dfbaa109","line":161,"in_reply_to":"5a890539_bfd79622","updated":"2014-11-19 18:50:48.000000000","message":"Done","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"741cfe60f5b74b1b4b9c9934c1b5a4d41b096993","unresolved":false,"context_lines":[{"line_number":165,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"TODO: need to find out how configdrive things are tested in Tempest today and"},{"line_number":168,"context_line":"do something similar."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_bfd4f647","line":168,"updated":"2014-11-19 18:19:40.000000000","message":"see comments above.","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"528fd5fe64d7b1f9dde551f68013b480003f339b","unresolved":false,"context_lines":[{"line_number":165,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"TODO: need to find out how configdrive things are tested in Tempest today and"},{"line_number":168,"context_line":"do something similar."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_bfbdd504","line":168,"in_reply_to":"5a890539_bfd4f647","updated":"2014-11-19 18:50:48.000000000","message":"Done","commit_id":"e804592f677ed2b4261eb36defe809e882fa7fda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9a2a288def784460d02e6aa288a38c70825bca6e","unresolved":false,"context_lines":[{"line_number":205,"context_line":"References"},{"line_number":206,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"[1] Ironic configdrive spec: https://review.openstack.org/#/c/99235/"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a890539_ea1d6710","line":208,"range":{"start_line":208,"start_character":29,"end_line":208,"end_character":68},"updated":"2014-11-24 10:30:36.000000000","message":"cool, I see this has been merged.\n\nMight be good to link to the published website, but thats very minor.","commit_id":"f48d114621033e75b740bc5f9e894075949da714"}]}
