)]}'
{"specs/approved/anaconda-deploy-interface.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f771886d5b1fb90c1657b96fe2d3d61306a3e1b1","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        --file path/to/os_image.tar.bz2 \\"},{"line_number":136,"context_line":"        --property kernel_id\u003d$MY_VMLINUZ_UUID \\"},{"line_number":137,"context_line":"        --property ramdisk_id\u003d$MY_INITRD_UUID \\"},{"line_number":138,"context_line":"        --property squashfs_id\u003d$MY_ANACONDA_SQUASHFS_UUID \\"},{"line_number":139,"context_line":"        --property os_distro\u003dRHEL \\"},{"line_number":140,"context_line":"        --property os_version\u003d7 centos-7-base``"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_51a30101","line":138,"updated":"2020-09-01 12:44:54.000000000","message":"nit: maybe stage2_id? squashfs feels like a detail of the implementation.","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f771886d5b1fb90c1657b96fe2d3d61306a3e1b1","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        --property ramdisk_id\u003d$MY_INITRD_UUID \\"},{"line_number":138,"context_line":"        --property squashfs_id\u003d$MY_ANACONDA_SQUASHFS_UUID \\"},{"line_number":139,"context_line":"        --property os_distro\u003dRHEL \\"},{"line_number":140,"context_line":"        --property os_version\u003d7 centos-7-base``"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"This is a departure from how direct deploy interface works where the kernel_id"},{"line_number":143,"context_line":"and ramdisk_id are either in configuration file or set in driver_info. IPA is"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_31a80dda","line":140,"updated":"2020-09-01 12:44:54.000000000","message":"Does it maybe make sense to optionally allow passing the kickstart file here as well? Since it may be rather image specific?","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1cd415afc5467f9750c856eae6876f27124aeb11","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        --property ramdisk_id\u003d$MY_INITRD_UUID \\"},{"line_number":138,"context_line":"        --property squashfs_id\u003d$MY_ANACONDA_SQUASHFS_UUID \\"},{"line_number":139,"context_line":"        --property os_distro\u003dRHEL \\"},{"line_number":140,"context_line":"        --property os_version\u003d7 centos-7-base``"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"This is a departure from how direct deploy interface works where the kernel_id"},{"line_number":143,"context_line":"and ramdisk_id are either in configuration file or set in driver_info. IPA is"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_c92d74a9","line":140,"in_reply_to":"9f560f44_31a80dda","updated":"2020-09-04 03:49:55.000000000","message":"That is a good idea. So all the user has to do is to upload OS_IMAGE and associate a kickstart template to it. Will update the SPEC","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f771886d5b1fb90c1657b96fe2d3d61306a3e1b1","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        --property os_version\u003d7 centos-7-base``"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"This is a departure from how direct deploy interface works where the kernel_id"},{"line_number":143,"context_line":"and ramdisk_id are either in configuration file or set in driver_info. IPA is"},{"line_number":144,"context_line":"distro agnostic, Anaconda is not. There is no single Anaconda installer version"},{"line_number":145,"context_line":"that is compatible with all major versions of CentOS. Each major version of"},{"line_number":146,"context_line":"CentOS has it\u0027s own version of anaconda installer. For this reason we require"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_91ac79ef","line":143,"updated":"2020-09-01 12:44:54.000000000","message":"Just to clarify: we won\u0027t use IPA for deployment at all, and the deploy_kernel/deploy_ramdisk properties will only be used for cleaning?","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1cd415afc5467f9750c856eae6876f27124aeb11","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        --property os_version\u003d7 centos-7-base``"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"This is a departure from how direct deploy interface works where the kernel_id"},{"line_number":143,"context_line":"and ramdisk_id are either in configuration file or set in driver_info. IPA is"},{"line_number":144,"context_line":"distro agnostic, Anaconda is not. There is no single Anaconda installer version"},{"line_number":145,"context_line":"that is compatible with all major versions of CentOS. Each major version of"},{"line_number":146,"context_line":"CentOS has it\u0027s own version of anaconda installer. For this reason we require"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_49132467","line":143,"in_reply_to":"9f560f44_91ac79ef","updated":"2020-09-04 03:49:55.000000000","message":"Correct. IPA won\u0027t be used for deployment, it will only be used for cleaning.","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f771886d5b1fb90c1657b96fe2d3d61306a3e1b1","unresolved":false,"context_lines":[{"line_number":158,"context_line":"operating system. The default kickstart template will automatically partition"},{"line_number":159,"context_line":"the available disks using the autopart mechanism [3]_ and deploy the OS. The"},{"line_number":160,"context_line":"default kickstart file template will be stored at"},{"line_number":161,"context_line":"$IRONIC_CONF_DIR/default_kickstart.template and referenced by the configuration"},{"line_number":162,"context_line":"option ``default_ks_template`` in ironic.conf under ``[kickstart]`` section."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"Example default kickstart template:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_71a9e5db","line":161,"updated":"2020-09-01 12:44:54.000000000","message":"nit: it\u0027s not CONF_DIR, we store templates with the code","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f771886d5b1fb90c1657b96fe2d3d61306a3e1b1","unresolved":false,"context_lines":[{"line_number":176,"context_line":"    selinux --enforcing"},{"line_number":177,"context_line":"    firewall --enabled"},{"line_number":178,"context_line":"    firstboot --disabled"},{"line_number":179,"context_line":"    auth --passalgo\u003dsha512 --useshadow"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    bootloader --location\u003dmbr --append\u003d\"rhgb quiet crashkernel\u003dauto\""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_d1b6f13e","line":179,"updated":"2020-09-01 12:44:54.000000000","message":"We need a way to pass the default SSH key, I guess?\n\nIs it possible to connect a configdrive via an HTTP URL to an ISO image?","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1cd415afc5467f9750c856eae6876f27124aeb11","unresolved":false,"context_lines":[{"line_number":176,"context_line":"    selinux --enforcing"},{"line_number":177,"context_line":"    firewall --enabled"},{"line_number":178,"context_line":"    firstboot --disabled"},{"line_number":179,"context_line":"    auth --passalgo\u003dsha512 --useshadow"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    bootloader --location\u003dmbr --append\u003d\"rhgb quiet crashkernel\u003dauto\""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_c9061421","line":179,"in_reply_to":"9f560f44_d1b6f13e","updated":"2020-09-04 03:49:55.000000000","message":"Will update SPEC and address the address handling of config drive.","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f771886d5b1fb90c1657b96fe2d3d61306a3e1b1","unresolved":false,"context_lines":[{"line_number":190,"context_line":".. code::"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    # Downloading and installing OS image using liveimg section is mandatory"},{"line_number":193,"context_line":"    liveimg --url\u003d{{ liveimg_url }}"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    # Following %pre, %onerror and %trackback sections are mandatory"},{"line_number":196,"context_line":"    %pre"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_b1b37d4d","line":193,"updated":"2020-09-01 12:44:54.000000000","message":"I guess this is the actual image?","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1cd415afc5467f9750c856eae6876f27124aeb11","unresolved":false,"context_lines":[{"line_number":190,"context_line":".. code::"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    # Downloading and installing OS image using liveimg section is mandatory"},{"line_number":193,"context_line":"    liveimg --url\u003d{{ liveimg_url }}"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    # Following %pre, %onerror and %trackback sections are mandatory"},{"line_number":196,"context_line":"    %pre"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_edfde308","line":193,"in_reply_to":"9f560f44_b1b37d4d","updated":"2020-09-04 03:49:55.000000000","message":"Yes. This is the link to the OS Image that need to be deplyoed.","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f771886d5b1fb90c1657b96fe2d3d61306a3e1b1","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    # Following %pre, %onerror and %trackback sections are mandatory"},{"line_number":196,"context_line":"    %pre"},{"line_number":197,"context_line":"    /usr/bin/curl -X PUT -H \u0027Content-Type: application/json\u0027 -H \u0027Accept: application/json\u0027 -d \u0027{\"anaconda_status\": \"start\", \"msg\": \"\"}\u0027 {{ vendor_status_url }}"},{"line_number":198,"context_line":"    %end"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    %onerror"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_11822953","line":197,"updated":"2020-09-01 12:44:54.000000000","message":"What\u0027s the default value for vendor_status_url?","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f771886d5b1fb90c1657b96fe2d3d61306a3e1b1","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":".. code:: bash"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    openstack baremetal --os-baremetal-api-version 1.31 node set $NODE_UUID \\"},{"line_number":232,"context_line":"        --instance_info ks_template\u003dglance://uuid"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    or"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_f1869565","line":231,"updated":"2020-09-01 12:44:54.000000000","message":"nit: no need for the API version here or anywhere","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f771886d5b1fb90c1657b96fe2d3d61306a3e1b1","unresolved":false,"context_lines":[{"line_number":229,"context_line":".. code:: bash"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    openstack baremetal --os-baremetal-api-version 1.31 node set $NODE_UUID \\"},{"line_number":232,"context_line":"        --instance_info ks_template\u003dglance://uuid"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    or"},{"line_number":235,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_517ca171","line":232,"updated":"2020-09-01 12:44:54.000000000","message":"This makes sense, but we should probably also allow template attached to the image as I suggest above.","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f771886d5b1fb90c1657b96fe2d3d61306a3e1b1","unresolved":false,"context_lines":[{"line_number":296,"context_line":"At the start of the installation following status will be sent using %pre"},{"line_number":297,"context_line":"section of the kickstart file from anaconda ramdisk"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    POST {\u0027anaconda_status\u0027: \u0027start\u0027, \u0027msg\u0027: \u0027\u0027} http(s)://\u003caddress\u003e:\u003cport\u003e/v1/node/\u003cuuid\u003e/vendor_passthru/anaconda_status"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"On receiving the \u0027start\u0027 status from anaconda ramdisk, the conductor will"},{"line_number":302,"context_line":"set driver_internal_info[\u0027anaconda_status\u0027] \u003d \u0027start\u0027"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_31812d4c","line":299,"updated":"2020-09-01 12:44:54.000000000","message":"Vendor passthru are authenticated, I wonder if you want to use the heartbeat mechanism instead..","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":296,"context_line":"At the start of the installation following status will be sent using %pre"},{"line_number":297,"context_line":"section of the kickstart file from anaconda ramdisk"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    POST {\u0027anaconda_status\u0027: \u0027start\u0027, \u0027msg\u0027: \u0027\u0027} http(s)://\u003caddress\u003e:\u003cport\u003e/v1/node/\u003cuuid\u003e/vendor_passthru/anaconda_status"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"On receiving the \u0027start\u0027 status from anaconda ramdisk, the conductor will"},{"line_number":302,"context_line":"set driver_internal_info[\u0027anaconda_status\u0027] \u003d \u0027start\u0027"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_e43095a1","line":299,"in_reply_to":"9f560f44_31812d4c","updated":"2020-11-17 15:13:49.000000000","message":"Hmm... and vendor_passthru are also not deploy interface based.\n\nHeartbeat + some sort of status maybe?","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1cd415afc5467f9750c856eae6876f27124aeb11","unresolved":false,"context_lines":[{"line_number":296,"context_line":"At the start of the installation following status will be sent using %pre"},{"line_number":297,"context_line":"section of the kickstart file from anaconda ramdisk"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    POST {\u0027anaconda_status\u0027: \u0027start\u0027, \u0027msg\u0027: \u0027\u0027} http(s)://\u003caddress\u003e:\u003cport\u003e/v1/node/\u003cuuid\u003e/vendor_passthru/anaconda_status"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"On receiving the \u0027start\u0027 status from anaconda ramdisk, the conductor will"},{"line_number":302,"context_line":"set driver_internal_info[\u0027anaconda_status\u0027] \u003d \u0027start\u0027"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f560f44_6d11d353","line":299,"in_reply_to":"9f560f44_31812d4c","updated":"2020-09-04 03:49:55.000000000","message":"Will investigate if we can switch to using heartbeat mechanism. Anaconda doesn\u0027t have an API, so the conductor can\u0027t talk to anaconda. All communications have to be initiated from the anaconda ramdisk.","commit_id":"9d781f58990f58fa6b1afc13f9bd18a6bd51e5de"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"45c5917d5628eae9f5b069a6ff311137f9259ec8","unresolved":false,"context_lines":[{"line_number":23,"context_line":"- Create Linux filesystems"},{"line_number":24,"context_line":"- Generate Linux fstab files based on created Linux filesystems"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Support for creating LVM and MD structures has significant usefulness in when"},{"line_number":27,"context_line":"provisioning Nodes with multiple physical storage devices."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Use-cases include:"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_d4825200","line":27,"range":{"start_line":26,"start_character":0,"end_line":27,"end_character":58},"updated":"2020-09-02 06:31:48.000000000","message":"Some of these features are supported in Ironic already, like creating md arrays. However: the setup of md devices requires admin access to the node. So, how about mentioning that this enhancement will address use cases where the *user* (as the instance creator and in contrast with the admin) would like to configure specific disk layouts with md/lvm?","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":18781,"name":"vinay50muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"e23faa143fe1d313dad11ffef570d7b4794d1156","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"* CentOS/RHEL \u003e\u003d 7 and Fedora \u003e\u003d31"},{"line_number":114,"context_line":"* Anaconda will be used to deploy the OS image."},{"line_number":115,"context_line":"* Support both UEFI and BIOS compatibility mode"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Matching the OS image with correct anaconda version"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_01448918","line":115,"range":{"start_line":115,"start_character":2,"end_line":115,"end_character":46},"updated":"2020-09-02 09:57:02.000000000","message":"It supports both UEFI or BIOS or both based on the kickstart file provided by the user. So the kickstart file validation needs to be done in the conductor for a specific boot mode. And that information needs to be provided.","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"45c5917d5628eae9f5b069a6ff311137f9259ec8","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"* CentOS/RHEL \u003e\u003d 7 and Fedora \u003e\u003d31"},{"line_number":114,"context_line":"* Anaconda will be used to deploy the OS image."},{"line_number":115,"context_line":"* Support both UEFI and BIOS compatibility mode"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Matching the OS image with correct anaconda version"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_34a62ead","line":115,"range":{"start_line":115,"start_character":0,"end_line":115,"end_character":47},"updated":"2020-09-02 06:31:48.000000000","message":"This is not a limitation, is it?","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1cd415afc5467f9750c856eae6876f27124aeb11","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"* CentOS/RHEL \u003e\u003d 7 and Fedora \u003e\u003d31"},{"line_number":114,"context_line":"* Anaconda will be used to deploy the OS image."},{"line_number":115,"context_line":"* Support both UEFI and BIOS compatibility mode"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Matching the OS image with correct anaconda version"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_ed820352","line":115,"range":{"start_line":115,"start_character":2,"end_line":115,"end_character":46},"in_reply_to":"9f560f44_01448918","updated":"2020-09-04 03:49:55.000000000","message":"The default template will automatically generate partitions for both UEFI and BIOS boot modes. This is achieved using \u0027autopart\u0027 mechanism. However custom templates should be validated for correctness on the conductor. I have not decided on how much validation we should do on the conductor level. If the customer does not create a EFI partition on UEFI boot, anaconda installer would complain and fail the deployment regardless if we validate it or not.","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":18781,"name":"vinay50muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"e23faa143fe1d313dad11ffef570d7b4794d1156","unresolved":false,"context_lines":[{"line_number":124,"context_line":"specified using ``inst.stage2`` kernel command line argument."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    ``inst.stage2\u003dhttp://\u003caddress\u003e:\u003cport\u003e/httproot/\u003cnode-uuid\u003e/squashfs.img``"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"To deploy the OS using anaconda, apart from the OS image,kernel,ramdisk(stage1)"},{"line_number":129,"context_line":"and anaconda squashfs(stage2) images are required. All these artifacts should"},{"line_number":130,"context_line":"be uploaded to glance and associated with the OS image by the operator."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_81ea590b","line":127,"updated":"2020-09-02 09:57:02.000000000","message":"How aboout installing the packages? where do we host them?Can we also make a point about the installation here or at some other appropriate place?","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1cd415afc5467f9750c856eae6876f27124aeb11","unresolved":false,"context_lines":[{"line_number":124,"context_line":"specified using ``inst.stage2`` kernel command line argument."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    ``inst.stage2\u003dhttp://\u003caddress\u003e:\u003cport\u003e/httproot/\u003cnode-uuid\u003e/squashfs.img``"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"To deploy the OS using anaconda, apart from the OS image,kernel,ramdisk(stage1)"},{"line_number":129,"context_line":"and anaconda squashfs(stage2) images are required. All these artifacts should"},{"line_number":130,"context_line":"be uploaded to glance and associated with the OS image by the operator."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_ade5ab3a","line":127,"in_reply_to":"9f560f44_81ea590b","updated":"2020-09-04 03:49:55.000000000","message":"Installing packages using %packages section of the kickstart template is out of scope for this SPEC. This SPEC only supports OS image deployment using \u0027liveimg\u0027 kickstart command. I will call this out explicitly if i have not made it clear already.","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"fb628ec497670e8de796fdd9f2d22edf8cfcb031","unresolved":false,"context_lines":[{"line_number":158,"context_line":"operating system. The default kickstart template will automatically partition"},{"line_number":159,"context_line":"the available disks using the autopart mechanism [3]_ and deploy the OS. The"},{"line_number":160,"context_line":"default kickstart file template will be stored at"},{"line_number":161,"context_line":"$IRONIC_CONF_DIR/default_kickstart.template and referenced by the configuration"},{"line_number":162,"context_line":"option ``default_ks_template`` in ironic.conf under ``[kickstart]`` section."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"Example default kickstart template:"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_74bf0660","line":162,"range":{"start_line":161,"start_character":0,"end_line":162,"end_character":76},"updated":"2020-09-02 06:32:35.000000000","message":"Isnt the kickstart semantics differ from Anaconda version to version? Would it be useful to support instance level kickstart template?","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1cd415afc5467f9750c856eae6876f27124aeb11","unresolved":false,"context_lines":[{"line_number":158,"context_line":"operating system. The default kickstart template will automatically partition"},{"line_number":159,"context_line":"the available disks using the autopart mechanism [3]_ and deploy the OS. The"},{"line_number":160,"context_line":"default kickstart file template will be stored at"},{"line_number":161,"context_line":"$IRONIC_CONF_DIR/default_kickstart.template and referenced by the configuration"},{"line_number":162,"context_line":"option ``default_ks_template`` in ironic.conf under ``[kickstart]`` section."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"Example default kickstart template:"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_cdd3bf5e","line":162,"range":{"start_line":161,"start_character":0,"end_line":162,"end_character":76},"in_reply_to":"9f560f44_74bf0660","updated":"2020-09-04 03:49:55.000000000","message":"Correct, kickstart versions differ between anaconda releases. The default template will be generic enough to work with multiple anaconda versions both RHEL/Centos7/Centos 8 and Fedora \u003e\u003d31","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":18781,"name":"vinay50muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"e23faa143fe1d313dad11ffef570d7b4794d1156","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    # Sending callback after the installation is mandatory"},{"line_number":209,"context_line":"    %post"},{"line_number":210,"context_line":"    /usr/bin/curl -X PUT -H \u0027Content-Type: application/json\u0027 -H \u0027Accept: application/json\u0027 -d \u0027{\"anaconda_status\": \"end\", \"msg\": \"\"}\u0027 {{ vendor_status_url }}"},{"line_number":211,"context_line":"    %end"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_41b2014b","line":210,"range":{"start_line":210,"start_character":4,"end_line":210,"end_character":157},"updated":"2020-09-02 09:57:02.000000000","message":"Presuming the kickstart file also supports network configuration and the user tries to configure tenant network, the PUT call is made through the tenant network.If the tenant network is other than the provisining network which is used for bootloading the images, this will fail unless there is a route to provisioning network from tenant network. We need to call out this limitation explicitly in the documentation.","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1cd415afc5467f9750c856eae6876f27124aeb11","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    # Sending callback after the installation is mandatory"},{"line_number":209,"context_line":"    %post"},{"line_number":210,"context_line":"    /usr/bin/curl -X PUT -H \u0027Content-Type: application/json\u0027 -H \u0027Accept: application/json\u0027 -d \u0027{\"anaconda_status\": \"end\", \"msg\": \"\"}\u0027 {{ vendor_status_url }}"},{"line_number":211,"context_line":"    %end"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_6dc43393","line":210,"range":{"start_line":210,"start_character":4,"end_line":210,"end_character":157},"in_reply_to":"9f560f44_41b2014b","updated":"2020-09-04 03:49:55.000000000","message":"Agree. I will make a note of this and call this out. Thanks.","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"fb628ec497670e8de796fdd9f2d22edf8cfcb031","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    %end"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    # Sending callback after the installation is mandatory"},{"line_number":209,"context_line":"    %post"},{"line_number":210,"context_line":"    /usr/bin/curl -X PUT -H \u0027Content-Type: application/json\u0027 -H \u0027Accept: application/json\u0027 -d \u0027{\"anaconda_status\": \"end\", \"msg\": \"\"}\u0027 {{ vendor_status_url }}"},{"line_number":211,"context_line":"    %end"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Custom kickstart templates should be uploaded to glance or hosted in a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_b4b99e7a","line":211,"range":{"start_line":209,"start_character":3,"end_line":211,"end_character":8},"updated":"2020-09-02 06:32:35.000000000","message":"This may not be very end of the operations done by Anaconda. It may perform more work after making the API call. It may not be safe for driver to perform power operation soon after receiving completion notification. Would it be better to include the power off call in the kickstart file itself and driver can wait for node to power off after receiving completion status to take further power action on node.","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1cd415afc5467f9750c856eae6876f27124aeb11","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    %end"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    # Sending callback after the installation is mandatory"},{"line_number":209,"context_line":"    %post"},{"line_number":210,"context_line":"    /usr/bin/curl -X PUT -H \u0027Content-Type: application/json\u0027 -H \u0027Accept: application/json\u0027 -d \u0027{\"anaconda_status\": \"end\", \"msg\": \"\"}\u0027 {{ vendor_status_url }}"},{"line_number":211,"context_line":"    %end"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Custom kickstart templates should be uploaded to glance or hosted in a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_4dbfaffb","line":211,"range":{"start_line":209,"start_character":3,"end_line":211,"end_character":8},"in_reply_to":"9f560f44_b4b99e7a","updated":"2020-09-04 03:49:55.000000000","message":"According to emails on the anaconda/kickstart mailing list the %post actions are executed in-order they are encountered. https://www.redhat.com/archives/kickstart-list/2011-June/msg00008.html","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"45c5917d5628eae9f5b069a6ff311137f9259ec8","unresolved":false,"context_lines":[{"line_number":278,"context_line":"---------------"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"While Anaconda supports installing individual RPM packages from a remote"},{"line_number":281,"context_line":"server, the deployment driver will only support installation of disk image"},{"line_number":282,"context_line":"formats described by liveimg [4]_. liveimg accepts tarballs, squashfs images"},{"line_number":283,"context_line":"and any mountable disk images. Users can generate squashfs images and tarballs"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_74070683","line":282,"range":{"start_line":281,"start_character":9,"end_line":282,"end_character":28},"updated":"2020-09-02 06:31:48.000000000","message":"Is there a particular reason to not support installation of individual packages? Does this require the user to create and provide such an image in order to be a able to install a machine with the anaconda deploy driver?","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1cd415afc5467f9750c856eae6876f27124aeb11","unresolved":false,"context_lines":[{"line_number":278,"context_line":"---------------"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"While Anaconda supports installing individual RPM packages from a remote"},{"line_number":281,"context_line":"server, the deployment driver will only support installation of disk image"},{"line_number":282,"context_line":"formats described by liveimg [4]_. liveimg accepts tarballs, squashfs images"},{"line_number":283,"context_line":"and any mountable disk images. Users can generate squashfs images and tarballs"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_cd061fce","line":282,"range":{"start_line":281,"start_character":9,"end_line":282,"end_character":28},"in_reply_to":"9f560f44_74070683","updated":"2020-09-04 03:49:55.000000000","message":"How do we \u0027openstack server create --image \u003c?\u003e\u0027 without an image? Perhaps the image could be a kickstart file in this case? I am not sure. I think its just individual package based deployment does not really fit in nova server model.","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"c759e93b16f0b15a545b0bdf79a94868c17afc40","unresolved":false,"context_lines":[{"line_number":278,"context_line":"---------------"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"While Anaconda supports installing individual RPM packages from a remote"},{"line_number":281,"context_line":"server, the deployment driver will only support installation of disk image"},{"line_number":282,"context_line":"formats described by liveimg [4]_. liveimg accepts tarballs, squashfs images"},{"line_number":283,"context_line":"and any mountable disk images. Users can generate squashfs images and tarballs"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_e1fdec08","line":282,"range":{"start_line":281,"start_character":9,"end_line":282,"end_character":28},"in_reply_to":"9f560f44_cd061fce","updated":"2020-09-04 08:10:59.000000000","message":"Couldn\u0027t that image just be a dummy image provided by the admin? This is what we do for PXE installations of virtual machines (yes, we do this and we try to stop it :). \n\nI would just like to avoid we add the flexibility of anaconda but require the user to generate an image every time there is a need for another package in the ks file.","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"45c5917d5628eae9f5b069a6ff311137f9259ec8","unresolved":false,"context_lines":[{"line_number":280,"context_line":"While Anaconda supports installing individual RPM packages from a remote"},{"line_number":281,"context_line":"server, the deployment driver will only support installation of disk image"},{"line_number":282,"context_line":"formats described by liveimg [4]_. liveimg accepts tarballs, squashfs images"},{"line_number":283,"context_line":"and any mountable disk images. Users can generate squashfs images and tarballs"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"Deployment status"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_74dee610","line":283,"range":{"start_line":283,"start_character":70,"end_line":283,"end_character":78},"updated":"2020-09-02 06:31:48.000000000","message":"Nit: \"... tarballs.\"","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"45c5917d5628eae9f5b069a6ff311137f9259ec8","unresolved":false,"context_lines":[{"line_number":338,"context_line":"The Anaconda deployment driver is specific to Red Hat based distributions. This"},{"line_number":339,"context_line":"deployment driver won\u0027t support distributions not supported by Anaconda. For"},{"line_number":340,"context_line":"example ubuntu is not supported by this deploy driver. A similar driver can be"},{"line_number":341,"context_line":"implemented to support ubuntu using preseed files."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"Another alternative is to define a generic partition configuration format and"},{"line_number":344,"context_line":"use that configuration instead of kickstart file. This new generic partition"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_9429faf3","line":341,"range":{"start_line":341,"start_character":36,"end_line":341,"end_character":43},"updated":"2020-09-02 06:31:48.000000000","message":"Nit: Maybe add a reference to preseed?","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"45c5917d5628eae9f5b069a6ff311137f9259ec8","unresolved":false,"context_lines":[{"line_number":340,"context_line":"example ubuntu is not supported by this deploy driver. A similar driver can be"},{"line_number":341,"context_line":"implemented to support ubuntu using preseed files."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"Another alternative is to define a generic partition configuration format and"},{"line_number":344,"context_line":"use that configuration instead of kickstart file. This new generic partition"},{"line_number":345,"context_line":"configuration will be validated by the conductor and sent to"},{"line_number":346,"context_line":"Ironic python agent during deployment. IPA will read the generic partition"},{"line_number":347,"context_line":"configuration and use libraries like blivet [7]_ to partition/format the disks."},{"line_number":348,"context_line":"With this approach the deploy driver isn\u0027t tied to a specific distribution or"},{"line_number":349,"context_line":"vendor."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"The kickstart file is either uploaded to glance or hosted in a webserver in"},{"line_number":352,"context_line":"current proposal. Alternatively we can add a new field named ``kickstart`` to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_f437964a","line":349,"range":{"start_line":343,"start_character":0,"end_line":349,"end_character":7},"updated":"2020-09-02 06:31:48.000000000","message":"This was discussed as an option, but found to be re-inventing the wheel and too complex. Maybe add a sentence why this is not the chosen option since currently it sounds superior as it is distro-agnostic.","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"45c5917d5628eae9f5b069a6ff311137f9259ec8","unresolved":false,"context_lines":[{"line_number":400,"context_line":"Nova driver impact"},{"line_number":401,"context_line":"------------------"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"This driver isn\u0027t going to be supported by nova\u0027s ironic driver at this time."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"Ramdisk impact"},{"line_number":406,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_94129ab3","line":403,"range":{"start_line":403,"start_character":0,"end_line":403,"end_character":77},"updated":"2020-09-02 06:31:48.000000000","message":"I don\u0027t understand this statement: does this mean installation via nova will not work? What exactly is not supported?","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"c759e93b16f0b15a545b0bdf79a94868c17afc40","unresolved":false,"context_lines":[{"line_number":400,"context_line":"Nova driver impact"},{"line_number":401,"context_line":"------------------"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"This driver isn\u0027t going to be supported by nova\u0027s ironic driver at this time."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"Ramdisk impact"},{"line_number":406,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_21088426","line":403,"range":{"start_line":403,"start_character":0,"end_line":403,"end_character":77},"in_reply_to":"9f560f44_10a14c47","updated":"2020-09-04 08:10:59.000000000","message":"Perfect, thanks.","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1cd415afc5467f9750c856eae6876f27124aeb11","unresolved":false,"context_lines":[{"line_number":400,"context_line":"Nova driver impact"},{"line_number":401,"context_line":"------------------"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"This driver isn\u0027t going to be supported by nova\u0027s ironic driver at this time."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"Ramdisk impact"},{"line_number":406,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_10a14c47","line":403,"range":{"start_line":403,"start_character":0,"end_line":403,"end_character":77},"in_reply_to":"9f560f44_94129ab3","updated":"2020-09-04 03:49:55.000000000","message":"Will update this to make it \u0027nova driver is not impacted by this change\u0027 so it is clearer.","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"45c5917d5628eae9f5b069a6ff311137f9259ec8","unresolved":false,"context_lines":[{"line_number":430,"context_line":"        --property ramdisk_id\u003d$MY_INITRD_UUID --property \\"},{"line_number":431,"context_line":"        squashfs_id\u003d$MY_ANACONDA_SQUASHFS_UUID"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"The end user can make use of their custom kickstart templates during deployment"},{"line_number":434,"context_line":"by working with the Operator. The Operator can set the instance_info"},{"line_number":435,"context_line":"``ks_template`` key with the path of user provided kickstart template. The"},{"line_number":436,"context_line":"kickstart template can be in glance ``glance://uuid``, webserver"},{"line_number":437,"context_line":"``http(s)://host:port/path/ks.cfg`` or on the filesystem"},{"line_number":438,"context_line":"``file://etc/ironic/ks.cfg`` of the conductor."},{"line_number":439,"context_line":""},{"line_number":440,"context_line":".. code:: bash"},{"line_number":441,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_94c57a0d","line":438,"range":{"start_line":433,"start_character":0,"end_line":438,"end_character":46},"updated":"2020-09-02 06:31:48.000000000","message":"Hmm ... my understanding was that the user can provide the kickstart file upon instance creation and that is passed to Ironic. If the operator/admin has to retrieve this from the user and set it on a node (?), how does the operator know which node the user will instantiate?","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"c759e93b16f0b15a545b0bdf79a94868c17afc40","unresolved":false,"context_lines":[{"line_number":430,"context_line":"        --property ramdisk_id\u003d$MY_INITRD_UUID --property \\"},{"line_number":431,"context_line":"        squashfs_id\u003d$MY_ANACONDA_SQUASHFS_UUID"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"The end user can make use of their custom kickstart templates during deployment"},{"line_number":434,"context_line":"by working with the Operator. The Operator can set the instance_info"},{"line_number":435,"context_line":"``ks_template`` key with the path of user provided kickstart template. The"},{"line_number":436,"context_line":"kickstart template can be in glance ``glance://uuid``, webserver"},{"line_number":437,"context_line":"``http(s)://host:port/path/ks.cfg`` or on the filesystem"},{"line_number":438,"context_line":"``file://etc/ironic/ks.cfg`` of the conductor."},{"line_number":439,"context_line":""},{"line_number":440,"context_line":".. code:: bash"},{"line_number":441,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_a16c949c","line":438,"range":{"start_line":433,"start_character":0,"end_line":438,"end_character":46},"in_reply_to":"9f560f44_90f71c5a","updated":"2020-09-04 08:10:59.000000000","message":"Yes, this sounds good. PXE users in our cloud need to download the PXE image as well and adapt it, so adding image metadata as a transport mechanism for a user provided ks file sounds ok for me, thanks!","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1cd415afc5467f9750c856eae6876f27124aeb11","unresolved":false,"context_lines":[{"line_number":430,"context_line":"        --property ramdisk_id\u003d$MY_INITRD_UUID --property \\"},{"line_number":431,"context_line":"        squashfs_id\u003d$MY_ANACONDA_SQUASHFS_UUID"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"The end user can make use of their custom kickstart templates during deployment"},{"line_number":434,"context_line":"by working with the Operator. The Operator can set the instance_info"},{"line_number":435,"context_line":"``ks_template`` key with the path of user provided kickstart template. The"},{"line_number":436,"context_line":"kickstart template can be in glance ``glance://uuid``, webserver"},{"line_number":437,"context_line":"``http(s)://host:port/path/ks.cfg`` or on the filesystem"},{"line_number":438,"context_line":"``file://etc/ironic/ks.cfg`` of the conductor."},{"line_number":439,"context_line":""},{"line_number":440,"context_line":".. code:: bash"},{"line_number":441,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f560f44_90f71c5a","line":438,"range":{"start_line":433,"start_character":0,"end_line":438,"end_character":46},"in_reply_to":"9f560f44_94c57a0d","updated":"2020-09-04 03:49:55.000000000","message":"I think we can let user provide kickstart templates without operator help by associating the template with the deploy os_image as an image metadata (going to change the spec to enable this). Ironic conductor will then use the kickstart template from os image metadata if one is not set in instance_info. i think this will eliminate need for operator to set the kickstart file in instance_info. will this work for your usecase?\n\nWe can also let users pass arbitrary kickstart templates using instance metadata during instance creation (--property glance://uuid|http(s)://host:port/path/ks.cfg|file:///path/to/ks.cfg) (not sure if that will be acceptable to nova upstream) but nova integration is outside the scope of this SPEC.","commit_id":"96557ef26fdc9ae4dcc993c7ab06edd5d60e00a3"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"c78812f9a70eddd5fca461c978a35426459ad80c","unresolved":true,"context_lines":[{"line_number":19,"context_line":"detail later in this spec):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"- Create LVM logical volumes, volume groups, and physical volumes"},{"line_number":22,"context_line":"- Create MD raid arrays"},{"line_number":23,"context_line":"- Create Linux filesystems"},{"line_number":24,"context_line":"- Generate Linux fstab files based on created Linux filesystems"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"75984097_f330112f","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":23},"updated":"2020-11-26 08:42:19.000000000","message":"Ironic provides this already: https://docs.openstack.org/ironic/latest/admin/raid.html#software-raid (either via cleaning or via deploy steps).\n\nThe proposed interface will not add this feature to Ironic but rather add another way of providing it. The main point of this spec are advanced disk configurations we cannot express at the moment (e.g. partitioning). You clarify this later, but I would prefer if this is rephrased here.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":false,"context_lines":[{"line_number":19,"context_line":"detail later in this spec):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"- Create LVM logical volumes, volume groups, and physical volumes"},{"line_number":22,"context_line":"- Create MD raid arrays"},{"line_number":23,"context_line":"- Create Linux filesystems"},{"line_number":24,"context_line":"- Generate Linux fstab files based on created Linux filesystems"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7ef85838_ee11594e","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":23},"in_reply_to":"75984097_f330112f","updated":"2020-12-16 02:24:50.000000000","message":"Ack","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"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":"a8691005ba1c20e01ea5ab6aa6f7a343207b6780","unresolved":false,"context_lines":[{"line_number":34,"context_line":"- A user wants an fstab with entries for all filesystems created by the Ironic"},{"line_number":35,"context_line":"  deploy interface"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"While ironic supports creation of MD raid arrays, it allows only the Operator"},{"line_number":38,"context_line":"(admin) to configure them as configuring MD arrays require access to ironic"},{"line_number":39,"context_line":"API. We want to allow users who create the instance to be able to configure MD"},{"line_number":40,"context_line":"arrays as well. However this is not possible as users do not have access to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_f2942a8d","line":37,"updated":"2020-11-16 04:11:51.000000000","message":"capitalize Ironic throughout please","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":false,"context_lines":[{"line_number":34,"context_line":"- A user wants an fstab with entries for all filesystems created by the Ironic"},{"line_number":35,"context_line":"  deploy interface"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"While ironic supports creation of MD raid arrays, it allows only the Operator"},{"line_number":38,"context_line":"(admin) to configure them as configuring MD arrays require access to ironic"},{"line_number":39,"context_line":"API. We want to allow users who create the instance to be able to configure MD"},{"line_number":40,"context_line":"arrays as well. However this is not possible as users do not have access to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"c8483c8f_9b8c2b6f","line":37,"in_reply_to":"1f621f24_f2942a8d","updated":"2020-12-16 02:24:50.000000000","message":"done","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"c78812f9a70eddd5fca461c978a35426459ad80c","unresolved":true,"context_lines":[{"line_number":35,"context_line":"  deploy interface"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"While ironic supports creation of MD raid arrays, it allows only the Operator"},{"line_number":38,"context_line":"(admin) to configure them as configuring MD arrays require access to ironic"},{"line_number":39,"context_line":"API. We want to allow users who create the instance to be able to configure MD"},{"line_number":40,"context_line":"arrays as well. However this is not possible as users do not have access to"},{"line_number":41,"context_line":"ironic API."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f339116_6b3fd9fa","line":38,"range":{"start_line":38,"start_character":26,"end_line":38,"end_character":75},"updated":"2020-11-26 08:42:19.000000000","message":"Is this correct? What about deploy templates? Isn\u0027t one of the reasons for them to have the user express the md layout?","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"034a06d113b2ec5067ca4bd3bd40d51bf5fcb8e6","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  deploy interface"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"While ironic supports creation of MD raid arrays, it allows only the Operator"},{"line_number":38,"context_line":"(admin) to configure them as configuring MD arrays require access to ironic"},{"line_number":39,"context_line":"API. We want to allow users who create the instance to be able to configure MD"},{"line_number":40,"context_line":"arrays as well. However this is not possible as users do not have access to"},{"line_number":41,"context_line":"ironic API."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fffc6b78_4761cc39","line":38,"range":{"start_line":38,"start_character":51,"end_line":38,"end_character":58},"updated":"2020-11-19 09:03:11.000000000","message":"nit: requires","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  deploy interface"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"While ironic supports creation of MD raid arrays, it allows only the Operator"},{"line_number":38,"context_line":"(admin) to configure them as configuring MD arrays require access to ironic"},{"line_number":39,"context_line":"API. We want to allow users who create the instance to be able to configure MD"},{"line_number":40,"context_line":"arrays as well. However this is not possible as users do not have access to"},{"line_number":41,"context_line":"ironic API."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba918a2c_e8827719","line":38,"range":{"start_line":38,"start_character":26,"end_line":38,"end_character":75},"in_reply_to":"5f339116_6b3fd9fa","updated":"2020-12-16 02:24:50.000000000","message":"ACK. Updated. Changed the information about MD Arrays.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":85,"context_line":"   * - Create a MD raid array"},{"line_number":86,"context_line":"     - limited"},{"line_number":87,"context_line":"     - yes"},{"line_number":88,"context_line":"   * - Create new filesystems"},{"line_number":89,"context_line":"     - no"},{"line_number":90,"context_line":"     - yes"},{"line_number":91,"context_line":"   * - fstab entry generator"},{"line_number":92,"context_line":"     - no"},{"line_number":93,"context_line":"     - yes"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"As shown, there are several block device-related features desired by this spec."},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_ad219eb6","line":93,"range":{"start_line":88,"start_character":0,"end_line":93,"end_character":10},"updated":"2020-11-17 15:13:49.000000000","message":"Well, actually we have the tools to generate a filesystem, but yeah, not a user defined filesystem or pattern, and ultimately add the fstab entry for that. I would kind of prefer clarifying these points that it is based on user desired configuration.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"1. Identifying the correct Anaconda version to use with the OS image."},{"line_number":105,"context_line":"2. Getting user-provided kickstart file to the Anaconda runtime."},{"line_number":106,"context_line":"3. Generating an OS image with necessary tools in a format supported by"},{"line_number":107,"context_line":"   Anaconda."},{"line_number":108,"context_line":"4. Passing correct kernel cmdline arguments to Anaconda by generating them"},{"line_number":109,"context_line":"   in PXE boot driver."},{"line_number":110,"context_line":"5. Sending status back to Ironic API when the deployment starts/ends or"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_4001b104","line":107,"range":{"start_line":106,"start_character":0,"end_line":107,"end_character":12},"updated":"2020-11-17 15:13:49.000000000","message":"Maybe this is answered below, but is there any way to for this to be operationally provided by instead of generated by the driver?","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"1. Identifying the correct Anaconda version to use with the OS image."},{"line_number":105,"context_line":"2. Getting user-provided kickstart file to the Anaconda runtime."},{"line_number":106,"context_line":"3. Generating an OS image with necessary tools in a format supported by"},{"line_number":107,"context_line":"   Anaconda."},{"line_number":108,"context_line":"4. Passing correct kernel cmdline arguments to Anaconda by generating them"},{"line_number":109,"context_line":"   in PXE boot driver."},{"line_number":110,"context_line":"5. Sending status back to Ironic API when the deployment starts/ends or"}],"source_content_type":"text/x-rst","patch_set":4,"id":"163235f1_0c4ca4d6","line":107,"range":{"start_line":106,"start_character":0,"end_line":107,"end_character":12},"in_reply_to":"1f621f24_4001b104","updated":"2020-12-16 02:24:50.000000000","message":"The driver won\u0027t be generating the OS image, it the user\u0027s responsibility to create the OS image with necessary tools. Sorry if that wasn\u0027t clear.\n\nThese points identifies general things that both user and the driver needs to do. I am going to update this line to make it clear.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"034a06d113b2ec5067ca4bd3bd40d51bf5fcb8e6","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The scope of the Anaconda deploy interface is limited to"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"* CentOS/RHEL \u003e\u003d 7 and Fedora \u003e\u003d31"},{"line_number":120,"context_line":"* Anaconda will be used to deploy the OS image."},{"line_number":121,"context_line":"* Support both UEFI and BIOS compatibility mode"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fffc6b78_e7e0c099","line":119,"range":{"start_line":119,"start_character":2,"end_line":119,"end_character":19},"updated":"2020-11-19 09:03:11.000000000","message":"not sure we should support CentOS/RHEL 7, I would personally just go for 8 at this point","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The scope of the Anaconda deploy interface is limited to"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"* CentOS/RHEL \u003e\u003d 7 and Fedora \u003e\u003d31"},{"line_number":120,"context_line":"* Anaconda will be used to deploy the OS image."},{"line_number":121,"context_line":"* Support both UEFI and BIOS compatibility mode"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"aa5a2dbc_d591275a","line":119,"range":{"start_line":119,"start_character":2,"end_line":119,"end_character":19},"in_reply_to":"fffc6b78_e7e0c099","updated":"2020-12-16 02:24:50.000000000","message":"Too late :) CentOS 8 is dead","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"* CentOS/RHEL \u003e\u003d 7 and Fedora \u003e\u003d31"},{"line_number":120,"context_line":"* Anaconda will be used to deploy the OS image."},{"line_number":121,"context_line":"* Support both UEFI and BIOS compatibility mode"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"Matching the OS image with correct anaconda version"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_001b3972","line":121,"range":{"start_line":121,"start_character":24,"end_line":121,"end_character":47},"updated":"2020-11-17 15:13:49.000000000","message":"fwiw, this seems to becoming more commonly referred to as \"Legacy BIOS mode\"","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        --property os_version\u003d7 centos-7-base \\"},{"line_number":147,"context_line":"        --property ks_template\u003dglance://uuid``"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"This is a departure from how direct deploy interface works where the kernel_id"},{"line_number":150,"context_line":"and ramdisk_id are either in configuration file or set in driver_info. IPA is"},{"line_number":151,"context_line":"distro agnostic, Anaconda is not. There is no single Anaconda installer version"},{"line_number":152,"context_line":"that is compatible with all major versions of CentOS. Each major version of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_207bd58b","line":149,"range":{"start_line":149,"start_character":6,"end_line":149,"end_character":42},"updated":"2020-11-17 15:13:49.000000000","message":"We also have boot_iso as an option for virtual media passthru interfaces, so I\u0027m not sure there is value in trying to draw the distinction here. Just for what it is worth. I get your trying to contrast though.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        --property os_version\u003d7 centos-7-base \\"},{"line_number":147,"context_line":"        --property ks_template\u003dglance://uuid``"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"This is a departure from how direct deploy interface works where the kernel_id"},{"line_number":150,"context_line":"and ramdisk_id are either in configuration file or set in driver_info. IPA is"},{"line_number":151,"context_line":"distro agnostic, Anaconda is not. There is no single Anaconda installer version"},{"line_number":152,"context_line":"that is compatible with all major versions of CentOS. Each major version of"},{"line_number":153,"context_line":"CentOS has it\u0027s own version of anaconda installer. For this reason we require"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_a03d25bc","line":150,"range":{"start_line":149,"start_character":42,"end_line":150,"end_character":55},"updated":"2020-11-17 15:13:49.000000000","message":"This is actually only partially true and only of partition images. It could just be an image_source parameter.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":150,"context_line":"and ramdisk_id are either in configuration file or set in driver_info. IPA is"},{"line_number":151,"context_line":"distro agnostic, Anaconda is not. There is no single Anaconda installer version"},{"line_number":152,"context_line":"that is compatible with all major versions of CentOS. Each major version of"},{"line_number":153,"context_line":"CentOS has it\u0027s own version of anaconda installer. For this reason we require"},{"line_number":154,"context_line":"the operator to associate correct PXE kernel, PXE ramdisk and Anaconda squashfs"},{"line_number":155,"context_line":"with the OS image as properties in Glance. The Anaconda deploy interface shall"},{"line_number":156,"context_line":"validate the image properties and make sure that all required properties are"},{"line_number":157,"context_line":"set before the deployment. The required properties are configurable and set in"},{"line_number":158,"context_line":"``required_image_properties`` under ``[kickstart]`` section. The property"},{"line_number":159,"context_line":"``ks_template`` is optional."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_40d41148","line":156,"range":{"start_line":153,"start_character":50,"end_line":156,"end_character":42},"updated":"2020-11-17 15:13:49.000000000","message":"Can we get what these would be translated to without glance? \n\nI\u0027m not saying no glance, what I\u0027m saying is I\u0027m sure interested parties will not want to take the openstack fully integrated path for this upfront, and we would need to provide","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":false,"context_lines":[{"line_number":150,"context_line":"and ramdisk_id are either in configuration file or set in driver_info. IPA is"},{"line_number":151,"context_line":"distro agnostic, Anaconda is not. There is no single Anaconda installer version"},{"line_number":152,"context_line":"that is compatible with all major versions of CentOS. Each major version of"},{"line_number":153,"context_line":"CentOS has it\u0027s own version of anaconda installer. For this reason we require"},{"line_number":154,"context_line":"the operator to associate correct PXE kernel, PXE ramdisk and Anaconda squashfs"},{"line_number":155,"context_line":"with the OS image as properties in Glance. The Anaconda deploy interface shall"},{"line_number":156,"context_line":"validate the image properties and make sure that all required properties are"},{"line_number":157,"context_line":"set before the deployment. The required properties are configurable and set in"},{"line_number":158,"context_line":"``required_image_properties`` under ``[kickstart]`` section. The property"},{"line_number":159,"context_line":"``ks_template`` is optional."}],"source_content_type":"text/x-rst","patch_set":4,"id":"8a97bd3c_4f71a384","line":156,"range":{"start_line":153,"start_character":50,"end_line":156,"end_character":42},"in_reply_to":"1f621f24_40d41148","updated":"2020-12-16 02:24:50.000000000","message":"Sure. Can you point me towards examples of how folks use ironic without glance today? I have not seen a such case in real life so my knowledge is limited.\n\nHow we design the driver in away that kernel,ramdisk, kickstart, os-image, stage2 be in both glance and outside glance?","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":154,"context_line":"the operator to associate correct PXE kernel, PXE ramdisk and Anaconda squashfs"},{"line_number":155,"context_line":"with the OS image as properties in Glance. The Anaconda deploy interface shall"},{"line_number":156,"context_line":"validate the image properties and make sure that all required properties are"},{"line_number":157,"context_line":"set before the deployment. The required properties are configurable and set in"},{"line_number":158,"context_line":"``required_image_properties`` under ``[kickstart]`` section. The property"},{"line_number":159,"context_line":"``ks_template`` is optional."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Kickstart templates"},{"line_number":162,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_406251af","line":159,"range":{"start_line":157,"start_character":27,"end_line":159,"end_character":28},"updated":"2020-11-17 15:13:49.000000000","message":"This is a little jarring to go from config in glance to config in ironic.conf. A list of the required options, and not even an example command would be ideal at least to be to understand the data model imapct.\n\nKeep in mind, less is more, and system wide defaults for the required parameters may be more than is needed and seems like it would be only useful for the validation() call on the interface.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":true,"context_lines":[{"line_number":154,"context_line":"the operator to associate correct PXE kernel, PXE ramdisk and Anaconda squashfs"},{"line_number":155,"context_line":"with the OS image as properties in Glance. The Anaconda deploy interface shall"},{"line_number":156,"context_line":"validate the image properties and make sure that all required properties are"},{"line_number":157,"context_line":"set before the deployment. The required properties are configurable and set in"},{"line_number":158,"context_line":"``required_image_properties`` under ``[kickstart]`` section. The property"},{"line_number":159,"context_line":"``ks_template`` is optional."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Kickstart templates"},{"line_number":162,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"72e6ce6e_058e608d","line":159,"range":{"start_line":157,"start_character":27,"end_line":159,"end_character":28},"in_reply_to":"1f621f24_406251af","updated":"2020-12-16 02:24:50.000000000","message":"should this be just a static list in the driver itself (code) as opposed to configuration? I removed the part that described it part of configuration for now.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"6953320a51b2727def2c1df8a1d018c8b33b5a2a","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    clearpart --all --initlabel"},{"line_number":193,"context_line":"    autopart"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"All kickstart templates will be automatically appended with following mandatory"},{"line_number":196,"context_line":"sections during deployment"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":".. code::"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f65232a_1ce6e017","line":196,"range":{"start_line":195,"start_character":0,"end_line":196,"end_character":26},"updated":"2020-10-22 15:47:51.000000000","message":"It might be useful to make this optional. If this is skipped, then Ironic uses the kickstart, unmodified and does a \"blind deploy\". In that case, the user gets no feedback on errors beyond \"remote boot request completed succesfully...\"","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"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":"a8691005ba1c20e01ea5ab6aa6f7a343207b6780","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    clearpart --all --initlabel"},{"line_number":193,"context_line":"    autopart"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"All kickstart templates will be automatically appended with following mandatory"},{"line_number":196,"context_line":"sections during deployment"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":".. code::"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_92eb3611","line":196,"range":{"start_line":195,"start_character":0,"end_line":196,"end_character":26},"in_reply_to":"3f65232a_1ce6e017","updated":"2020-11-16 04:11:51.000000000","message":"There are things that are performed once a node turns active (like tearing down the PXE environment), so implementing this is trickier than it seems.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        --disk-format raw custom_kickstart_template"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"Operators are allowed to specify custom kickstart templates using the"},{"line_number":235,"context_line":"instance_info"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_a0f6c58d","line":234,"range":{"start_line":234,"start_character":0,"end_line":234,"end_character":9},"updated":"2020-11-17 15:13:49.000000000","message":"This would be API users since access can be delegated using the policy file, FWIW.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        --disk-format raw custom_kickstart_template"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"Operators are allowed to specify custom kickstart templates using the"},{"line_number":235,"context_line":"instance_info"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":4,"id":"d4a598f8_9bdd08c9","line":234,"range":{"start_line":234,"start_character":0,"end_line":234,"end_character":9},"in_reply_to":"1f621f24_a0f6c58d","updated":"2020-12-16 02:24:50.000000000","message":"done","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":252,"context_line":"The user can also associate a kickstart template with an OS image in glance."},{"line_number":253,"context_line":"When ``ks_template`` property is present on an OS image it will be used over"},{"line_number":254,"context_line":"the default kickstart template and the template set in instance_info by the"},{"line_number":255,"context_line":"operator."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"The custom kickstart template will be downloaded from glance and stored in"},{"line_number":258,"context_line":"httproot/\u003cnode-uuid\u003e/ks.cfg. Where as ``httproot`` is defined in ``http_root``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_2030f555","line":255,"updated":"2020-11-17 15:13:49.000000000","message":"Will this somehow piggy-back on the existing image_source value which is passed via nova?","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    ``ksvalidator -v RHEL7 ks.cfg``"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"os_distro and os_version are properties of OS_IMAGE.  The Operator is required"},{"line_number":266,"context_line":"to set os_distro and os_version. If there is no os_distro or os_version set on"},{"line_number":267,"context_line":"the OS image, the kickstart file will be validated against ``DEVEL`` version of"},{"line_number":268,"context_line":"kickstart syntax. See ``ksvalidator -l`` for list of supported kickstart"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_207e35e3","line":265,"range":{"start_line":265,"start_character":43,"end_line":265,"end_character":51},"updated":"2020-11-17 15:13:49.000000000","message":"OS_IMAGE, you mean the glance image_source?","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    ``ksvalidator -v RHEL7 ks.cfg``"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"os_distro and os_version are properties of OS_IMAGE.  The Operator is required"},{"line_number":266,"context_line":"to set os_distro and os_version. If there is no os_distro or os_version set on"},{"line_number":267,"context_line":"the OS image, the kickstart file will be validated against ``DEVEL`` version of"},{"line_number":268,"context_line":"kickstart syntax. See ``ksvalidator -l`` for list of supported kickstart"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_c06e612d","line":265,"range":{"start_line":265,"start_character":57,"end_line":265,"end_character":67},"updated":"2020-11-17 15:13:49.000000000","message":"s/Operator/API user/","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    ``ksvalidator -v RHEL7 ks.cfg``"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"os_distro and os_version are properties of OS_IMAGE.  The Operator is required"},{"line_number":266,"context_line":"to set os_distro and os_version. If there is no os_distro or os_version set on"},{"line_number":267,"context_line":"the OS image, the kickstart file will be validated against ``DEVEL`` version of"},{"line_number":268,"context_line":"kickstart syntax. See ``ksvalidator -l`` for list of supported kickstart"}],"source_content_type":"text/x-rst","patch_set":4,"id":"12e91498_d2f82f3d","line":265,"range":{"start_line":265,"start_character":43,"end_line":265,"end_character":51},"in_reply_to":"1f621f24_207e35e3","updated":"2020-12-16 02:24:50.000000000","message":"yes. changed.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    ``ksvalidator -v RHEL7 ks.cfg``"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"os_distro and os_version are properties of OS_IMAGE.  The Operator is required"},{"line_number":266,"context_line":"to set os_distro and os_version. If there is no os_distro or os_version set on"},{"line_number":267,"context_line":"the OS image, the kickstart file will be validated against ``DEVEL`` version of"},{"line_number":268,"context_line":"kickstart syntax. See ``ksvalidator -l`` for list of supported kickstart"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bd9b3b24_d5f785d6","line":265,"range":{"start_line":265,"start_character":57,"end_line":265,"end_character":67},"in_reply_to":"1f621f24_c06e612d","updated":"2020-12-16 02:24:50.000000000","message":"done","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":265,"context_line":"os_distro and os_version are properties of OS_IMAGE.  The Operator is required"},{"line_number":266,"context_line":"to set os_distro and os_version. If there is no os_distro or os_version set on"},{"line_number":267,"context_line":"the OS image, the kickstart file will be validated against ``DEVEL`` version of"},{"line_number":268,"context_line":"kickstart syntax. See ``ksvalidator -l`` for list of supported kickstart"},{"line_number":269,"context_line":"versions."},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"The kickstart file is passed to anaconda installer using the kernel cmdline"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_a0524565","line":268,"range":{"start_line":268,"start_character":24,"end_line":268,"end_character":35},"updated":"2020-11-17 15:13:49.000000000","message":"FWIW, you may want to include a link to this tool and/or where its documentation can be located.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":false,"context_lines":[{"line_number":265,"context_line":"os_distro and os_version are properties of OS_IMAGE.  The Operator is required"},{"line_number":266,"context_line":"to set os_distro and os_version. If there is no os_distro or os_version set on"},{"line_number":267,"context_line":"the OS image, the kickstart file will be validated against ``DEVEL`` version of"},{"line_number":268,"context_line":"kickstart syntax. See ``ksvalidator -l`` for list of supported kickstart"},{"line_number":269,"context_line":"versions."},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"The kickstart file is passed to anaconda installer using the kernel cmdline"}],"source_content_type":"text/x-rst","patch_set":4,"id":"65126dc6_fd2bb733","line":268,"range":{"start_line":268,"start_character":24,"end_line":268,"end_character":35},"in_reply_to":"1f621f24_a0524565","updated":"2020-12-16 02:24:50.000000000","message":"\u003e FWIW, you may want to include a link to this tool and/or where its documentation can be located.\n\ndone","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":"Both of these kernel command line arguments will be appended to ``pxe_options``"},{"line_number":287,"context_line":"dictionary. A function similar to get_volume_pxe_options() will be added to"},{"line_number":288,"context_line":"pxe_utils to facilitate this."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"OS image format"},{"line_number":291,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_809d890b","line":288,"updated":"2020-11-17 15:13:49.000000000","message":"You might to add a note or warning tag indicating virtual media based deployments are out of scope at this time. Or at the time of implementation.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"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":"a8691005ba1c20e01ea5ab6aa6f7a343207b6780","unresolved":false,"context_lines":[{"line_number":353,"context_line":"The ``PXEAnacondaDeploy`` driver will inherit from ``AgentBaseMixin`` interface"},{"line_number":354,"context_line":"and ``DeployInterface`` similar to ``PXERamdiskDeploy`` driver. This implies"},{"line_number":355,"context_line":"that the cleaning will be done by the agent Driver not by the Anaconda deploy"},{"line_number":356,"context_line":"driver."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_d2f12e03","line":356,"updated":"2020-11-16 04:11:51.000000000","message":"One strange side effect of this: driver_info[deploy_ramdisk] and driver_info[deploy_kernel] will actually point to the ramdisks used for cleaning and deployment. I wonder if it\u0027s worthwhile to introduce a second configuration option to configure deploy/cleaning ramdisks separately.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":false,"context_lines":[{"line_number":353,"context_line":"The ``PXEAnacondaDeploy`` driver will inherit from ``AgentBaseMixin`` interface"},{"line_number":354,"context_line":"and ``DeployInterface`` similar to ``PXERamdiskDeploy`` driver. This implies"},{"line_number":355,"context_line":"that the cleaning will be done by the agent Driver not by the Anaconda deploy"},{"line_number":356,"context_line":"driver."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fd6e5258_2be0f5b2","line":356,"in_reply_to":"1f621f24_00585953","updated":"2020-12-16 02:24:50.000000000","message":"\u003e One strange side effect of this: driver_info[deploy_ramdisk] and driver_info[deploy_kernel] will actually point to the ramdisks used for cleaning and deployment. I wonder if it\u0027s worthwhile to introduce a second configuration option to configure deploy/cleaning ramdisks separately.\n\nJay, I think that is a good idea. i am little out of date with the inner workings of driver_info field. Is this field static? Can this field updated when the cleaning starts? If the values of these fields get auto updated during cleaning, i don\u0027t think we need a separate configuration option for cleaning/deploying.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":353,"context_line":"The ``PXEAnacondaDeploy`` driver will inherit from ``AgentBaseMixin`` interface"},{"line_number":354,"context_line":"and ``DeployInterface`` similar to ``PXERamdiskDeploy`` driver. This implies"},{"line_number":355,"context_line":"that the cleaning will be done by the agent Driver not by the Anaconda deploy"},{"line_number":356,"context_line":"driver."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_00585953","line":356,"in_reply_to":"1f621f24_d2f12e03","updated":"2020-11-17 15:13:49.000000000","message":"Could be, but I would say out of scope of this. And honestly I\u0027d mark such an rfe as approved if someone wanted to just do it.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":".. code:: bash"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    openstack baremetal rebuild --kickstart path/to/ks.cfg \u003cnode-uuid\u003e"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"Data model impact"},{"line_number":385,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_a021a5b6","line":382,"updated":"2020-11-17 15:13:49.000000000","message":"That is an interesting alternative, but I like the existing storage and patterns, Maybe this one day as an highly targeted rfe post deployment if peoplw want it.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":397,"context_line":"Add a new field ``agent_status`` to v1/heartbeat API, which can be used to"},{"line_number":398,"context_line":"receive deployment status from the anaconda deploy driver"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    POST {.. \u0027agent_status\u0027: \u003cstatus\u003e} /v1/heartbeat/{{node_ident}}"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"Client (CLI) impact"},{"line_number":403,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_401c1177","line":400,"updated":"2020-11-17 15:13:49.000000000","message":"One note, please document this as optionally used.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":false,"context_lines":[{"line_number":397,"context_line":"Add a new field ``agent_status`` to v1/heartbeat API, which can be used to"},{"line_number":398,"context_line":"receive deployment status from the anaconda deploy driver"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    POST {.. \u0027agent_status\u0027: \u003cstatus\u003e} /v1/heartbeat/{{node_ident}}"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"Client (CLI) impact"},{"line_number":403,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5324333d_adc60a5b","line":400,"in_reply_to":"1f621f24_401c1177","updated":"2020-12-16 02:24:50.000000000","message":"done","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":439,"context_line":"Security impact"},{"line_number":440,"context_line":"---------------"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"The ``heartbeat`` method implemented by the driver has to be"},{"line_number":443,"context_line":"unauthenticated so that anaconda can POST to the status API without a token."},{"line_number":444,"context_line":"An attacker could potentially cause denial of service attack by sending"},{"line_number":445,"context_line":"invalid/incorrect status to Ironic nodes since the API is unauthenticated."},{"line_number":446,"context_line":"Operators should mitigate this by enabling agent token verification."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_a30fef2b","line":443,"range":{"start_line":442,"start_character":18,"end_line":443,"end_character":36},"updated":"2020-11-17 15:13:49.000000000","message":"Well, technically the token code should guard this so the presence other than the node is something that then is used to signal that is the node we\u0027re deploying, however there is always grabing the same data off pxe. :\\","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":441,"context_line":""},{"line_number":442,"context_line":"The ``heartbeat`` method implemented by the driver has to be"},{"line_number":443,"context_line":"unauthenticated so that anaconda can POST to the status API without a token."},{"line_number":444,"context_line":"An attacker could potentially cause denial of service attack by sending"},{"line_number":445,"context_line":"invalid/incorrect status to Ironic nodes since the API is unauthenticated."},{"line_number":446,"context_line":"Operators should mitigate this by enabling agent token verification."},{"line_number":447,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_835593fc","line":444,"updated":"2020-11-17 15:13:49.000000000","message":"You may want to insert \"targetted\" before denial of service, since the attacker would have to have additional infrastructure knowledge.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":443,"context_line":"unauthenticated so that anaconda can POST to the status API without a token."},{"line_number":444,"context_line":"An attacker could potentially cause denial of service attack by sending"},{"line_number":445,"context_line":"invalid/incorrect status to Ironic nodes since the API is unauthenticated."},{"line_number":446,"context_line":"Operators should mitigate this by enabling agent token verification."},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"Other end user impact"},{"line_number":449,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_031b4372","line":446,"range":{"start_line":446,"start_character":9,"end_line":446,"end_character":68},"updated":"2020-11-17 15:13:49.000000000","message":"This is now mandatory.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":444,"context_line":"An attacker could potentially cause denial of service attack by sending"},{"line_number":445,"context_line":"invalid/incorrect status to Ironic nodes since the API is unauthenticated."},{"line_number":446,"context_line":"Operators should mitigate this by enabling agent token verification."},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"Other end user impact"},{"line_number":449,"context_line":"---------------------"},{"line_number":450,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_2352bf13","line":447,"updated":"2020-11-17 15:13:49.000000000","message":"Additional question, will these nodes be able to be looked up via the API? That would further reduce possible attack surface. FWIW, that can always be done later.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"01a8b9295b018d6d9a72b39afff0933a6e3b4902","unresolved":false,"context_lines":[{"line_number":444,"context_line":"An attacker could potentially cause denial of service attack by sending"},{"line_number":445,"context_line":"invalid/incorrect status to Ironic nodes since the API is unauthenticated."},{"line_number":446,"context_line":"Operators should mitigate this by enabling agent token verification."},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"Other end user impact"},{"line_number":449,"context_line":"---------------------"},{"line_number":450,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"843e8bbf_6a0f9305","line":447,"in_reply_to":"1f621f24_2352bf13","updated":"2020-12-16 02:24:50.000000000","message":"Anaconda will have to use %pre scripting to use the lookup API and parse the results from the lookup. It is little complex. For now lets do that later.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    openstack image set IMG-ID --property kernel_id\u003d$MY_VMLINUZ_UUID \\"},{"line_number":459,"context_line":"        --property ramdisk_id\u003d$MY_INITRD_UUID --property \\"},{"line_number":460,"context_line":"        squashfs_id\u003d$MY_ANACONDA_SQUASHFS_UUID"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"The end user can make use of their custom kickstart templates during deployment"},{"line_number":463,"context_line":"by working with the Operator. The Operator can set the instance_info"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_836e33c6","line":460,"updated":"2020-11-17 15:13:49.000000000","message":"This is the point in which my understanding that the properties would be sent back or extracted via the image ID. :( Just an FYI if some of my earlier comments seem confusing.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":517,"context_line":"   to kickstart deploy template."},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"2. Implementation of core deploy driver that fetches artifacts from glance,"},{"line_number":520,"context_line":"   generates PXE configuration files, renders kickstart templates into httproot"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"Dependencies"},{"line_number":523,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_c36b0bb4","line":520,"updated":"2020-11-17 15:13:49.000000000","message":"Documentation, and a CI job would be greatly appreciated.","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ce5d8d0bcc441334540dc3961bf8d5e26cb1a1ba","unresolved":false,"context_lines":[{"line_number":531,"context_line":"  to get this working."},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"* Devstack support will be added for this driver so that it can be tested"},{"line_number":534,"context_line":"  easily."},{"line_number":535,"context_line":""},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"Upgrades and Backwards Compatibility"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f621f24_83a3d3ff","line":534,"updated":"2020-11-17 15:13:49.000000000","message":"If devstack support is added in the ironic plugin, then testing in a secenario CI job should be fairly easy. Maybe an ironic-tempest-plugin job for specific interaction if it is felt to be warranted?","commit_id":"f96517586e06d78885b94895359c44206443ae60"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":23,"context_line":"- Create Linux filesystems"},{"line_number":24,"context_line":"- Generate Linux fstab files based on created Linux filesystems"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Support for creating LVM and MD structures has significant usefulness in when"},{"line_number":27,"context_line":"provisioning Nodes with multiple physical storage devices."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Use-cases include:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"55f10a1e_f1738ef0","line":26,"range":{"start_line":26,"start_character":70,"end_line":26,"end_character":72},"updated":"2021-01-05 22:47:27.000000000","message":"s/in//","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":89,"context_line":"     - no"},{"line_number":90,"context_line":"     - yes"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"As shown, there are several block device-related features desired by this spec."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"In addition, there are some desired pseudo-features, for example \"LVM physical"},{"line_number":95,"context_line":"volume on MD raid array\" that are accomplished by the user providing sequences"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ec6ff3cf_4c3a5df3","line":92,"range":{"start_line":92,"start_character":58,"end_line":92,"end_character":65},"updated":"2021-01-05 22:47:27.000000000","message":"maybe s/desired/supported/ or \u0027addressed\u0027 ? \u0027provided\u0027 ?","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"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":"66fe68cfb1a9a3b5064827da968cade5db21ea4e","unresolved":true,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The scope of the Anaconda deploy interface is limited to"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* CentOS/RHEL \u003e\u003d 7 and Fedora \u003e\u003d31"},{"line_number":117,"context_line":"* Anaconda will be used to deploy the OS image."},{"line_number":118,"context_line":"* Support both UEFI and Legacy BIOS mode."},{"line_number":119,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"dddc146e_66f55184","line":116,"updated":"2020-12-22 22:03:59.000000000","message":"Might want to address the lack of CentOS 8 now?","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"9cdc9341d42b02ca15158ec3ca9742795af44eab","unresolved":true,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The scope of the Anaconda deploy interface is limited to"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* CentOS/RHEL \u003e\u003d 7 and Fedora \u003e\u003d31"},{"line_number":117,"context_line":"* Anaconda will be used to deploy the OS image."},{"line_number":118,"context_line":"* Support both UEFI and Legacy BIOS mode."},{"line_number":119,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"989ab137_c39a2a97","line":116,"in_reply_to":"dddc146e_66f55184","updated":"2021-01-05 04:39:08.000000000","message":"\u003e Might want to address the lack of CentOS 8 now?\n\n\nActually it does not matter. CentOS 8 still exists and usable but not a 1-1 replacement for RHEL8.","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":147,"context_line":"and ramdisk_id are either in configuration file or set in driver_info. IPA is"},{"line_number":148,"context_line":"distro agnostic, Anaconda is not. There is no single Anaconda installer version"},{"line_number":149,"context_line":"that is compatible with all major versions of CentOS. Each major version of"},{"line_number":150,"context_line":"CentOS has it\u0027s own version of anaconda installer. For this reason we require"},{"line_number":151,"context_line":"the operator to associate correct PXE kernel, PXE ramdisk and Anaconda squashfs"},{"line_number":152,"context_line":"with the OS image as properties in Glance. The Anaconda deploy interface shall"},{"line_number":153,"context_line":"validate the image properties and make sure that all required properties are"}],"source_content_type":"text/x-rst","patch_set":7,"id":"28042938_4c456f88","line":150,"range":{"start_line":150,"start_character":11,"end_line":150,"end_character":15},"updated":"2021-01-05 22:47:27.000000000","message":"s/it\u0027s/its/","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":156,"context_line":"Kickstart templates"},{"line_number":157,"context_line":"-------------------"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Anaconda installer needs a kickstart file to deploy an operating system"},{"line_number":160,"context_line":"non-interactively. The kickstart file is used to automate the deployment of the"},{"line_number":161,"context_line":"operating system. The default kickstart template will automatically partition"},{"line_number":162,"context_line":"the available disks using the autopart mechanism [4]_ and deploy the OS. The"}],"source_content_type":"text/x-rst","patch_set":7,"id":"adaa22a7_6d1e949b","line":159,"range":{"start_line":159,"start_character":0,"end_line":159,"end_character":18},"updated":"2021-01-05 22:47:27.000000000","message":"curious. Since the installer is in two parts, when this term is used, what does it mean? A general \u0027installer\u0027 (in one or both parts of the installer) or the ramdisk part or the stage2 part?","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":161,"context_line":"operating system. The default kickstart template will automatically partition"},{"line_number":162,"context_line":"the available disks using the autopart mechanism [4]_ and deploy the OS. The"},{"line_number":163,"context_line":"default kickstart file template will be named default_kickstart.template and"},{"line_number":164,"context_line":"referenced by the configuration option ``default_ks_template`` in ironic.conf"},{"line_number":165,"context_line":"under ``[kickstart]`` section."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Example default kickstart template:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"b74932ed_f50aaae7","line":164,"updated":"2021-01-05 22:47:27.000000000","message":"If I understand this, the operator can change the default ks template. This paragraph is saying that we/ironic will provide a kickstart template and that it will be used if not specified otherwise via this config option or some other way.","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"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":"66fe68cfb1a9a3b5064827da968cade5db21ea4e","unresolved":true,"context_lines":[{"line_number":188,"context_line":"    autopart"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"All kickstart templates will be automatically appended with following mandatory"},{"line_number":191,"context_line":"sections during deployment"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":".. code::"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"615c6b5c_3c8ba860","line":191,"updated":"2020-12-22 22:03:59.000000000","message":"Can we talk a little more about how this works?\n\nCan there be multiple %pre, %onerror, %traceback, %post sections? Or are we taking exclusive control of those sections for Ironic users?","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"01061029bc5961441850c8e8ab41436df22c64e7","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    autopart"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"All kickstart templates will be automatically appended with following mandatory"},{"line_number":191,"context_line":"sections during deployment"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":".. code::"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"f845058b_27adf61b","line":191,"in_reply_to":"5550a4df_b9b0febf","updated":"2021-01-05 22:48:20.000000000","message":"Would be good to add this info to the spec!","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"9cdc9341d42b02ca15158ec3ca9742795af44eab","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    autopart"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"All kickstart templates will be automatically appended with following mandatory"},{"line_number":191,"context_line":"sections during deployment"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":".. code::"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5550a4df_b9b0febf","line":191,"in_reply_to":"615c6b5c_3c8ba860","updated":"2021-01-05 04:39:08.000000000","message":"Multiple %pre %onerror and %traceback and %post sections can exist, they will be executed in the order they are encountered in the SPEC file. Users can have their own %pre %post etc. We do not have exclusive control over these sections.\n\nSee https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/sect-kickstart-syntax#sect-kickstart-preinstall","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":205,"context_line":"    %end"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    %traceback"},{"line_number":208,"context_line":"    /usr/bin/curl -X PUT -H \u0027Content-Type: application/json\u0027 -H \u0027Accept: application/json\u0027 -d \u0027{..\"agent_status\": \"Error: Anaconda crashed unexpectedly.\"}\u0027 http(s)://host:port/v1/heartbeat/{{node_ident}"},{"line_number":209,"context_line":"    %end"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    # Sending callback after the installation is mandatory"}],"source_content_type":"text/x-rst","patch_set":7,"id":"6d680619_cc5a56ce","line":208,"updated":"2021-01-05 22:47:27.000000000","message":"any value in adding \u0027Check console for more information\u0027 or does the crash happen before anything shows up in console?","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":223,"context_line":".. code:: bash"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    openstack image create --file ks.cfg --container-format bare \\"},{"line_number":226,"context_line":"        --disk-format raw custom_kickstart_template"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"The API users are allowed to specify custom kickstart templates using the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"8cbcd9a1_b59abf80","line":226,"updated":"2021-01-05 22:47:27.000000000","message":"this is only needed (and I guess we\u0027re storing kickstart templates in glance) if using URI format glance://uuid.","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"The API users are allowed to specify custom kickstart templates using the"},{"line_number":230,"context_line":"instance_info"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":".. code:: bash"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"e83ee582_007dedab","line":230,"updated":"2021-01-05 22:47:27.000000000","message":"How about \"Users can specify a specific kickstart template for a node via the node\u0027s instance_info field, with key \u0027ks_template\u0027. Eg:\"","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":249,"context_line":"used over the default kickstart template and the template set in instance_info"},{"line_number":250,"context_line":"by the operator."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"The custom kickstart template will be downloaded from glance and stored in"},{"line_number":253,"context_line":"httproot/\u003cnode-uuid\u003e/ks.cfg. Where as ``httproot`` is defined in ``http_root``"},{"line_number":254,"context_line":"configuration item under ``[deploy]`` section of ``ironic.conf`` configuration"},{"line_number":255,"context_line":"file. Once the custom kickstart template is downloaded it will be validated"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ce59e9e7_48236f34","line":252,"range":{"start_line":252,"start_character":49,"end_line":252,"end_character":61},"updated":"2021-01-05 22:47:27.000000000","message":"not just glance, right? depends on if it is file: or http(s):... Basically, conductor grabs the template and stores it in ...","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    ``ksvalidator -v RHEL7 ks.cfg``"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"os_distro and os_version are properties of image_source(The OS image). The API"},{"line_number":261,"context_line":"user is required to set os_distro and os_version. If there is no os_distro or"},{"line_number":262,"context_line":"os_version set on the image_source, the kickstart file will be validated"},{"line_number":263,"context_line":"against ``DEVEL`` version of kickstart syntax. See ``ksvalidator -l`` for list"},{"line_number":264,"context_line":"of supported kickstart versions [5]_."}],"source_content_type":"text/x-rst","patch_set":7,"id":"c58258ec_bd13f414","line":261,"range":{"start_line":260,"start_character":75,"end_line":261,"end_character":16},"updated":"2021-01-05 22:47:27.000000000","message":"I\u0027m guessing this means that the operator can specify the os_distro \u0026 os_version properties of the OS - glance. Are these hard-coded strings that anaconda is looking for? If so, we should be explicit about what those values are (and if case sensitive, etc).","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":304,"context_line":"encountered by anaconda."},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"At the start of the installation following status will be sent using %pre"},{"line_number":307,"context_line":"section of the kickstart file from anaconda ramdisk to lookup"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"POST {\u0027callback_url\u0027:  \u0027\u0027, \u0027agent_token\u0027: \u003ctoken\u003e,  \u0027agent_version\u0027: \u0027\u0027, \\"},{"line_number":310,"context_line":"      \u0027agent_status\u0027: \u0027start\u0027} \\"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9350c14b_da1f9ee3","line":307,"range":{"start_line":307,"start_character":55,"end_line":307,"end_character":61},"updated":"2021-01-05 22:47:27.000000000","message":"i know IPA does a lookup... this is a heartbeat request though. Remind me, how does the ramdisk/anaconda know the node\u0027s ident?","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b9e1ff46faec7fa094e9b24f7b8abd090335cc60","unresolved":false,"context_lines":[{"line_number":304,"context_line":"encountered by anaconda."},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"At the start of the installation following status will be sent using %pre"},{"line_number":307,"context_line":"section of the kickstart file from anaconda ramdisk to lookup"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"POST {\u0027callback_url\u0027:  \u0027\u0027, \u0027agent_token\u0027: \u003ctoken\u003e,  \u0027agent_version\u0027: \u0027\u0027, \\"},{"line_number":310,"context_line":"      \u0027agent_status\u0027: \u0027start\u0027} \\"}],"source_content_type":"text/x-rst","patch_set":7,"id":"32426519_71d9a07a","line":307,"range":{"start_line":307,"start_character":55,"end_line":307,"end_character":61},"in_reply_to":"9350c14b_da1f9ee3","updated":"2021-01-06 14:18:15.000000000","message":"Brain fart. via the ks file/template that the conductor filled in.","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"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":"66fe68cfb1a9a3b5064827da968cade5db21ea4e","unresolved":true,"context_lines":[{"line_number":306,"context_line":"At the start of the installation following status will be sent using %pre"},{"line_number":307,"context_line":"section of the kickstart file from anaconda ramdisk to lookup"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"POST {\u0027callback_url\u0027:  \u0027\u0027, \u0027agent_token\u0027: \u003ctoken\u003e,  \u0027agent_version\u0027: \u0027\u0027, \\"},{"line_number":310,"context_line":"      \u0027agent_status\u0027: \u0027start\u0027} \\"},{"line_number":311,"context_line":"        http(s)://\u003caddress\u003e:\u003cport\u003e/v1/heartbeat/{{node_ident}}"},{"line_number":312,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"f644c4c5_3f24fbc2","line":309,"updated":"2020-12-22 22:03:59.000000000","message":"Existing agent_token implementation I think cycles the token once a lookup happens. Are we accounting for the lifecycle of agent token as part of this?","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"9cdc9341d42b02ca15158ec3ca9742795af44eab","unresolved":true,"context_lines":[{"line_number":306,"context_line":"At the start of the installation following status will be sent using %pre"},{"line_number":307,"context_line":"section of the kickstart file from anaconda ramdisk to lookup"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"POST {\u0027callback_url\u0027:  \u0027\u0027, \u0027agent_token\u0027: \u003ctoken\u003e,  \u0027agent_version\u0027: \u0027\u0027, \\"},{"line_number":310,"context_line":"      \u0027agent_status\u0027: \u0027start\u0027} \\"},{"line_number":311,"context_line":"        http(s)://\u003caddress\u003e:\u003cport\u003e/v1/heartbeat/{{node_ident}}"},{"line_number":312,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"2235af86_b96b50f5","line":309,"in_reply_to":"f644c4c5_3f24fbc2","updated":"2021-01-05 04:39:08.000000000","message":"As i understand it, we can \"pregenerate\" the agent_token in somewhere like \"prepare_ramdisk()\" method, so the node will have a pre-generated token and we can use that pregenerated token in %post section of the kickstart file. \n\nWe will not use the lookup API when using the anaconda deploy interface. We will only use the heartbeat interface to send status back to ironic. The heartbeat interface support agent_status","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":326,"context_line":""},{"line_number":327,"context_line":"If there are errors during installation we will capture those error using"},{"line_number":328,"context_line":"%onerror [7]_ and %traceback [8]_ sections of kickstart file, then send the"},{"line_number":329,"context_line":"\u0027error\u0027 status Ironic"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"POST {\u0027callback_url\u0027: \u0027\u0027, \u0027agent_token\u0027: \u003ctoken\u003e, \u0027agent_version\u0027: \u0027\u0027, \\"},{"line_number":332,"context_line":"      \u0027agent_status\u0027: \u0027Error: \u003cmsg\u003e\u0027} \\"}],"source_content_type":"text/x-rst","patch_set":7,"id":"4d19beca_e263b478","line":329,"updated":"2021-01-05 22:47:27.000000000","message":"nit s/status/status to/","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":400,"context_line":"Add an optional field ``agent_status`` to v1/heartbeat API, which can be used"},{"line_number":401,"context_line":"to receive deployment status from the anaconda deploy driver."},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"    POST {.. \u0027agent_status\u0027: \u003cstatus\u003e} /v1/heartbeat/{{node_ident}}"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"Client (CLI) impact"},{"line_number":406,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"d17b85c9_a54fdb81","line":403,"updated":"2021-01-05 22:47:27.000000000","message":"As an aside, I\u0027ve wondering about having heartbeat support additional info, even for IPA. So that the conductor doesn\u0027t need to issue a request to IPA to GET /v1/commands, but that the commands info is added to the heartbeat request :)","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"07b8a6464ce6d478ea45da8d1949051c4f01e52c","unresolved":true,"context_lines":[{"line_number":420,"context_line":"RPC API impact"},{"line_number":421,"context_line":"--------------"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"RPC API needs to be updated to handle the new ``agent_status`` in hearbeat"},{"line_number":424,"context_line":"API."},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"Driver API impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffc243e4_ebb0405a","line":423,"range":{"start_line":423,"start_character":66,"end_line":423,"end_character":74},"updated":"2021-01-05 22:47:27.000000000","message":"typo: heartbeat","commit_id":"402f9735e4113248924d6a6f9f54e9293895b9be"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"de59bc7b60f87db33c95fbefd6f17d54f9fab137","unresolved":true,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Multiple %pre, %post, %traceback and %error  sections can exist in a kickstart"},{"line_number":218,"context_line":"file. These sections will be processed and executed in the order they are"},{"line_number":219,"context_line":"encountere [5]_."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"Custom kickstart templates should be uploaded to glance or hosted in a"},{"line_number":222,"context_line":"webserver accessible by the conductor or on the conductor\u0027s filesystem."}],"source_content_type":"text/x-rst","patch_set":8,"id":"d208fccf_ed254b81","line":219,"updated":"2021-01-08 16:24:27.000000000","message":"nit s/encountere/encountered/","commit_id":"9ffc417ab9120750a8811c719cb15f5b40b60a1a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"de59bc7b60f87db33c95fbefd6f17d54f9fab137","unresolved":true,"context_lines":[{"line_number":254,"context_line":"The user can also associate a kickstart template with an OS image(image_source)"},{"line_number":255,"context_line":"in glance. When ``ks_template`` property is present on an OS image it will be"},{"line_number":256,"context_line":"used over the default kickstart template and the template set in instance_info"},{"line_number":257,"context_line":"by the operator."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"The custom kickstart template will be downloaded and stored in"},{"line_number":260,"context_line":"httproot/\u003cnode-uuid\u003e/ks.cfg. Where as ``httproot`` is defined in ``http_root``"}],"source_content_type":"text/x-rst","patch_set":8,"id":"37312447_1dc4f5ae","line":257,"updated":"2021-01-08 16:24:27.000000000","message":"I could have sworn I asked about this but I don\u0027t see my question. Is the order of precedence: ks_template from OS image, ironic node\u0027s instance_info[\u0027ks_template\u0027],config option \u0027default_ks_template\u0027 ? I\u0027d prefer that the ks_template specified in a node\u0027s instance_info take highest precedence (ie, use this over the other ones)","commit_id":"9ffc417ab9120750a8811c719cb15f5b40b60a1a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"13714aff7785a166bf4e73bbdbe3056a87de1690","unresolved":true,"context_lines":[{"line_number":254,"context_line":"The user can also associate a kickstart template with an OS image(image_source)"},{"line_number":255,"context_line":"in glance. When ``ks_template`` property is present on an OS image it will be"},{"line_number":256,"context_line":"used over the default kickstart template and the template set in instance_info"},{"line_number":257,"context_line":"by the operator."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"The custom kickstart template will be downloaded and stored in"},{"line_number":260,"context_line":"httproot/\u003cnode-uuid\u003e/ks.cfg. Where as ``httproot`` is defined in ``http_root``"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1020b007_f39d6ded","line":257,"in_reply_to":"37312447_1dc4f5ae","updated":"2021-01-08 18:48:16.000000000","message":"I feel like that is what is being articulated? Just slightly different wording.","commit_id":"9ffc417ab9120750a8811c719cb15f5b40b60a1a"}]}
